29 Nov 2011

asakusa.rb#135に行ってきた。

 

Img_20111129_220444

KDDIウェブコミュニケーションズさんの6Fセミナールームをお貸し頂いての開催。おしゃれな空間で素晴らしい。上のは帰り際に取った写真。会をしていたセミナールームは扉の奥なので、あまり意味はないかも。。

僕は初参加だったが、他にも初参加の方がいたらしく、自己紹介タイムなどもある。会はすごくオープンで、ワイガヤする感じ。楽しい。

 

その後は、各人好きにしゃべったり黙々と作業したりという感じ。前のほうではプロジェクターで、松田さんのrailsのhelperをオブジェクト指向っぽく書けるライブラリの話などをしていた。そこから、これまで謎に思っていたhelperに何を突っ込むべきかや、viewでモデルのリレーションを呼んでしまってよいのかという点が明確になった。

僕が悩んでいたのは、Viewでモデルのメソッドを呼ぶのは分離が出来ていないため微妙だが、ちゃちい変数を宣言するためにコントローラを太らせるのはどうなのか、ということ。これまでは、もろもろインスタンスメソッドをモデルに持たせ、viewでそれを呼ぶ事で対処していた。師曰く「コントローラで書くべきは、インタフェースだ」とのこと。コントローラの意図が明確になるような変数セットを行うべきであって、それ以外のものを書くと意図が曇る。なので、モデルに適切なrelationやらメソッドを持たせ、それをviewで呼ぶのは問題がないとのことだった。

また、例えばヘッダーの一部であるレコードをセットするコードがある場合は、helperに入れるべきかapplication_controller以下でbefore_filterをセットすべきか迷っていたが、師曰くapplication_controllerでbefore_filterでセットするかも、とのこと。helperの役割はもっぱらviewのみの処理と割り切るのが正しそう。

僕はこういう感じは好きだし、大変有意義だった。次回も行く。

19 Nov 2011

ujihisa.vim#2に行ってきた

ujihisa.vim#2に行ってきた。僕自身の得られた点を中心に内容をまとめる。

自分はVimテクニックバイブルを買ってはいるが、Unite等有名なプラグインは入れてるくせにキーマッピングも編集していない程度のVim使いだ。そういう意味で今回のイベントでは、特にVim script書き方入門とlive codingが勉強になった。

Vim scriptをはじめたい人は、大抵以下の問題にぶちあたる。

  1. helpを読んでもわからない
  2. helpにたどり着けない

helpにあたるのもいいけど、Vim scriptの手始めに読むべきドキュメントは以下。

ヘルプマニュアル

  • usr_41
  • expression
  • vim-script-intro

ブログのエントリ

 

細かいTips

  • Kコマンドでカーソル以下にあるvimコマンドをリファレンスから引ける。
  • vimtutorコマンドをja引数で実行するとvimtutorの日本語版が読める。

 

その他

Vim内部のソースはひどい。

unite-yarmは、Redmineをunite経由で使えるプラグイン。使ってみる。sora_hのsimplenoteも。

 

懇親会で話していたが、emacs lispに比べてvimscriptは勉強するお得感が少ないのと、プラグインに分割されすぎていて、Vim scriptの最初のgetting started的なコードを書くタイミングがあまりない。Vim scriptを書く人はvimrcで既にVim scriptを書いてるというが、vimrcとVim scriptは結構違う。

12 Nov 2011

関西Ruby会議04に行ってきた

土曜に関西Ruby会議04に行ってきた。現地入りが遅れ、見れた講演は以下の2つ。各々、内容と得たことをまとめておく。

  • @jugyoさん「私はいかにしてRubyによるオープンソース活動を楽しくやってきたか」
  • @june29さん「Rubyから教わったものづくり」

 

@jugyoさん「私はいかにしてRubyによるオープンソース活動を楽しくやってきたか」

笑顔が素敵。ゆるいプレゼンだけど本人曰く「テクニック」によるもの。実際、ゆるいスタイルで、ネタを混ぜつつ進むが、全ての話がきちんと繋がっていて素晴らしかった。頑張ってるけどそれを表に出さない、というスタイルはスマートだと思う。内容は、抽象的なハッカーの美徳「怠惰」と、現実的なプロモーションについて。

