kotlinつかってqiitaクライアント作った時の話

39
Kotlin使って Qiitaクライアント 作った時の話 Kotlin + Modern Libraries2015/5/13 potatotips#17

Upload: shinnosuke-kugimiya

Post on 05-Aug-2015

1.602 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: KotlinつかってQiitaクライアント作った時の話

Kotlin使って

Qiitaクライアント

作った時の話 ~Kotlin + Modern Libraries~

2015/5/13 potatotips#17

Page 2: KotlinつかってQiitaクライアント作った時の話

Profilename

釘宮 愼之介 / @kgmyshinfeatures

• Androidエンジニア

• なぜか初対面の人に「くぎゅ」って呼ばれる

• 最近転職しました

Page 3: KotlinつかってQiitaクライアント作った時の話
Page 4: KotlinつかってQiitaクライアント作った時の話

Kotlin 盛り上がって きてますよね

Page 5: KotlinつかってQiitaクライアント作った時の話

今日はKotlinを使って

実際にアプリを 作ってモダンなライブラリを

入れた時の (ハマりまくった)

話をします

Page 6: KotlinつかってQiitaクライアント作った時の話

• LeakCanary • EventBus • KotterKnife • Retrofit • Dagger2

Kotlin meets Libraries

Page 7: KotlinつかってQiitaクライアント作った時の話

LeakCanary

Page 8: KotlinつかってQiitaクライアント作った時の話

LeakCanary

https://github.com/square/leakcanary

5/8に出たsquareの メモリリークの ライブラリ

Page 9: KotlinつかってQiitaクライアント作った時の話

importするだけ。

LeakCanary - 使い方

Page 10: KotlinつかってQiitaクライアント作った時の話

普通に使えます。

便利ですね!これ!

LeakCanary - 使い方

Page 11: KotlinつかってQiitaクライアント作った時の話

EventBus

Page 12: KotlinつかってQiitaクライアント作った時の話

greenrobotのEvent Bus

EventBus

https://github.com/greenrobot/EventBus

Page 13: KotlinつかってQiitaクライアント作った時の話

javaの時と全く同じ。 問題なし。

EventBus - 使い方

Page 14: KotlinつかってQiitaクライアント作った時の話

javaの時と全く同じ。

監視する人がregister, unregisterする。

EventBus - 使い方

Page 15: KotlinつかってQiitaクライアント作った時の話

Eventをpostする

EventBus - 使い方

監視者で処理する。

Page 16: KotlinつかってQiitaクライアント作った時の話

KotterKnife

Page 17: KotlinつかってQiitaクライアント作った時の話

Jake先生作

ButterKnifeのKotlin版

KotterKnife

https://github.com/JakeWharton/kotterknife

Page 18: KotlinつかってQiitaクライアント作った時の話

ほぼほぼButterKnfieと 同じように使えます。

KotterKnife - 使い方

Page 19: KotlinつかってQiitaクライアント作った時の話

KotterKnife - 使い方Xmlに書いて

宣言時に by bindViewするだけ

Page 20: KotlinつかってQiitaクライアント作った時の話

ButterKnfieのように

bind(inject)メソッドで

明示的にinjectしない。

injectをするのはそのfieldに アクセスした時。

KotterKnife - 使い方

Page 21: KotlinつかってQiitaクライアント作った時の話

fragment使用時は注意。

KotterKnife - 注意点

onCreateViewではまだViewが

Activityに結びついてないので これはぬるぽになる

Page 22: KotlinつかってQiitaクライアント作った時の話

リスナーつけたりの処理は onActivityCreatedとかですると良い。

KotterKnife - 注意点

Page 23: KotlinつかってQiitaクライアント作った時の話

Retrofit

Page 24: KotlinつかってQiitaクライアント作った時の話

Retrofit - 使い方

通常どおり使えます。

Page 25: KotlinつかってQiitaクライアント作った時の話

Retrofit - 使い方Clientを作って

Page 26: KotlinつかってQiitaクライアント作った時の話

Retrofit - 使い方interface(trait)を作って

Page 27: KotlinつかってQiitaクライアント作った時の話

Retrofit - 使い方

entityを作ります。

Primary Constructorにも

Annotation使えました。

Page 28: KotlinつかってQiitaクライアント作った時の話

Retrofit - 使い方

dataクラスにすると便利です。

toStringとか、equalsとかを 自動生成してくれます。

Page 29: KotlinつかってQiitaクライアント作った時の話

Retrofit - 使い方ただParcelableにするなら

空のprimary constructorを定義するので

dataをつけても恩恵は得られないです。

Page 30: KotlinつかってQiitaクライアント作った時の話

Dagger2

Page 31: KotlinつかってQiitaクライアント作った時の話

Dagger2 - 使い方

フルコットリンは 諦めましょう。

Page 32: KotlinつかってQiitaクライアント作った時の話

Dagger2 - 使い方

やってみた感じ下記を確認

• kotlinでComponentとかModuleとか書いてもgenerateされない

• javaで書いてGenerateされたDaggerHogeComponentがkotlinから見えない

Page 33: KotlinつかってQiitaクライアント作った時の話

Dagger2 - 使い方

ただ javaとのハイブリッドで なんとか使えます。

Page 34: KotlinつかってQiitaクライアント作った時の話

Dagger2 - 使い方

• ComponentとかModuleはjavaで書く。

• GenerateされたDaggerHogeComponentとかはjavaからアクセスしてkotlinに継承などで渡す

ってする

Page 35: KotlinつかってQiitaクライアント作った時の話

Dagger2 - 使い方

ModuleとかComponentをjavaで作成

Page 36: KotlinつかってQiitaクライアント作った時の話

Dagger2 - 使い方

ModuleとかComponentをjavaで作成

Page 37: KotlinつかってQiitaクライアント作った時の話

Dagger2 - 使い方生成されたDaggerHogeComponentを

kotlinへ渡すメソッドをjavaで用意

Page 38: KotlinつかってQiitaクライアント作った時の話

Dagger2 - 使い方

kotlinで受け取る

Page 39: KotlinつかってQiitaクライアント作った時の話

Dagger2 - 使い方

あとはinjectするだけ

setterにanotationをつける