新しいスマートフォンアプリの開発方法として「マルチプラットフォーム対応フレームワーク」という選択が可能になってきた。

 3Dゲーム用エンジンで有名な「Unity3」や、Lua言語を採用した同じくゲーム向けである「Corona」、JavaScriptをネイティブコードに変換する「Titanium Mobile」、そしてまるでWebアプリケーションを作成しているかのように開発ができる「Rhodes」などがある。

 Unity3はiOS/Android用ライブラリはアドオンとして有料で販売されている。Coronaは商用利用の場合はライセンス料がかかる。Titanium MobilとRhodesはどちらともオープンソースソフトウエアとして公開されており、ライセンス形態は違うが商用利用の場合でもロイヤリティフリーで利用することができる。

 また、Androidなどではあまり関係ないが、iOSではAppleの規約によって、スクリプトをダウンロードして実行したり、コードを動的にコンパイルさせて実行するといったアプリは審査に通らない。ここであげたフレームワークはすべてネイティブアプリとしてビルドされるものばかりなので、現在の規約に抵触することはない。

 以上のように、マルチプラットフォーム対応のフレームワークは選択できるものが増えてきている。その中でも我々が注目したのは「Rhodes」だ。

Rhodesについて

 Rhodesは米Rhomobileから2009年3月24日にV 1.0が発表された。2010年6月29日にV2.0がMIT Licenseにライセンスを変更しリリース。2011年5月10日にV3.0が発表と進化し続けている。

 Rhodesの特徴は以下の通りだ。

・マルチプラットフォームに対応したフレームワーク
・ロジックを「Ruby」で記述できる
・ネイティブアプリケーションとして動作する
・ユーザーインタフェース開発はHTML/CSS/Javascriptで作成
・MVCアーキテクチャの採用等、Webアプリケーションフレームワーク「Ruby on Rails」の思想を継承

 詳しく解説しよう。

・マルチプラットフォームに対応

 iOS/Android/Windows Mobile/Black Berryなどのアプリケーションがすべて一つのコード、もしくは非常に少ない修正で作成することができる。

・ロジックを「Ruby」で記述できる

 日本生まれのオブジェクト指向プロジェクト言語Rubyで開発する。Rubyは、純粋なオブジェクト指向言語として設計されており、すべてのデータをオブジェクトとして統一的に取り扱うことができることが特徴だ。

 Rhodesを利用して開発する場合にも、以下のようなRubyならではの特徴がある。

・動的型付けができる
・シンプルで一貫性のとれた記述ができる
・可読性や保守性が高い

 以上の特徴を活かし、高い保守性と生産性を維持して継続的かつ俊敏な開発ができる。

・ネイティブアプリケーションとして動作する

 Rubyスクリプトを直接実行(動的コンパイル)せず、まずRubyスクリプトをRuby1.9ベースの中間バイトコードへ変換し、そのバイトコードをOSごとに用意されたRubyVMで実行させる形式を取っており、Appleの定めるAppStoreの規約に抵触することなくネイティブアプリケーションとして登録・配布が可能になっている。

・ユーザーインタフェースはHTML/CSS/Javascriptで作成

 Rhodesの提供するUIはWebViewを利用するので、HTML/CSS/Javascriptで作成する。

 これらの開発はWebアプリ開発経験者にとって参入しやすい。また、jQueryやjQTouch、Senchaといった様々なJavascriptのライブラリを使用する事ができますので、WEBアプリ開発で培った技術をふんだんに使用する事ができる。

・フレームワーク「Ruby on Rails」の思想を継承

 Rhodesの特徴はフレームワーク「Ruby on Rails」の思想を継承していることだ。Ruby on Railsの特徴であるMVCアーキテクチャの採用をしていることで効率のよい開発が可能になる。

 開発のコマンドが違う程度で開発手順や手法が「Ruby on Rails」とほぼ同じであることから、開発経験者であればコマンドを理解することですぐに開発することができる。

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら