Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

前提 登壇者のスキル ● ざっくりとした職歴 ○ SIer ⇨ Web系 ⇨ スマホアプリ開発 ● Java経験 ○ 合計9年半 ■ SIerで9年 ■ スマホアプリ開発で半年 Kotlinはまったく未経験(プライベートでも勉強していない) 5

Slide 6

Slide 6 text

事例 実際にKotlinを学んだやり方 6

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

事例 学び方②他人のソースを見てみる ● DroidKaigi2019のソースを見てみる ○ モダンすぎて、Kotlin以外に理解しなければならない ことが多すぎてツライ。 使われているライブラリとか。 ○ いまわからないのが、kotlinのせいなのか、 別の要因なのかが判断しづらい。 ものすごく勉強になるが、自分にあったソースを見ないと効 率が悪い。 12

Slide 13

Slide 13 text

事例 学び方②他人のソースを見てみる ● googlesamples/android-sunflowerのソースを見てみる ○ Android JetpackというGoogle製ライブラリのベスト プラクティスをソースにしたサンプルアプリ。 ○ 風の噂でこれが良いぞと聞いたので見てみた。 わかりやすい書き方で内容はわかる。 Kotlinだとこう書くのかーと実感。 13

Slide 14

Slide 14 text

事例 学び方②他人のソースを見てみる ふたつのソースを見てわかったこと。 14

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

事例 学び方③写経する ● 写経対象 ○ Java製のサンプルアプリ ■ MVVMの実践 ■ RxJava、room、 Data Bindingなど… 17

Slide 18

Slide 18 text

事例 実際にKotlinを書いて悩んだ点 18

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

事例 実際にKotlinを書いて悩んだ点 ● 直感的に多次元配列が定義できない。 ○ Java: 20 String[][] params = { {"hoge", fuga} };

Slide 21

Slide 21 text

事例 実際にKotlinを書いて悩んだ点 ● 直感的に多次元配列が定義できない。 ○ Kotlin: なんで配列宣言ができないのかわからなくて悩む…。 結局2次元配列は使用せずに実装した。 21 val array = Array(10, {arrayOfNulls(10)}) // このあと値をセットする

Slide 22

Slide 22 text

事例 実際にKotlinを書いて悩んだ点 ● 三項演算子がない ○ Java: ○ Kotlin: 無いの!?ってなったけど、if文で値が返せるのならわかりや すいと思いました。 22 return (sb.length() > 0) ? "?" + sb.substring(1) : ""; return if (sb.isNotEmpty()) "?" + sb.substring(1) else ""

Slide 23

Slide 23 text

事例 実際にKotlinを書いて悩んだ点 ● Object型とAny型 Javaと同じようにObject型の引数を取るメソッドを書い たら、なぜかコンパイルが通らない…。 Kotlinでルートクラスを使用したい場合は、Any型を使用 するのが正解。 23

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

おわり 30