本年もよろしくお願いいたします、ということで、今年最初のエントリ。
最初のエントリーは何にしようか少し迷ったが、昨年末に発売になった日経ソフトウェアで書いたC/C++でiOS&Android同時アプリ開発の記事を書いている時の話を少し書いてみる。記事を書き進めている時の出来事など、記事に書けなかった事を。
最初はiOS向けに作るべし
まずこれが最初にくる。iPhone/Android両対応のゲームを開発するなど、C/C++でコードを共通化する事が決まっているのであれば、最初はiOS向けに作成するのがよい。それは、XCodeで開発した方が効率がよいから。
Android NDKは、C/C++のビルド環境やライブラリなどは整っているのだが、それ以外まだ弱い面も多い。その一つにデバッグ環境が挙げられる(ネイティブコードをデバッグするためのツール、DS-5 Community EditionもARMから無償提供されているが、私はまだ未評価)
なので、AndroidでC/C++のコードを利用したアプリを開発する際は、最初XCodeやVisualStudioなどC/C++のビルド&デバッグ環境が整った環境開発で完成させて、その次に、Android NDKでビルド、つづいて動作検証と修正と行った方が早く完成する気がする。
あと、この手法の嬉しい副作用として他ハード、他OSへの環境への移植が楽になるという点もある。最近だとChromeのNativeClientにも楽に移植できるようになる(はず)
iOS/AndroidのC++コードの違いは少ない?
OpenGL|ES2.0のサンプルコードの開発中にあった出来事だが、iOS版サンプルがひと通り動作したところで、「さて次にAndroidでの動作検証しないと」と、C++のコードをAndroid NDKでビルド、そしてアプリを実行すると、なんと1発で見事に動作したのは驚いた(こんなことは滅多にない)C++のコードに対してAndroid向けに手を入れてようとしていた矢先の出来事だったので、余計に…。
この理由としては、
が挙げられるのではないかと。
こう考えると、C/C++を利用して開発する限りは、iOSもAndroidもほんど差が無いんだなーという事は理解できる。頭では。まあ、こういうことは、現実にうまく行くことの方が稀だったりしてあまりアテにしてないのだが、今回はそれが理論通りになった数少ない体験の一つとなった。
TitaniumMobileもいいけど
C/C++もコードの共通化に使えるよ、ということで。