【Swift】.firstとは?使い方や活用シーン、注意点までわかりやすく解説

Swiftで配列やコレクションを扱うときに便利なのが .first プロパティです。

「先頭の要素だけを取り出したい」という場面はとてもよくありますが、.first を使えば非常にシンプルに書けます。

この記事では .first の基本的な意味や使い方、活用時の注意点までわかりやすく解説します。

.first とは?

.first は、配列(Array)やセット(Set)などのコレクションの「最初の要素」を返すプロパティです。

要素が存在する場合はその値を、存在しない場合は nil を返します。

つまり、Optional型(オプショナル型)として結果が返ってくるのが特徴です。

具体例:配列の先頭要素を取り出す

例えば、配列の中で最初の要素だけを使いたい場合、以下のように書けます。

このコードでは、fruits.first によって「りんご」が取り出され、firstFruit に代入されます。

もし配列が空なら nil になるので、if let で安全にアンラップして使っています。

Optional型で返ってくる理由

.first の戻り値が Optional なのは、空の配列やコレクションでもクラッシュを防ぐためです。

たとえばこのようなケース:

この場合の結果は nil です。

このように、空の配列に対して .first を呼び出してもエラーにはなりません。

この挙動により、予期せぬクラッシュを防ぎやすくなっています。

活用シーン

.first は様々な場面で役立ちます。

特に、次のようなケースでは非常に便利です。

1. フィルタ結果の中から先頭の1件だけ使いたいとき

このように、first(where:) を使えば「特定条件を満たす最初の要素」を取得できます。

first(where:) は、最初にマッチした要素で探索を停止するため、コレクション全体を走査しません。

filter はすべての要素を評価してから結果を作るのに対し、first(where:) は見つかった時点で処理を終えるため、よりパフォーマンスに優れています。

2. Viewで最初のデータだけを表示したいとき

SwiftUIのようなUIコードでも、Optionalのまま nil チェックしつつ表示に使えるので便利です。

3. APIのレスポンスから先頭のレコードだけ使いたいとき

APIで返された配列から「最初の1件だけ処理したい」という場面でも .first はよく使われます。

 

4. SwiftDataやCoreDataで1件の設定モデルを取得するとき

アプリの設定データやユーザープロファイルなど、常に1レコードだけ存在するデータモデルを扱う場合にも .first は非常に有効です。

このように、常に1件だけ存在する設定情報を取得するときは、fetch() の結果配列から .first を使って取り出すのが一般的です。

アプリ開発では、「設定テーブル」「ユーザー情報」などのデータを取得する時に、このパターンが頻出します。

注意点

.first を使う際には、次のようなポイントに注意しましょう。

  • オプショナルで返ってくるので、必ず nil チェックするか、?? でデフォルト値を用意する
    • 例:let value = list.first ?? "なし"
  • 順序が保証されないコレクション(Setなど)では期待通りの順序で取得できない場合がある
    • Setは順序を持たないため、.first の結果が毎回異なることもあります

順序を意識する必要がある場合は、配列(Array)で扱うのが基本です。

まとめ

今回は Swift の .first について詳しく解説しました。

  • .first はコレクションの最初の要素を返すプロパティ(Optional型)
  • 空のコレクションでもクラッシュせず、nil を返して安全
  • フィルタ条件付きの first(where:) も非常に便利
  • Setなど順序が不定なコレクションでは挙動に注意

「配列の最初の要素だけ使いたい」と思ったら、まず .first を使ってみるのが基本です。

使い方に慣れることで、コードがすっきり読みやすくなりますよ!

 

おすすめの記事