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

Kotlinのwithの使い方!レシーバーを切り替える使い方のポイント

Kotlinのwithの使い方!レシーバーを切り替える使い方のポイント
Kotlinのwithの使い方!レシーバーを切り替える使い方のポイント

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

生徒

「Kotlinのコードで、同じ変数に何度もアクセスしてると見づらくなることってありませんか?」

先生

「ありますね。そんなときに便利なのがwithという関数です。オブジェクトに対する処理をまとめて書けるんですよ。」

生徒

「それは便利そうですね!具体的にどんなふうに使うんですか?」

先生

「それでは、初心者にもわかるようにwithの使い方を説明していきましょう!」

1. Kotlinのwithとは?基本の考え方

1. Kotlinのwithとは?基本の考え方
1. Kotlinのwithとは?基本の考え方

Kotlin(ことりん)のwith関数は、特定のオブジェクトに対する処理をひとまとまりに書くための機能です。

たとえば、同じ変数のプロパティや関数を何回も使いたいとき、毎回その変数名を書くのは面倒ですよね。

そんなとき、withを使えば、その変数をレシーバー(処理の対象)として、thisを省略して書けるようになります。

2. withの基本的な書き方と構文

2. withの基本的な書き方と構文
2. withの基本的な書き方と構文

withの基本的な構文は以下のようになります。


with(対象の変数) {
    // この中でthisが省略できる
    プロパティや関数を呼び出す
}

たとえば、以下のようなコードになります。


fun main() {
    val str = "Kotlin入門"
    val result = with(str) {
        println("文字数:${length}")
        println("大文字:${uppercase()}")
        length
    }
    println("戻り値:$result")
}

この例では、strに対する処理をwithの中でまとめて実行しています。lengthuppercase()などをthisを省略して書けています。

3. withとレシーバーとは?初心者向けに解説

3. withとレシーバーとは?初心者向けに解説
3. withとレシーバーとは?初心者向けに解説

レシーバーとは、「処理の対象となるオブジェクト」のことです。つまりwith(str)と書いたら、strがそのあとの処理の中心になります。

このレシーバーが一時的に切り替わることで、何度もstr.と書かなくても済むようになるわけです。

初心者でも、「この中ではstrが主役なんだな」と思えば、理解しやすくなります。

4. withの戻り値に注目しよう

4. withの戻り値に注目しよう
4. withの戻り値に注目しよう

with関数の中の最後の行の値が、戻り値として返されます。

さきほどの例でいうと、lengthが最後なので、その値がresultに入ります。


val result = with("Kotlin") {
    println("処理中:$this")
    this.length
}
println("長さ:$result")

このように、withは処理だけでなく、値の計算にも使えるんですね。

5. オブジェクトの初期化や整形にも使えるwith

5. オブジェクトの初期化や整形にも使えるwith
5. オブジェクトの初期化や整形にも使えるwith

withは、たとえば文字列の整形やオブジェクトの設定処理にも活用できます。


val message = with(StringBuilder()) {
    append("こんにちは、")
    append("世界!")
    toString()
}
println(message)

この例では、StringBuilderを使って文字を追加し、最後に文字列として返しています。レシーバーがStringBuilderに切り替わっているので、毎回書く必要がありません。

6. withと他のスコープ関数との違い

6. withと他のスコープ関数との違い
6. withと他のスコープ関数との違い

Kotlinにはapplyrunなど他にもスコープ関数がありますが、withの違いは次のとおりです。

  • withは関数として使い、レシーバーを指定して処理をまとめる
  • applyはオブジェクトの設定向き(主に初期化)
  • runはオブジェクトから戻り値を得たいときに使う

初心者のうちは、withは「この中で対象をまとめて処理するもの」と覚えておきましょう。

7. withを使うときの注意点

7. withを使うときの注意点
7. withを使うときの注意点

withはとても便利ですが、以下のような注意点もあります。

  • 処理が長くなりすぎると、どの変数が主役かわからなくなる
  • ネスト(入れ子)にしすぎると、かえって読みにくくなる
  • 読み手にとってわかりやすい長さに留める

シンプルに書ける範囲で活用するのがポイントです。

8. Kotlin初心者がwithを練習する方法

8. Kotlin初心者がwithを練習する方法
8. Kotlin初心者がwithを練習する方法

初心者がwithの感覚を身につけるには、まず以下のような練習がおすすめです。

  • 文字列やリストをwithで操作する
  • StringBuilderで文を作る練習をする
  • オブジェクトの複数の値を処理するケースで使ってみる

まずは身近な処理からwithを使い、使い方に慣れていきましょう。

カテゴリの一覧へ
新着記事
Go言語の関数でエラーハンドリングする基本的な方法
Go言語のスライス・マップ・配列をまとめて比較してみよう!初心者でもわかる使い分けの基本
Go言語の条件分岐の見やすい書き方を徹底解説!初心者でもわかるif文の使い方
Go言語とは何か?初心者向けに特徴・できること・インストール手順までやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.2
Java&Spring記事人気No2
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.3
Java&Spring記事人気No3
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.4
Java&Spring記事人気No4
Kotlinのデータクラス(data class)とは?便利な特徴と使い方を初心者向けにやさしく解説!