レビューに参加したので著者の出村さん @checkelaさんから献本頂きました。ありがとうございます。
表紙が超かっこいい!
内容がNDKなだけにある程度の知識がある前提で書きます。
Android NDKって?
AndroidアプリはJavaで開発することをご存じの方は多いと思いますが、Android NDKを使うとAndroidアプリの一部もしくは全てをC/C++で開発することができます。
一部の場合は、JNIを利用してJavaとC/C++の両方で開発します。
そして、Android 2.3からは、Androidアプリの全てをC/C++で開発できるNativeActivityがサポートされました。
このNativeActivityについても1章まるごと解説されています。すごい。
Android NDKのメリット
- パフォーマンス向上(高速な処理が必要になる場合など)
- C/C++で開発された過去の資産の再利用
2つ目のメリットは、過去だけではなくiOSアプリからの移植や並行開発時にも大きなメリットになります。
実例
某社の某iOS向けゲームも処理のほとんど(iOSに依存するObj-Cが必要になるギリギリまでの部分を)をC/C++で開発し、その後、AndroidにNDKを使って移植されたそうです。(勉強会で公表してるから大丈夫だよね!)
この時、工数削減はもちろんですが、一番のメリットはiOSでかなりのバグを叩いて品質が高くなったライブラリをAndroidに移植したことで、Androidアプリ開発時にライブラリ側のバグがほとんどなかった点です。
また、もともとC/C++プログラマであれば、このようにほとんどをC/C++ライブラリで開発するという作戦にすることで、JavaやAndroidの学習コストを最小限にしてAndroidアプリが開発できますね。
さらに、Android 2.3以降を対象とできるプロジェクトであれば、繰り返しになりますが、はじめに挙げたNativeActivityを使ってC/C++のみでAndroidアプリが開発できます。
NDKの説明が終わったところで本書の内容へ
ゲーム開発に最適
本書の「はじめに」でも触れられていますが、NDKは現状、ゲーム開発に最も適しています。グラフィックとしてOpenGL ES、サウンドとしてOpenSL ESが非常に丁寧に解説されています。
さらに、「Chapter 08 アーキテクチャ」では、
- ARMプロセッサ
- Cortex-A8
- アーキテクチャの構成(CPUの命令はどのように実行されているか)
- メモリ
- L1キャッシュとL2キャッシュ
- ABI
- cpu-features
などが、非常に詳しく解説されています。これはなぜかというと...次の章「Chapter 09 最適化」で、8章の知識をベースに、企業が本格的に実務で行うような最適化手法を非常に詳しく解説するためとのこと。
「Chapter 10 NEON」にいたってはもう...
全体的な感想
- 詳しい
- 丁寧
- 深い
- 濃い
これにつきると思います。Android NDKをがっつり勉強したい方にはもってこいです。
Titanium, CoronaなどiOS/Androidクロスプラットフォームな開発ツールが登場している昨今ですが、これらは商用にはまだまだといった感じで、個人デベロッパーやピンポイントで効果を発揮するものだと捉えています。クロスプラットフォームで楽な分、パフォーマンスはそれぞれObj-C/Javaよりは劣ります。
じゃあ、Obj-C/Javaで開発するか、ということになるのですが、さらにパフォーマンスが求められたら?ハイスペック/ハイクオリティなゲームを開発するには?
ということで、
http://twitter.com/#!/checkela/status/94227351268888577
アンドロイドの「真の力」を解き放て!
Amazonでは予約できるようです。発刊されました。
- 作者: 出村成和
- 出版社/メーカー: 秀和システム
- 発売日: 2011/07/01
- メディア: 単行本
- クリック: 83回
- この商品を含むブログ (12件) を見る
秀和システムさんのサイトによると2011/7/27が発売日になっています。
Android NDK ネイティブプログラミング|書籍情報|秀和システム
補足:NDKのバージョンについて
本書はNDKバージョン r5c を対象に書かれたものですが、発刊の直前にNDK r6 がリリースされました。
しかし、r6 の変更点をざっくり書くと大きく以下の3点なので、特に問題ありません。
- x86のサポート
- logcatでnative codeのstack traceが見られるようになった
- 4.4.0がなくなったから4.4.3使う
詳しくはこちら:Android NDK | Android Developers
追記
著者の出村さんのブログ:http://blog.cnu.jp/2011/07/26/android-ndk-book/