前半は、ハッカーの美徳である怠惰について、分かりやすく説いている。問題を解くよりも良い問題設定をするのが大事で、彼にとってgemを作ることは問題解決の訓練。日々思いついたものを作っていて、たまたま人が考えてない領域をやれればラッキー。人が考えてない領域に踏み込めるのは、運。ただ、どんな問題にもユニークな解決策があるはず。一つのことを早くやるより、やる事を削るのを考える。まとめると問題の優れた設定と小さい解決策を作ること。

後半のプロモーションについては、彼のgemを見ればわかるが「名前重要」。3日は覚えていてくれる名前を付けること。eeepubやir_bは確かに忘れないし、ちょっとかわいいと思う。gemを作ったら宣伝する。そのことで正しい評価を受けられる。rubyflow.comとかで宣伝すると良い。

 

ところどころ書籍を引用しながらのお話だった。引用されてた本は「イシューよりはじめよ」「イノベーションの神話」など。

途中、gemの作り方に関する簡単なレクチャーも。確かにその場ですぐに作れた。簡単。ちょくちょく手を動かしてるのを見るのは、自分も一緒に手を動かせるので、しゃべってるのをただ聞くより楽しい。

 

@june29さん「Rubyから教わったものづくり」

ruby札幌育ちのblaboの”チャレンジャー”。タイトルに「ものづくり」とあるが、僕にはプログラマとしてスタートアップでどう貢献するか、という文脈で聞けた。いくつかトピックはあるが、特に響いた概念は、”事業をAPIと捉えること”と、”絶対良感”という話。

事業をAPIと捉えると、事業のAPIが不明瞭なときはコードもうまく書けない。逆に、コードがうまく書けないときは事業に問題があると指摘できる。この、コードから事業を見る、という視点は大変参考になる。考えると確かに、ビジネスモデリングみたいな言葉があるように、きれいな事業APIや事業プロセスであればコードは書きやすいかもしれないと思う。

また、絶対良感とは、絶対音感のように、良いものに対して明確に判断できる感覚、という意味に感じた。その感覚を鍛えるために、良いものを沢山知る必要がある。これは刺さった。まだなぜ自分に刺さったのか不明確だが、自分もやろうと思った。

 

全体的に、発表者の主観で楽しかったことをストーリーとして語るので、感情移入しやすく聞いていて楽しい。

話を聞いていて、彼から楽しくやろうとする意思を感じた。話していたストーリーにも出てくるが、チームで良い関係性を作っている。先日読んだ"0円ハウス"にも載っていた言葉で「うまくいっているところは、うまくいっている、その要因は人柄だ」というのがあった。上記の視点から彼が指摘した事業の問題点について、他のチームメンバーもノッてきたという話もあったので、チーム全員人柄が良いのはあるんだろうが、彼の姿勢がそのチームを作っているようにも見え、素晴らしいと思った。この講演を聞いて、楽しむ関係性を構築する努力をしているかを自問した。

 

まとめ

全体として、プログラミングのトピックというよりも、考え方の話が多く、大変聞きやすく、自分に引きつけやすい内容だった。これまで、勉強会やカンファレンスは、勉強や情報収集の場だと思っていた。そういう場では、自分が自ら学びにくいトピックを学ぶのにはいい。しかし、自分のしたいトピックの勉強会は、自力でするから必要ないだろうと思っていた。

今回のRuby会議で感じたのは、勉強会もカンファレンスもハッカー一人一人のスタイルを学ぶ場であって、必ずしもあるトピックの勉強や情報収集のためでない。そう考えると、これまで敬遠してきた勉強会にも参加してみようと思うようになった。これは一番の収穫かも。以上。

10 Nov 2011

SXSW kick off partyに行ってきた

SXSW kick off partyに行ってきた。最後までは見てないので、中途半端だけどまとめ。

Austinの街全体を使ってやるイベント。音楽/映画/インタラクティブの3柱のお祭り。微妙に各々日がずれて開催。大体3キロ四方に会場があるが、実質1キロ四方(渋谷一帯ぐらい)に密集。Austinの街はlive musicの聖地と呼ばれている。期間中はどこのレストランでもライブしてて夜中の一時でもどんちゃん騒ぎ。SXSW自体は、どうやってインディーズの音楽を売ろうか、という勉強会から始まって、今に至る。その勉強会からここまで成長したってすごい。チケットは買う時期によって値段違う。

