Swift Errorプロトコルの作り方|独自エラー型の設計
生徒
「先生、Swiftのエラーって自分で作れるんですか?ライブラリにあるものしか使えないと思ってました。」
先生
「いいところに気づきましたね。SwiftではErrorプロトコルを使って、独自のエラー型を簡単に作ることができますよ。」
生徒
「独自エラー型って、どういうときに使うんですか?」
先生
「例えばファイル操作やネットワーク通信など、状況ごとに違うエラーを表したいときにとても便利なんです。」
1. SwiftのErrorプロトコルとは?
Swiftでは、「エラーとして扱える型かどうか」を判断するためにErrorプロトコルが使われています。簡単に言うと、Errorに準拠していれば、その型はthrowやcatchで使える“公式なエラー”になります。
プロトコルとは「こういう役割を持つ型ですよ」とSwiftに伝えるための約束事のようなものです。Errorプロトコル自体には難しい処理はなく、「エラー用の型ですよ」と示すための目印だと考えて大丈夫です。
たとえば、プログラミング未経験の方でもイメージしやすい例として、次のような最小限のエラー型を作れます。
enum SimpleError: Error {
case somethingWrong
}
たったこれだけで、SimpleErrorはSwiftに「これはエラーです」と認識されます。標準ライブラリのエラーも、実は同じErrorプロトコルを使って作られており、私たちはそれと同じ仕組みを利用して独自エラーを定義できるのです。
2. 独自エラー型を作る基本
Swiftでエラーを自分で定義したいとき、まず覚えておきたいのがenum(列挙型)を使う方法です。enumは「決められた選択肢の中から1つを表す」仕組みなので、起こりうるエラーの種類を整理して表現するのにとても向いています。
たとえば「ファイルを扱う処理」では、ファイルが存在しない、操作する権限がない、原因がよく分からない、などいくつかの失敗パターンが考えられます。これらをenumでまとめておくと、後からコードを読んだときにも状況が分かりやすくなります。
enum FileError: Error {
case notFound // ファイルが見つからない
case noPermission // 操作する権限がない
case unknown // その他のエラー
}
このように書くことで、FileErrorはSwiftが認識できる「エラー型」になります。: Errorを付けている点が重要で、「これはエラーとして使いますよ」と明示しています。
プログラミング未経験の方は、「失敗の種類に名前を付けて箱にまとめている」とイメージすると理解しやすいでしょう。あとからエラーを処理するときに、「どの失敗が起きたのか」を安全に判断できるのが、独自エラー型を作る大きなメリットです。
3. throwで独自エラーを投げる
Swiftでは、問題が起きたことをプログラムに伝えるためにthrowを使います。これは「ここでエラーが発生しました」と知らせる合図のようなものです。自分で定義した独自エラーも、条件に応じて自由に投げることができます。
たとえば、ファイル名を受け取ってファイルを開く処理を考えてみましょう。ファイル名が空だったり、開いてはいけないファイルだった場合は、正常に処理を続けるのではなく、エラーとして扱ったほうが安全です。
func openFile(name: String) throws {
if name == "" {
// ファイル名が指定されていない場合のエラー
throw FileError.notFound
}
if name == "secret.txt" {
// 権限がなく開けない場合のエラー
throw FileError.noPermission
}
print("ファイルを開きました")
}
このようにthrowを書くことで、「この条件のときはエラーにする」というルールをはっきりさせられます。初心者のうちは、throwは「失敗したらここで処理を止めて知らせるもの」と覚えておくと理解しやすいです。
4. do-catchで独自エラーを処理する
投げられた独自エラーは、呼び出し側でdo-catchを使って捕まえます。
do {
try openFile(name: "secret.txt")
} catch FileError.notFound {
print("ファイルが見つかりません")
} catch FileError.noPermission {
print("権限がありません")
} catch {
print("その他のエラー: \(error)")
}
権限がありません
特定のケースごとに分岐できるので、ユーザーに適切なメッセージを表示できます。
5. 構造体やクラスでも独自エラー型を作れる
enumだけでなく、struct(構造体)やclass(クラス)を使って独自エラーを作ることも可能です。より詳細な情報を持たせたいときに便利です。
struct NetworkError: Error {
let code: Int
let message: String
}
例えば「エラーコード」や「説明文」を持たせれば、開発者やユーザーにとって分かりやすいエラー表示が可能になります。
6. 独自エラー型を使うメリット
独自エラー型を設計するメリットは以下の通りです。
- エラーの種類を明確に分けられる。
- ユーザーに分かりやすいメッセージを表示できる。
- 開発者が原因を特定しやすくなる。
- アプリの信頼性を高められる。
特にアプリ開発では「何が原因でエラーになったのか」を明確にすることが、トラブル解決やユーザー体験の向上につながります。
7. 現実的な利用シーン
独自エラー型は、例えば以下のような場面でよく使われます。
- ネットワーク通信(接続失敗、タイムアウト、無効なレスポンスなど)
- データベース操作(データが見つからない、保存失敗など)
- ファイル操作(読み込み権限なし、書き込み失敗など)
これらの場面でErrorプロトコルを活用すれば、アプリがエラーに強くなり、ユーザーにも親切な挙動を実現できます。
まとめ
Swift Errorプロトコルの作り方では、Errorプロトコルの作り方をSwiftで扱うときの考え方を確認しました。Swiftは、書き方だけを覚えるよりも、Xcodeで動かしながら「どこで値が変わるのか」「失敗したときに何が起きるのか」を見たほうが理解しやすくなります。
読み直すポイント
- Errorプロトコルの作り方で注目する場所として、入力値、戻り値、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 })
生徒
「Errorプロトコルの作り方は、どこを変えて試せばいいか分かると復習しやすいですね。」
先生
「はい。まずは小さく動かし、次に失敗するケースを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アプリ開発入門