第二回イケテル Rails 開発トレーニングを終えて

11/10に福岡は天神にある天神クリスタルビルにて「イケテル Rails 開発トレーニング」の第2回目が行われていたので参加してきました。

会場着

会場に着くともう参加者の方が大勢来られていました。俺は9時には天神にいたのですが、まだ早いだろうと思ってiPod touch片手にWi-Fi探して遊んでいました(´・ω・`)
受付を済ませ、参加費(一般\2,000/学生\1,000)を支払うとテーブルの場所を指定されました。テーブルは8グループに仕切られており、それぞれ主催者側でグループ分けを行っているご様子。コンセントの数が足りずノートPCの電源が取れないことにちょっとあせりました。ちょっと遠くに空いているハブがあったのでそっちをお借りすることに。

レーニング開始

人数が揃うと、RBC会長の最首さんが前で挨拶をされ、トレーニングが開始。内容は「iPod touchに関する技術を学び、共有すること」だそうで、ぱっと聞く感じではRailsはあまり関係がないご様子。

円陣

イケテル Rails 開発トレーニングでは参加者及び主催側全員で円陣を組む習慣があるらしいです。普通の勉強会とかだと静かに進行していくイメージですが、この勉強会はアクティブというか妙に和気藹々としていました。

iPod touchについて

まずはiPod touchについての説明。RBCとしてはiPod touchを準備している訳ではないようで、持っている人がグループ内にいる場合はそれを使い、持っていなかった場合はRBCの人のiPod touchを各グループに貸し出していました。ちなみに俺のグループでiPod touchを持っているのは俺ともうひとりいたのですが、もうひとりの方の分は別のグループに貸し出すためにどこかへ行ってしまいました。

開発開始

開発環境はAptana+RadRailsを用いるようです。AptanaではiPhone/iPod touch用にプロジェクトが作れるので、このプロジェクトを用いるご様子。簡易httpサーバを内包しているので別途Apacheなんかを準備しなくてもいいってのが楽ですよね。
まずはiPod touchの向きを変えるとアラートを出すJSを作成。window.orientationプロパティで0,90,-90の3つの値を取得できるらしいのでそれを利用。ためしに他の値を取れないか試してみましたが無理っぽかったです(正確には180も返すらしいけどSafari for iPhone/iPod touchでは未対応らしい)。

Safari for iPhone公式ドキュメントから学ぶ

Safari Web Content Guide for iPhoneiPhone User Interface Guidelinesの2つのドキュメントを使っての講習です。iPod touchのドキュメントではなくiPhoneのドキュメントなので日本語版はなく、どちらも英語版。ドキュメントは100ページ超の割と膨大なものなのですが、今回はこの中でviewportとFinger eventに関しての講習が行われました。
viewportってのはSafari for iPhone/iPod touch向けのmeta要素で、仮想のウィンドウ幅(デフォルトでは980px)だと思えば大丈夫・・・・・・なのかな(Apple Developer Connectionによると「Webページのコンテンツの配置やテキストの折り返し位置を決める矩形の領域」らしい)。正直聞く感じでは「width=device-widthを設定しておけば大丈夫」みたいな言い方だったのでよく分かりません。後ほどドキュメント読まなきゃ。
Finger Eventはタップやピンチなんかでどういうイベントを返すのか、またそれをJSで拾うにはどうするのかの講習でした。通常にタップしただけではmousedownやmouseupを拾えなかったり、リンクをタップするとmousedown→mouseup→clickの順で一気に返拾ったりとよく分からない動作をしてくれるのですが、RBCではまだ完全にどういう操作でどの値を拾えるのかを試しきれていないらしいです。イベントに関してはドキュメントに書いてあるのですが、どうしても目的のものが拾えない。まだ試行錯誤する必要があるみたいです。

開発再開

次は前回のトレーニングで作成したものをtouchに対応させるための作業。とはいえ参加者の中には俺みたいに前回参加していないって人も多くいるので、前回のコードをDVDなどにコピーして回してくれました。前回はM.I.TのSIMILEプロジェクトTimelineのコードとGoogleMapを使ったようですが、今回はTimelineに的を絞って進めていくようです。Timelineの操作に必要なmouseupやmousedownも拾えないし、入力可能エリアをタップするとそこだけズームしちゃうし・・・・・・という動かない部分や変な動作をする部分を逐一訂正していきました。前回の内容が分かっていないとよく分からない講習です。事前に前回やったことを復習しておく必要があったように思います。

iPod touchのイベントを調べるアプリ

RBC会員の秋間さんという方がiPod touchのイベントを調べるアプリをRailsで開発されたようなので、それの発表会?みたいなのがありました。ある程度どのような動きをするものかを解説したあとは実際にそれのコードを公開し、参加者全員で動かせるようにしました。調べられるイベントは変更が可能なので、好きなイベントを調べることができるようです。これは凄い役立ちます。凄い面白い。

グループ開発

今回組んだグループで、90分という決められた時間でアプリを作ることになりました。90分で企画、コーディング、テストを行うので簡単なものしかできないと思いますが、とりあえずやってみました。ウチのグループで作ったのはwindow.orientationをスイッチにしたルーレット。RubyでやるのがRBCらしさなんでしょうが、一番最初に使ったiPod touchの向きを変えるとアラートを出すJSをベースに作っちゃったのでアプリもJSです。でもグループの中でJS書ける人がひとりもいない。JSのオンラインリファレンスとにらめっこしつつ2人で開発を進めてくれました。俺を含む3人は魅せ方を考えていたのですが、なかなかうまいことが思いつきません。回転中と停止中のバックグラウンド使うためにGIF動画を作成して、それをJSでスイッチして読み込むなんてことをやっていました。で、どうにか時間内にできたので開発していた2人はさらにルーレットに当たり/外れの判定機能なんてのを作っていたのですが、発表用のコードに含めるのを忘れていて結局発表には使われませんでしたとさ。
#Safari for iPod touchってtouch内にあるHTMLとかは読みこめないのね。
#Apache入れれば読み込めるらしいけど、これ以上アプリはあまり入れたくない。

次回予告

次回のイケテル Rails 開発トレーニングの予告がありました。次回はAppleへ直接行ってもっと詳しい話を聞いてくるらしいです。次回もiPod touchの開発をやるようですが、これはきっとFONと提携して天神に数百台のFONルータを設置し、街をカバーする無線LANネットを構築してサービスを開発するための一環なんでしょう。説明は無かったけどきっとそうだと思う。

懇親会

懇親会の参加は任意なのですが、グループ開発の発表は懇親会で行われることになっていました。ちなみに懇親会会場はなぜかプロジェクタが使える居酒屋さん。貸切のはずなのに常連さんがいるのはご愛嬌。お酒が入ったあとの発表会だったのですが、和気藹々としてよかったです。順番が分からなくなって他のグループの前に割り込んだりしてすいませんでしたorz

反省

前回の資料に関してはSVNで配布されていたのに、一通り眺めるだけだったってのが仇になりました。次回のトレーニングまでに前回と今回の内容をしっかりと復習してから望もうと思います。