Kotlinのループ処理を短く書くコツを完全解説!初心者でもわかるforEach・mapの使い方
生徒
「Kotlinでリストの中身を順番に処理したいときって、どうやって書くんですか?」
先生
「KotlinではforEachやmapといったループ処理の書き方がとても簡単で便利なんですよ。」
生徒
「for文より短く書けたりするんですか?」
先生
「もちろんです!順番に説明していきますね。」
1. Kotlinのループ処理とは?
ループ処理とは、同じような処理を繰り返すことです。たとえば、買い物リストの品物をひとつずつ表示したいときなどに使います。
Kotlinでは、for文の代わりに、forEachやmapという関数を使って短くスッキリ書くことができます。
2. forEachの使い方:リストの中身を1つずつ処理
forEach(フォーイーチ)とは、リストなどのコレクションの要素を1つずつ取り出して処理するための関数です。
fun main() {
val fruits = listOf("りんご", "みかん", "バナナ")
fruits.forEach { fruit ->
println(fruit)
}
}
りんご
みかん
バナナ
listOfは「リストを作る関数」で、forEachはリストの要素を1つずつ取り出してprintlnで表示しています。
3. mapの使い方:値を変換して新しいリストを作る
map(マップ)とは、リストの中の値を加工して、新しいリストを作りたいときに使う関数です。
fun main() {
val numbers = listOf(1, 2, 3)
val doubled = numbers.map { it * 2 }
println(doubled)
}
[2, 4, 6]
mapではit(イット)というキーワードが使えます。これは「今処理している1つの値」という意味です。
この例では、リストの中の1、2、3を2倍して新しいリストdoubledにしています。
4. itってなに?初心者がつまづきやすいポイント
itは、forEachやmapの中で、自動的に使える「今処理中の要素」を指す言葉です。
たとえばnumbers.map { it * 2 }では、numbersの中の1つ1つ(1や2や3)がitとして使われています。
名前を自分で付けたいときは、{ it }の代わりに{ num -> num * 2 }のように書けます。
5. forEachIndexed:何番目かも知りたいとき
ループ処理の中で、何番目のデータかも一緒に使いたいときは、forEachIndexedが便利です。
fun main() {
val colors = listOf("赤", "青", "緑")
colors.forEachIndexed { index, color ->
println("${index}番目は${color}です")
}
}
0番目は赤です
1番目は青です
2番目は緑です
forEachIndexedは、リストの中の要素と「その位置(インデックス)」の両方を使える便利な書き方です。
6. mapで文字列の加工もできる
mapは数値だけでなく、文字列の加工にも使えます。
fun main() {
val names = listOf("taro", "jiro", "hanako")
val capitalized = names.map { it.replaceFirstChar { c -> c.uppercase() } }
println(capitalized)
}
[Taro, Jiro, Hanako]
このコードでは、名前の最初の1文字を大文字に変換しています。replaceFirstCharは最初の文字だけを変える関数です。
7. filterとの組み合わせでさらに便利に
mapやforEachは、filter(フィルター)と組み合わせると、特定の条件に合うものだけを取り出すことができます。
fun main() {
val scores = listOf(45, 80, 72, 30)
val passed = scores.filter { it >= 50 }
println(passed)
}
[80, 72]
filterは「条件に合うものだけ残す」関数です。この例では、50点以上のスコアだけをpassedに取り出しています。
8. Kotlinのループ処理を短く書くメリット
KotlinでforEachやmapを使うと、コードが短くスッキリします。そして読みやすくなります。
特に、初心者がfor文のカッコや変数に混乱しやすいところを、forEachなどを使えばシンプルにできます。
また、書き直しやすく、エラーが少ないというのも大きなメリットです。
まとめ
Kotlinでループ処理を短く書く方法についてゆっくり振り返ってみると、ひとつひとつの書き方にはきちんと意味があり、初心者でも読みやすい綺麗なプログラムを作るための大切な考え方が隠れていることが分かります。特に、for文を毎回書くたびに長い記述や変数の管理に悩んでいた人にとって、forEachやmapという書き方はとてもありがたい味方になります。買い物の品物の一覧を順番に画面に出したり、数字の集まりを別の形に変換したり、ひとつの処理を丁寧に何度も繰り返したい場面では役立つことが多く、コードが短くても意味が伝わりやすいところに魅力があります。コードが短くなるということは、それだけ読みやすくなり、修正や追加もしやすくなるということです。特に初心者のうちは、短くて分かりやすいコードが頭の中の整理につながり、エラーの原因も見つけやすくなります。 KotlinのforEachは、リストの中身を順番に読むためのやさしい窓口のような存在で、深い知識が無くても自然な形で使えるのが嬉しい点です。「りんご」「みかん」「バナナ」を順番に表示する例のように、ひとつひとつの値を丁寧に扱う流れがよく分かります。for文のように、カウンタ変数を用意したり、範囲を管理したりする必要がないため、書き間違いの心配が少なく、自然に処理へ集中できます。さらに、forEachIndexedを使うと、何番目のデータなのかという情報も同時に扱えるので、画面に番号をつけて表示するときや、順番ごとに条件を変えたいときなどに役立つ場面が増えます。 そして、mapという書き方では元のデータから新しいデータを作り出すことができるので、同じ数字でも計算後の数字に姿を変えたり、名前の頭文字を大文字にして見やすく整えたりすることが簡単になります。「Taro」「Jiro」「Hanako」のように見た目を綺麗にすると、アプリの画面が読みやすくなり、使う側の人にもやさしい設計になります。リストを作る、並べ替える、取り出す、加工する、この流れが自然に組み合わさっていくことで、Kotlinのループ処理はただの繰り返しではなく、読みやすさと柔軟さを両立した表現として輝きます。 また、filterのように条件を満たすものだけ残す仕組みと合わせることで、一気に応用の幅が広がります。大量のデータを扱うときも、必要なものだけ取り出して必要な場所に渡すことができ、丁寧で安全なプログラム設計へつながります。「八十点以上の点数だけを残す」「三文字以上の名前だけをリストにする」「在庫が残っている商品だけを画面に出す」など、日常のアプリでよくある動きにも応用しやすいところが魅力です。リスト処理はアプリ開発のどの場面でも役立つ考え方なので、少しずつ使い慣れていくと強い武器になります。 Kotlinでループ処理を短く書けるということは、ただの時短ではなく、読み手にもやさしいコードという意味があります。同じ仕事をするのに複雑な書き方より、スッキリと整理された書き方の方が、後から見直したときの理解が速くなり、仲間と一緒に開発する場面でも意図が伝わりやすくなります。エラーも見つけやすくなり、修正も素早くできるようになるので、プログラミングに自信が持てるようになります。ひとつひとつの処理を無理に詰め込むのではなく、ひと目で意図が読み取れるコードを目指していくことで、アプリ全体の品質も自然と高まります。 初心者は、「it」という書き方の意味に戸惑うこともありますが、慣れてくると、短くて分かりやすい書き方として便利な存在になります。必要なときは名前を付けて読みやすくすることもできるので、状況に合わせた書き方を選ぶことができます。例えば、数字を二倍に変換したり、点数を判定したり、文字列の見た目を整えたり、forEachとmapを組み合わせれば、やさしいコードで実践的な処理ができます。
サンプルプログラムの復習
ここで、同じ内容を別の例で復習してみましょう。
fun main() {
val items = listOf("りんご", "みかん", "ぶどう", "なし")
items.forEachIndexed { index, item ->
println("${index}番目の果物は${item}です")
}
val prices = listOf(100, 200, 150, 80)
val discounted = prices.map { it * 9 / 10 }
println(discounted)
val cheap = prices.filter { it <= 150 }
println(cheap)
}
番号をつけて表示して、値段を加工して、条件で絞り込むという三つの流れをひとまとめにしながら、コードは短く整っています。数字が変わるだけで、同じ考え方で応用できるところがKotlinの良いところです。小さな処理を積み重ねながら自然と覚えられるため、慣れていくと大きなプログラムでも困らなくなります。 リストを一行ずつ読みながら、加工して、新しい姿に変えて、必要なデータだけ残すという一連の作業は、アプリ開発のどんな場面にも現れる大切な考え方です。注文履歴、商品一覧、ユーザー情報、得点管理、あらゆるデータがリストになることを考えると、ループ処理が自然に扱えるようになることの価値は非常に大きいと言えます。
生徒
「forEachやmapが使えるようになると、ループの書き方がすごく短くなりました。数字の加工や文字列の変換も自然に書けるんですね。」
先生
「そのとおり。短くなっても読みやすいというのが大切なんだよ。条件で絞り込むfilterや、番号も扱えるforEachIndexedを組み合わせると、もっと自然な流れになるね。」
生徒
「for文で書いていたときより、エラーを見つけやすくなりました。同じ考えでいろいろな処理に応用できそうです。」
先生
「その調子。繰り返しの処理はアプリのあらゆる場面に出てくるから、少しずつ使いこなせるようになると、自信につながるはずだよ。」