APTやばくね?

Androidで部第7回NetaTalkしゃべってきました。

上記スライドを補完する形で、追加の情報を書いていきたいと思います。

APTの嬉しさについて

最大のポイントは、計算コストを払うタイミングを変えることが出来るところです。
今までは、実行時(要するにAndroid端末上とか)にリフレクションでデータ保持用クラスのフィールドの情報を取得し、データを注入していました。
そこで、APTを使うとコンパイル時(要するに開発用マシン)に解析を行い、データ保持用クラスにアクセスするためのクラスを生成し、実行時にはリフレクションを使わずに処理を行うことができます。

それだけ?って感じですが、リフレクションを使って1秒かかる実行時処理を0.5秒に出来たら、ユーザエクスペリエンスも改善されますし、実行するたびに毎回短縮されるわけですし、それが1万端末にインストールされるアプリだったら、なんと5000秒も実行時間が短縮されます :P

でも、APTでコード生成ってめんどくさいじゃん…?

確かにその通り!どちらかというと、APTはフレームワーク向けの技術だと思うので、もしあなたがライブラリを作りたいのであれば、利用する開発者はちょいちょいとAnnotationをつけてやるだけで使いやすいHelperクラスが提供されるので、生産性が大きく向上する可能性があります。

ほんの12行のコードJSONをParseし、POJOマッピングされたデータを取得する事が出来ます。
利用者はAnnotationをつけるだけで良いです!

また、実行時に必要なのは上記の例だと、JsonPullParser.javaと、パーサが依存しているStack.javaと、Jsonが変だった時に投げられるJsonFormatException.javaとリスナであるOnJsonObjectAddListener.javaの4つのクラスだけあれば動作します。
サイズ的にも負荷が少ないので、ライブラリ導入にも踏み切りやすいと思います :)

JsonPullParser作った!

GitHub - vvakame/JsonPullParser: compiler time JSON-POJO Mapper for Java
これの記事を今から書く…!!