Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【とらのあな主催】オタクがKotlinを追うライトニングトークイベント / 20190319_toranoana_kotlin_lt

11b879ad001638b95dd62331eed65505?s=47 FORTE
March 19, 2019

【とらのあな主催】オタクがKotlinを追うライトニングトークイベント / 20190319_toranoana_kotlin_lt

11b879ad001638b95dd62331eed65505?s=128

FORTE

March 19, 2019
Tweet

Transcript

  1. Javaの重力に魂を縛られている人々へ 〜Javaエンジニアがkotlinを学んでみた〜 2019/03/19 【とらのあな主催】オタクがKotlinを追うライトニングトークイベント @FORTEgp05

  2. 自己紹介 FORTE (フォルテ) スマホアプリ開発者 Twitter:@FORTEgp05

  3. 今日伝えたいこと • JavaエンジニアがKotlinを学んでみた結果を伝えたい ◦ 学び方 ◦ 反省 ◦ 感想 3

  4. 今日は伝えないこと • Kotlinの文法など 文法なら公式ドキュメントを。 4

  5. 前提 登壇者のスキル • ざっくりとした職歴 ◦ SIer ⇨ Web系 ⇨ スマホアプリ開発 •

    Java経験 ◦ 合計9年半 ▪ SIerで9年 ▪ スマホアプリ開発で半年 Kotlinはまったく未経験(プライベートでも勉強していない) 5
  6. 事例 実際にKotlinを学んだやり方 6

  7. 事例 学び方①公式ドキュメントを読む まずは公式ドキュメントを読み始める。 読んでわかったこと。 7

  8. 事例 学び方①公式ドキュメントを読む まずは公式ドキュメントを読み始める。 読んでわかったこと。 • Kotlin、完全に理解した 8

  9. 事例 学び方①公式ドキュメントを読む まずは公式ドキュメントを読み始める。 読んでわかったこと。 • Kotlin、完全に理解した 気になれた 9

  10. 事例 学び方①公式ドキュメントを読む ループの書き方や言語の特徴、コルーチンなどの仕組みがあ るのはわかる。 それで?ってなるだけ。 身についている感じはほとんどしない。 困った時にみるのは便利だし、どこになにがあるかをざっと みておくと描くときの効率が上がりそう。 10

  11. 事例 学び方②他人のソースを見てみる • DroidKaigi2019のソースを見てみる ◦ モダンすぎて、Kotlin以外に理解しなければならない ことが多すぎてツライ。 使われているライブラリとか。 ◦ いまわからないのが、kotlinのせいなのか、 別の要因なのかが判断しづらい。

    11
  12. 事例 学び方②他人のソースを見てみる • DroidKaigi2019のソースを見てみる ◦ モダンすぎて、Kotlin以外に理解しなければならない ことが多すぎてツライ。 使われているライブラリとか。 ◦ いまわからないのが、kotlinのせいなのか、 別の要因なのかが判断しづらい。

    ものすごく勉強になるが、自分にあったソースを見ないと効 率が悪い。 12
  13. 事例 学び方②他人のソースを見てみる • googlesamples/android-sunflowerのソースを見てみる ◦ Android JetpackというGoogle製ライブラリのベスト プラクティスをソースにしたサンプルアプリ。 ◦ 風の噂でこれが良いぞと聞いたので見てみた。 わかりやすい書き方で内容はわかる。

    Kotlinだとこう書くのかーと実感。 13
  14. 事例 学び方②他人のソースを見てみる ふたつのソースを見てわかったこと。 14

  15. 事例 学び方②他人のソースを見てみる ふたつのソースを見てわかったこと。 自分で書かないとわからないな。 15

  16. 事例 学び方③写経する 自分がJavaで理解できるコードを、Kotlinで書いていくと効 果がありそう。 • Javaとの違いを実感できる • 実装内容はわかっているのでKotlinだけに集中できる 16

  17. 事例 学び方③写経する • 写経対象 ◦ Java製のサンプルアプリ ▪ MVVMの実践 ▪ RxJava、room、 Data

    Bindingなど… 17
  18. 事例 実際にKotlinを書いて悩んだ点 18

  19. 事例 実際にKotlinを書いて悩んだ点 • クラス名を取得したい ◦ Java: ◦ Kotlin: クラス(Hoge)からclassや名前が取れないので悩む…。 書いてみて気づけたのて書いてよかった点。 19

    Hoge.class.getName() Hoge::class.java.simpleName
  20. 事例 実際にKotlinを書いて悩んだ点 • 直感的に多次元配列が定義できない。 ◦ Java: 20 String[][] params = {

    {"hoge", fuga} };
  21. 事例 実際にKotlinを書いて悩んだ点 • 直感的に多次元配列が定義できない。 ◦ Kotlin: なんで配列宣言ができないのかわからなくて悩む…。 結局2次元配列は使用せずに実装した。 21 val array

    = Array(10, {arrayOfNulls<Int>(10)}) // このあと値をセットする
  22. 事例 実際にKotlinを書いて悩んだ点 • 三項演算子がない ◦ Java: ◦ Kotlin: 無いの!?ってなったけど、if文で値が返せるのならわかりや すいと思いました。 22

    return (sb.length() > 0) ? "?" + sb.substring(1) : ""; return if (sb.isNotEmpty()) "?" + sb.substring(1) else ""
  23. 事例 実際にKotlinを書いて悩んだ点 • Object型とAny型 Javaと同じようにObject型の引数を取るメソッドを書い たら、なぜかコンパイルが通らない…。 Kotlinでルートクラスを使用したい場合は、Any型を使用 するのが正解。 23

  24. 事例 学んだ結果からの反省と感想 24

  25. 反省 • すぐ書き始めればよかった。 ◦ Javaと比べられるコードがあると非常に捗る • メンターを用意できそうならいた方が早い ◦ 教育目的のペア/モブプロがおすすめ 25

  26. Kotlinを勉強してみた感想 • 最初はストレスを感じる ◦ イメージがそのままコードにできない • 開発対象のアンチパターンをググるのもおすすめ。 例:「Android kotlin アンチパターン」でググる

    26
  27. Kotlinを勉強してみた感想 Kotlinは伊達じゃない! 27

  28. Kotlinは伊達じゃない! • GithubのAPIを叩いてリポジトリ一覧を取得する処理 ◦ Java :65行、2,440行 ◦ Kotlin:61行、1,952行 28

  29. 宣伝   Twitter:@FORTEgp05   Podcast:『aozora.fm』   お便り募集中!   技術書典6:「はじめる技術 つづける技術」を頒布予定!        【え18】サークル「おからぼ」さんにて委託。        詳しくは技術書典サークルページ、        または#はじめる技術つづける技術にて! 29

  30. おわり 30