Introduction
このハンズオンでは、AndroidのサンプルプロジェクトをJavaからKotlinへ変換します。
実際に変換を試してみることで、KotlinでAndroidアプリをどう書けるかというところを体験していただければと思います。
わからなくなった方やプロジェクトがおかしくなった方はサポータに声をかけてください!
Introduction
ハンズオン中の質問は、近くのサポータまたはSli.doに投稿してもらうと拾います。
URL: https://sli.do/
Event code: #R850
Agenda
- Kotlinとは
- 本日のアプリ
- 想定している環境
- Androidプロジェクトの導入
- Convert to Kotlin 手順
- Convert to Kotlin
- まとめ
Kotlinとは
Kotlinとは
IntelliJ IDEAなどを開発している、JetBrains社が開発したプログラミング言語
静的型付け言語で、様々なプラットフォームで動作する。
Kotlin/JVM、Kotlin/JS、Kotlin/Native
Google I/O 2017でAndroidの公式サポート言語に指定され、最近注目度が上がってきている言語。
また、JavaのWebフレームワークであるSpring5でKotlinがサポートされ、サーバーサイドKotlinも注目されつつある。
本日のアプリ
GithubのAPIにアクセスして言語ごとのレポジトリ一覧を取得し、スター順に一覧表示する。
Using App & tools
想定している環境
- Android Studio 3.2.1
- Java8
- Kotlin 1.3.10
- Kotlin plugin 1.3.10-release-Studio3.2-1
今日出てくる言語仕様
- valとvar
- NonNullとNullable
- Null安全
- data class
- 拡張関数
- 型推論
- 文字リテラル
Setup the Android project
サンプル
JavaのAndroidプロジェクトを作成しましょう。
サンプルを用意していますので、以下からcloneしてください。
https://github.com/44x1carbon/kotlin-android-handson.git
起動してみましょう
Convert to Kotlin 手順
- Kotlinの設定
- 1ファイル毎にKotlin化
- 起動して確認
Configure Kotlin
AndroidプロジェクトにKotlinを設定します。
- Tools -> Kotlin -> Configure Kotlin in project
All modules containing Kotlin files: app
Kotlin compiler and runtime version: 1.3.10
- OK
Java to Kotlin
- ファイルを右クリック -> Convert Java file to Kotlin file
- Kotlinらしく修正
Convert to Kotlin
Model
model.Repository
- val と var
- nullable
- data class
変数宣言(val, var)
// Java
Type obj = new Type();
final Type obj2 = new Type();
// Kotlin
var obj: Type = Type()
val obj2: Type = Type()
// 型推論
val obj2 = Type()
Response
RepositoryEntity
Response
SearchResult
Kotlinファイル を作成してみましょう。
data class SearchResult (val items: List<RepositoryEntiry>)
Api
SearchRepositoryApi
RetrofitSearchRepositoryApi
- interface
- 拡張関数
- Lambda式
- classの説明 newいらない
起動してみましょう
Adapter
RecyclerAdapter
- テンプレート文字列
- コンストラクタ
- val valなし
Fragment
- Companion object
- Null安全
- エルビス演算子
- スコープ関数
起動してみましょう
Activity
- When式
まとめ
今日説明していない言語仕様
- 遅延初期化
- コルーチン
- アクセス修飾子
- object
- ラムダ式
- 委譲プロパティ(by)
- 列挙型
- 演算子オーバーロード
などなど
Convert to Kotlinしてみていかがでしたでしょうか?
Kotlinまとめ
- KotlinはBetter Java
- Javaとの親和性が高い(100%互換性)
- 文法もJavaと似ているところは多い
- モダンな言語にある機能はだいたいある
- Null安全(ヌルポが起こりにくい)
- 既存クラスを拡張できる
- 簡潔なコードが書ける
Welcome to the Kotlin world
What's next step?
Kotlin Koans
Kotlin公式