カテゴリ: Kotlin 更新日: 2026/03/14

Kotlinのスコープ関数の戻り値の違いと使い分けを初心者向けに解説!

Kotlinのスコープ関数の戻り値の違いと使い分け
Kotlinのスコープ関数の戻り値の違いと使い分け

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

生徒

「Kotlinのスコープ関数っていろいろありますけど、何がどう違うんですか?特に戻り値の違いがよくわかりません…」

先生

「たしかにlet・run・apply・also・withは似ているようで、実は戻り値が違うんですよ。そこをしっかり理解すれば、使い分けもスムーズになりますよ!」

生徒

「なるほど…!戻り値で使い方が変わるってことですか?」

先生

「そのとおり!今回は初心者でもわかるように、それぞれの違いや使い方をゆっくり解説していきますね!」

1. スコープ関数とは?初心者が知っておくべき基本

1. スコープ関数とは?初心者が知っておくべき基本
1. スコープ関数とは?初心者が知っておくべき基本

Kotlinの「スコープ関数(Scope Functions)」とは、特定のオブジェクトに対して「一時的なスコープ(範囲)」を作り、その中でコードを実行するための便利な仕組みです。これを使うことで、変数名を何度も書かずに処理をまとめられるため、コードがスッキリと読みやすくなります。

例えば、「ペン(オブジェクト)」を手に取って、そのペンで「名前を書き(処理1)」、「キャップを閉める(処理2)」という一連の動作を、ひとまとめのグループとして記述できるイメージです。プログラミング未経験の方でも、まずは「特定のモノ(オブジェクト)に集中して、いくつかの作業をまとめて行うための魔法の合図」だと考えてみてください。

代表的な5つのスコープ関数

  • let(レット)
  • run(ラン)
  • apply(アプライ)
  • also(オールソー)
  • with(ウィズ)

これらは非常によく似ていますが、主な違いは「作業のあとで何が返ってくるか(戻り値)」と「オブジェクトをどう呼ぶか」の2点だけです。まずは、実際のシンプルなコードで雰囲気をつかんでみましょう。


fun main() {
    // 1. 普通に書く場合(名前を何度も書く必要がある)
    val name = "kotlin"
    println(name.uppercase())
    println(name.length)

    // 2. スコープ関数(let)を使う場合(スッキリまとまる!)
    "kotlin".let {
        println(it.uppercase())
        println(it.length)
    }
}

このように、スコープ関数を使うと「it」などのキーワードを使って、対象のオブジェクトをスマートに操作できます。それでは、次の章から最も重要な「戻り値の違い」について詳しく解説していきます!

2. スコープ関数の戻り値の違いとは?使い分けの極意

2. スコープ関数の戻り値の違いとは?使い分けの極意
2. スコープ関数の戻り値の違いとは?使い分けの極意

Kotlinのスコープ関数を使いこなす最大のカギは、処理が終わった後に何が手元に残るか、つまり「戻り値」の違いを理解することです。戻り値には大きく分けて2つのパターンがあります。

① 最後に計算した結果を返す

let, run, with が該当します。データの変換や、計算結果を別の変数に代入したい時に便利です。

② 操作したオブジェクト自身を返す

apply, also が該当します。設定変更やログ出力後も、そのまま同じオブジェクトを使い続けたい(メソッドチェーン)時に最適です。

プログラミング未経験の方でもイメージしやすいよう、具体的なサンプルコードで比較してみましょう。例えば「お弁当の価格を計算する」場合と「お弁当に具材を追加する」場合では、選ぶべき関数が変わります。


fun main() {
    // 1. 「計算結果」を返すパターン (let)
    val priceWithTax = 500.let { 
        it * 1.1 // 最後に計算した「550.0」が戻り値になる
    }
    println("税込価格は ${priceWithTax}円 です")

    // 2. 「自分自身」を返すパターン (apply)
    val lunchBox = mutableListOf("お米").apply {
        this.add("焼き鮭") // 自分自身(リスト)に具材を追加
        this.add("卵焼き") // 戻り値は追加後の「リストそのもの」
    }
    println("お弁当の中身: $lunchBox")
}

このように、「加工した後の"値"が欲しいのか」それとも「加工した"物"そのものが引き続き欲しいのか」という視点を持つと、驚くほどスムーズにコードが書けるようになります。それでは、具体的にそれぞれの関数がどのようなシーンで活躍するのか、詳しく見ていきましょう!

3. letの戻り値と使い方

3. letの戻り値と使い方
3. letの戻り値と使い方

letは「何かを加工して使いたい」場面に向いています。戻り値はラムダの最後の式になります。


val result = "kotlin".let {
    it.uppercase()
}
println(result)

KOTLIN

let加工した結果を取り出すときに便利です。

4. runの戻り値と使い方

4. runの戻り値と使い方
4. runの戻り値と使い方

runletと同じように、最後の式の結果を返します。ただし、thisでオブジェクトにアクセスするのが違いです。


val message = "kotlin".run {
    this.reversed()
}
println(message)

niltok

runthisがメインなので、クラスの初期化や一括設定にもよく使われます。

5. applyの戻り値と使い方

5. applyの戻り値と使い方
5. applyの戻り値と使い方

applyは「元のオブジェクトそのもの」が戻り値になります。オブジェクトを設定してから、そのまま戻したいときに使います。


val sb = StringBuilder().apply {
    append("Hello")
    append(", Kotlin")
}
println(sb.toString())

Hello, Kotlin

apply設定をまとめて書くときに便利です。

6. alsoの戻り値と使い方

6. alsoの戻り値と使い方
6. alsoの戻り値と使い方

alsoapplyと同じく、元のオブジェクトが戻ってきます。ただし、使い方はletと同じようにitで書きます。


val list = mutableListOf("A", "B").also {
    it.add("C")
}
println(list)

[A, B, C]

alsoは「処理の途中で確認やログを入れたい」ときに向いています。

7. withの戻り値と使い方

7. withの戻り値と使い方
7. withの戻り値と使い方

withは少し特殊で、対象のオブジェクトを引数にして、ブロック内はthisで操作します。戻り値は最後の式の結果です。


val length = with("Kotlin") {
    println("文字数は${length}です")
    length
}
println(length)

文字数は6です
6

withは「特定のオブジェクトに対して複数の処理をしたいとき」に使います。

Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。

基礎からわかるKotlinをAmazonで見る

※ Amazon広告リンク

8. 戻り値で使い分けるコツ

8. 戻り値で使い分けるコツ
8. 戻り値で使い分けるコツ

ここまでのポイントをおさらいしましょう。Kotlinのスコープ関数の使い分けは、「何を返したいか」が大きなポイントです。

  • letrun:処理の結果を返したいとき
  • applyalso:元のオブジェクトを返したいとき
  • with:少し特殊だが、処理の結果を返す

たとえば、何かを加工した結果を使いたいならletrunオブジェクトの初期設定をしたいならapplyalsoが合っています。

関連セミナーのご案内

【未経験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の演算子一覧と使い方!算術・比較・論理演算子の基本を解説