最近ではスタートアップ企業がRIAテクノロジを使って新しいアイディアやサービスを生み出すことは珍しくなくなった。Adobe FlexをベースにBabbel(Babbel)を作っているスタートアップ企業もその良い例だ。InfoQはBabbel(サイト・英語)を提供しているLesson Nine GmbHのCTOであるThomas Holl氏に、Flexを使ったスタートアップのアーキテクチャがどのようにデザインされ実装されているかについて話を聞いた。
まず、Holl氏はBabbelとは何かを語ってくれた。
Babbelはコミュニティベースのオンライン語学ツールです。ドイツ語、英語、フランス語、イタリア語、そしてスペイン語についてのコースがありますが、Babbelではこれらの語学コースに、面白く効果的にボキャブラリを増やしたり文章を作ったりできるようなツールを使ったソーシャルネットワークの楽しみを加えています。
Babbelを作った理由についてはこう語った。
2006年の終わりに私たちがモダンなオンライン語学ツールを探していた時、Babbelのようなものがなかったことに驚きました。今はちょうど状況が変わり始めているようですが、その時はオンラインで利用できるボキャブラリトレーニングはまだとても基礎的なもので、あまりユーザフレンドリでもありませんでした。それにCD-ROMやDVDで買えるマルチメディアアプリケーションは高いだけでなくコンテンツやテクノロジはもはや時代遅れでした。Babbelのコンセプトのお手本になったのは、楽しく使えとても流行っていたいくつかのゲーム機用学習ソフトでした。
FlexとAJAXについてHoll氏はこう述べた。
最初の時点から明らかだったのは、音やアニメーション、そしてより早く応答するためのバックグラウンドでのデータバッファリングといったモダンなマルチメディアの潜在力を私たちのサイトで利用するべきだということでした。昨年の時点ではBabbelに対して私たちが考えていたことにマッチするテクノロジはFlexフレームワークしかありませんでした。AJAXでもいろいろなことが出来たかもしれませんが、そのためには多くのJavaScriptライブラリを扱わないといけませんし、それでもユーザエクスペリエンスにおいてはFlashアプリケーションに及びません。
Babbelがどのように開発されたのかという質問に対して、Holl氏はこのように教えてくれた。
Babbelを4人の開発者で作っていたときは、2人がFlexクライアントに集中し、2人はAmazon EC2(source)上で動くRuby On Rails(source)ベースのバックエンドの開発を行っていました。2007年の5月にゼロから始めて、最初のパブリックバージョンが出たのが2008年1月ですので、開発期間は約8ヶ月でした。
サーバは12000行のRubyコードからできていて、Flexクライアントは50000行のコード(そのうち7000行はフレームワークで生成されたもの)からできています。
私たちは反復型開発プロセスを採っていますが、自分たちには1週間の長さの反復が一番合っています。そして私たちが使っているのはベストプラクティスとされるツールとプロセスで、例えば、バージョン管理にはSubversion(source)、バグトラッキングやドキュメンテーションやコミュニケーションにはTrac(source)、自動ビルドや自動デプロイにはAnt(source)やCapistrano(source)を使っています。
Holl氏はBabbelの開発で経験した問題についても教えてくれた。
クライアントからバックエンドサービスにアクセスするために、私たちはサービスをシンプルな言語で定義するようにしました(WSDLのようなものを考えてもらえばいいですが、私たちのはJSONベースでもっとシンプルなものです)。そして自分たちで作ったジェネレータによってその定義からActionScriptのメソッドを生成し、サービスから(HTTPで)返ってきた(JSON形式の)データを静的に型付けされたValue Object(これらのクラスもジェネレータが生成します)によってクライアントで扱えるようにしました。しかしこのような方法でデータを変換するのは、ある種の機能(例えば人物サーチ)では正しいやり方ではありませんでした。GUI要素を動的に生成するためのコードを書くのは単なる無駄でした。私たちはRailsがオンザフライでHTMLを生成する機能を利用しようと考えました。しかしFlexでサポートされるHTML要素やスタイルの問題でFlexのHTML表示はかなり制限されているので、私たちはMXMLをRailsで生成してクライアントに表示するようにしました。この方法によってサーバがクライアント側のアクションをキックできるようにもなりました(新しいメッセージが届いたらクライアントに通知を表示するなど)。
技術とアーキテクチャに関するRIA特有の問題について、Holl氏は次のことを思い出し語ってくれた。
時々持ち上がる問題は、クライアントがどれだけの状態を持てるか、どれだけ持つべきかということです。この点で良いバランスを見つけるために私たちは何度も改良とテストを繰り返しました。クライアントに関する変更がサーバ側であった時には、次にクライアントからのリクエストがあった時点でクライアントに伝えます(そのためプッシュ型のアーキテクチャを使う必要はありません)。そのためクライアントはいつサーバと同期すればいいかを自ら決めることができるのです。
Babbelで将来役立ちそうなテクノロジは何だろうか。
私たちはこの語学ツールでよりゲームに近い感覚のユーザエクスペリエンスを実現したいと考えています。次の大きな目標は、音声とビデオによるチャット機能を組み込むことです。そして今評価中のAdobeのエコシステムにはエキサイティングな可能性があります。それにネットワークとコミュニティに関して追加したい機能もたくさんあります。また社内チームのためにも、ユーザがBabbelに寄与してくれる可能性を大きくするためにも、コンテンツ管理についてはもっと力を入れる必要があると思います。さらにBabbelをモバイルへも展開したいと考えているので、ゆくゆくはJ2MEやSymbian、あるいはiPhoneでの開発もすることになるかもしれません。
原文はこちらです:http://www.infoq.com/news/2008/04/flex-startup-babbel