Swiftのコレクション検索テクニックを完全解説!初心者でもわかるArray・Dictionary・Setの探し方
生徒
「Swiftでリストや辞書の中から特定の値を探す方法ってありますか?」
先生
「はい、SwiftではArray(配列)やDictionary(辞書)、Set(集合)といったコレクション型で、特定の要素を検索する便利な方法がいくつか用意されています。」
生徒
「たとえば、"りんご"っていう文字があるかどうか調べたりできますか?」
先生
「もちろんできますよ!今日はそのやり方を具体的に見ていきましょう。」
1. Swiftのコレクション型とは?
Swiftには、複数のデータをまとめて扱うための「コレクション型」があります。代表的なものには、以下の3つがあります。
- Array(配列):順番付きで同じ型のデータを格納できる。
- Dictionary(辞書):キーと値のペアでデータを管理できる。
- Set(集合):重複しないデータを集めたもの。順番は保証されない。
これらのコレクションからデータを検索するために、first(where:)やcontains、firstIndex(of:)といった検索テクニックが使われます。
2. Arrayで値を探す|first(where:)・contains・firstIndex(of:)
まずは、Array(配列)での検索方法を見ていきましょう。
2-1. 条件に合う最初の要素を探す:first(where:)
first(where:)は、特定の条件を満たす最初の要素を見つけてくれます。
let fruits = ["りんご", "バナナ", "みかん", "ぶどう"]
if let result = fruits.first(where: { $0.hasPrefix("み") }) {
print("見つかった果物:\(result)")
}
上記の例では、「"み"で始まる果物」を探しています。見つかった場合はその文字列が表示されます。
2-2. 含まれているか確認する:contains
containsは、配列に特定の値が存在するかどうかをtrueまたはfalseで返します。
let fruits = ["りんご", "バナナ", "みかん", "ぶどう"]
if fruits.contains("バナナ") {
print("バナナはリストにあります")
}
とてもシンプルに使えるのが魅力です。
2-3. 値の位置(インデックス)を調べる:firstIndex(of:)
firstIndex(of:)は、配列の中で指定した要素が最初に現れる位置(インデックス)を返します。
let fruits = ["りんご", "バナナ", "みかん", "ぶどう"]
if let index = fruits.firstIndex(of: "みかん") {
print("みかんは\(index)番目にあります")
}
位置を知りたいときに便利です。
3. Dictionaryで値やキーを探す
Dictionaryは、キーと値のセットでデータを管理するコレクションです。検索方法も少し違います。
3-1. キーが存在するか調べる:keys.contains
let prices = ["りんご": 100, "バナナ": 150, "みかん": 120]
if prices.keys.contains("バナナ") {
print("バナナの価格は設定されています")
}
3-2. 値が含まれているか確認する:values.contains
let prices = ["りんご": 100, "バナナ": 150, "みかん": 120]
if prices.values.contains(150) {
print("150円の商品があります")
}
keysとvaluesを使えば、それぞれキー・値に対して検索できます。
4. Setで値を探す|containsがメイン
Setは重複しない値を管理するコレクションです。検索方法はシンプルで、containsを使うのが基本です。
let uniqueFruits: Set = ["りんご", "バナナ", "ぶどう"]
if uniqueFruits.contains("ぶどう") {
print("ぶどうはセットに含まれています")
}
Setは検索が高速なので、大量のデータを扱う場面でよく使われます。
5. コレクション検索の違いを一覧で比較しよう
それぞれの検索方法を用途別に表で比較してみましょう。
| 検索方法 | 使えるコレクション | 用途 |
|---|---|---|
first(where:) |
Array | 条件に合う最初の要素を探す |
contains |
Array / Set / Dictionary | 値やキーが存在するか確認 |
firstIndex(of:) |
Array | 値の位置(インデックス)を調べる |
keys.contains |
Dictionary | 特定のキーがあるか確認 |
values.contains |
Dictionary | 特定の値があるか確認 |
6. 初心者がつまずきやすいポイント
Swiftのコレクション検索でよくあるつまずきポイントも押さえておきましょう。
- nil(ニル)とは?
検索結果が見つからないときはnilが返ってきます。これは「何もない」という意味の特別な値です。 - Optional型に注意
first(where:)やfirstIndex(of:)の戻り値は「Optional(オプショナル)」型になります。中身を取り出すにはif letを使って確認しましょう。 - Setは順番がない
Setには要素の順番がありません。順番に依存する処理には向いていません。
まとめ
Swiftのコレクション検索を総合的に振り返る
今回の記事では、Swiftにおけるコレクション検索の基本から実践的な使い分けまでを丁寧に確認してきました。Array、Dictionary、Setという三つの主要なコレクション型は、Swiftでのアプリ開発や業務ロジックの実装において欠かせない存在です。それぞれの特徴を理解したうえで、目的に応じた検索メソッドを選ぶことが、読みやすく安全なコードを書くための第一歩となります。
Arrayでは、順番を持つデータ構造という特性を活かし、first(where:)で条件に合う最初の要素を探したり、containsで値の存在を確認したり、firstIndex(of:)で位置情報を取得したりできました。特にfirst(where:)は、条件式を柔軟に書けるため、文字列検索や数値条件の判定など幅広い場面で活躍します。Optionalが返ってくる点を理解し、if letで安全に扱うことが重要です。
DictionaryとSetの検索の考え方
Dictionaryでは、キーと値が明確に分かれているため、検索対象がどちらなのかを意識する必要がありました。keys.containsを使えば特定のキーが存在するか確認でき、values.containsを使えば特定の値が含まれているかを調べられます。これは、設定情報やマスタデータ、価格表などを扱う場面で非常に実用的です。キーから直接値を取得する方法と組み合わせることで、無駄な処理を減らすことにもつながります。
Setについては、重複しないデータを高速に検索できる点が大きな強みでした。containsを使ったシンプルな検索は、ユーザー権限の判定やフラグ管理、大量データの存在チェックなどで効果を発揮します。ただし、順番が存在しないため、表示順やインデックスを必要とする処理には向かない点も押さえておく必要があります。
検索処理を意識したサンプルプログラム
let fruitsArray = ["りんご", "バナナ", "みかん", "ぶどう"]
let fruitsSet: Set = ["りんご", "バナナ", "ぶどう"]
let priceDictionary = ["りんご": 100, "バナナ": 150, "みかん": 120]
// Array検索
if let fruit = fruitsArray.first(where: { $0.contains("ん") }) {
print("条件に合う果物:\(fruit)")
}
// Set検索
if fruitsSet.contains("ぶどう") {
print("ぶどうはセットに含まれています")
}
// Dictionary検索
if priceDictionary.keys.contains("みかん") {
print("みかんの価格情報があります")
}
このように、コレクションの種類ごとに適切な検索方法を使い分けることで、処理の意図が明確になり、後からコードを読む人にも理解しやすい実装になります。Swiftの標準ライブラリは非常に表現力が高いため、無理に複雑な書き方をせず、用意されているメソッドを素直に使うことが大切です。
生徒
SwiftのArrayやDictionary、Setって、それぞれ検索の考え方が違うんですね。前は何となく使っていましたが、役割がはっきり分かってきました。
先生
それはとても良い気付きですね。コレクション型の特性を理解すると、検索処理だけでなく設計そのものが上達していきますよ。
生徒
first(where:)やcontainsも、使い分ける理由が分かるとコードを書くのが楽しくなりました。Optionalの扱いも前より怖くなくなりました。
先生
Optionalを正しく扱えるようになると、Swiftらしい安全なコードが書けるようになります。検索結果がnilになる可能性を常に意識することが大切です。
生徒
Setの高速な検索も便利そうですね。データ量が多い場面では積極的に使ってみたいです。
先生
その判断ができるようになると、実務レベルの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アプリ開発入門