参加するメリットは、コミュニケーションツールをその場で大勢の人に使ってもらえる。皆がデバイスを持ってるモバイル系、ソーシャルなアプリは確かに宣伝の場として強そう。また、アクティブなインフルエンサーが多く来るので、伝達しやすい。また、割と本気なQ&Aやピッチがある。その議論には参加する価値がありそう。
逆に、コミュニケーション主体でないサービスは難しいかも。すんごいお祭りで、帰ってから忘れられてるのでは?井口さん曰く、「当日はビルボードや広告がすごいが、帰ってくると全く覚えてない」。ただ、著名人が多数来るようなので、目的を絞ってる人にはリーチしやすいか?

ブースを出すならかなり周到に準備しないとダメっぽい。お店を借り切ってfree food/beerで攻めてるところもあるし、ステッカーを貼る場所が無数にある。事務局からのアドバイスは「とにかくバカで、目立つことをやってください」。広報の人は芸者の格好で乗り込むなど。
スケジュールとして、トンチドット井口さんは8月ごろから調査を始め、10月に行くことを決めた。ブースを出すなら場所として、となりでライブやってるところとかは宣伝的につらそうなので、ちゃんと選びたい。

熱量として世界を変える場所であるのは間違いなさそう。行く。
10 Nov 2011

坂口恭平「TOKYO 0円ハウス 0円生活」を読んだ

坂口恭平の「TOKYO 0円ハウス 0円生活」という本を読んだ。

これは、ぜひエンジニアに読んで欲しい。なんでも自分で作れるんだ!とワクワクできる。Makeを初めて読んだ感覚に近い。自分の中にあるが、存在を忘れていたスイッチを、オンにされた感じがした。

なぜエンジニアが読むべきか?まず、これはハッカーの脳を刺激する知的清涼剤だからだ。0円で家を作り生活する彼らは、現実世界のハッカーであり、建築や生活のための様々なハックが描かれている。ブラックボックスを解明・理解したいエンジニア気質の人には最高の清涼剤になるはずだ。彼らの生活は『未来的であり、原始的』という文章に集約されている。意味は、読めば分かる。
昔、PCの電源もネットも自活でき、古いマシンでもバリバリとハックする放浪ハッカーになりたかった。父が借りてきた雑誌の、風力で電源を確保するログハウスの特集を穴が空くほど読んだり、古いMacを生きながらえさせるためにfreeBSDやMkLinuxをインストールしたりした。そういう過去の自分に、とても刺さった。

また、オープンソース的な考え方が、(その実現形態は過激だが)現実社会でも実現することを確認できる。彼らは無償で提供された資源を中心にコミュニティを形成し、情報を交換することで、巡り巡って生活の資金を得る。無償で提供される資源は、捨てられた車のバッテリーから家電が動くという知識や、拾ってきたコンロで湧かしたお湯を配るなどの物資など、形態は様々だ。『うまくいっているところは、うまくいっている。やっぱり一番重要なのは人柄なんだよね』というのも、linusがlinuxコミュニティを育てた点に通じるものを感じる。

僕は上の2点でこの本が刺さったので、まずはその点をピックアップして本を薦めようと思ってこの記事を書いた。ただ、刺さる刺さらないは別として、自分なりに感じたことを書くと、人のありようについて、新しい考え方の切り口を得た。それは、ウェブサービス的に言えば、”人生”サービスで公開されているAPIは”買う”だけだと思っていたけど、実はよりネイティブな”作る”APIがあるし、もっと掘り下げればより多くのネイティブAPIを見つけられる。Railsのコードを読めば、webフレームワークの構造が理解でき、世界が広がる感じがするように、ネイティブAPIを知れば知るほど、世界は広がるのではないか。そんな感じ。

ちょっと無理なメタファに寄せた感じもするのは承知だけど、とにかく面白かったので、それを伝えたかった。
2 Nov 2011

OSX(Snow Leopard)へのruby-opencvのインストール

openCVを使う機会があったので、どうせならとrubyインタフェースで開発することにした。そこで、今後詰まった時のためにruby-opencvのインストールログを残す。

注意点としては、ruby1.9.2にしてからインストールすること。ruby1.8.7だとrb_str_new_cstrというエラーが出る。ただ、このエラーはライブラリインクルードの問題だけなので、スキルのある人は解決できるかも。

sudo brew install opencv

#####

# ruby-opencvのインストール #####

%git clone git://github.com/ser1zw/ruby-opencv.git

%cd ruby-opencv

