エラーのカスタマイズ (Customizing errors)
Zod では、バリデーションエラーは z.core.$ZodError クラスのインスタンスとして表面化されます。
zod パッケージの ZodError クラスは、いくつかの追加の便利なメソッドを実装するサブクラスです。
$ZodError のインスタンスには .issues 配列が含まれています。各 issue には、人間が読める message と、issue に関する追加の構造化メタデータが含まれています。
すべての issue には、人間が読めるエラーメッセージを含む message プロパティが含まれています。エラーメッセージは、さまざまな方法でカスタマイズできます。
error パラメータ (The error param)
事実上すべての Zod API は、オプションのエラーメッセージを受け入れます。
このカスタムエラーは、このスキーマから発生するすべてのバリデーション issue の message プロパティとして表示されます。
すべての z 関数とスキーマメソッドは、カスタムエラーを受け入れます。
必要に応じて、代わりに error パラメータを持つ params オブジェクトを渡すこともできます。
error パラメータは、オプションで関数を受け入れます。エラーカスタマイズ関数は、Zod の用語では エラーマップ (error map) と呼ばれます。エラーマップは、バリデーションエラーが発生した場合に解析時に実行されます。
注意 — Zod v3 では、message(文字列)と errorMap(関数)に別々のパラメータがありました。これらは Zod 4 で error として統合されました。
エラーマップは、バリデーション issue に基づいてエラーメッセージをカスタマイズするために使用できるコンテキストオブジェクトを受け取ります。
高度なケースでは、iss オブジェクトは、エラーをカスタマイズするために使用できる追加情報を提供します。
使用している API に応じて、追加のプロパティが利用可能な場合があります。TypeScript のオートコンプリートを使用して、利用可能なプロパティを確認してください。
エラーメッセージのカスタマイズを避け、デフォルトのメッセージにフォールバックするには、undefined を返します。(より具体的には、Zod は 優先順位チェーン の次のエラーマップに制御を譲ります。)これは、特定のエラーメッセージを選択的にカスタマイズするが、他のエラーメッセージはカスタマイズしない場合に便利です。
解析ごとのエラーカスタマイズ (Per-parse error customization)
解析ごと にエラーをカスタマイズするには、エラーマップを parse メソッドに渡します。
これは、スキーマレベルのカスタムメッセージよりも 優先順位が低い です。
iss オブジェクトは、すべての可能な issue タイプの 判別共用体 です。それらを区別するには code プロパティを使用します。
すべての Zod issue コードの内訳については、zod/v4/core ドキュメントを参照してください。
issue に入力を含める (Include input in issues)
デフォルトでは、Zod は issue に入力データを含めません。これは、機密性の高い入力データが意図せずログに記録されるのを防ぐためです。各 issue に入力データを含めるには、reportInput フラグを使用します。
グローバルエラーカスタマイズ (Global error customization)
グローバルエラーマップを指定するには、z.config() を使用して Zod の customError 構成設定を設定します。
グローバルエラーメッセージは、スキーマレベルまたは解析ごとのエラーメッセージよりも 優先順位が低い です。
iss オブジェクトは、すべての可能な issue タイプの 判別共用体 です。それらを区別するには code プロパティを使用します。
すべての Zod issue コードの内訳については、zod/v4/core ドキュメントを参照してください。
国際化 (Internationalization)
エラーメッセージの国際化をサポートするために、Zod はいくつかの組み込み ロケール を提供しています。これらは zod/v4/core パッケージからエクスポートされます。
注意 — 通常の zod ライブラリは、自動的に en ロケールをロードします。Zod Mini はデフォルトでどのロケールもロードしません。代わりにすべてのエラーメッセージはデフォルトで Invalid input になります。
ロケールを遅延ロードするには、動的インポートを検討してください:
便宜上、すべてのロケールは "zod" から z.locales としてエクスポートされます。一部のバンドラーでは、これは tree-shake できない場合があります。
ロケール (Locales)
以下のロケールが利用可能です:
ar— アラビア語az— アゼルバイジャン語be— ベラルーシ語bg— ブルガリア語ca— カタルーニャ語cs— チェコ語da— デンマーク語de— ドイツ語en— 英語eo— エスペラント語es— スペイン語fa— ペルシャ語fi— フィンランド語fr— フランス語frCA— カナダフランス語he— ヘブライ語hu— ハンガリー語id— インドネシア語is— アイスランド語it— イタリア語ja— 日本語ka— ジョージア語km— クメール語ko— 韓国語lt— リトアニア語mk— マケドニア語ms— マレー語nl— オランダ語no— ノルウェー語ota— オスマン語ps— パシュトー語pl— ポーランド語pt— ポルトガル語ru— ロシア語sl— スロベニア語sv— スウェーデン語ta— タミル語th— タイ語tr— トルコ語uk— ウクライナ語ur— ウルドゥー語vi— ベトナム語zhCN— 簡体字中国語zhTW— 繁体字中国語yo— ヨルバ語
エラーの優先順位 (Error precedence)
以下は、エラーの優先順位を決定するためのクイックリファレンスです。複数のエラーカスタマイズが定義されている場合、どれが優先されますか?優先順位の 高い順:
- スキーマレベルのエラー — スキーマ定義に「ハードコード」されたエラーメッセージ。
- 解析ごとのエラー —
.parse()メソッドに渡されたカスタムエラーマップ。
- グローバルエラーマップ —
z.config()に渡されたカスタムエラーマップ。
- ロケールエラーマップ —
z.config()に渡されたカスタムエラーマップ。

