InfoQ

InfoQ

News

マイブックマーク

ブックマークするためにログイン または 会員登録 する

ブックマークされました!

ブックマークがエラーになりました。もう一度お願いします。

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

作者 Werner Schuster , 翻訳者 編集部 投稿日 2008年12月25日

セクション
デベロップメント
トピック
ランタイム ,
リッチクライアント/デスクトップ ,
Java ,
Ruby ,
.NET
タグ
Symbian ,
XRuby ,
Android ,
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

特集コンテンツ一覧

GAE開発の落とし穴

Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します

イベントレポート:「Coqチュートリアル#1」

去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。

Javaの未来についてのNeal Gafter氏とのディスカッション

Choosing Options

Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。

Google Dartのエッセンス:アプリケーションの構築、スナップショット、Isolate

GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式

CSPベースのモデル検査ツール「Process Analysis Toolkit」

本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。

Jenkinsによる継続的インテグレーションのススメ(4) ~CloudBeesでJenkinsをサービスとして使う~

前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。

書籍『抽象によるソフトウェア設計-Alloyではじめる形式手法-』の紹介

Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。

Windows デバイスで開発するタッチユーザーインターフェイス

スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。