Swiftの二次元配列の作り方を完全ガイド!行列操作と実用サンプルも紹介
生徒
「Swiftで表みたいなデータ、たとえばエクセルの表みたいなものって作れますか?」
先生
「はい、Swiftでは二次元配列を使えば、表のようなデータを扱うことができますよ。」
生徒
「二次元配列ってどうやって作るんですか?複雑じゃないですか?」
先生
「大丈夫です!これから順を追って、Swiftの二次元配列の作り方と使い方をわかりやすく解説していきますね。」
1. 二次元配列とは?
Swift(スウィフト)における二次元配列とは、配列の中にさらに配列が入っている構造のことです。たとえば、エクセルのような行と列のある表をイメージしてください。一つの行が1つの配列、そしてその複数の行が一つの大きな配列の中に入っている形になります。
2. Swiftでの二次元配列の作り方
まずは、基本的な二次元配列の作り方を紹介します。Swiftでは次のように書きます。
let matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
このコードでは、3行3列の数値が並んだ二次元配列を作成しています。配列の中にさらに配列が入っている形ですね。
3. 二次元配列の値を取り出す方法
特定の場所にあるデータを取り出すには、行と列を指定します。たとえば、2行目の3列目の数字を取得するには次のように書きます。
let value = matrix[1][2]
print(value)
6
Swiftでは配列のインデックスは0から始まるので、2行目はインデックス1、3列目はインデックス2になります。
4. 二次元配列に値を代入する方法
既存の二次元配列に新しい値を代入したいときは、次のようにします。
var matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
matrix[0][1] = 99
print(matrix[0][1])
99
このように、行と列を指定して直接値を変更できます。
5. 二次元配列をfor文でループする
Swiftでは、二次元配列をループしてすべての要素を取り出すことも簡単にできます。
for row in matrix {
for value in row {
print(value)
}
}
このように、外側のfor文で各行の配列を取り出し、内側のfor文で列ごとの値を一つずつ処理していきます。
6. 二次元配列の初期化方法(すべて同じ値)
すべての値が同じ初期値で埋まった二次元配列を作成したい場合、次のように書きます。
let rows = 3
let cols = 4
let initialValue = 0
let matrix = Array(repeating: Array(repeating: initialValue, count: cols), count: rows)
print(matrix)
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
Array(repeating:count:)は、指定した値を何回繰り返して配列を作るかを指定できるSwiftの便利な初期化方法です。
7. 実用サンプル:座席表のような二次元配列
現実的な例として、映画館の座席表を二次元配列で表すと次のようになります。
var seats = [
["◯", "◯", "×"],
["◯", "×", "◯"],
["◯", "◯", "◯"]
]
for (rowIndex, row) in seats.enumerated() {
print("Row \(rowIndex + 1): \(row)")
}
Row 1: ["◯", "◯", "×"]
Row 2: ["◯", "×", "◯"]
Row 3: ["◯", "◯", "◯"]
このように、Swiftの二次元配列は座席や表、ゲームボードなど、さまざまな実用的な場面で活用できます。
8. 行や列を追加・削除するには?
行を追加するには、通常の配列と同じようにappendを使います。
seats.append(["×", "×", "×"])
列(中の配列の要素)を追加するには、すべての行に対して値を追加する必要があります。
for i in 0..<seats.count {
seats[i].append("◯")
}
このようにして、行や列の追加も柔軟に行えます。
9. Swiftで行列(matrix)を使うときの注意点
Swiftの二次元配列は、PythonなどのNumPyのような本格的な行列演算までは対応していません。しかし、基本的な値の操作やループ処理であれば十分に行えます。
また、行によって列の数が異なる「不規則な形」の二次元配列も作成できますが、扱いが難しくなるため、最初はすべて同じ列数にするのが安心です。