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

Post on 08-Jul-2015

2.848 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

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

top related