カテゴリ: Swift 更新日: 2026/02/05

Swiftのinout引数の使い方と注意点を徹底解説!初心者でも理解できる変数の書き換え方法

Swift inout引数の使い方と注意点
Swift inout引数の使い方と注意点

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

生徒

「Swiftで関数の中で変数の値を変更したいときって、どうすればいいんですか?」

先生

「その場合はinout引数を使うと便利ですよ。関数の外の変数を直接変更できます。」

生徒

「関数って普通、中の処理だけで完結するものじゃないんですか?」

先生

「確かにそうですが、inoutを使うと、関数の外にある変数を“直接”書き換えることができるんです。詳しく説明していきましょう!」

1. Swiftのinout引数とは?

1. Swiftのinout引数とは?
1. Swiftのinout引数とは?

inout引数とは、関数の引数として渡した変数の「元の値」を関数の中で変更するための仕組みです。通常の関数は、変数のコピーを受け取って処理するため、関数の外の変数には影響を与えません。

ですが、inoutを使うと、関数の中で値を変えた結果が、関数の外に反映されるようになります。まるで「箱ごと」渡して中身を書き換えるようなイメージです。

2. inout引数の書き方と使い方

2. inout引数の書き方と使い方
2. inout引数の書き方と使い方

inout引数は、関数の引数の前にinoutキーワードをつけて定義します。そして、関数を呼び出すときには、引数に&(アンパサンド)をつけて渡します。


func addTen(to number: inout Int) {
    number += 10
}

var myNumber = 5
addTen(to: &myNumber)
print(myNumber)

15

この例では、変数myNumberを関数addTenに渡して、値を直接書き換えています。関数の外でもmyNumber15に更新されていますね。

3. inoutを使うメリット

3. inoutを使うメリット
3. inoutを使うメリット

inout引数を使うことで、複数の値を関数の中で更新したいときに、戻り値を増やさずに簡潔に書けます。

たとえば、2つの変数の値を入れ替える関数もinoutで実現できます。


func swapValues(_ a: inout Int, _ b: inout Int) {
    let temp = a
    a = b
    b = temp
}

var x = 10
var y = 20
swapValues(&x, &y)
print("x: \(x), y: \(y)")

x: 20, y: 10

このように、inoutを使えばスッキリしたコードで変数を入れ替えられます。

4. inoutを使うときの注意点

4. inoutを使うときの注意点
4. inoutを使うときの注意点

inout引数にはいくつか注意が必要です。正しく使わないと、予期しない動作やエラーの原因になります。

  • 定数(let)は渡せない:変更が前提なので、定数は使えません
  • 同じ変数を複数のinoutに同時に渡せない:競合してバグの原因になります
  • 関数の戻り値ではなく、引数側で値が変わる:呼び出し方に注意しましょう

例えば、以下のようなコードはエラーになります:


let a = 5
addTen(to: &a) // エラー!定数を渡している

inoutではvar(変更可能な変数)を使う必要があります。

5. inoutを使う場面とは?

5. inoutを使う場面とは?
5. inoutを使う場面とは?

inout引数は以下のような場面で役立ちます:

  • 複数の値を一括で変更したいとき
  • 複雑なデータ構造を直接変更したいとき
  • パフォーマンスを考えて値のコピーを避けたいとき

ただし、初心者のうちはinoutを多用するよりも、戻り値で結果を返す方法の方が分かりやすいこともあります。使いどころを見極めて使いましょう。

Swiftを基礎から実践レベルまで学びたい人や、 iOSアプリ開発を本格的に始めたい人には、 定番の入門+実践書がこちらです。

Swift実践入門をAmazonで見る

※ Amazon広告リンク

6. inoutを使わない方法との比較

6. inoutを使わない方法との比較
6. inoutを使わない方法との比較

inoutを使わない場合は、関数の戻り値を使って値を返します。たとえば、次のように書き換えることができます。


func addTenReturn(_ number: Int) -> Int {
    return number + 10
}

var myNumber = 5
myNumber = addTenReturn(myNumber)
print(myNumber)

15

このように、inoutを使わずに「新しい値として返す」方法も安全でわかりやすいので、初心者にはおすすめです。

関連セミナーのご案内

Windowsで始めるiPhoneアプリ開発入門|Swiftの基本と仕組みを1時間で攻略

Windowsで始めるiPhoneアプリ開発入門|Swiftの基本と仕組みを1時間で攻略

「iPhoneアプリを作りたいけれど、Macを持っていないから諦めている」そんな方のための画期的な入門講座です。実は、プログラミングの本質を学ぶのに高価な機材は必要ありません。本講座では、Windowsパソコンを使用し、クラウド環境を活用してAppleの最新言語Swift(スウィフト)の基礎を最短距離でマスターします。

Windowsで実現する開発環境

【つくるもの】
ブラウザ上で動作する「スマート・計算ツール」や「データ判定プログラム」をゼロから作成します。変数の扱いや条件分岐など、iPhoneアプリの内部で動くロジックを自分の手で構築する感動を体験してください。

【開発環境】
ブラウザだけでSwiftが動くプロ仕様のオンラインエディタ(Replit等)を使用します。面倒な設定は一切不要。今あるWindows PCで、プロのエンジニアと同じコードを書き始められます。

この60分で得られる3つの理解

1. WindowsでのSwift実行環境の作り方

OSの壁を越え、クラウドを活用してスマートに学習を開始する「現代的な開発スタイル」を習得します。

2. Swiftの基本構造(変数・型・定数)

iPhoneアプリ特有のデータの扱い方や、Appleが推奨する「安全で美しいコード」の書き方を学びます。

3. アプリエンジニアとしてのロードマップ

将来的にiOSエンジニアとして副業・転職するために必要な準備や、Mac選びのポイントを伝授します。

※本講座は、将来的にiPhoneアプリ開発で収益化や転職を目指したい未経験者のためのエントリー講座です。マンツーマン形式により、Windows環境ならではの疑問にもその場でお答えし、あなたの理解度に合わせて進行します。

セミナー画像

Windowsで始めるiPhoneアプリ開発入門

カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のVSCode開発環境構築完全ガイド!初心者でもわかる拡張機能と設定方法
New2
Kotlin
Kotlinの文字列を1文字ずつ処理する方法!for文とforEachの使い方を初心者向けに解説
New3
Kotlin
Kotlinの文字列比較の方法を徹底解説!==とcompareToの使い方を初心者向けにわかりやすく紹介
New4
Kotlin
Kotlinのrepeatメソッドの使い方を完全解説!初心者でもわかる文字列の繰り返し処理
人気記事
No.1
Java&Spring記事人気No1
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Kotlin
Kotlinでテキスト表示・編集!初心者でもわかるTextViewとEditTextの使い方
No.4
Java&Spring記事人気No4
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.5
Java&Spring記事人気No5
Kotlin
Kotlin Multiplatformライブラリの活用例と導入方法を初心者向けに解説!Android・iOS・Webを1つのコードで開発
No.6
Java&Spring記事人気No6
Kotlin
Kotlinで定数を定義する方法!変更されない変数の書き方と命名ルール
No.7
Java&Spring記事人気No7
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.8
Java&Spring記事人気No8
Go言語
Go言語のクリーンアーキテクチャの基本概念と実装例!初心者でもわかる設計パターン完全ガイド