
AIを知りたい
エラーハンドリングって、try-catchで囲むだけじゃダメなんですか?本格的な設計が必要な理由を教えてください。

AIエンジニア
try-catchは基本中の基本ですが、それだけでは全く不十分です。堅牢なエラーハンドリングには、エラーの適切な分類・各レイヤーでの責務に応じた処理・ユーザーへの適切な伝達の3つの柱が必要です。例えば、データベース接続エラーをそのままユーザーに見せるのは情報漏洩のリスクがありますし、すべてのエラーを同じように処理すると障害の原因特定が困難になります。

AIを知りたい
AIがエラーハンドリングの設計を体系的に手伝ってくれるんですか?

AIエンジニア
はい、これはAIが非常に得意な分野です。AIに「このアプリのエラー処理を分析して改善して」と依頼すれば、カスタムエラークラスの設計からグローバルエラーハンドラの実装、Error Boundaryの構築まで一貫した設計を提案してくれます。特にプロジェクト全体のエラー処理の漏れを網羅的に検出する能力は人間を超えています。
エラーハンドリング設計×AIとは、アプリケーションで発生するエラーを適切に捕捉・分類・処理・通知する仕組みをAIの支援で体系的に構築するアプローチです。レイヤー別の処理パターンを設計し、信頼性の高いシステムを実現します。
AIを活用すると、既存コードのエラー処理の不備を網羅的に検出し、カスタムエラークラスの階層設計、Error Boundary(React)の実装、グローバルエラーハンドラの構築、さらにSentryなどの監視ツール連携まで効率的に行えます。エラーハンドリングはアプリケーション品質の土台であり、後回しにすると技術的負債が急速に蓄積します。
レイヤー別エラーハンドリングパターンの設計

AIを知りたい
エラーって色々な場所で発生しますよね。アプリケーションのどの層でどう処理すればいいんですか?

AIエンジニア
アプリケーションのレイヤーごとに明確なエラー処理の責務があります。プレゼンテーション層ではユーザーフレンドリーな表示、API層ではHTTPステータスコードとエラーレスポンスの標準化、ビジネスロジック層ではドメイン固有のカスタムエラーを扱います。AIにプロジェクト構造を読み込ませれば、各レイヤーに最適なパターンを提案してくれますよ。
| レイヤー | エラーの種類 | 処理パターン | 実装例 |
|---|---|---|---|
| プレゼンテーション層 | 表示エラー、入力バリデーション | Error Boundary、フォームバリデーション | React ErrorBoundary、Zodスキーマ |
| API層 | HTTPエラー、認証エラー | グローバルエラーミドルウェア | Express errorHandler、NestJS ExceptionFilter |
| ビジネスロジック層 | 業務ルール違反、状態不整合 | カスタムエラークラス | InsufficientBalanceError、InvalidStateError |
| データアクセス層 | DB接続エラー、クエリエラー | リトライ+フォールバック | exponential backoff、接続プール管理 |
| 外部サービス連携 | タイムアウト、レート制限 | サーキットブレーカー | opossum、cockatiel |
AIによるカスタムエラークラス設計とError Boundary

AIを知りたい
カスタムエラークラスの設計って、どういう階層構造にすればいいんですか?具体的なコード例が欲しいです。

AIエンジニア
AIに「このプロジェクトのドメインに合ったエラークラス階層を設計して。HTTPステータスコードのマッピングとエラーコード体系も含めて」と依頼するのが最も効率的です。AppError基底クラスを頂点に、ValidationError、NotFoundError、AuthorizationError、ExternalServiceErrorなどのサブクラスを設計します。
// カスタムエラークラスの例(AI生成)
class AppError extends Error {
constructor(message, statusCode, errorCode) {
super(message);
this.statusCode = statusCode;
this.errorCode = errorCode;
this.isOperational = true;
}
}
class ValidationError extends AppError {
constructor(field, message) {
super(message, 400, "VALIDATION_ERROR");
this.field = field;
}
}
class NotFoundError extends AppError {
constructor(resource) {
super(`${resource} not found`, 404, "NOT_FOUND");
}
}
| AIに依頼するタスク | 期待されるアウトプット |
|---|---|
| エラークラス階層設計 | AppError基底クラス、ドメイン固有エラー、HTTPマッピング |
| React Error Boundary作成 | ErrorBoundaryコンポーネント、フォールバックUI、エラーログ送信 |
| グローバルエラーハンドラ | Express/NestJSミドルウェア、エラーレスポンス標準化 |
| エラー処理の不備検出 | try-catch漏れ、未処理Promise、エラー握りつぶし一覧 |
| Sentryエラー監視設定 | SDK初期化、カスタムコンテキスト付与、アラート設定 |
| Zodバリデーション設計 | 入力スキーマ、エラーメッセージのカスタマイズ |
グローバルエラーハンドラとエラー監視の構築

AIを知りたい
本番環境でエラーが起きたときの監視体制はどう構築すればいいですか?

AIエンジニア
SentryやDatadogなどのエラー監視サービスの導入がまず第一歩です。AIに「Sentryを導入してグローバルエラーハンドラと連携させて。エラーの種類別にアラートレベルを設定して」と指示すれば、SDK初期化からカスタムコンテキストの付与、Slack通知連携まで一括で設定してくれます。

AIを知りたい
エラーの優先度付けやトリアージもAIに任せられますか?

AIエンジニア
はい。SentryのエラーログをエクスポートしてからそのデータをAIに読み込ませ「発生頻度と影響度から優先度を付けて対応計画を立てて」と依頼すれば、クリティカルなバグから対処すべきトリアージレポートを作成してくれます。特に深夜に発生した未知のエラーの原因調査にAIは非常に有効です。
リトライ戦略とサーキットブレーカーの実装

AIを知りたい
外部APIがダウンしたときのリトライ処理ってどう設計するのがベストですか?

AIエンジニア
指数バックオフ(exponential backoff)+ジッターが基本パターンです。1秒→2秒→4秒と間隔を広げつつ、ランダムな揺らぎを加えることでThundering Herd問題を回避します。さらにサーキットブレーカーを組み合わせれば、障害の連鎖(カスケード障害)を防止できます。AIにこれらのパターンの実装を依頼すれば、プロダクションレベルのコードを生成してくれますよ。
堅牢なエラーハンドリングはアプリケーションの信頼性の土台です。まずはAIにプロジェクト全体のエラー処理状況を分析させ、カスタムエラークラスの導入とグローバルエラーハンドラの整備から着手しましょう。Error Boundaryやサーキットブレーカーの追加、Sentryなどの監視ツール連携まで進めれば、本番環境で安心して運用できるアプリケーションが構築できます。エラーハンドリングへの投資は、障害対応時間の短縮として確実にリターンがあります。
