KotlinAndroidLibを使ってみた

7,463 views

Published on

KotlinAndroidLibを使ってみた

  1. 1. KotlinAndroidLib を使ってみた 2013/07/26 @patorash 第一回かわいいKotlin勉強会資料
  2. 2. 名前: 尾古 豊明 twitter: @patorash 所属: 株式会社リゾーム 業務内容: 主にショッピングセンター向けのグループウェ アをRuby on Railsで作ってます。 でも最近は別のことをやってます。 Kotlin+JavaFXとか。 趣味でAndroidアプリ作ったりしてます。 自己紹介
  3. 3. ● リゾームに入社するまではRubyやってな かった。仕事でRubyするようになってRuby の楽しさを知った。 ● Rubyの影響で、JavaでAndroidアプリ作る のが苦痛になってきた。 ● Ruboto(JRuby on Android)に 手を出すが起動遅すぎて断念! ● この方向を探る(Pindah) でもしっくりこない。 ● @ore_publicにKotlinでAndroidアプリ書 けることを聞く。やってみた。 Kotlinとの出会いについて
  4. 4. 良さそうな予感がした。
  5. 5. ● 静的型付(固い) ● 型推論(型を書かなくてもよい) ● 高階関数(関数を関数に渡せる) ● 拡張関数(クラスをそのまま拡張) ● 文法が簡潔(セミコロン要らない) ● 条件式(if式, when式。戻り値がある) 何がいいの?Kotlin
  6. 6. ● Javaがわかる人ならKotlinはすぐ理解でき ると思われる (学習コストが少ない) ● Javaの資産が使える ● プロジェクトにJavaとKotlinのコードを混在 させることができる 他にもKotlinが優れている点
  7. 7. ● いわゆるバッテリー残量を 表示するウィジェットアプリ ● Wi-FiのON-OFF, BlueToothのON-OFFな ど、電源管理系の機能とマナーモード系 の機能を付けてる ● 2010年にリリースしたアプリでDL数は 50,000超くらい。 ● 機能拡張の余地が殆どないので焼き直し に最適と判断した。 既存のアプリ(BatteryCrystal)を Kotlinで書き直してみた
  8. 8. ● ソースコードが4/5くらいになった。 ● コードの見通しがよくなったのでリファクタリ ングしやすくなった。 Kotlinにした結果
  9. 9. Kotlinらしい書き方を求めて Githubへ
  10. 10. KotlinAndroidLibを発見!
  11. 11. しかし動かない…(´・ω・`) M2のときのライブラリだから…
  12. 12. 動かないのでforkして直した
  13. 13. ● ソースコードがJavaの頃と比べて3/4くらい になった。 ● コードがカッコ良くなった。 KotlinAndroidLibを使った結果
  14. 14. サンプルコードで比較 (Java, Kotlin, KotlinAndroidLib)
  15. 15. Java Button button = (Button) findViewById(R.id.button); val button = findViewById(R.id.button) as Button Kotlin val button = findView<Button>(R.id.button) KotlinAndroidLib findViewById 最も短く書ける 型宣言が要らないから短く書ける
  16. 16. Java public void nextActivity() { Intent intent = new Intent(Settings.ACTION_BLUETOOTH_SETTINGS); startActivity(intent); } fun nextActivity() { startActivity(Intent(Settings.ACTION_BLUETOOTH_SETTINGS)) } Kotlin fun nextActivity() = startActivity(Settings.ACTION_BLUETOOTH_SETTINGS.toIntent()) KotlinAndroidLib Intent 文字列からIntent生成できるよう拡張されてる newがないので短く書ける
  17. 17. Java button.setOnClickListener(new OnClickListener() { @override public void onClick(View v) { 処理 } }); button.setOnClickListener(object: OnClickListener(){ override public fun onClick(v: View?) { 処理 } }) Kotlin button.setOnClickListener { v -> 処理 } KotlinAndroidLib OnClickListener アノテーションを先頭に書く。 @不要 onClickを実装するのは自明なので 省略できるようになっている。
  18. 18. Java new Thread(new Runnable(){ @override public void run() { 処理 } }).start(); Thread(runnable { 処理 }).start() Kotlin async{ 処理 } KotlinAndroidLib Thread 比較的短く書くことができる 短い!簡潔!
  19. 19. Java Editor editor = sharedPreferences.edit(); // 編集用インスタンス取得 editor.putString("key", "value"); // 書込 editor.commit(); // 保存 val editor = sharedPreferences.edit()!! editor.putString("key", "value") editor.commit() Kotlin sharedPreferences.edit{ putString("key", "value") } KotlinAndroidLib SharedPreferences 型推論で少し短くなった程度 ブロックで記述可能。 コミットし忘れなし。
  20. 20. ● Javaだと冗長なコードが、Kotlinだとシン プルに書けるようになる。 ● KotlinAndroidLibは、Kotlinの関数機能を ふんだんに使ってあり、簡潔に書くことが できる。 ● KotlinAndroidLibのコードには、Kotlinら しい書き方が詰まってる。 コードを読むと、勉強になる。 まだまだあるけれど…
  21. 21. ご清聴ありがとうございました

×