kotlinつかってqiitaクライアント作った時の話
TRANSCRIPT
Kotlin使って
Qiitaクライアント
作った時の話 ~Kotlin + Modern Libraries~
2015/5/13 potatotips#17
Profilename
釘宮 愼之介 / @kgmyshinfeatures
• Androidエンジニア
• なぜか初対面の人に「くぎゅ」って呼ばれる
• 最近転職しました
Kotlin 盛り上がって きてますよね
今日はKotlinを使って
実際にアプリを 作ってモダンなライブラリを
入れた時の (ハマりまくった)
話をします
• LeakCanary • EventBus • KotterKnife • Retrofit • Dagger2
Kotlin meets Libraries
LeakCanary
LeakCanary
https://github.com/square/leakcanary
5/8に出たsquareの メモリリークの ライブラリ
importするだけ。
LeakCanary - 使い方
普通に使えます。
便利ですね!これ!
LeakCanary - 使い方
EventBus
greenrobotのEvent Bus
EventBus
https://github.com/greenrobot/EventBus
javaの時と全く同じ。 問題なし。
EventBus - 使い方
javaの時と全く同じ。
監視する人がregister, unregisterする。
EventBus - 使い方
Eventをpostする
EventBus - 使い方
監視者で処理する。
KotterKnife
Jake先生作
ButterKnifeのKotlin版
KotterKnife
https://github.com/JakeWharton/kotterknife
ほぼほぼButterKnfieと 同じように使えます。
KotterKnife - 使い方
KotterKnife - 使い方Xmlに書いて
宣言時に by bindViewするだけ
ButterKnfieのように
bind(inject)メソッドで
明示的にinjectしない。
injectをするのはそのfieldに アクセスした時。
KotterKnife - 使い方
fragment使用時は注意。
KotterKnife - 注意点
onCreateViewではまだViewが
Activityに結びついてないので これはぬるぽになる
リスナーつけたりの処理は onActivityCreatedとかですると良い。
KotterKnife - 注意点
Retrofit
Retrofit - 使い方
通常どおり使えます。
Retrofit - 使い方Clientを作って
Retrofit - 使い方interface(trait)を作って
Retrofit - 使い方
entityを作ります。
Primary Constructorにも
Annotation使えました。
Retrofit - 使い方
dataクラスにすると便利です。
toStringとか、equalsとかを 自動生成してくれます。
Retrofit - 使い方ただParcelableにするなら
空のprimary constructorを定義するので
dataをつけても恩恵は得られないです。
Dagger2
Dagger2 - 使い方
フルコットリンは 諦めましょう。
Dagger2 - 使い方
やってみた感じ下記を確認
• kotlinでComponentとかModuleとか書いてもgenerateされない
• javaで書いてGenerateされたDaggerHogeComponentがkotlinから見えない
Dagger2 - 使い方
ただ javaとのハイブリッドで なんとか使えます。
Dagger2 - 使い方
• ComponentとかModuleはjavaで書く。
• GenerateされたDaggerHogeComponentとかはjavaからアクセスしてkotlinに継承などで渡す
ってする
Dagger2 - 使い方
ModuleとかComponentをjavaで作成
Dagger2 - 使い方
ModuleとかComponentをjavaで作成
Dagger2 - 使い方生成されたDaggerHogeComponentを
kotlinへ渡すメソッドをjavaで用意
Dagger2 - 使い方
kotlinで受け取る
Dagger2 - 使い方
あとはinjectするだけ
setterにanotationをつける