先着枠を無事に勝ち取っていたので, DroidKaigiに参加してきた. ちなみに先着枠は公開後8分で完売していたとのこと. 人気ですね.
セッションへの応募は60件超で採択率約30%, 参加応募は800人超で倍率2倍と, 国内でのAndroidへの関心が高まっていると感じました.
資料のまとめは多分だれかがやっていると思うので, 発表で気になったFragmentとKotlinについて書きます.
Fragmentはつらい? つらくない?
セッションで度々, 「Fragmentはつらくない」とか「Fragmentはつらい」という話があった. これは主に 知らないといけないポイントが多い ことが多いのが原因にあると思う.
基調講演から引用すると, 主に以下の点が辛い.
- コンストラクタでの制約
- 初期値の設定
- startActivityをFragment内から呼び出さない
こういう問題は, ハマるコードを書いても Javaのコンパイルではそれをエラーにできない 点なのかなと思う. 例えばコンストラクタの制約は コンパイルエラーにできたらよい が, Javaではそのような制約を課すことが出来ない. このへんはaltJava(?)とかのレベルで制約を課したりできたらな, など思った.
Kotlin
個人的に気になったのはKotlinだった. @ngsw_taroさんの発表にもあったが, 簡単でかつ安心で現実的な言語ということだったが, そのとおりだと思った.
一番良いと思うのは, IntelliJでお馴染みのJetBrain社が開発を行っている点だ. IDEのサポートが手厚いのはかなり安心できるし, なによりAndroid StudioにKotlinプラグインを導入するだけで利用できる という手軽さは大きいと思う.
安全という点ではnull safeである言語設計は良いなと思う. JavaではOptionalが導入されたが, 以下の様なソースはコンパイルが普通に通る.
Optional<String> hoge = null;
誰にもnullは止められない.
Kotlinでは, デフォルトでnullの代入を禁止している. Swiftでも同じような機能があるため馴染みがあると思う.
var hoge: String = null; // NG
また, 以下の様に高階関数でコレクション操作が行える.
(1..999)
.filter { it % 3 == 0 || it % 5 == 0}
.reduce {a, b -> a + b }
このへんはJava 8でもラムダ式がいい感じにかけるが, AndroidのJava 8対応していないので利用できず, Kotlin最高ってなる.
発表では上記の{ it % 3 == 0 || it % 5 == 0}
はインライン関数と呼ばれて, インライン展開が行われるためオブジェクトが新規に生成されず,
そのようなオーバーヘッドがなくて良いらしい. KotlinはJVMと親和性の高いクラスファイルを吐くために,
Javaの枠組みを超えるようなことはしてないみたいだけど, どのように実現されているかは気になった.
まとめ
初心者向けのセッションから, メモリ管理とかの上級者向けのセッションもあって, 1日で色んな話がきけてとても有意義だった. 次回のDroidKaigiが開催されたら, 是非参加したい. そしてJake神と握手したい.
DroidKaigi最高!!