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

4,211 views

Published on

Published in: Technology, News & Politics
  • Be the first to comment

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

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

×