2014年5月25日日曜日

非UI部分をC++で作るというHTML5によらないモバイルアプリのクロス開発のアイディア

Dropboxは非UI部分をC++で作るというHTML5によらないモバイルアプリのクロス開発を実践しているそうだ。

How Dropbox Uses C++ for Cross-Platform iOS and Android Development – Ole Begemann

…Dropboxʼs story of how they use C++ to share non-UI code between iOS and Android apps…

But fully native development for several platforms is expensive and time-consuming…

the team made the choice to write a large portion of the non-UI code in C++…

C++ is natively supported on iOS…

On Android, calling into C++ can be done through the NDK…

それぞれプラットフォームで一からネイティブでアプリ開発をすると時間とコストがかかるというのは当然のこと。

昨今のHTML5の普及をベースとしたcordova/PhoneGapなどのようなクロス開発ツールはその時間とコストを削減するのに役立つわけだが、彼らはそうしなかった。

UI部分はネイティブで作り、非UI部分を更に下位レイヤーのC++で作るという新しいアイディアを選択した。

C++はiOSではネイティブサポートされるし、AndroidではNDK経由でサポートできる。そしてC++で作ればHTML5などで作るよりも高速で動作する事は明らか。

開発は多少困難になるかもしれないけれど非UI部分は更新が少ないし、一度書いてしまえばパフォーマンスもコストパフォーマンスも高くなるという素晴らしいアイディアだと思う。

UI部分にHTML5を使う場合でも、画像や音などのエンコーディングなどハイパフォーマンスが必要な部分をC++で実装して、プラグイン経由でアクセスするという手法が使えそうだ。