連載第3回となる今回は、Rhodesがどのように動いているのかを覗いてみる。前回使用したソースを見ながら、Rhodesでのデータ処理やDBとのやり取り、どのように画面生成を行っているのかを見ていきたい。

Rhodesのアーキテクチャ

 Rhodesで作成されたアプリは、他のマルチプラットフォーム対応のフレームワークとは少し違うアーキテクチャとなっている。

Rhodesアーキテクチャ
[画像のクリックで拡大表示]

 上図の構成図はおおざっぱに記述したものだが、Rhodesの中には実はRuby VM(Ruby1.9.1/XRuby)が搭載されており、その上で外部拡張が用意され、さらにはWebサーバーまで搭載されている。まるで、Webアプリケーションがサーバーも含めそのまま一つのアプリとして提供されている形だ。このRuby VMを各スマートフォンのOSごとに用意することで、一つのソースで多数のプラットフォームへの対応を実現している。

 一見Apple社の「App Store」への登録はできないのではないかと思われるかもしれない。しかしRhodesではRubyのスクリプト動的に評価している訳ではない。一度「YARV」と呼ばれるRuby1.9.0から採用された仮想マシン用のバイトコードにRubyのコードを変換したものをアプリの中に設置し、RubyVMにて実行する形を取っている。そのため、AppStoreの規約に抵触しないアプリを作成することが可能となっている。