Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

KotlinAndroidLibを使ってみた

7,847 views

Published on

  • Be the first to comment

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. ご清聴ありがとうございました

×