#gem install bundler #bundler gemが入ってない場合

%bundle install

%rake install_gem

#"/ext/opencv/cverror.cpp:143: error: ‘CV_GpuCufftCallError’ was not declared in this scope"

#上のようなエラーが出る場合、以下のURLのアドバイスに従ってext/opencv/cverror.cppの143行目を削除する。

#https://github.com/dagi3d/paperclip-facecrop #ちゃんと入ったかテストする。

%ruby examples/find_obj.rb

 

なお、githubにはruby-opencvのリポジトリが現在forkも含めて3つほどあるが、ser1zwユーザーのものが一番更新が高かったため、今回はそれを利用した。

30 Oct 2011

コンテキストスイッチを切り替えるコツ

いくつか自分のプロジェクトと並行して大学院の研究もやっていたが、仕事と並行して複数のプロジェクトを行うのは難しく、研究に大きく時間を割く必要ができた。そこで、今あるプロジェクトを絞り込み、時間を作ったが、プロジェクトをうまく頭に残しておくことができず、気晴らしに時間を使ってしまう。プロジェクトについて考えようとするが、長時間持続せず、次の一歩を決められないために実行できない状態が続いた。

これはマズいと感じていたが、自分なりの解決法を見つけた。それは、とりあえず何かアクションしてみること。何をやろうか考えるを最小限に押さえ(ハマって何もできなくなるから)、一番簡単にできるタスクを手を動かしてこなしてみる。そのうちにそのプロジェクトに意識を向けることができ、だんだんと記憶が呼び覚まされていく。

わかってみると簡単で、そういえば「プログラマが知るべき97のこと」で宮川さんが書いてたルーチンワークを手動化するという話はこれだな、と思い出した。あの記事はプログラミングに取りかかる前、という文脈だったが、プロジェクトのコンテキストスイッチが切り替わらず、頭がうまくまわらないときにも有効だ。

他にも自分なりの方法があれば教えてほしい。

7 Oct 2011

herokuでdmgファイルをホストする方法

Rubyist御用達のPaas『heroku』に、Macのアプリサイトをホストした。アプリを.dmg形式のファイルとしてアップしたが、ダウンロードするとdmgファイルが開けない。エラーは -4096 と出る。

この原因は、herokuが.dmgファイルをapplication/octet-streamというmime-type(ファイル転送形式)で流してしまうことによる。 wikipediaのApple Disk Imageによるとdmgファイル用のmime-typeはapplication/x-apple-diskimageなので、こちらにダウンロード時のmime-typeを変更したい。

対策は通常apacheの設定ファイルを弄ることで行うが、herokuなのでサーバの設定は弄れない。なのでrailsのアプリにダウンロード機能を持たせれば良い。

class TestController
  def download
    send_file "#{Rails.root}/public/app.dmg", :type => 'application/x-apple-diskimage'
  end
end

これでTestController#downloadのURLへアクセスすればdmgファイルが壊れず開ける。

3 Oct 2011

空を飛ぶ夢 - 自家用飛行機を飛ばすためのネット学習リソース

少し前、映画アビエイターを見た。お金持ちの坊ちゃんが親の遺産を使って映画や飛行機など、自分の趣味を実益に変えていくが...というお話。それを見て、自分は飛行機が好きで、高校の進路選択時に航空大学校も視野にいれていたのを思い出した。

そこで、自家用機のライセンスを取ろうと思い立った。が、学校に入るのはコストが高い(自家用で東京で講習する場合500万程度)。コストを押さえるべく、また折しも梅田望夫の「ウェブで学ぶ」を読んでいたこともあり、ネットで学習できるリソースをまとめてみた。なお、僕は自家用の日本でのライセンスが欲しいため、日本の自家用飛行機の資格に限ってリソースを集めた。

 

自家用飛行機を単独で飛ばすのに必要な資格

日本で自家用飛行機を単独で飛ばすのには3つの資格が必要になる。

 

資格1) 航空特殊無線技士

単独で飛行するときに必要な無線通信の資格。無線協会が主にその資格試験や講義を行っている。講義は4万6千円ぐらい。高い。無線協会のページではこの資格は特殊無線技士にカテゴライズされる。

過去問: http://www.nichimu.or.jp/kshiken/siken.html

 

資格2) 第2種航空身体検査証明書

