カテゴリ: Kotlin 更新日: 2025/10/03

Kotlinのスコープ関数の種類と使い方を完全解説!初心者でもわかるlet・apply・run・also・withの違い

Kotlinのスコープ関数の種類と使い方(let・apply・run・also・with)
Kotlinのスコープ関数の種類と使い方(let・apply・run・also・with)

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

生徒

「Kotlinでletとかapplyとか、いろんな関数が出てくるんですが、違いがよく分かりません…」

先生

「それはスコープ関数と呼ばれるもので、便利だけど最初はややこしいですよね。でも安心してください。使い方と違いを、しっかり整理してお話ししましょう!」

生徒

「それぞれ、どんなときに使えばいいのかも知りたいです!」

先生

「もちろん!今回はletapplyrunalsowithの5つを例付きで紹介しますね。」

1. Kotlinのスコープ関数とは?

1. Kotlinのスコープ関数とは?
1. Kotlinのスコープ関数とは?

スコープ関数とは、ある変数に対して一時的に処理をまとめたいときに使う関数のことです。たとえば「このデータに対して何か処理したい」「このオブジェクトを初期化したい」というときに使われます。

スコープ関数は以下の5種類があります。

  • let
  • apply
  • run
  • also
  • with

どれも似ているようで、少しずつ使い道が違います。

2. let関数:データを一時的に使いたいとき

2. let関数:データを一時的に使いたいとき
2. let関数:データを一時的に使いたいとき

let関数は、変数に対して一時的な処理をしたいときに使います。itという名前で中身を使います。


val name: String? = "さくら"
name?.let {
    println("名前の長さは ${it.length} 文字です")
}

名前の長さは 3 文字です

主に、nullじゃないときだけ処理したいというときに使われます。

3. apply関数:初期化処理に最適

3. apply関数:初期化処理に最適
3. apply関数:初期化処理に最適

apply関数は、オブジェクトを作ってすぐに設定したいときに使います。中ではthisでそのオブジェクトを表します。


val user = StringBuilder().apply {
    append("こんにちは")
    append(" Kotlin")
}
println(user.toString())

こんにちは Kotlin

何かを作って、そのまま設定して、そのまま使うようなときに便利です。

4. run関数:値を戻したいときに

4. run関数:値を戻したいときに
4. run関数:値を戻したいときに

run関数は、applyに似ていますが最後に何かの値を返したいときに使われます。


val length = "Kotlin".run {
    println("中身は:$this")
    this.length
}
println("文字数は:$length")

中身は:Kotlin
文字数は:6

値を作って、その値をそのまま使いたいというケースで使われます。

5. also関数:ログや確認に便利

5. also関数:ログや確認に便利
5. also関数:ログや確認に便利

also関数は、変数を使う前に何かチェックやログ出力をしたいときに使います。中身はitで扱います。


val result = "Kotlin".also {
    println("文字列:$it を使います")
}.uppercase()
println(result)

文字列:Kotlin を使います
KOTLIN

元の値をそのまま戻すので、途中で挙動を見たいときに向いています。

6. with関数:対象がnullじゃないときにまとめて処理

6. with関数:対象がnullじゃないときにまとめて処理
6. with関数:対象がnullじゃないときにまとめて処理

with関数は、nullじゃないオブジェクトに対して、まとめて処理をしたいときに使われます。applyと似ていますが、withは引数でオブジェクトを渡します。


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

Hello, World!

複数の処理を1つにまとめたいときに使うのがポイントです。

7. 5つのスコープ関数を比較してみよう

7. 5つのスコープ関数を比較してみよう
7. 5つのスコープ関数を比較してみよう

ここで紹介したletapplyrunalsowithの違いを、表にして比べてみましょう。

関数名 使う目的 this / it 戻り値
let nullチェック、使い捨て it lambdaの結果
apply 初期化処理 this オブジェクト自身
run 処理結果を返す this lambdaの結果
also 副作用的な処理(ログなど) it オブジェクト自身
with オブジェクトに処理をまとめる this lambdaの結果

このように、使い分けることでKotlinのコードはもっと読みやすく、短く書けるようになります。

関連記事:
カテゴリの一覧へ
新着記事
New1
Kotlin
Kotlinの構文ルールまとめ!インデント・セミコロンなど初心者が最初に覚えるべきポイント
New2
Kotlin
Kotlinの関数ドキュメンテーションコメント(KDoc)の書き方を徹底解説!初心者でもわかる丁寧なガイド
New3
Kotlin
KotlinでHello Worldを表示するには?最初の1行を実行してみよう
New4
Go言語
Go言語の依存関係管理を始めよう!go modの基本設定と導入手順
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語の関数パラメータ!値渡しと参照渡しの違いを理解しよう
No.2
Java&Spring記事人気No2
Kotlin
KotlinのAPI通信でGETリクエストを送る方法!初心者向け徹底ガイド
No.3
Java&Spring記事人気No3
Go言語
Go言語のテストでタイムアウト・並行処理を扱うポイント
No.4
Java&Spring記事人気No4
Swift
SwiftのURLSessionでのネットワークエラー対策!再試行とタイムアウトを初心者向けに解説
No.5
Java&Spring記事人気No5
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.6
Java&Spring記事人気No6
Go言語
Go言語のWebアプリにおけるセキュリティベストプラクティス集
No.7
Java&Spring記事人気No7
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.8
Java&Spring記事人気No8
Swift
Swift JSONデコード失敗の原因と対処|DecodingError徹底解説