Swiftのinout引数の使い方と注意点を徹底解説!初心者でも理解できる変数の書き換え方法
生徒
「Swiftで関数の中で変数の値を変更したいときって、どうすればいいんですか?」
先生
「その場合はinout引数を使うと便利ですよ。関数の外の変数を直接変更できます。」
生徒
「関数って普通、中の処理だけで完結するものじゃないんですか?」
先生
「確かにそうですが、inoutを使うと、関数の外にある変数を“直接”書き換えることができるんです。詳しく説明していきましょう!」
1. Swiftのinout引数とは?
inout引数とは、関数の引数として渡した変数の「元の値」を関数の中で変更するための仕組みです。通常の関数は、変数のコピーを受け取って処理するため、関数の外の変数には影響を与えません。
ですが、inoutを使うと、関数の中で値を変えた結果が、関数の外に反映されるようになります。まるで「箱ごと」渡して中身を書き換えるようなイメージです。
2. inout引数の書き方と使い方
inout引数は、関数の引数の前にinoutキーワードをつけて定義します。そして、関数を呼び出すときには、引数に&(アンパサンド)をつけて渡します。
func addTen(to number: inout Int) {
number += 10
}
var myNumber = 5
addTen(to: &myNumber)
print(myNumber)
15
この例では、変数myNumberを関数addTenに渡して、値を直接書き換えています。関数の外でもmyNumberが15に更新されていますね。
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を使うときの注意点
inout引数にはいくつか注意が必要です。正しく使わないと、予期しない動作やエラーの原因になります。
- 定数(let)は渡せない:変更が前提なので、定数は使えません
- 同じ変数を複数のinoutに同時に渡せない:競合してバグの原因になります
- 関数の戻り値ではなく、引数側で値が変わる:呼び出し方に注意しましょう
例えば、以下のようなコードはエラーになります:
let a = 5
addTen(to: &a) // エラー!定数を渡している
inoutではvar(変更可能な変数)を使う必要があります。
5. inoutを使う場面とは?
inout引数は以下のような場面で役立ちます:
- 複数の値を一括で変更したいとき
- 複雑なデータ構造を直接変更したいとき
- パフォーマンスを考えて値のコピーを避けたいとき
ただし、初心者のうちはinoutを多用するよりも、戻り値で結果を返す方法の方が分かりやすいこともあります。使いどころを見極めて使いましょう。
6. inoutを使わない方法との比較
inoutを使わない場合は、関数の戻り値を使って値を返します。たとえば、次のように書き換えることができます。
func addTenReturn(_ number: Int) -> Int {
return number + 10
}
var myNumber = 5
myNumber = addTenReturn(myNumber)
print(myNumber)
15
このように、inoutを使わずに「新しい値として返す」方法も安全でわかりやすいので、初心者にはおすすめです。
まとめ
Swift inout引数の使い方と注意点では、inout引数の使い方と注意点をSwiftで扱うときの考え方を確認しました。Swiftは、書き方だけを覚えるよりも、Xcodeで動かしながら「どこで値が変わるのか」「失敗したときに何が起きるのか」を見たほうが理解しやすくなります。
定着チェック
- inout引数の使い方と注意点で注目する場所として、入力値、戻り値、Optionalの扱い、エラー時の表示、関数名や型名の読みやすさを説明できる
- サンプルの値を1つ変え、コンソール出力とエラーメッセージの変化を見る
- Xcodeのエラー、警告、コンソール出力を読み、原因を1つ言葉にできる
- Swift、Xcode、iOSアプリ開発の中で、この記事の知識を使う場面を想像できる
復習するときは、次のような短いコードを自分の環境で動かしてみましょう。記事のテーマに合わせて値や条件を変えると、Swiftの型安全、Optional、エラー処理、画面更新の見え方が少しずつ整理できます。
struct LearningStep {
let title: String
let completed: Bool
}
let steps = [
LearningStep(title: "文法を確認する", completed: true),
LearningStep(title: "サンプルを動かす", completed: false)
]
print(steps.filter { !$0.completed })
生徒
「inout引数の使い方と注意点は、どこを変えて試せばいいか分かると復習しやすいですね。」
先生
「はい。まずは小さく動かし、次に失敗するケースを1つ足してみましょう。Swiftは型やエラーがヒントを出してくれるので、結果を見ながら直す練習がそのまま実務力につながります。」
Windowsで始めるiPhoneアプリ開発入門|Swiftの基本と仕組みを1時間で攻略
Windowsで始めるiPhoneアプリ開発入門|Swiftの基本と仕組みを1時間で攻略
「iPhoneアプリを作りたいけれど、Macを持っていないから諦めている」そんな方のための画期的な入門講座です。実は、プログラミングの本質を学ぶのに高価な機材は必要ありません。本講座では、Windowsパソコンを使用し、クラウド環境を活用してAppleの最新言語Swift(スウィフト)の基礎を最短距離でマスターします。
Windowsで実現する開発環境
【つくるもの】
ブラウザ上で動作する「スマート・計算ツール」や「データ判定プログラム」をゼロから作成します。変数の扱いや条件分岐など、iPhoneアプリの内部で動くロジックを自分の手で構築する感動を体験してください。
【開発環境】
ブラウザだけでSwiftが動くプロ仕様のオンラインエディタ(Replit等)を使用します。面倒な設定は一切不要。今あるWindows PCで、プロのエンジニアと同じコードを書き始められます。
この60分で得られる3つの理解
OSの壁を越え、クラウドを活用してスマートに学習を開始する「現代的な開発スタイル」を習得します。
iPhoneアプリ特有のデータの扱い方や、Appleが推奨する「安全で美しいコード」の書き方を学びます。
将来的にiOSエンジニアとして副業・転職するために必要な準備や、Mac選びのポイントを伝授します。
※本講座は、将来的にiPhoneアプリ開発で収益化や転職を目指したい未経験者のためのエントリー講座です。マンツーマン形式により、Windows環境ならではの疑問にもその場でお答えし、あなたの理解度に合わせて進行します。
Windowsで始めるiPhoneアプリ開発入門