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

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

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

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

生徒

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

先生

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

生徒

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

先生

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

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

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

Kotlin(ことりん)のwith関数は、特定のオブジェクトに対する処理をひとまとめに書くための強力なツールです。特に、同じ変数のプロパティや関数を何度も繰り返し使う場合、毎回その変数名を記述するのは冗長で、コードが長くなりがちです。

例えば、次のような場合を考えてみましょう。もし、ある変数のプロパティや関数を繰り返し使う必要がある場合、通常は毎回その変数名を付けて記述する必要がありますが、withを使うと、変数名を一度だけ指定するだけで、その後の処理ではthisを省略して使えるようになります。

具体的には、withを使うと、オブジェクトのプロパティや関数をそのオブジェクトに対して直接呼び出しているように見せかけることができ、コードがすっきりと簡潔になります。

たとえば、次のようなコード例を見てみましょう。もし、personというオブジェクトのプロパティを何度も使う場合、毎回person.名前person.年齢のように書くのは面倒です。しかし、withを使うと、オブジェクトを最初に指定するだけで、その中のプロパティやメソッドを簡潔に扱うことができます。

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

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

withは、Kotlinでコードをより簡潔に書くための便利な構文です。特に、対象となるオブジェクトに対して複数回操作を行う場合に有用で、thisを省略して、コードをスッキリと書くことができます。

基本的な構文は次の通りです。


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

以下に、withを使ったシンプルな例を示します。初心者でも理解しやすいように、簡単な文字列操作を行っています。


fun main() {
    val str = "Kotlin入門"
    val result = with(str) {
        // 文字列の長さを取得
        println("文字数:${length}")
        // 文字列を大文字に変換
        println("大文字:${uppercase()}")
        // 戻り値として文字列の長さを返す
        length
    }
    // withブロックから返された戻り値を表示
    println("戻り値:$result")
}

このコードでは、strという変数をwithブロック内で処理しています。length(文字数)やuppercase()(大文字化)を呼び出す際、thisを省略して簡潔に記述できます。また、withブロックの戻り値として、処理の結果である文字列の長さを返しています。

withを使うことで、対象の変数に対して複数の操作を行う際、繰り返し変数名を書く手間を省くことができます。これによりコードの可読性が向上し、メンテナンスもしやすくなります。

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はとても便利ですが、以下のような注意点もあります。

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

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

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

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

※ Amazon広告リンク

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

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

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

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

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

関連セミナーのご案内

【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分

「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。

本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。

具体的な体験内容と環境

【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。

【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。

この60分で得られる3つの体験

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

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

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

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

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

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

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

セミナー画像

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

カテゴリの一覧へ
新着記事
New1
Kotlin
Kotlinで依存関係管理を始めよう!Gradle/Mavenの基本設定と導入手順
New2
Kotlin
Kotlinのreturnラベルを完全解説!初心者でもわかるクロスラインreturnの基本
New3
Kotlin
Kotlinでファイルアクセスを安全に管理する方法を徹底解説 初心者でも理解できるファイル読み書きとセキュリティ対策
New4
Go言語
Go言語の構造体を使った設計パターン集(DTO・VOなど)
人気記事
No.1
Java&Spring記事人気No1
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.5
Java&Spring記事人気No5
Kotlin
KotlinのRoomでコルーチン対応!suspend関数とFlowの使い方をやさしく解説
No.6
Java&Spring記事人気No6
Kotlin
Kotlinの文字列の部分取得!substring・take・dropの基本
No.7
Java&Spring記事人気No7
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
No.8
Java&Spring記事人気No8
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方