InfoQ

News

RhodesがiPhone、Windowsモバイル、BlackBerryにRubyアプリケーションを実現

作者 Werner Schuster , 翻訳者 編集部 投稿日 2008年12月25日 午前6時1分

コミュニティ
.NET,
Ruby,
Java
トピック
ランタイム,
リッチクライアント/デスクトップ
タグ
Android,
XRuby,
Symbian,
iPhone

Rhodesは、新たなオープンソースソリューションであり、モバイル機器に対しRuby実装をもたらす。その上、多くのデバイス全体(現時点ではiPhone、Windows MobileおよびRIMのBlackBerry)で、単一Rubyソースを使用することができる。まもなくSymbianやAndroidに対するサポートも追加予定である。


iPhoneへの実装の可能性は、興味深い。というのは、iPhoneの開発に向けたもう1つのオプションを追加するからである(Objective-Cの次)。同様に、Rhodesおよびすべての必要なインタープリターおよびライブラリがGitHubでホストされた、オープンソースであり(リンク)、Rhomobileのプロジェクト向けの公用バグトラッカー(リンク)も利用可能である。

Rhodesの正確な動作方法について、またiPhone向けの言語として、Rubyを取得するためにどのように管理したのかについてRhomobile(リンク)Adam Blum氏に話を聞くことにした。

プラットフォーム

最初の質問は、当然ながらRhomobileがiPhone上でRubyアプリケーションをどのようにして記述できるようにしたのかについてである。Adam氏は、以下のように説明する。

その答えは、デベロッパのアプリケーションをわれわれのフレームワークおよびRubyインタープリターに組み込むということである。AppStoreの アプリケーションに準拠するために、デベロッパはオンザフライで他のところから解釈コードをダウンロードしているはずはない。規則を遵守するのはデベロッパの義務であり、違反しようとするなら、Rubyインタープリターを組み込んで、Rubyコードをダウンロードする以外に、ずっと簡単にできる方法がある。


iPhoneで使用されるRubyは、最新のRuby 1.9バージョンである。Rhodesはその他のプラットフォームをサポートし、Rubyが利用可能なところ(たとえば、Symbian)にさらにプラットフォームを追加することを計画している。

アプリケーションがJavaで記述されるBlackBerryに おけるRhodesおよびRubyのサポートには、もう少し取り組まなければならなかった。Rhomobileは、XRuby(参考記事リンク)を使用する意欲的なソリュー ションを選択した。XRubyはJava向けのRubyバージョンであり、JavaクラスファイルにRubyコードをコンパイルする。昨年XRubyの開 発は減速したが、RhomobileはXRubyを引き受け、改良した。そして現在、XRubyを使用しRIM BlackBerry上でRhodesアプリケーションを実行している。また、Adam氏は以下のように述べている。

RIM実装(JRubyではなくXRubyに基づく)のためにおこなった独自のRubyから開始し、Androidに取り組んでいる。

またAdam氏は、Rubyインタープリターを小型にする必要性を述べている。それにより、サポート済みのRubyライブラリに影響を与える。

それは間違いなく、サブセットである。独自のフレームワークを実行する必要があるのは、そうしたことが理由の1つである。さらに小型にするために、さまざまなことをしているが、長期的にさらに多くのことをおこなっていく。

eval()のような機能は、サポートされていない。

Rhomobileがモバイルプラットフォーム向けのRubyインタープリターと動作するので、Adam氏に何をサポートしてもらいたいかを聞いた。

Ruby実装者が、Rubyのますますコンパクトな実装の実現に集中的に取り組み、また便利なアドオンGemをビルドする際、従属関係のサイズコストにより注意を払ってもらいたい。しかし、差し当たりそれはわれわれの仕事のようである。

動作方法

Rhomobileは、さまざまな携帯電話プラットフォームをサポートすることを目指している。なので、クロスプラットフォームアプリケーションである Rhodesフレームワークの構築するための道を選択した。要するに、Rhodesアプリケーションは携帯電話でローカルに実行するWebアプリケーショ ンである(アプリケーションのRubyの部分は、携帯電話だけでなくHTML GUIでも実行する)。これらのアプリケーションのGUIは、HTMLとして定義されていて、すべての電話上で利用可能なブラウザコンポーネントを使用し て表示される。今の携帯電話は、標準ブラウザを搭載する傾向がある。たとえばWebキットベースのSafariがiPhoneに搭載されている。それは、 GUIのJavascriptの使用を含む、通常のWeb開発メソッドを使用して、アプリケーションを定義することができることを意味する。また、 Rhodesは iPhone GUI上でIUIを使用する(リンク)ことで、個々のプラットフォームで、GUIをネイティブGUIコンポーネントのように見えるように取り組んでいる。

