Kotlin 使いになりました
2016/07/09 Kansai.kt LT #kansaikt
@株式会社はてな 京都オフィス
Sansan株式会社 辰濱健一
Copyright © 2014 Sansan, Inc. All rights reserved.
自己紹介
1
Copyright © 2014 Sansan, Inc. All rights reserved.
> 自己紹介
2
• 辰濱健一
• 徳島生まれ、奈良育ち、徳島県在住
• 2回転職するも、いずれも徳島県内勤務
• Tokushima.app 主催
(徳島でのスマホアプリの勉強会)
• Sansan株式会社所属
• 古民家を改修した神山ラボ勤務
• 名刺アプリ Eight Android 版の開発
• Kotlin, RxJava, Realm, … を使ってます
• リモートワーク
• 趣味は楽器演奏
Copyright © 2014 Sansan, Inc. All rights reserved.
> Sansan神山ラボ
3
Copyright © 2014 Sansan, Inc. All rights reserved.
> 趣味
4
• 楽器演奏(エレクトーン・トランペット)
• 徳島県内のイベントで、ちらほら演奏する機会を頂い
てます
Copyright © 2014 Sansan, Inc. All rights reserved.
> Tokushima.app
5
• http://tokushima-app.connpass.com
• 徳島のスマホアプリ開発の勉強会
• 基本もくもく会、たまにハンズオン
• 場所は徳島市内、10:00〜16:00
• 初心者でも OK、入退出自由、参加費無料
• 月1ペースで開催(したいと思ってはいる)
• 辰濱が東京の勉強会で仕入れてきた情報なども共有します
• 要望あれば、近隣に出張ハンズオンなども始めようかな…とか思っている。
Copyright © 2014 Sansan, Inc. All rights reserved. 6
京都にもオフィス!
Copyright © 2014 Sansan, Inc. All rights reserved.
> Sansan 京都ラボ
7
• 京都で Kotlin 書きたい方、お待ちしております!!
• 京都ラボ:
• http://jp.corp-sansan.com/blog/jinji/2014/141125.html
Copyright © 2014 Sansan, Inc. All rights reserved. 8
本題へ…
Copyright © 2014 Sansan, Inc. All rights reserved.
Kotlin 使いになりました
9
Copyright © 2014 Sansan, Inc. All rights reserved.
> モバイル経験
10
• 前職 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, ...
Copyright © 2014 Sansan, Inc. All rights reserved. 11
同じ「Android エンジニア」といえど、
使われている技術が違う部署への異動は
かなり大変。。。
Copyright © 2014 Sansan, Inc. All rights reserved. 12
さらに、
異動後の即戦力の期待値感が高い…orz
(端から見れば、Android → Android。そりゃそうだ。)
Copyright © 2014 Sansan, Inc. All rights reserved. 13
不慣れと、わからないことの焦りと不安
なかなか終わらないビルド…
Copyright © 2014 Sansan, Inc. All rights reserved. 14
辛い。。。
Copyright © 2014 Sansan, Inc. All rights reserved. 15
でも、
Copyright © 2014 Sansan, Inc. All rights reserved.
> 社内に Kotlin の師匠
16
• コードレビューによる助言、知見の共有
Copyright © 2014 Sansan, Inc. All rights reserved.
> 弊社主催の Kotlin 勉強会@東京
17
• 他社事例や自社外の知見の共有!(リモート視聴)
Copyright © 2014 Sansan, Inc. All rights reserved. 18
恵まれた環境です。
Copyright © 2014 Sansan, Inc. All rights reserved. 19
異動から…
Copyright © 2014 Sansan, Inc. All rights reserved. 20
ヶ月
ヶ月
※Input に注力する期間を自分で
定めただけです。
※転職するわけではないです
Copyright © 2014 Sansan, Inc. All rights reserved. 21
Input に注力する期間
が終わったので…
Output を!
Copyright © 2014 Sansan, Inc. All rights reserved. 22
Kotlin 使っててハマった所
を共有します。
Copyright © 2014 Sansan, Inc. All rights reserved.
Java → Kotlin コンバータの注意点
23
Copyright © 2014 Sansan, Inc. All rights reserved.
> Code > Convert Java File to Kotlin File
24
Copyright © 2014 Sansan, Inc. All rights reserved.
> Before / After
25
↓ Java to Kotlin ↓
Copyright © 2014 Sansan, Inc. All rights reserved.
> Before / After
26
↓ Java to Kotlin ↓
NewActivity に遷移して、バックキーで戻ると…
Copyright © 2014 Sansan, Inc. All rights reserved.
> RuntimeException...
27
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null,
request=123, result=0, data=null} to activity
{jp.tokushima.tatsuhama.myapplication/jp.tokushima.tatsuhama.myapplicat
ion.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)
Copyright © 2014 Sansan, Inc. All rights reserved.
> Nullable にする必要があった
28
×:data: Intent
↓
○:data: Intent?
※色々試してみたところ、data を関数内で null チェックしてたら、
ちゃんと Intent? になりました!
Copyright © 2014 Sansan, Inc. All rights reserved. 29
コンバータを使っても、
関数パラメータの
NonNull / Nullableは
ちゃんと確認しよう!
Copyright © 2014 Sansan, Inc. All rights reserved.
使っているのに、Unused Resources
30
Copyright © 2014 Sansan, Inc. All rights reserved.
> Lint の実行結果
31
• ./gradlew lint で実行
• kt ファイルで使ってるのに、Unused Resources …
リソースを消すときは要注意!
Copyright © 2014 Sansan, Inc. All rights reserved. 32
Kotlin 1.0.2 で Lint 対応
って書いてたんだけど…
まだ、過信しない方が良い
Copyright © 2014 Sansan, Inc. All rights reserved.
使えるのに、警告…
33
Copyright © 2014 Sansan, Inc. All rights reserved.
> Android Studio 上に警告が…
34
• Bundle#putBoolean が API 22 以上??
Copyright © 2014 Sansan, Inc. All rights reserved.
> Android Studio 上に警告が…
35
• Bundle#putBoolean が API 22 以上??
• いいえ、API 1からです。
Copyright © 2014 Sansan, Inc. All rights reserved. 36
Plugin も発展途上。
怪しいと思ったら、
ちゃんと本家で確認を!
Copyright © 2014 Sansan, Inc. All rights reserved.
呼んでるのに…
37
Copyright © 2014 Sansan, Inc. All rights reserved.
> 呼ばれてないことになってしまう
38
• property アクセスが、Hierarchy Callcs で出ない…
• 削除時は要注意!!
使っているのに… 出てない!?
Copyright © 2014 Sansan, Inc. All rights reserved. 39
色々発展途上。
修正したら、
ちゃんとビルドが通ることを
確認しよう!!
(ビルド遅いけど…)
Copyright © 2014 Sansan, Inc. All rights reserved.
IcePickが動かない…
40
Copyright © 2014 Sansan, Inc. All rights reserved.
> アノテーションプロセッサが原因?
41
• IcePick:
• Activity/Fragment のインスタンスフィールドを簡単に
保存・復元してくれるライブラリ
Copyright © 2014 Sansan, Inc. All rights reserved. 42
使ってるライブラリが
Kotlin で動くことを
ちゃんと確認しよう!
Kotlin版 IcePick は弊社の yamamotj が Pikkel を公開しています。
https://github.com/yamamotoj/Pikkel
Copyright © 2014 Sansan, Inc. All rights reserved. 43
まとめ。
Copyright © 2014 Sansan, Inc. All rights reserved. 44
まだ発展途上のツールもあるけど、
慣れてくると Kotlin 良い!
※安心して下さい、Kotlin 本体はプロダクトコードでも
問題なく使えています!
Copyright © 2014 Sansan, Inc. All rights reserved. 45
先人の知見が、
Kotlin 習得に役立ちました!
Copyright © 2014 Sansan, Inc. All rights reserved. 46
この内容も
誰かの役に立てば幸いです。
Copyright © 2014 Sansan, Inc. All rights reserved. 47
四国住まいですが、
また Kotlin の経験積んで
Kansai.kt にて
Output しに来たいと思います!
Copyright © 2014 Sansan, Inc. All rights reserved. 48
本日はありがとうございました!
&
これからも、
よろしくお願いします!
Copyright © 2014 Sansan, Inc. All rights reserved.
ステッカー欲しい方、お声がけ下さい!!
49

