Ruby on Rails(RoR)はウェブアプリケーションを素早く開発するためのRubyで作られたオープンソースフレームワークだ。RailsとRIAの両方のコミュニティは両者を統合する収束点としてのソリューションをさかんに探している。そのひとつとなるのがFlexフレームワークであるRuboss(リンク)だ。InfoQはRubossの共同設立者でありCEOでもあるPeter Armstrong氏にその詳細を聞いた。
Armstrong 氏によると、RubossはFlexアプリケーションとRESTfulなサーバサイドフレームワークとの連携を簡素化する試みだという。そのサーバサイドフレームワークには今のところRoRとMerbが含まれている。またRubossにはAdobe AIRの使うSQLiteデータベースとやり取りするためのRESTfulなインターフェースが備わっている。Rubossフレームワークと Rails/Merbアプリケーションとの関係はAdobe LiveCycle Data Services ESとJ2EEアプリケーションとの関係に似たものだ。
なぜCairngormやPureMVCのような確立されたFlexフレームワークに依らなかったのかを聞くとArmstrong氏はこう答えた。
単純に、私たちの要求を満たすものがなかったからです。RubossフレームワークはCairngormやMateやPureMVCのようなアーキテクチャ的フレームワークではありません。そうではなくFlexとRESTfulなフレームワークとを統合することに焦点を当てたデータ統合フレームワークなのです。Rubossを「Flex+Rails」であると考えるのも悪くないですが、より正確には「Flex+シンプルなRESTful CRUD」であって、Railsは単に一番ポピュラーで今のところRubossが一番連携できるものであるというだけです。
私たちは FlexとRoRをシームレスに統合し、Railsでの開発における設計原則と高い生産性をFlexにもたらすものがほしいと思っていました。Rails は一番生産性のあるサーバサイドフレームワークのひとつ、FlexはクライアントサイドのRIAテクノロジで最良のもののひとつと私たちは考えています。当然のこととして、この両サイドにおいて最良なひとつのものを私たちは望んでいました。
そういうわけで、私たちはCairngormや PureMCVCあるいはMateとは全く競合しません。たとえばRubossを使うFlexコードをCairngormで書くのと同じように書くことができ、コマンドパターンを使うための長ったらしさがCairngormよりもありません。しかしRubossのスタイルでFlexコードを書けば Cairngormのスタイルよりずっと簡潔なものになります。
Armstrong氏はRubossを特徴づける点を次のように語った。
まず RubossはRailsやMerbやAIRのSQLiteのようにいろいろなサービスとでもやり取りをするため、RESTfulなCRUDを共通インターフェースとして用いることにフォーカスをあてた唯一のFlexフレームワークであるということです。このシンプルでエレガントな設計により現在サポートする必要性や時間のないサービスに対してもRubossフレームワークを拡張することが可能となっています。たとえば、あるRubossユーザが RubossでCouchDBとやり取りをしようとすることもできます。このようにRubossはFlexと高いレベルで連携できるサービスの幅を広げるのです。
第二に、Rubossで書いたコードは転送手段に依存していないだけでなく、シンプルでエレガントなコードになります。
第三に、アプリケーションを非常に速く立ち上げることができます。Rubossを使えばFlex+Railsアプリケーションを5分で作ることができるのです。他のFlexフレームワークではこうはいきませんし、Rubossほどデータモデルを考えるとこから実際に動くアプリケーションへ一気に連れて行ってくれるFlexフレームワークはありません。このやり方についてはRubossの「pomodo」チュートリアル(リンク)を参考にしてみてください。
そして、Ruboss以外のフレームワークでは全ての人のデータ統合の要求を満たしたり、全てのアプリケーションに合ったアーキテクチャになったりすることができません。つまり私たちがしようとしているのは、よくあることの80%を簡単にすることなのです。
Armstrong氏はRubossフレームワークのロードマップについて次のように教えてくれた。
このフレームワークについては、リモートのサービスプロバイダとローカルとでデータの同期ができるようにしようと計画しています。なぜなら現状ではこの同期をディベロッパが自分たちでどうにかしないといけないからです。またMerb+DataMapperのサポートレベルをMerb+Active Recordのレベルまで引き上げようとも計画しています。これが終われば、SimpleDBやGoogle AppEngineなど他のサービスをサポートすることも考えようと思っています。
なおPeter Armstrong氏はFlexible Rails(リンク)の著者で、Hello! Flex 4 (リンク)のメイン著者でもある。