0
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Organization

Convert to Kotlin Hands on

Convert to Kotlin Hands on

by nitakan
1 / 37

Introduction

このハンズオンでは、AndroidのサンプルプロジェクトをJavaからKotlinへ変換します。
実際に変換を試してみることで、KotlinでAndroidアプリをどう書けるかというところを体験していただければと思います。

わからなくなった方やプロジェクトがおかしくなった方はサポータに声をかけてください!


Introduction

ハンズオン中の質問は、近くのサポータまたはSli.doに投稿してもらうと拾います。

URL: https://sli.do/

Event code: #R850


Agenda

  1. Kotlinとは
  2. 本日のアプリ
  3. 想定している環境
  4. Androidプロジェクトの導入
  5. Convert to Kotlin 手順
  6. Convert to Kotlin
  7. まとめ

Kotlinとは


Kotlinとは

IntelliJ IDEAなどを開発している、JetBrains社が開発したプログラミング言語
静的型付け言語で、様々なプラットフォームで動作する。
Kotlin/JVM、Kotlin/JS、Kotlin/Native

Google I/O 2017でAndroidの公式サポート言語に指定され、最近注目度が上がってきている言語。
また、JavaのWebフレームワークであるSpring5でKotlinがサポートされ、サーバーサイドKotlinも注目されつつある。


本日のアプリ


GithubのAPIにアクセスして言語ごとのレポジトリ一覧を取得し、スター順に一覧表示する。

device-2018-11-30-103830.png


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を設定します。

  1. Tools -> Kotlin -> Configure Kotlin in project
  2. All modules containing Kotlin files: app
  3. Kotlin compiler and runtime version: 1.3.10
  4. OK

Java to Kotlin

  1. ファイルを右クリック -> Convert Java file to Kotlin file
  2. 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ファイル を作成してみましょう。


SearchResult.kt
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 :tada:


What's next step?


Kotlin Koans

スクリーンショット 2018-11-30 10.32.11.png


Kotlin公式

スクリーンショット 2018-11-30 10.35.04.png

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?