🏇

Kotlinに入門してみた

2023/08/17に公開

Overview

https://kotlinlang.org/docs/getting-started.html

Kotlinは、開発者をより幸せにするために設計された、現代的だがすでに成熟したプログラミング言語だ。簡潔で、安全で、Javaや他の言語と相互運用可能で、生産的なプログラミングのために複数のプラットフォーム間でコードを再利用する多くの方法を提供する。

KotlinはJavaを簡単に書けることから、ベターJavaと呼ばれていたりするそうです。

まずは、Kotlinのツアーに参加してみませんか?このツアーでは、プログラミング言語Kotlinの基礎について説明します。

Kotlinの公式リファレンスのリンク
こちらで、変数、関数、繰り返し処理、条件分岐、クラスについて学習しました。
https://kotlinlang.org/docs/kotlin-tour-welcome.html

summary

公式チュートリアルをやってみて、コードを書いてみました。
Playgrandで動かすことができますが、IntelliJ IDEAを使わないとコードの保管機能がなかったので、コピペしないとやりずらかったです。
Github Copilotを使うと、いい感じでサンプルコードを書いてくれるので、写経するより早く学習できる気がします。
色々なパターンをAIに教えてもらえました。

挨拶を返すだけのプログラム

fun main(args: Array<String>) {
    val name: String = "Kotlin"
    println("Hello, $name!")
}

データの型

Kotlinには以下の基本型がある:

https://kotlinlang.org/docs/kotlin-tour-basic-types.html

変数

fun main(args: Array<String>) {
    val name: String = "Kotlin"// String型はダブルクォーテーションで囲む
    val age: Int = 4// Int型は整数
    val width: Double = 1.0// Double型は小数
    val done: Boolean = true// Boolean型はtrueかfalse
    val characters: Char = 'a'// Char型はシングルクォーテーションで囲む
    println(name)
    println(age)
    println(width)
    println(done)
    println(characters)
}
種類 基本的な型
Integers Byte, Short, Int, Long
Unsigned integers UByte, UShort, UInt, ULong
Floating-point numbers Float, Double
Booleans Boolean
Characters Char
Strings String

List

配列のことですね。listOf丸括弧っていう独特な書き方をしていた。

https://kotlinlang.org/docs/kotlin-tour-collections.html

fun main(args: Array<String>) {
    // フルーツというListを作成
    val fruits = listOf("apple", "banana", "orange")
    // フルーツの要素を1つずつ取り出して表示
    for (fruit in fruits) {
        println(fruit)
    }
    // Listの中身を全て表示
    print(fruits)
}

リストに型を指定する
ジェネリティクスに型を指定するとリストに型を指定できます。List<型>

fun main() {
    val items: List<String> = listOf("apple", "banana", "kiwifruit")
    println(items)
    val numbers: List<Int> = listOf(1, 2, 3)
    println(numbers)
}

filterメソッド
要素から、条件に合うものだけを抽出したい場合は、filterメソッドを使う。

fun main() {
    // filterとは、条件に合致する要素だけを取り出す関数
    val items: List<String> = listOf("apple", "banana", "kiwifruit")
    // appleという要素だけ条件式を使って取り出す
    items.filter { it == "apple" }.forEach { println(it) }
    // Listから、要素の長さが5以上のものだけを取り出す
    items.filter { it.length >= 5 }.forEach { println(it) }
}

Set

Listは重複した要素を持つことができるが、Setは重複した要素を持つことができない。

fun main(args: Array<String>) {
// Setを使って、重複を許さないリスト果物のリストを作る。Setは同じ値を複数持てない。
    val fruits = setOf("apple", "banana", "orange", "apple")
    println(fruits)
}

Map

Mapはキーと値のペアを保持するコレクションである。key, valueって言われているものですね。

fun main(args: Array<String>) {
// Mapを使用して果物の名前と値段を格納する
    val fruits = mapOf("apple" to 100, "banana" to 200, "orange" to 300)
// Mapの要素を順番に処理する
    fruits.forEach { key, value ->
        println("$key is $value yen.")
    }
    println(fruits)
}

条件分岐

条件が、同じ値か10以下か、10未満っていう表現で出てくる機能ですね。

if文
ifを使い500円以上なら、ワンコインランチが食べれて、¥500未満だったら変えない条件分岐

fun main(args: Array<String>) {
    val money = 400
    if (money >= 500) {
        println("ワンコインランチが食べれる")
    } else {
        println("ワンコインランチが食べれない")
    }
}

when文
Kotlinには、switch文がないのか、when文なるものを使うようです。

fun main(args: Array<String>) {
   // 複数の分岐を持つ条件式がある場合は、whenを使う。
   val obj = "ぶどう"
    when (obj) {
         "りんご" -> println("りんごです")
         "みかん" -> println("みかんです")
         "ぶどう" -> println("ぶどうです")
         else -> println("その他です")
   }
}

繰り返し処理

プログラミング言語で基本的なfor文ですね。

for文

fun main(args: Array<String>) {
    // for文を使って1から10までの数字を表示する
    for (i in 1..10) {
        println(i)
    }
}

while文
条件式を評価し真の間は処理を行う文法です。

fun main(args: Array<String>) {
    // while文を使って1から10までの数字を表示する
    var i = 1
    while (i <= 10) {
        println(i)
        i++
    }
}

関数

プログラムの処理をまとめておく機能ですね。

// 通常の関数
fun hello() {
    println("Hello, world!")
}

// 足し算する関数
fun sum(a: Int, b: Int): Int {
    return a + b
}

// ラムダ式で足し算する関数
val sum2 = { a: Int, b: Int -> a + b }

fun main() {
    hello()
    println("関数で実行-------------")
    println(sum(1, 2))
    println("ラムダ式で実行-------------")
    println(sum2(1, 2))
}

クラス

プログラミング言語の世界では、設計図って意味ですね。変数とメソッドが中に入っていて、インスタンス化(実体化)しないと使えません。

// このクラスは、Personクラスのインスタンスを生成し、greetメソッドを呼び出すだけのクラスです。
class Person(val name: String, val age: Int) {
    fun greet() {
        println("私の名前は${name}です。年齢は${age}です。")
    }
}

fun main() {
    val person = Person("田中太郎", 20)
    person.greet()
}

thoughts

Kotlinの公式チュートリアルをやってみた感想ですが、Golangよりは簡単かもと思いました。
Javaを簡単にしたものだそうですが、JavaだとHello Worldするだけで、3行ぐらいコード書くのですけど、Kotlinなら、1行で処理が欠けますね。

比較してみた
Javaのコード

class HelloWorld {
	public static void main(String[] args) {
		System.out.println("Hello, world.");
	}
}

Kotlinのコード

fun main(args:Array<String>) {
    println("Hello, world.")
}

コードも見やすくて、理解しやすい言語だったので書くのが楽しくて気に入っております。

Jboy王国メディア

Discussion