Androidアプリ開発で覚えておきたいKotlinの記法を紹介

Androidアプリ開発するためにKotlinを利用するケースは多くなってきています。Kotlinでアプリ開発が初めてでKotlinの文法を知らないという方向けに、基本的な構文や使い方について紹介していきます。

Kotlinとは

Kotlinは、JetBrainsが中心となって開発している言語で2011年7月に登場した新しく登場しました。Googleも2017のイベントで、Androidの開発言語としてKotilnが正式に採用することを発表しました。Kotlinは、Apache 2.0ライセンスのもとOSSとして開発されていてソースコードも公開されています。特徴としては、Javaよりも完結で書きやすく、型推論やラムダ式,トレイトなどのモダンな文法を取り入れている点が挙げられます。

これからAndroidアプリ開発を始める方は、Kotlinを使って開発することをお勧めします。

特徴

  • 簡潔で書きやすい
  • NULL安全
  • 静的型付け
  • 型推論、ラムダ式などを採用したモダン言語
  • JVM上で動作しJavaとの互換がある

Android Studioのセットアップ方法

Kotlinを使ってアプリを開発するためには、まずAndroid StudioをインストールしてAndroidプロジェクトを作成する必要があります。以下の記事で、プロジェクトの作成方法について紹介していますので作ってみましょう。

Kotlinの基礎的な文法

Kotlinでアプリを開発するために必要な基礎的な構文や使い方を紹介していきます。アプリを開発する上で、必ず役に立つ構文なので覚えておくだけでアプリ開発がしやすくなるのでしっかりと押さえましょう。

変数 (var, val)

Kotlinでは、var, valを使って変数を定義します。変数はプログラミングにおいて必ずもので、定義した変数の中に文字や数値といった値を保持しておくことができます。

varを使って変数を定義

varを使って変数を定義してみましょう。varは変数の中に保持した値を、後から上書き可能な変数を定義できます。

    var modifiableName: String = "My name is Taro."
    // `modifiableName`は var なので値が変更できる
    modifiableName = "My name is Hanako."

valを使って変数を定義

valを使って変数を定義してみましょう。valは変数の中に保持した値を、後から上書きできないような仕様になっています。なので、1度代入した値はそのまま保持されます。

    val immutableName: String = "My name is Taro."
    
    // `immutableName`は val なので値が変更できない
    // modifiableName = "My name is Hanako."  => エラー

計算

定義した変数を使って計算をすることもできます。例として、足し算をする計算をしてみます。

    val number_01 = 10
    val number_02 = 12
    val answer = number_01 + number_02 // => answerは22

文字連結

Kotlinでは + を使って文字列をつなげることができます。
    val str = "My name is " + "Taro"

文字列の中で変数を展開することもできます。足し算の例を挙げてみましょう。

    val number_01 = 10
    val number_02 = 12
    val answer = number_01 + number_02
    
    val str = "$number_01 + $number_02 = $answer" // => strは "10 + 12 = 22" となる

Nullable

KotlinにはNull安全という機能があります。これは、nullを扱う時に不具合が起きないようにするための機能です。Javaでは、自前でNullを安全に処理する必要があったため、正しく処理しないと NullPointerException というエラーが発生することがありました。

    // Null安全のため Nullable ではない変数に null は代入できない
    // var str: String = null はエラーになる
    
    var nullableStr: String? = null
    
    // Nullable変数は扱い方が少し変わる
    // nullableStr.contains("abc") はエラーになる
    
    nullableStr?.contains("abc") // nullableStr = null のため何も処理をしない

条件分岐

条件分岐などもよく使う構文です。Kotlinでは、if構文以外にも変数と組み合わせて使える構文があるので紹介します。

if構文

    val rand = (1..100).shuffled().first()
    var answerString: String
    
    if (rand % 2 == 0) {
    	answerString = "$rand is even."
    } else {
    	answerString = "$rand is odd."
    }

whenブロックの中で定義した条件分岐によって変数に入る値が変わります。Switch構文に似ているので、覚えやすいと思います。

val ~ when構文

    val rand = (1..100).shuffled().first()
    
    val answerString = when {
    	rand % 2 == 0 -> "$rand is even."
    	else -> "$rand is odd."
    }

ifブロックの中で定義した条件分岐によって変数に入る値が変わります。if文の書き方は、通常と似ているのでわかりやすいと思います。

val ~ if構文

    val rand = (1..100).shuffled().first()
    
    val answerString = if (rand % 2 == 0) {
    	"$rand is even."
    } else {
    	"$rand is odd."
    }

関数

関数の定義方法について紹介します。Kotlinでは、funを使って関数を定義します。

Standard Function

    fun evaluateNumber(number: Int): String {
    	if (number % 2 == 0) {
    		return "$number is even."
    	}
    
    	return "$number is odd."
    }

Kotlinでは、匿名関数というものも定義することができます。定義した関数を変数の中に入れて扱うことができます。

Anonymous Function

    val evaluateNumber: (Int) -> String = { number ->
    	if (number % 2 == 0) {
    		"$number is even."
    	} else {
    		"$number is odd."
    	}
    }
    
    val rand = (1..100).shuffled().first()
    println(evaluateNumber(rand)) // => evaluateNumber(rand)の結果が表示される

itについて

Kotlinではラムダ関数を使用することができ、ラムダ関数内でitを使用すると自身を参照することができます。

    val text = "hello, world."
    
    // upperは "HELLO, WORLD." になる
    val upper = text.let { it.toUpperCase() }

KotlinコードをJavaで実行する

KotlinでビルドしたコードはJVM上で実行できるようにコンパイルされます。JVM上で動くということは、Javaでも実行できるようになります。興味のある人は、是非試してみてくださいね。

KotlinはAndroidでよく使われる言語だけど、Terminal上でも実行可能で実行環境はhomebrewを使って構築することができるみたいですね。

1度コンパイルしてしまえば、JVM上で動作するのでJavaコマンドでも動かせたりもします。

Androidプロジェクトを作らなくてもKotlinを試せるので便利 pic.twitter.com/1PY9DG7Esz
— Hiro | スポーツ好きのエンジニア (@nagami_hiro) October 17, 2020