Successfully reported this slideshow.

Java → Kotlin 変換 そのあとに。

1

Share

Loading in …3
×
1 of 46
1 of 46

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Related Audiobooks

Free with a 14 day trial from Scribd

See all

Java → Kotlin 変換 そのあとに。

  1. 1. Java → Kotlin 変換 そのあとに。 2016/12/13 第4回Kotlin勉強会@Sansan Sansan株式会社 辰濱健一
  2. 2. Copyright © 2014 Sansan, Inc. All rights reserved. 自己紹介 1
  3. 3. Copyright © 2014 Sansan, Inc. All rights reserved. > 自己紹介 2 • 辰濱健一 • 徳島生まれ、奈良育ち、徳島県在住 • 2回転職するも、いずれも徳島県内勤務 • Tokushima.app 主催 (徳島でのスマホアプリの勉強会) • Sansan株式会社所属 • 古民家を改修した神山ラボ勤務 • 名刺アプリ Eight Android 版の開発 • Kotlin, RxJava, Realm, … を使ってます • リモートワーク • 趣味は楽器演奏
  4. 4. Copyright © 2014 Sansan, Inc. All rights reserved. > Sansan神山ラボ 3
  5. 5. Copyright © 2014 Sansan, Inc. All rights reserved. > 趣味 4 • 楽器演奏(エレクトーン・トランペット) • 徳島県内のイベントで、ちらほら演奏する機会を頂い てます
  6. 6. Copyright © 2014 Sansan, Inc. All rights reserved. > Tokushima.app 5 • http://tokushima-app.connpass.com • 徳島のスマホアプリ開発の勉強会 • 基本もくもく会、たまにハンズオン • 場所は徳島市内、10:00〜16:00 • 初心者でも OK、入退出自由、参加費無料 • 月1ペースで開催(したいと思ってはいる) • 辰濱が東京の勉強会で仕入れてきた情報なども共有します • 要望あれば、近隣に出張ハンズオンなども始めようかな…とか思っている。
  7. 7. Copyright © 2014 Sansan, Inc. All rights reserved. 6 本題へ…
  8. 8. Copyright © 2014 Sansan, Inc. All rights reserved. 7 Java → Kotlin そのあとに。
  9. 9. Copyright © 2014 Sansan, Inc. All rights reserved. Android Studio の Code メニュー 8
  10. 10. Copyright © 2014 Sansan, Inc. All rights reserved. 9 Convert Java File to Kotlin File!
  11. 11. Copyright © 2014 Sansan, Inc. All rights reserved. 10 既存コードを 簡単に Kotlin 化!
  12. 12. Copyright © 2014 Sansan, Inc. All rights reserved. 11 できるけど、 Kotlin らしくない 変換結果も…
  13. 13. Copyright © 2014 Sansan, Inc. All rights reserved. 変換後に手直ししたい箇所 12 • メンバ変数の名前 • 可能な箇所は var → val に • 遅延初期化に • NotNull 型にできるならして、!! 演算子の除去 • スコープ関数に置き換える • 単一式関数に • 安全呼び出しに • if, else if, … は when に • 使われていない関数パラメータの NotNull / Nullable チェック
  14. 14. Copyright © 2014 Sansan, Inc. All rights reserved. 変換後に手直ししたい箇所 13 • メンバ変数の名前 • 可能な箇所は var → val に • 遅延初期化に • NotNull 型にできるならして、!! 演算子の除去 • スコープ関数に置き換える • 単一式関数に • 安全呼び出しに • if, else if, … は when に • 使われていない関数パラメータの NotNull / Nullable チェック
  15. 15. Copyright © 2014 Sansan, Inc. All rights reserved. メンバ変数の名前 14 • Java • Kotlin
  16. 16. Copyright © 2014 Sansan, Inc. All rights reserved. メンバ変数の名前 15 • Java • Kotlin 接頭辞の m は外しておこう!
  17. 17. Copyright © 2014 Sansan, Inc. All rights reserved. なぜ? 16 • 生成される getter / setter 関数名に残ってしまう • 例) これを Java から使うと…
  18. 18. Copyright © 2014 Sansan, Inc. All rights reserved. 変換後に手直ししたい箇所 17 • メンバ変数の名前 • 可能な箇所は var → val に • 遅延初期化に • NotNull 型にできるならして、!! 演算子の除去 • スコープ関数に置き換える • 単一関数式に • 安全呼び出しに • if, else if, … は when に • 使われていない関数パラメータの NotNull / Nullable チェック
  19. 19. Copyright © 2014 Sansan, Inc. All rights reserved. おさらい 18 • var • 再代入可能な変数 • val • 再代入不可な変数 • 原則として、val を使用して再代入を極力避けるべき
  20. 20. Copyright © 2014 Sansan, Inc. All rights reserved. var → val に 19 • Java • Kotlin ↑こいつを val にする
  21. 21. Copyright © 2014 Sansan, Inc. All rights reserved. var → val に書き換えた 20 val は再代入不可…
  22. 22. Copyright © 2014 Sansan, Inc. All rights reserved. Val cannot be reassigned 対応 21 val は再代入不可なので、宣言時に代入
  23. 23. Copyright © 2014 Sansan, Inc. All rights reserved. 変換後に手直ししたい箇所 22 • メンバ変数の名前 • 可能な箇所は var → val に • 遅延初期化に • NotNull 型にできるならして、!! 演算子の除去 • スコープ関数に置き換える • 単一式関数に • 安全呼び出しに • if, else if, … は when に • 使われていない関数パラメータの NotNull / Nullable チェック
  24. 24. Copyright © 2014 Sansan, Inc. All rights reserved. 遅延初期化に 23 • by lazy{…} を使うと、初期化を遅延できる • 委譲プロパティ
  25. 25. Copyright © 2014 Sansan, Inc. All rights reserved. 変換後に手直ししたい箇所 24 • メンバ変数の名前 • 可能な箇所は var → val に • 遅延初期化に • NotNull 型にできるならして、!! 演算子の除去 • スコープ関数に置き換える • 単一式関数に • 安全呼び出しに • if, else if, … は when に • 使われていない関数パラメータの NotNull / Nullable チェック
  26. 26. Copyright © 2014 Sansan, Inc. All rights reserved. NotNull 型にできるならして、!! 演算子の除去 25 • NotNull 型 • null 代入可能 • 型名そのまま • Nullable 型 • null 代入不可 • 型名のあとに?をつける
  27. 27. Copyright © 2014 Sansan, Inc. All rights reserved. NotNull 型にできるならして、!! 演算子の除去 26 警告が増えた…orz
  28. 28. Copyright © 2014 Sansan, Inc. All rights reserved. NotNull 型にできるならして、!! 演算子の除去 27 • !! 演算子 • Nullable な参照を、NotNull に強制的に変換する • ただし、null に対して !! 演算子を適用すると、 KotlinNullPointerException が throw される • !! 演算子は原則使用しないことがお勧めされている • どうしても必要なら、requireNotNull を
  29. 29. Copyright © 2014 Sansan, Inc. All rights reserved. NotNull 型にできるならして、!! 演算子の除去 28 !! を除去するだけでOK
  30. 30. Copyright © 2014 Sansan, Inc. All rights reserved. 変換後に手直ししたい箇所 29 • メンバ変数の名前 • 可能な箇所は var → val に • 遅延初期化に • NotNull 型にできるならして、!! 演算子の除去 • スコープ関数に置き換える • 単一式関数に • 安全呼び出し • if, else if, … は when に • 使われていない関数パラメータの NotNull / Nullable チェック
  31. 31. Copyright © 2014 Sansan, Inc. All rights reserved. スコープ関数 30 • let, with, run, apply • 「Kotlin スコープ関数 用途まとめ」 http://qiita.com/ngsw_taro/items/d29e3080d9fc8a38691e がわかりやすくて、オススメ! • newIntent 関数 に apply を使うのがオススメ
  32. 32. Copyright © 2014 Sansan, Inc. All rights reserved. スコープ関数に置き換える 31
  33. 33. Copyright © 2014 Sansan, Inc. All rights reserved. 変換後に手直ししたい箇所 32 • メンバ変数の名前 • 可能な箇所は var → val に • 遅延初期化に • NotNull 型にできるならして、!! 演算子の除去 • スコープ関数に置き換える • 単一式関数に • 安全呼び出し • if, else if, … は when に • 使われていない関数パラメータの NotNull / Nullable チェック
  34. 34. Copyright © 2014 Sansan, Inc. All rights reserved. 単一式関数 33 • 波括弧 { } で囲まれたブロックがない • 関数シグネチャに続けて =、その後に式がある • return がない 単一式関数化
  35. 35. Copyright © 2014 Sansan, Inc. All rights reserved. 単一式関数にする 34 単一式関数化 行数削減
  36. 36. Copyright © 2014 Sansan, Inc. All rights reserved. 変換後に手直ししたい箇所 35 • メンバ変数の名前 • 可能な箇所は var → val に • 遅延初期化に • NotNull 型にできるならして、!! 演算子の除去 • スコープ関数に置き換える • 単一式関数に • 安全呼び出しに • if, else if, … は when に • 使われていない関数パラメータの NotNull / Nullable チェック
  37. 37. Copyright © 2014 Sansan, Inc. All rights reserved. 安全呼び出し 36 • Nullable 変数に null が入っていたら何もしない → null チェックを簡素化できる
  38. 38. Copyright © 2014 Sansan, Inc. All rights reserved. 変換後に手直ししたい箇所 37 • メンバ変数の名前 • 可能な箇所は var → val に • 遅延初期化に • NotNull 型にできるならして、!! 演算子の除去 • スコープ関数に置き換える • 単一式関数に • 安全呼び出しに • if, else if, … は when に • 使われていない関数パラメータの NotNull / Nullable チェック
  39. 39. Copyright © 2014 Sansan, Inc. All rights reserved. if, else if,… は when に 38 Java to Kotlin
  40. 40. Copyright © 2014 Sansan, Inc. All rights reserved. 変換後に手直ししたい箇所 39 • メンバ変数の名前 • 可能な箇所は var → val に • 遅延初期化に • NotNull 型にできるならして、!! 演算子の除去 • スコープ関数に置き換える • 単一式関数に • 安全呼び出しに • if, else if, … は when に • 使われていない関数パラメータの NotNull / Nullable チェック
  41. 41. Copyright © 2014 Sansan, Inc. All rights reserved. 使われていない関数パラメータの型チェック 40 Java to Kotlin
  42. 42. Copyright © 2014 Sansan, Inc. All rights reserved. 使われていない関数パラメータの型チェック 41 Java to Kotlin
  43. 43. Copyright © 2014 Sansan, Inc. All rights reserved. 使われていない関数パラメータの型チェック 42 Java to Kotlin 実はここは Nullable
  44. 44. Copyright © 2014 Sansan, Inc. All rights reserved. 使われていない関数パラメータの型チェック 43 Java to Kotlin 実はここは Nullable “Intent” → “Intent?” にする必要がある!
  45. 45. Copyright © 2014 Sansan, Inc. All rights reserved. 44 Convert Java to Kotlin したら、 Kotlin らしくするのも お忘れなく!
  46. 46. Copyright © 2014 Sansan, Inc. All rights reserved. 45 おわり。

×