potato03 kotlinでandroidアプリ開発(後編)
TRANSCRIPT
KotlinでAndroidアプリ開発(後編)
2014-01-15 potatotips #3 Toshihiro Yagi
Wednesday, January 15, 14
About meTwitter : @sys1yagiBlog : http://visible-true.blogspot.jp/
Android Engineer at
Wednesday, January 15, 14
出ました。
http://www.amazon.co.jp/gp/product/4798040029/
Wednesday, January 15, 14
前回のおさらい
Wednesday, January 15, 14
Kotlin知ってますか?
Wednesday, January 15, 14
What’s about Kotlin?
• JetBrains社が作っている新しいJVM言語。GroovyやScalaから影響を受けている。静的型付け。
• 型推論、ジェネリクス• var、 val、 タプル、Null Safe• トレイト、デリゲート、プロパティ• 高階関数、拡張関数、演算子オーバロード• データクラス、多重宣言• インライン関数• パターンマッチング• Javaとの相互運用性• etc...
Wednesday, January 15, 14
JVM Language?
Can be used to develop in Android?
Wednesday, January 15, 14
Of course!
Wednesday, January 15, 14
Android Studioで使える
•Kotlin pluginをインストールする
•build.gradleにdependencies等を書く
•javaディレクトリと並列な位置にkotlinディレクトリを置く
→動く!
参考 : http://blog.jetbrains.com/kotlin/2013/08/working-with-kotlin-in-android-studio/Wednesday, January 15, 14
Android Studioで使える
•.javaファイルを.ktに変換出来る
•ビルドしたらclassファイルになるのでjava-kotlin間で相互利用可能
•kotlin-runtime-0.1.jar 38KB
kotlin-stdlib-0.1.jar 198KB
Wednesday, January 15, 14
手軽、軽量でイイネ!
Wednesday, January 15, 14
後編Wednesday, January 15, 14
拡張関数
•Objective-Cのカテゴリの様なもの
•既存クラスに関数を生やせる
→捗る
function追加
function
Class
Wednesday, January 15, 14
拡張関数
fun ClassName.methodName(arg: Type):returnType { //do something}
普通の関数定義とほぼ同じ
Wednesday, January 15, 14
Sample of 拡張関数//defineimport android.content.Intentimport android.content.Context
fun Intent.startActivity(context: Context?): Unit { context?.startActivity(this)}
//useIntent(Intent.ACTION_VIEW, Uri.parse(url!!)) .startActivity(getActivity())
Wednesday, January 15, 14
捗る!Wednesday, January 15, 14
RoboGuiceも普通に使えた
[InjectView(R.id.item_list)]var mListView: ListView? = null
Kotlinではアノテーションをこう書く
ただしaptはうまく動かないらしい。Dagger,Transfuse,AndroidAnnotationsとかとの併用はムリポ
Wednesday, January 15, 14
捗る!Wednesday, January 15, 14
関数リテラル
mListView?.setOnItemClickListener({ parent, view, position, id -> //do something})
mListView.setOnItemClickListener( new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //do something } });
Before
After
Wednesday, January 15, 14
捗る!Wednesday, January 15, 14
詳しくはサンプルで
https://github.com/sys1yagi/KotlinAndroidSample
Wednesday, January 15, 14
めんどいところ• うまくKotlin認識してくれない時がある
• オートコンプリートが重い
• コンパイルエラーのメッセージが意味不明な事が多い
• Null Safeのための?演算子と!!演算子が結構だるい
• なぜかoverrideって書くと怒られる
• java-kt変換が甘い
• javaからkotlinが見えない
• リソースにジャンプ出来ない
Wednesday, January 15, 14
おわりに
•Kotlinサイコー(^q^)
Wednesday, January 15, 14
COOKPADでKotlinを書こう!?
https://info.cookpad.com/jobs/position/ios-android-app-engineer
Wednesday, January 15, 14