前回の振り返り
前回(Day02)では、以下のことを学んだ。
- if文/if式 – 2択の条件分岐
- if式の特徴 – 値を返せる(Kotlinの強み)
- when式 – 複数条件を美しく扱える
- 複数条件の組み合わせ –
&&(AND)、||(OR)、!(NOT) - エラーの理解 – when式は全ケースを網羅する必要がある
今回は、プログラムに「繰り返す力」を与えるループ処理を学んでいこう。同じ処理を何度も書かずに済むようになれば、コードは一気にシンプルになる。
Codespaceを再開しよう
前回から少し間が空いたので、学習を始める前にCodespace環境を再確認しておこう。
- GitHubでリポジトリ(kotlin-learning)を開く
- 「Code」→「Codespaces」タブを開く
- 以前作成したCodespaceが一覧に残っていれば、それをクリックして再開する
- 一覧からCodespace自体が消えている場合は、「Create codespace on main」から新規作成し、以下の手順でKotlinとGradleを入れ直す
無料プランの場合、一定期間操作がないとCodespaceは自動的に停止する。さらにそのまま放置すると削除予告メールが届き、期限までに再開しなければ自動的に削除される仕組みである。
ただし、停止中のCodespaceも削除されるまではストレージを消費し続け、これが無料プランの月間ストレージ上限(15GB)を圧迫する。放置していると本来使いたい時に容量不足でCodespacesが使えなくなる可能性があるため、基本的な運用としては、作業が一区切りついたら、git add → git commit → git pushでコードをリポジトリに保存したうえで、自分でCodespaceを削除しておこう。
Codespaceが削除されていた場合のKotlin再インストール
cd /tmp
wget https://github.com/JetBrains/kotlin/releases/download/v2.0.20/kotlin-compiler-2.0.20.zip
unzip kotlin-compiler-2.0.20.zip
sudo mv kotlinc /usr/local/kotlinc
sudo ln -s /usr/local/kotlinc/bin/kotlin /usr/local/bin/kotlin
sudo ln -s /usr/local/kotlinc/bin/kotlinc /usr/local/bin/kotlinc
# 確認
kotlin -versionKotlin version 2.0.20-release-360 (JRE 21.0.8+9-LTS) のように表示されればインストール成功である。
続けてGradleも確認しておこう。
gradle -versionkotlin -version、gradle -versionが問題なく表示されれば、Kotlinが引き続き使える状態と判断してよい
環境の再確認ができたら、いよいよDay03の内容に入っていこう。
今回学ぶこと
- forループ(範囲・ステップ)
- whileループ
- when式とループの組み合わせ
- FizzBuzzによる実践
for文で範囲を繰り返す
Kotlinのforループは、範囲(Range)と組み合わせて使うのが基本形である。
for (i in 1..5) {
println("カウント: $i")
}1..5 は1から5までの範囲を表す。ステップを指定すれば、2つ飛ばしなどの繰り返しも可能である。
for (i in 2..10 step 2) {
println(i)
}while文で条件が満たされる間繰り返す
繰り返す回数があらかじめ決まっていない場合は、while文が適している。
var count = 5
while (count > 0) {
println("残り: $count")
count--
}
println("発射!🚀")実践課題:FizzBuzz
あらかじめsrc/main/kotlin/com/learning/フォルダの中にDay03Loops.ktという名前でファイルを作成しておこう。左側のエクスプローラーでcom.learningフォルダを右クリックし、「New File」からファイル名を入力すれば作成できる。
ファイルを作成したら、それをクリックすると中央にエディタが開く。そこに以下のコードを直接書き込んでもよいし、この記事のコードをコピー&ペーストしても構わない。あるいは、筆者のリポジトリからダウンロードしたDay03Loops.ktをそのままエクスプローラーにドラッグ&ドロップしてアップロードする方法でもよい。
ループ処理の定番課題として、FizzBuzzを実装してみよう。3の倍数なら「Fizz」、5の倍数なら「Buzz」、15の倍数なら「FizzBuzz」、それ以外はそのままの数字を出力する。
// src/main/kotlin/com/learning/Day03Loops.kt
package com.learning
fun main() {
println("=== Day 3: ループ処理 ===\n")
// 課題1: forループ(範囲)
println("1から5まで:")
for (i in 1..5) {
println("カウント: $i")
}
// 課題2: forループ(ステップ)
println("\n2の倍数:")
for (i in 2..10 step 2) {
println(i)
}
// 課題3: whileループ
println("\nカウントダウン:")
var count = 5
while (count > 0) {
println("残り: $count")
count--
}
println("発射!🚀")
// 課題4: FizzBuzz
println("\nFizzBuzz (1-20):")
for (i in 1..20) {
when {
i % 15 == 0 -> println("$i: FizzBuzz")
i % 3 == 0 -> println("$i: Fizz")
i % 5 == 0 -> println("$i: Buzz")
else -> println("$i: $i")
}
}
}
前回学んだwhen式とループ処理を組み合わせることで、実用的なプログラムが書けるようになった点に注目したい。
実行するファイルを切り替えよう
このプロジェクトでは複数のレッスン日のコードが同じsrc/main/kotlin/com/learning/フォルダに入っているため、実行したいファイルをbuild.gradle.ktsのmainClassで指定する必要がある。
application {
mainClass.set("com.learning.Day03LoopsKt") // 実行したいファイル名に変更
}ファイル名の規則は「ファイル名そのまま+Kt」である。
Day01Variables.kt→Day01VariablesKtDay02Conditionals.kt→Day02ConditionalsKtDay03Loops.kt→Day03LoopsKt
変更後、保存してから以下のコマンドで実行する。
./gradlew runトラブルシューティング
bash: ./gradlew: No such file or directoryと出る場合
プロジェクトのルートディレクトリ(/workspaces/kotlin-learning)にいないことが原因である。cd /workspaces/kotlin-learningで移動してから実行し直す。lsでsettings.gradle.ktsが見えれば正しい場所である。
もしルートに移動してもgradlew自体が存在しない場合は、ルートディレクトリでgradle wrapperを実行してwrapper一式を生成する。このときsettings.gradle.ktsがあるディレクトリ以外(例えばsrc/main/kotlin/comなど)で実行すると、「Project directory … is not part of the build」というエラーになるので、必ずルートで実行すること。
Could not find or load main class com.learning.XxxYyyと出る場合
mainClassの指定で末尾のKtを付け忘れている可能性が高い。com.learning.Day03Loopsではなくcom.learning.Day03LoopsKtのように、必ずKtを付ける。
大量のGradleのログやワーニングが出る場合
BUILD SUCCESSFULという文字と、プログラム自体の出力(printlnで書いた内容)が表示されていれば実行は成功している。それ以外の[Incubating] Problems reportやDeprecated警告、IDLEといった表示はGradle自体のメッセージであり、気にする必要はない。
まとめ
今回は以下のことを学んだ。
- for文による範囲の繰り返し
- while文による条件付き繰り返し
- FizzBuzzによる実践
次回(Day04)は、処理をまとめて再利用できる「関数」について学んでいく。


コメント