コンテンツにスキップ

プログラミング/Kotlin

出典: フリー教科書『ウィキブックス(Wikibooks)』

Kotlinの概要

[編集]

Kotlinは、JetBrains社が2011年に開発したJava仮想マシン(JVM)上で動作するプログラミング言語です。Android開発の公式言語として認定され、サーバーサイド、Web、モバイルアプリケーション開発において急速に普及しています。Javaとの高い互換性を保ちながら、より簡潔で安全なコーディングを可能にする言語設計が特徴です。

基本的な文法と特徴

[編集]

変数と型

[編集]

Kotlinは型推論と不変性をサポートする現代的な言語です:

// 型推論
val name = "田中太郎"  // 不変の変数(val)
var age = 30           // 可変の変数(var)

// 明示的な型指定
val pi: Double = 3.14159
val isStudent: Boolean = true

// null安全性
var nullableString: String? = null  // null許容型
var nonNullString: String = "Hello" // null非許容型

// スマートキャスト
fun describe(obj: Any) {
    when (obj) {
        is Int -> println("整数: ${obj * 2}")
        is String -> println("文字列: ${obj.length}文字")
        else -> println("その他の型")
    }
}

関数とラムダ式

[編集]

Kotlinの関数定義は柔軟で表現力豊かです:

// 基本的な関数
fun add(a: Int, b: Int): Int {
    return a + b
}

// 単一式関数
fun multiply(a: Int, b: Int) = a * b

// デフォルト引数
fun greet(name: String, greeting: String = "こんにちは") {
    println("$greeting$name!")
}

// 高階関数とラムダ式
val numbers = listOf(1, 2, 3, 4, 5)
val squaredNumbers = numbers.map { it * it }
val evenNumbers = numbers.filter { it % 2 == 0 }

オブジェクト指向プログラミング

[編集]

クラスとデータクラス

[編集]

Kotlinのクラス定義は簡潔で強力です:

// 通常のクラス
class Person(val name: String, var age: Int) {
    fun introduce() {
        println("私の名前は${name}で、${age}歳です。")
    }
}

// データクラス
data class Point(val x: Int, val y: Int)

// 継承
open class Shape {
    open fun draw() {
        println("図形を描画")
    }
}

class Circle : Shape() {
    override fun draw() {
        println("円を描画")
    }
}

// コンパニオンオブジェクト(静的メンバー)
class MathUtils {
    companion object {
        fun square(x: Int) = x * x
    }
}

関数型プログラミング

[編集]

コレクション操作

[編集]

Kotlinのコレクション操作は非常に表現力豊かです:

val fruits = listOf("リンゴ", "バナナ", "オレンジ", "メロン")

// フィルタリングと変換
val longFruits = fruits
    .filter { it.length > 4 }
    .map { it.uppercase() }

// 集計操作
val numbers = listOf(1, 2, 3, 4, 5)
val sum = numbers.reduce { acc, num -> acc + num }
val average = numbers.average()

// グルーピング
val groupedByLength = fruits.groupBy { it.length }

非同期プログラミング

[編集]

コルーチン

[編集]

Kotlinのコルーチンは軽量で効率的な非同期処理を実現します:

import kotlinx.coroutines.*

suspend fun fetchUserData(userId: Int): String {
    delay(1000)  // 非同期的な遅延
    return "ユーザー: $userId のデータ"
}

fun main() = runBlocking {
    val job1 = launch {
        val data1 = fetchUserData(1)
        println(data1)
    }

    val job2 = launch {
        val data2 = fetchUserData(2)
        println(data2)
    }

    job1.join()
    job2.join()
}

Android開発

[編集]

Android向けUI構築

[編集]

Kotlinは Android 開発において、Jetpack Composeと統合され、宣言的UIを実現します:

@Composable
fun UserProfile(name: String, age: Int) {
    Column {
        Text(
            text = "名前: $name",
            style = MaterialTheme.typography.h6
        )
        Text(
            text = "年齢: $age",
            style = MaterialTheme.typography.body1
        )
    }
}

おわりに

[編集]

Kotlinは、Java仮想マシンの能力を最大限に活用しながら、現代のプログラミングパラダイムを取り入れた言語です。簡潔な文法、null安全性、関数型プログラミングのサポート、そして豊富なライブラリにより、開発者の生産性を大幅に向上させます。

モバイル、Web、サーバーサイドなど、多様な開発シーンで活躍できる言語として、Kotlinは今後さらに注目を集めるでしょう。