potato03 kotlinでandroidアプリ開発(後編)

24
KotlinでAndroid アプリ開発(後編) 2014-01-15 potatotips #3 Toshihiro Yagi Wednesday, January 15, 14

Upload: toshihiro-yagi

Post on 08-Jul-2015

2.848 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Potato03 KotlinでAndroidアプリ開発(後編)

KotlinでAndroidアプリ開発(後編)

2014-01-15 potatotips #3 Toshihiro Yagi

Wednesday, January 15, 14

Page 2: Potato03 KotlinでAndroidアプリ開発(後編)

About meTwitter : @sys1yagiBlog : http://visible-true.blogspot.jp/

Android Engineer at

Wednesday, January 15, 14

Page 3: Potato03 KotlinでAndroidアプリ開発(後編)

出ました。

http://www.amazon.co.jp/gp/product/4798040029/

Wednesday, January 15, 14

Page 4: Potato03 KotlinでAndroidアプリ開発(後編)

前回のおさらい

Wednesday, January 15, 14

Page 5: Potato03 KotlinでAndroidアプリ開発(後編)

Kotlin知ってますか?

Wednesday, January 15, 14

Page 6: Potato03 KotlinでAndroidアプリ開発(後編)

What’s about Kotlin?

• JetBrains社が作っている新しいJVM言語。GroovyやScalaから影響を受けている。静的型付け。

• 型推論、ジェネリクス• var、 val、 タプル、Null Safe• トレイト、デリゲート、プロパティ• 高階関数、拡張関数、演算子オーバロード• データクラス、多重宣言• インライン関数• パターンマッチング• Javaとの相互運用性• etc...

Wednesday, January 15, 14

Page 7: Potato03 KotlinでAndroidアプリ開発(後編)

JVM Language?

Can be used to develop in Android?

Wednesday, January 15, 14

Page 8: Potato03 KotlinでAndroidアプリ開発(後編)

Of course!

Wednesday, January 15, 14

Page 9: Potato03 KotlinでAndroidアプリ開発(後編)

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

Page 10: Potato03 KotlinでAndroidアプリ開発(後編)

Android Studioで使える

•.javaファイルを.ktに変換出来る

•ビルドしたらclassファイルになるのでjava-kotlin間で相互利用可能

•kotlin-runtime-0.1.jar 38KB

kotlin-stdlib-0.1.jar 198KB

Wednesday, January 15, 14

Page 11: Potato03 KotlinでAndroidアプリ開発(後編)

手軽、軽量でイイネ!

Wednesday, January 15, 14

Page 12: Potato03 KotlinでAndroidアプリ開発(後編)

後編Wednesday, January 15, 14

Page 13: Potato03 KotlinでAndroidアプリ開発(後編)

拡張関数

•Objective-Cのカテゴリの様なもの

•既存クラスに関数を生やせる

→捗る

function追加

function

Class

Wednesday, January 15, 14

Page 14: Potato03 KotlinでAndroidアプリ開発(後編)

拡張関数

fun ClassName.methodName(arg: Type):returnType { //do something}

普通の関数定義とほぼ同じ

Wednesday, January 15, 14

Page 15: Potato03 KotlinでAndroidアプリ開発(後編)

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

Page 16: Potato03 KotlinでAndroidアプリ開発(後編)

捗る!Wednesday, January 15, 14

Page 17: Potato03 KotlinでAndroidアプリ開発(後編)

RoboGuiceも普通に使えた

[InjectView(R.id.item_list)]var mListView: ListView? = null

Kotlinではアノテーションをこう書く

ただしaptはうまく動かないらしい。Dagger,Transfuse,AndroidAnnotationsとかとの併用はムリポ

Wednesday, January 15, 14

Page 18: Potato03 KotlinでAndroidアプリ開発(後編)

捗る!Wednesday, January 15, 14

Page 19: Potato03 KotlinでAndroidアプリ開発(後編)

関数リテラル

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

Page 20: Potato03 KotlinでAndroidアプリ開発(後編)

捗る!Wednesday, January 15, 14

Page 21: Potato03 KotlinでAndroidアプリ開発(後編)

詳しくはサンプルで

https://github.com/sys1yagi/KotlinAndroidSample

Wednesday, January 15, 14

Page 22: Potato03 KotlinでAndroidアプリ開発(後編)

めんどいところ• うまくKotlin認識してくれない時がある

• オートコンプリートが重い

• コンパイルエラーのメッセージが意味不明な事が多い

• Null Safeのための?演算子と!!演算子が結構だるい

• なぜかoverrideって書くと怒られる

• java-kt変換が甘い

• javaからkotlinが見えない

• リソースにジャンプ出来ない

Wednesday, January 15, 14

Page 23: Potato03 KotlinでAndroidアプリ開発(後編)

おわりに

•Kotlinサイコー(^q^)

Wednesday, January 15, 14

Page 24: Potato03 KotlinでAndroidアプリ開発(後編)

COOKPADでKotlinを書こう!?

https://info.cookpad.com/jobs/position/ios-android-app-engineer

Wednesday, January 15, 14