Kotlin 使いになりました

50
Kotlin 使使使使使使使使 2016/07/09 Kansai.kt LT #kansaikt 使使使使使使使 使使使使使使 Sansan 使使使使 使使使

Transcript of Kotlin 使いになりました

Page 1: Kotlin 使いになりました

Kotlin 使いになりました

2016/07/09   Kansai.kt LT #kansaikt@株式会社はてな 京都オフィスSansan 株式会社 辰濱健一

Page 2: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

自己紹介

2

Page 3: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

>自己紹介

3

• 辰濱健一

• 徳島生まれ、奈良育ち、徳島県在住

• 2 回転職するも、いずれも徳島県内勤務

• Tokushima.app 主催(徳島でのスマホアプリの勉強会)

• Sansan 株式会社所属

• 古民家を改修した神山ラボ勤務

• 名刺アプリ Eight Android 版の開発

• Kotlin, RxJava, Realm, … を使ってます

• リモートワーク

• 趣味は楽器演奏

Page 4: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

>Sansan 神山ラボ

4

Page 5: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

>趣味

5

• 楽器演奏(エレクトーン・トランペット)

• 徳島県内のイベントで、ちらほら演奏する機会を頂いてます

Page 6: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

>Tokushima.app

6

• http://tokushima-app.connpass.com• 徳島のスマホアプリ開発の勉強会

• 基本もくもく会、たまにハンズオン

• 場所は徳島市内、 10:00 〜 16:00• 初心者でも OK 、入退出自由、参加費無料

• 月 1 ペースで開催(したいと思ってはいる)

• 辰濱が東京の勉強会で仕入れてきた情報なども共有します

• 要望あれば、近隣に出張ハンズオンなども始めようかな…とか思っている。

Page 7: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 7

京都にもオフィス!

Page 8: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

>Sansan 京都ラボ

8

• 京都で Kotlin 書きたい方、お待ちしております!!

• 京都ラボ:

• http://jp.corp-sansan.com/blog/jinji/2014/141125.html

Page 9: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 9

本題へ…

Page 10: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

Kotlin 使いになりました

10

Page 11: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

>モバイル経験

11

• 前職  2012/09 〜

• iOS, Android, Windows8(C#)• 機能担当制で、 3OS ともやる

• Sansan   2014/03 〜

• 2014/03 〜 法人向け部門

• Android アプリ

• Java, SQLite, DefaultHttpClient(Deprecated...), 生 Activity

• 2016/03 〜 個人向け部門( Eight )に部署異動!

• Android アプリ

• Kotlin, Realm, Retrofit, Rx ( UI も) , MaterialDesign, ...

Page 12: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 12

同じ「 Android エンジニア」といえど、使われている技術が違う部署への異動はかなり大変。。。

Page 13: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 13

さらに、異動後の即戦力の期待値感が高い… orz(端から見れば、 Android → Android 。そりゃそうだ。)

Page 14: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 14

不慣れと、わからないことの焦りと不安

なかなか終わらないビルド…

Page 15: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 15

辛い。。。

Page 16: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 16

でも、

Page 17: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

>社内に Kotlin の師匠

17

• コードレビューによる助言、知見の共有

Page 18: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

>弊社主催の Kotlin 勉強会@東京

18

• 他社事例や自社外の知見の共有!(リモート視聴)

Page 19: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 19

恵まれた環境です。

Page 20: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 20

異動から…

Page 21: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 21

ヶ月

ヶ月

※Input に注力する期間を自分で 定めただけです。※転職するわけではないです

Page 22: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 22

Input に注力する期間が終わったので…

Output を!

Page 23: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 23

Kotlin 使っててハマった所を共有します。

Page 24: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

Java → Kotlin コンバータの注意点

24

Page 25: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

>Code > Convert Java File to Kotlin File

25

Page 26: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

>Before / After

26

↓ Java to Kotlin ↓

Page 27: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

>Before / After

27

↓ Java to Kotlin ↓

NewActivity に遷移して、バックキーで戻ると…

Page 28: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

>RuntimeException...

28

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=123, result=0, data=null} to activity {jp.tokushima.tatsuhama.myapplication/jp.tokushima.tatsuhama.myapplication.MainActivity}: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter data at android.app.ActivityThread.deliverResults(ActivityThread.java:3699) at android.app.ActivityThread.handleSendResult(ActivityThread.java:3742) at android.app.ActivityThread.-wrap16(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393)

Page 29: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

>Nullable にする必要があった

29

× : data: Intent    ↓

○ : data: Intent?※ 色々試してみたところ、 data を関数内で null チェックしてたら、

 ちゃんと Intent? になりました!

Page 30: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 30

コンバータを使っても、関数パラメータの

NonNull / Nullable はちゃんと確認しよう!

Page 31: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

使っているのに、 Unused Resources

31

Page 32: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

>Lint の実行結果

32

• ./gradlew lint で実行

• kt ファイルで使ってるのに、 Unused Resources …リソースを消すときは要注意!

Page 33: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 33

Kotlin 1.0.2 で Lint 対応って書いてたんだけど…

まだ、過信しない方が良い

Page 34: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

使えるのに、警告…

34

Page 35: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

>Android Studio 上に警告が…

35

• Bundle#putBoolean が API 22 以上??

Page 36: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

>Android Studio 上に警告が…

36

• Bundle#putBoolean が API 22 以上??

• いいえ、 API 1 からです。

Page 37: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 37

Plugin も発展途上。怪しいと思ったら、

ちゃんと本家で確認を!

Page 38: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

呼んでるのに…

38

Page 39: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

>呼ばれてないことになってしまう

39

• property アクセスが、 Hierarchy Callcs で出ない…

• 削除時は要注意!!

使っているのに… 出てない!?

Page 40: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 40

色々発展途上。

修正したら、ちゃんとビルドが通ることを

確認しよう!!(ビルド遅いけど…)

Page 41: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

IcePick が動かない…

41

Page 42: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

>アノテーションプロセッサが原因?

42

• IcePick :

• Activity/Fragment のインスタンスフィールドを簡単に保存・復元してくれるライブラリ

Page 43: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 43

使ってるライブラリがKotlin で動くことを

ちゃんと確認しよう!

Kotlin 版 IcePick は弊社の yamamotj が Pikkel を公開しています。

https://github.com/yamamotoj/Pikkel

Page 44: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 44

まとめ。

Page 45: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 45

まだ発展途上のツールもあるけど、

慣れてくると Kotlin 良い!

※安心して下さい、 Kotlin 本体はプロダクトコードでも問題なく使えています!

Page 46: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 46

先人の知見が、Kotlin 習得に役立ちました!

Page 47: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 47

この内容も誰かの役に立てば幸いです。

Page 48: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 48

四国住まいですが、また Kotlin の経験積んで

Kansai.kt にてOutput しに来たいと思いま

す!

Page 49: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved. 49

本日はありがとうございました!&

これからも、よろしくお願いします!

Page 50: Kotlin 使いになりました

Copyright © 2014 Sansan, Inc. All rights reserved.

ステッカー欲しい方、お声がけ下さい!!

50