カテゴリ: Kotlin 更新日: 2025/11/25

Kotlinのスコープ関数まとめ!let・apply・run・also・withの違いと使い方

Kotlinのスコープ関数まとめ!let・apply・run・also・withの違いと使い方
Kotlinのスコープ関数まとめ!let・apply・run・also・withの違いと使い方

先生と生徒の会話形式で理解しよう

生徒

「Kotlinのコードでletapplyっていうのをよく見かけるんですけど、何をしてるんですか?」

先生

「それは『スコープ関数』と呼ばれるもので、オブジェクトの使い方を少し便利にしてくれる関数です。」

生徒

「たくさんあって違いがわからないです…どれを使えばいいのか迷います。」

先生

「確かに種類が多くて混乱しがちですね。今回は letapplyrunalsowith の5つをやさしく解説していきます!」

1. スコープ関数とは?Kotlinでよく使う便利な関数

1. スコープ関数とは?Kotlinでよく使う便利な関数
1. スコープ関数とは?Kotlinでよく使う便利な関数

スコープ関数とは、オブジェクトに対して何か処理をしたいときに使える関数で、Kotlinが用意している便利機能のひとつです。

以下の5種類がよく使われます。

  • let
  • apply
  • run
  • also
  • with

この5つは書き方が似ていますが、目的や動作に少しずつ違いがあります。

2. letの使い方と特徴

2. letの使い方と特徴
2. letの使い方と特徴

letは、変数の値を一時的に別の名前(通常はit)で扱って処理したいときに使います。


val name = "taro"
name.let {
    println("名前は ${it.uppercase()} です")
}

letは、関数の最後の値を返すという特徴もあります。

Nullチェックや、処理の一時的なブロックに使うのが定番です。

3. applyの使い方と特徴

3. applyの使い方と特徴
3. applyの使い方と特徴

applyは、オブジェクトの初期化に使われることが多いスコープ関数です。


val user = StringBuilder().apply {
    append("Taro")
    append(" Yamada")
}
println(user.toString())

thisを使って自分自身を指し、最後に自分自身(オブジェクト)を返すのが特徴です。

4. runの使い方と特徴

4. runの使い方と特徴
4. runの使い方と特徴

runは、ある値を使って処理して結果を返すときに使います。


val result = "kotlin".run {
    this.uppercase()
}
println(result)

letと似ていますが、thisが使えることと、よりシンプルに処理だけを書きたいときに向いています。

5. alsoの使い方と特徴

5. alsoの使い方と特徴
5. alsoの使い方と特徴

alsoは、何かをしてから同じオブジェクトを返したいときに使います。

ログ出力やデバッグなど、「ついでに処理」を追加するのに向いています。


val list = mutableListOf("A", "B").also {
    println("リストの中身: $it")
    it.add("C")
}

letと違って、最後にit(オブジェクトそのもの)を返します。

6. withの使い方と特徴

6. withの使い方と特徴
6. withの使い方と特徴

withは、あるオブジェクトに対して複数の処理をしたいときに使います。

他のスコープ関数とは違い、拡張関数ではなく普通の関数です。


val sb = StringBuilder()
val result = with(sb) {
    append("Hello, ")
    append("World!")
    toString()
}
println(result)

thisでオブジェクトを参照し、最後に処理結果を返します。

7. スコープ関数の違いを表で整理しよう

7. スコープ関数の違いを表で整理しよう
7. スコープ関数の違いを表で整理しよう

スコープ関数を表で比較すると次のようになります。

関数レシーバ戻り値主な使いどころ
letit処理の結果一時的な処理
applythisオブジェクト自身初期化
runthis処理の結果結果の取得
alsoitオブジェクト自身デバッグ
withthis処理の結果複数の操作

8. どのスコープ関数を選ぶべき?

8. どのスコープ関数を選ぶべき?
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つの体験

1. 自分のパソコンが「開発基地」に

プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。

2. プログラミングの「仕組み」がスッキリ

「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。

3. 「読みやすい」から「直せる」へ

Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。

※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。

セミナー画像

Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験

関連記事:
カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のwhile的なforループの使い方!条件式ループの基本を解説
New2
Go言語
Go言語プログラムの実行方法まとめ!VSCode・ターミナルでの実行手順を解説
New3
Swift
Swift意味とは?プログラミング言語・金融・鳥の違いを徹底解説
New4
Swift
Swift 戻り値の扱い方と複数戻り値の返し方|初心者でも分かる関数の基本
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.5
Java&Spring記事人気No5
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.6
Java&Spring記事人気No6
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.7
Java&Spring記事人気No7
Go言語
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.8
Java&Spring記事人気No8
Kotlin
Kotlinのログ出力方法を完全ガイド!LogcatとTimberでトラブルシューティング