DroidKaigiに参加してきた

先着枠を無事に勝ち取っていたので, 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最高!!

渋谷で働くプログラマ。C#をメインに、趣味でGolangとPHPを書きます。スーパーハカーになるべく日々頑張ってます。