要するに身体検査。1年有効。自家用操縦士の免許は終身有効だが、この証明が期限付きなので、この証明を更新しないとずっと飛び続けることはできない。その他のブログを見る限り大体2万円ぐらいかかる。

証明書についての説明ページ: http://www.aeromedical.or.jp/check/seido/index.htm

その証明書を発行してくれる期間リスト: http://www.aeromedical.or.jp/check/kikan.htm

 

資格3) 自家用操縦士技能証明

これが自家用の免許。一度とればライセンスは終身。試験は車と同じで学科と実技に分かれる。

学科試験は以下の項目についてテストする。過去問は公開されている。

  1. 空中航法
  2. 航空工学
  3. 航空気象
  4. 航空通信
  5. 航空法規

過去問: http://www.mlit.go.jp/about/file000045.html

実地試験もある。学科試験に受かったあと1年以内に受けないと、学科試験合格の資格が失効し、もう一度学科試験を受ける必要がある(『飛行機操縦のABC』イカロス出版より)

 

机で勉強することは自学でやればなんとかなるが、問題は実地試験に合格するためのコストをどう下げるかだ。今考えているのは昔パイロットをやっていた方(かつ操縦教育者免許を持つ方)を探して、個人的に雇うことでコストを押さえる方法。ただ、飛行機のメンテナンスにかなりかかるために、学校のコストがその値段帯なのかも。コストを押さえてライセンスを取得した方の話が聞けるとうれしい。

また、今回は過去問や資格の概要を示したが、より詳しいテキストのリソースもある。それも追って記載する。ネットのリソースで学習することでコストを押さえて資格に達成できるか実験だ。

 

30 Sep 2011

ランニングの下準備

大学院のソフトボール大会で運動の楽しさに目覚め、9月頭からランニングを始めた。3日坊主の自分が大好きなガジェット(Nike+)の力を借りて1ヶ月継続できた。だが膝が痛かったり、走れる距離も2キロが限界。そもそも2キロしか走ってないんじゃランニングと言えるのか謎なので、ランニングについて勉強することにした。

「ランニングの作法」という本を読み、その中で自分なりにすぐに実践できるポイントがあったので、ランニングをはじめた人はこのポイントを押さえるといいかも。

準備期間

初心者は膝周りの筋力アップのため2~3週間はウォーキング、その後日常的に階段等を使う事でより膝周りが負荷に耐えられるようにする。

そのウォーキングで調子が出てきたら、走るフォームを作るために意識的に歩幅を広くする。ランニングはかかと(足裏)を付けるフォームが基本らしい。

 

フォームや走りについて

走りは全身運動。力むとうまく走れない。力まないコツは力むこと。具体的には、一瞬肩を引きつらせたあと、ストンと肩を落とす方法(筋弛緩法)で力みを取る。

呼吸は吐くことで吸う。キチンと吐けば体が勝手に吸ってくれる。

走ってるときは肩幅のレッドカーペットの上をまっすぐ走るイメージ。大体これでよさげなフォームになる。

走るペースは、息は弾んでいるが隣の人とおしゃべりできる程度が初心者にはいい。

モチベーション維持のため、1日10分以上走らず「もっとやれそう」というところでやめる。それでも走りたければ回数を増やす。

 

走る直前の準備

朝走る場合、水分補給は朝起きてすぐ飲む。家出る前にもう一杯飲む。

走る前に、一般的なストレッチである静的ストレッチはするのは良くない。動的ストレッチであるラジオ体操をする。ストレッチは走ったあと体(筋温)があったまってるときにやると筋肉の柔軟性が増してよい。

ラジオ体操だけでなくウォーキングで筋温を高める。

 

その他

信号待ちで屈伸等のストレッチしない。筋肉の伸びる幅が急に変わると一瞬力が入らなくなる。。

ランニングシューズは600kmで買い替える。シューズ中央にしわが入っていても交換。1~2年放置のものも参加してヘタッてるので交換。軽いものよりクッションがある重いもののほうが良い。

靴ひもはつま先側はきつめに、甲は普通に結ぶ。毎回結び直す。

靴はかかと部分にクッションが入ってるので踏まない。

 

これらを実践してまずは10kmは軽く走れるように、ゆくゆくはホノルルマラソン完走を目指す!もっと良い場所でのマラソンがあれば教えてもらえるとうれしい。

Tomoaki Sano's Space

I'm web developer lived in Tokyo/Kyoto, Japan.

---