Kotlin 使いになりました

  • 1.
    Kotlin 使いになりました 2016/07/09 Kansai.ktLT #kansaikt @株式会社はてな 京都オフィス Sansan株式会社 辰濱健一
  • 2.
    Copyright © 2014Sansan, Inc. All rights reserved. 自己紹介 1
  • 3.
    Copyright © 2014Sansan, Inc. All rights reserved. > 自己紹介 2 • 辰濱健一 • 徳島生まれ、奈良育ち、徳島県在住 • 2回転職するも、いずれも徳島県内勤務 • Tokushima.app 主催 (徳島でのスマホアプリの勉強会) • Sansan株式会社所属 • 古民家を改修した神山ラボ勤務 • 名刺アプリ Eight Android 版の開発 • Kotlin, RxJava, Realm, … を使ってます • リモートワーク • 趣味は楽器演奏
  • 4.
    Copyright © 2014Sansan, Inc. All rights reserved. > Sansan神山ラボ 3
  • 5.
    Copyright © 2014Sansan, Inc. All rights reserved. > 趣味 4 • 楽器演奏(エレクトーン・トランペット) • 徳島県内のイベントで、ちらほら演奏する機会を頂い てます
  • 6.
    Copyright © 2014Sansan, Inc. All rights reserved. > Tokushima.app 5 • http://tokushima-app.connpass.com • 徳島のスマホアプリ開発の勉強会 • 基本もくもく会、たまにハンズオン • 場所は徳島市内、10:00〜16:00 • 初心者でも OK、入退出自由、参加費無料 • 月1ペースで開催(したいと思ってはいる) • 辰濱が東京の勉強会で仕入れてきた情報なども共有します • 要望あれば、近隣に出張ハンズオンなども始めようかな…とか思っている。
  • 7.
    Copyright © 2014Sansan, Inc. All rights reserved. 6 京都にもオフィス!
  • 8.
    Copyright © 2014Sansan, Inc. All rights reserved. > Sansan 京都ラボ 7 • 京都で Kotlin 書きたい方、お待ちしております!! • 京都ラボ: • http://jp.corp-sansan.com/blog/jinji/2014/141125.html
  • 9.
    Copyright © 2014Sansan, Inc. All rights reserved. 8 本題へ…
  • 10.
    Copyright © 2014Sansan, Inc. All rights reserved. Kotlin 使いになりました 9
  • 11.
    Copyright © 2014Sansan, Inc. All rights reserved. > モバイル経験 10 • 前職 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, ...
  • 12.
    Copyright © 2014Sansan, Inc. All rights reserved. 11 同じ「Android エンジニア」といえど、 使われている技術が違う部署への異動は かなり大変。。。
  • 13.
    Copyright © 2014Sansan, Inc. All rights reserved. 12 さらに、 異動後の即戦力の期待値感が高い…orz (端から見れば、Android → Android。そりゃそうだ。)
  • 14.
    Copyright © 2014Sansan, Inc. All rights reserved. 13 不慣れと、わからないことの焦りと不安 なかなか終わらないビルド…
  • 15.
    Copyright © 2014Sansan, Inc. All rights reserved. 14 辛い。。。
  • 16.
    Copyright © 2014Sansan, Inc. All rights reserved. 15 でも、
  • 17.
    Copyright © 2014Sansan, Inc. All rights reserved. > 社内に Kotlin の師匠 16 • コードレビューによる助言、知見の共有
  • 18.
    Copyright © 2014Sansan, Inc. All rights reserved. > 弊社主催の Kotlin 勉強会@東京 17 • 他社事例や自社外の知見の共有!(リモート視聴)
  • 19.
    Copyright © 2014Sansan, Inc. All rights reserved. 18 恵まれた環境です。
  • 20.
    Copyright © 2014Sansan, Inc. All rights reserved. 19 異動から…
  • 21.
    Copyright © 2014Sansan, Inc. All rights reserved. 20 ヶ月 ヶ月 ※Input に注力する期間を自分で 定めただけです。 ※転職するわけではないです
  • 22.
    Copyright © 2014Sansan, Inc. All rights reserved. 21 Input に注力する期間 が終わったので… Output を!
  • 23.
    Copyright © 2014Sansan, Inc. All rights reserved. 22 Kotlin 使っててハマった所 を共有します。
  • 24.
    Copyright © 2014Sansan, Inc. All rights reserved. Java → Kotlin コンバータの注意点 23
  • 25.
    Copyright © 2014Sansan, Inc. All rights reserved. > Code > Convert Java File to Kotlin File 24
  • 26.
    Copyright © 2014Sansan, Inc. All rights reserved. > Before / After 25 ↓ Java to Kotlin ↓
  • 27.
    Copyright © 2014Sansan, Inc. All rights reserved. > Before / After 26 ↓ Java to Kotlin ↓ NewActivity に遷移して、バックキーで戻ると…
  • 28.
    Copyright © 2014Sansan, Inc. All rights reserved. > RuntimeException... 27 java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=123, result=0, data=null} to activity {jp.tokushima.tatsuhama.myapplication/jp.tokushima.tatsuhama.myapplicat ion.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)
  • 29.
    Copyright © 2014Sansan, Inc. All rights reserved. > Nullable にする必要があった 28 ×:data: Intent ↓ ○:data: Intent? ※色々試してみたところ、data を関数内で null チェックしてたら、 ちゃんと Intent? になりました!
  • 30.
    Copyright © 2014Sansan, Inc. All rights reserved. 29 コンバータを使っても、 関数パラメータの NonNull / Nullableは ちゃんと確認しよう!
  • 31.
    Copyright © 2014Sansan, Inc. All rights reserved. 使っているのに、Unused Resources 30
  • 32.
    Copyright © 2014Sansan, Inc. All rights reserved. > Lint の実行結果 31 • ./gradlew lint で実行 • kt ファイルで使ってるのに、Unused Resources … リソースを消すときは要注意!
  • 33.
    Copyright © 2014Sansan, Inc. All rights reserved. 32 Kotlin 1.0.2 で Lint 対応 って書いてたんだけど… まだ、過信しない方が良い
  • 34.
    Copyright © 2014Sansan, Inc. All rights reserved. 使えるのに、警告… 33
  • 35.
    Copyright © 2014Sansan, Inc. All rights reserved. > Android Studio 上に警告が… 34 • Bundle#putBoolean が API 22 以上??
  • 36.
    Copyright © 2014Sansan, Inc. All rights reserved. > Android Studio 上に警告が… 35 • Bundle#putBoolean が API 22 以上?? • いいえ、API 1からです。
  • 37.
    Copyright © 2014Sansan, Inc. All rights reserved. 36 Plugin も発展途上。 怪しいと思ったら、 ちゃんと本家で確認を!
  • 38.
    Copyright © 2014Sansan, Inc. All rights reserved. 呼んでるのに… 37
  • 39.
    Copyright © 2014Sansan, Inc. All rights reserved. > 呼ばれてないことになってしまう 38 • property アクセスが、Hierarchy Callcs で出ない… • 削除時は要注意!! 使っているのに… 出てない!?
  • 40.
    Copyright © 2014Sansan, Inc. All rights reserved. 39 色々発展途上。 修正したら、 ちゃんとビルドが通ることを 確認しよう!! (ビルド遅いけど…)
  • 41.
    Copyright © 2014Sansan, Inc. All rights reserved. IcePickが動かない… 40
  • 42.
    Copyright © 2014Sansan, Inc. All rights reserved. > アノテーションプロセッサが原因? 41 • IcePick: • Activity/Fragment のインスタンスフィールドを簡単に 保存・復元してくれるライブラリ
  • 43.
    Copyright © 2014Sansan, Inc. All rights reserved. 42 使ってるライブラリが Kotlin で動くことを ちゃんと確認しよう! Kotlin版 IcePick は弊社の yamamotj が Pikkel を公開しています。 https://github.com/yamamotoj/Pikkel
  • 44.
    Copyright © 2014Sansan, Inc. All rights reserved. 43 まとめ。
  • 45.
    Copyright © 2014Sansan, Inc. All rights reserved. 44 まだ発展途上のツールもあるけど、 慣れてくると Kotlin 良い! ※安心して下さい、Kotlin 本体はプロダクトコードでも 問題なく使えています!
  • 46.
    Copyright © 2014Sansan, Inc. All rights reserved. 45 先人の知見が、 Kotlin 習得に役立ちました!
  • 47.
    Copyright © 2014Sansan, Inc. All rights reserved. 46 この内容も 誰かの役に立てば幸いです。
  • 48.
    Copyright © 2014Sansan, Inc. All rights reserved. 47 四国住まいですが、 また Kotlin の経験積んで Kansai.kt にて Output しに来たいと思います!
  • 49.
    Copyright © 2014Sansan, Inc. All rights reserved. 48 本日はありがとうございました! & これからも、 よろしくお願いします!
  • 50.
    Copyright © 2014Sansan, Inc. All rights reserved. ステッカー欲しい方、お声がけ下さい!! 49