第3回 iphone_dev_jp 東京iPhone/Mac勉強会でFrankの紹介をしました

サンプルプログラムとプレゼンテーションを公開します。

https://github.com/soutaro/chefpad

各方面に(いらん)配慮をした結果、サンプルプログラムは画像リソースを削除してあります。(どの方面かはプレゼンテーションの中に残してあるスクリーンショットからお察しください)。

どういう話でしたか?

Frankを使うとRubyからiPhoneアプリのテストができるので、iPhoneアプリがクライアントになっていて、サーバがRailsで書いてあるような、今どきのアプリのテストがやりやすいよ!という話でした。

Frankって言うのは一言で言えば、iPhoneアプリのためのSeleniumです。

サンプルの説明

Railsのサーバを普通に開発して、Frankと連携させるために必要だった作業は、次の3つです。

  • Frankでテストするための環境を用意する(config/environments/frank.rb)ちなみにこのファイルはdevelopment.rbのコピーです
  • config/database.ymlのdevelopmentの項をコピーして、frankというのを作る。DB名は変更しておく。
  • frank-runner-with-rails.rbを作る

frank-runner-with-rails.rbについてちょっとだけ説明します。いくつかメソッドが定義してあります。start_clientstop_clientは、シミュレータの起動と終了を行うためのものです。さらにstart_railsというのがあります。これはRailsのサーバを起動するためのもの。

全体を説明すると、

  1. Railsのアプリをロードするload "config/environment.rb"
  2. Railsを起動するstart_rails
  3. シミュレータを起動するstart_client

を適当なタイミングでやっています。frank-runner-with-railsstart_railsの中で適切なRAILS_ENVを指定することにより、二つのプロセスが同じDBを見るようになり、つまり同じデータを保持するようになります。

サンプルアプリの名前について

日本には、サンプルアプリと良く似た名前のとても素晴らしいサービスがありますが、この名前についてアメリカ人がぼそっと言ってたのを聞いたことがあります。

Cookっていうのは料理をする人のことであって、料理を考える人はChefだよね。

別に、某社に喧嘩を売るつもりはありません。

デモについて

私はデモって基本的にあんまり好きじゃなくて、それは失敗するととても痛々しい感じになるからです。

  • 良く見る問題で詰まるのを見ると萎える
  • 見たことのない問題で詰まるのを見ると、何やってるのかわからなくなる

で、基本的にデモはやらずに生きてきたのですが、先月のWWDCでちょっと見方が変わりました。良く準備されたデモは、確かにわかりやすい。ちょっと取り入れてみました。

WWDCでは、ソースコードのデモについて、大まかに言って二通りやり方があったように思います。

  • スニペットを活用して、その場で超高速にプログラムを入力していく
  • ifdefとかを使って、既に書かれているコードを順に有効にしていく

わかりやすいのは、圧倒的に前者でした。

そういうわけで、今回はSublime2スニペットを駆使して、デモを行いました。ちなみに私がスニペット使ったのは初めての経験です。

私のデモがわかりやすかったかどうかは、ご覧になった皆さんのみが知っています。ここまでのところ、悪かったという声は聞いてないので(わざわざ言う人も少ないと思いますが)、それなりにうまくできたのではないかと思います。(ちなみに、前日の夕方に弊社の開発チームメンバーの前で練習をして、さらに金曜の深夜に何度か一人でぶつぶつつぶやきながら練習をしています。)

Media Technology Labについて

(少なくとも発表者にとって)素晴らしい環境でした。全方向の壁に液晶ディスプレイが並べてあって、プロジェクターで映し出されるのと同じ内容が表示されていました。これが本当に便利で、会場のどっちを見てもスライドが目に入るというのがすさまじい安心感です。

プレゼンをやるときに良く言われる失敗として、スライドとか手元のPCを見つめてて聴衆を見ていない、というのがあります。この問題を軽減するのに、とても良い施策だと思います。後ろの壁にスクリーンがあると、聴衆とスライドの距離がとても近くなり、とても話がしやすい感じです。こういう仕掛けが広く提供されるようになると、(一部の天才とかプロとかではない)一般人のプレゼンテーションもどんどん質が向上するんだろうなーとか思っていました。

弊社でもプロジェクターを導入することになったら、その対面にちょっとでかいディスプレイを配置しようと決心しました。