Kotlinのスコープ関数まとめ!let・apply・run・also・withの違いと使い方
生徒
「Kotlinのコードでletやapplyっていうのをよく見かけるんですけど、何をしてるんですか?」
先生
「それは『スコープ関数』と呼ばれるもので、オブジェクトの使い方を少し便利にしてくれる関数です。」
生徒
「たくさんあって違いがわからないです…どれを使えばいいのか迷います。」
先生
「確かに種類が多くて混乱しがちですね。今回は let・apply・run・also・with の5つをやさしく解説していきます!」
1. スコープ関数とは?Kotlinでよく使う便利な関数
スコープ関数とは、オブジェクトに対して何か処理をしたいときに使える関数で、Kotlinが用意している便利機能のひとつです。
以下の5種類がよく使われます。
letapplyrunalsowith
この5つは書き方が似ていますが、目的や動作に少しずつ違いがあります。
2. letの使い方と特徴
letは、変数の値を一時的に別の名前(通常はit)で扱って処理したいときに使います。
val name = "taro"
name.let {
println("名前は ${it.uppercase()} です")
}
letは、関数の最後の値を返すという特徴もあります。
Nullチェックや、処理の一時的なブロックに使うのが定番です。
3. applyの使い方と特徴
applyは、オブジェクトの初期化に使われることが多いスコープ関数です。
val user = StringBuilder().apply {
append("Taro")
append(" Yamada")
}
println(user.toString())
thisを使って自分自身を指し、最後に自分自身(オブジェクト)を返すのが特徴です。
4. runの使い方と特徴
runは、ある値を使って処理して結果を返すときに使います。
val result = "kotlin".run {
this.uppercase()
}
println(result)
letと似ていますが、thisが使えることと、よりシンプルに処理だけを書きたいときに向いています。
5. alsoの使い方と特徴
alsoは、何かをしてから同じオブジェクトを返したいときに使います。
ログ出力やデバッグなど、「ついでに処理」を追加するのに向いています。
val list = mutableListOf("A", "B").also {
println("リストの中身: $it")
it.add("C")
}
letと違って、最後にit(オブジェクトそのもの)を返します。
6. withの使い方と特徴
withは、あるオブジェクトに対して複数の処理をしたいときに使います。
他のスコープ関数とは違い、拡張関数ではなく普通の関数です。
val sb = StringBuilder()
val result = with(sb) {
append("Hello, ")
append("World!")
toString()
}
println(result)
thisでオブジェクトを参照し、最後に処理結果を返します。
7. スコープ関数の違いを表で整理しよう
スコープ関数を表で比較すると次のようになります。
| 関数 | レシーバ | 戻り値 | 主な使いどころ |
|---|---|---|---|
| let | it | 処理の結果 | 一時的な処理 |
| apply | this | オブジェクト自身 | 初期化 |
| run | this | 処理の結果 | 結果の取得 |
| also | it | オブジェクト自身 | デバッグ |
| with | this | 処理の結果 | 複数の操作 |
8. どのスコープ関数を選ぶべき?
初心者のうちは混乱するかもしれませんが、目的に応じて選ぶと覚えやすくなります。
- 何か一時的な処理をしたい → let
- オブジェクトを作ってすぐに設定 → apply
- 中で値を計算して取得 → run
- ついでの処理やログ出力 → also
- 同じオブジェクトに複数の操作 → with
どれも「自分に合った処理の書き方」を選べるのがKotlinのスコープ関数の魅力です。
Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。
基礎からわかるKotlinをAmazonで見る※ Amazon広告リンク
まとめ
Kotlinのスコープ関数であるlet・apply・run・also・withは、それぞれ似ているようで目的も使い方も異なるため、正しく理解しておくことでコードの読みやすさやメンテナンス性が大きく変わります。特にKotlinではオブジェクトの状態管理、初期化、変換、デバッグ処理などをまとめて書けるため、スコープ関数を使いこなすことで複雑な処理も整理しやすくなり、より自然な形でロジックを組み立てられるようになります。 また、スコープ関数は「何を返すのか」「レシーバは何か」「使う目的」を明確に意識しておくことが重要です。ある処理を一時的に閉じ込めたいとき、オブジェクトの生成直後に設定を書きたいとき、処理結果だけを返したいとき、ログを出力しながら同じオブジェクトを返したいとき、複数の操作をひとつのまとまりとして扱いたいときなど、用途に応じて自然に選べるようになります。 さらにスコープ関数を理解すると、ネストの深い処理を避けることができ、可読性の高いコードを維持できるようになります。特にletによるnull安全な処理やapplyを用いたオブジェクト初期化、alsoによるログ付加、runによる計算処理、withによる操作の集約など、実践で役立つ場面は非常に多く、Kotlinの特徴を最大限に生かせる書き方です。 スコープ関数の使い方を覚えることは、Kotlinでの開発をより楽しく快適にし、コードの見通しを良くする大切なステップになります。目的に応じて最適な関数を選べるようになれば、より自然で読み手に優しいプログラムを書くことができるようになります。ここまでの理解を整理しながら、実際のプロジェクトでも取り入れていくと効果を強く実感できるでしょう。
サンプルプログラム
以下は、スコープ関数の特性を活用した例です。同じオブジェクトに対して初期化、変換、ログ出力、結果取得といった複数の役割を自然につなげることで、処理の流れが分かりやすくなります。
val builder = StringBuilder().apply {
append("Kotlin")
append(" Scope")
append(" Functions")
}.also {
println("途中経過: $it")
}
val finalText = builder.run {
this.toString().uppercase()
}
val summary = finalText.let {
"結果は ${it} です"
}
println(summary)
applyで初期化し、alsoでログを取り、runで最終的な文字列を作り、letで整形するという一連の流れがひとつのまとまりでわかりやすく書けています。スコープ関数を適切に使うことで、オブジェクトの扱いが滑らかになり、読みやすく整理されたコードを書くことができます。
生徒
「letやapplyの違いがようやく理解できました!目的に合わせて選べるのがすごく便利ですね。」
先生
「その通りです。スコープ関数は似ているように見えても、返り値やレシーバの違いで役割がはっきり分かれていますから、それぞれの特徴をつかむと使い分けがしやすくなりますよ。」
生徒
「applyが初期化向きなのも、alsoがログ向きなのも、とても納得しました。コードがきれいにまとまるってこういうことなんですね!」
先生
「きれいに書けるということは、読み手が迷わないということです。スコープ関数は、その助けになるとても良い仕組みなんですよ。」
生徒
「withやrunも場面によって選べるのがわかってきました。実際の開発でも使いどころが多そうです!」
先生
「ぜひ今回学んだ使い分けを意識して、実際のコードでも試してみてください。きっと読みやすさが大きく変わりますよ。」
生徒
「はい!もっとたくさん書いて、自然と選べるようになりたいです!」
【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分
「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。
本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。
具体的な体験内容と環境
【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。
【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。
この60分で得られる3つの体験
プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。
「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。
Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。
※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。
Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験