しかし、Rhodesはこれに別の傾向を追加している。現代のスマートフォンの進んだ機能のいくつかが、Rhodesアプリケーションで利用可能である。 現在ジオロケーション情報が利用可能である。加速度計カメラおよびローカルPIMへのへのアクセスは、1月の次期バージョンで利用可能になる予定であ る。Ruby呼び出しで、これらの機能にアクセスすることが可能である。HTMLファイルのHTMLタグにより、たとえば、

<geolocation/>

は、以下のように表示される(リンク)

37.3317° North, 122.0307° West;37.331689;-122.030731

Rhodesアプリケーションから取り掛かるのは、他の多くのRuby Webフレームワークに取り掛かるのと同じくらい単純なので、ジェネレーターから始める。

 rhogen app accountapp

これにより、コントローラおよび他のアプリケーションが搭載された基本的なアプリケーションスケルトンを生成する。Rhodes Tutorial(リンク)で詳細を確認できる。

Rhodesのほう一方の部分は、オブジェクトマッパーであるRhom(リンク)である。Rhomobileはまた、GitHubにおいて他のライブラリがある(リンク)。たとえば、多様なデータソースを携帯電話に同期させる支援をする、Phosync(リンク)

Rhomobileのプロジェクトは、やや新しい。現在のリリースはバージョン0.1であるのだが、改善されたPIMアクセスおよびGUIが搭載された、 0.2のリリースが今月末までにはリリースされることになっている。0.3のリリースは、2009年1月までにリリースされることになっている。より多く のプラットフォームに対するサポート、デバイスの機能へのアクセス(加速度計など)、またRhodesデベロッパ向けにホストされたプロジェクトを実現する。

最後になるが、Rhodesプロジェクトがオープンソースであり、GitHubに ホストしていることを確認することは大切なことである。Rhomobileのビジネスモデルは、デュアルライセンシングにビルドする。Rhodesアプリ ケーションはオープンソースであるが、ある企業がRhodesを使用しようとするが、そのソースをクローズさせておきたい場合、Rhomobileから商用ライセンスを取得することでそうすることができる。

同程度の統合レベルを提供するRhodesのような、クロスプラットフォームソリューションを知っているか?アプリケーションの記述にRhodesを使ってみてはどうか?

 

原文はこちらです:http://www.infoq.com/news/2008/12/rhodes-iphone-winmobile-rim

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
slashdot+
Hatena

特集コンテンツ一覧

Flex 4の新機能トップ10

今週(2009年6月1日)AdobeはFlex 4の正式な初ベータ版をリリースしました。Flex 4はGumbo(オクラ)というコードネームで開発されています。今回のリリースには大きな変更が多数含まれています。このRIAフレームワークの最新バージョンにおいて変更された事柄についての概要を以下のリストで見ていきましょう。

Domain Driven Design(ドメイン駆動設計) Quickly 日本語版

ビジネス領域の深い理解を反映したドメインモデルを設計するための、ヴィジョンとアプローチです。この本は、Eric Evans氏の「Domain Driven Design」の主要点を短く読みやすく要約しました。

JavaプログラマがFlexとBlazeDSを学んだ方がいい13の理由

この記事ではJavaプログラマがなぜFlexとBlazeDSを学ぶべきなのかについて13の理由を述べています。なぜ高度にインタラクティブなWeb サイトからJavaで開発されたバックエンドをもつエンタープライズ・アプリケーションまでを含む、リッチ・インターネット・アプリケーション(RIA)の開発にFlexとBlazeDSの組み合わせが最適な選択肢となるのかについて述べています。

仮想パネル: バックログは重要な成果物とプラクティスか、それとも無駄か?

Mary Poppendieck氏、Ron Jeffries氏、Jeff Patton氏、David West氏、Steve Freeman氏、Jason Yip氏が、バックログに関する彼らの意見とアジャイルチームを成功させるために必要な事を語った。

Perf4Jを使ったパフォーマンス解析とモニタリング

この記事ではAlex Devine氏が、Java開発者がPerf4Jをどのように利用できるかと、タイミングステートメントにコードを追加し、ロギング、結果の解析とモニタリングを行うオープンソースツールセットの説明をします。

複雑な外部DSLを開発する

本稿では、Vaughn Vernon氏が内部DSLと外部DSLの違いを説明し、複雑な外部DSLを開発する際のステップを示します。

J2EEアプリケーションにおけるAOPを使ったフェッチ戦略の実装

この記事では低レベルのサービス・レイヤやリポジトリ・レイヤを肥大化させることなく、フェッチング・ストラテジによってモジュール化された方法でバックエンドにあるシステムからデータを取得する処理を最適化する方法について説明します。

実証済みのアイデアの融合: S#arp Architectureの裏側

この記事では、Web開発における多数の成熟傾向と、クライアントに価値を提供することに対するそれらのメリット、およびS#arp Architecture(最善の手法と技術を活用しようとするASP.NET MVCをベースとしたフレームワーク)内でのそれらの使用について取り上げます。