バイトコードをいじらないといけない
今日は (というかもう昨日になってしまったが) Potatotips #7 というモバイル系の勉強会にいって発表 & 拝聴してきた。
内容に関しては 八木さんの記事 がまとまっているのでそっちを参照してください。自分は TravisCIについてすごく簡単な発表をしたんだけどまあ、それは置いといて。
全体的にバイトコードいじりというか、メタプログラミングっぽいのが目立ってた。Android側で言うと次の3つ:
- assertをめっちゃ活用する (@gfx さん)
- Faucet ~Fight against memory leak~ (@sys1yagi さん)
- レトロラムダはどれ程モダンか (@rejasupotaro さん)
Android側は、すべてコンパイル時に Javassistとかをつかってなんとかする、ってやつ。gfxさんの「コンパイルが遅いと愚痴りつつ、さらに遅くなる処理を入れるマゾ」という言葉が印象的だった。
iOS側は Aspectプログラミングをやるほか、 Swizllingっていう仕組みを使って実行時にメソッドの実装を置き換えてやることができるらしい。うーむ、ObjectC気持ち悪い。Dalvikも頑張ってもっとへんな柔軟性を獲得しないと。ART頑張れ。
いずれにしても、バイトコードをわけもなくいじりたくなった発表会でした。JVMじゃくて DalvikVMのコードをいじって変なことできないかなあ。