エラーメッセージ一覧
[!NOTE] 最新の実装状況は 機能実装ステータス (Remaining Functionality) を参照してください。
実装ノート(アーティファクト): トレーニングスクリプトが出力する
artifact_manifest.jsonと推奨CLIフラグについてはdocs/implementation/ARTIFACT_MANIFESTS.mdを参照してください。
このドキュメントは、EvoSpikeNetシステムで使用される標準化されたエラーメッセージの完全な一覧です。
概要
エラーコード体系
エラーコードは以下の形式で構成されています:
{カテゴリ}_{連番}
例:MODEL_001, DB_002, NET_003
カテゴリ一覧
| プレフィックス | カテゴリ | 説明 |
|---|---|---|
MODEL |
モデル関連 | モデルの読み込み、登録、管理に関するエラー |
DB |
データベース | データベース接続、クエリ、トランザクションに関するエラー |
NET |
ネットワーク | Zenoh接続、メッセージング、ノード通信に関するエラー |
VAL |
バリデーション | 入力検証、データ型チェックに関するエラー |
INF |
推論 | モデル推論、バッチ処理に関するエラー |
SYS |
システム | システム初期化、内部サーバーエラー |
CFG |
設定 | 設定ファイル、パラメータに関するエラー |
AUTH |
認証・認可 | API認証、権限、レート制限に関するエラー |
RES |
リソース | メモリ、ディスク、GPUなどのリソースに関するエラー |
TASK |
タスク | タスク実行、パイプライン処理に関するエラー |
NODE |
ノード | ノード発見、管理、ヘルスチェックに関するエラー |
深刻度レベル
| レベル | 説明 | 対応の緊急性 |
|---|---|---|
critical |
システム障害、即座の対応が必要 | 🔴 緊急 |
high |
主要機能が損なわれている | 🟠 高 |
medium |
一部機能が損なわれている | 🟡 中 |
low |
軽微な問題、回避策あり | 🟢 低 |
info |
情報提供のみ、対応不要 | ⚪ 情報 |
エラーメッセージ詳細
MODEL Errors
MODEL_001
- Severity: high
- HTTP Status: 404
- Message: モデルが見つかりません: {model_id}
- Troubleshooting: モデルIDが正しいか確認してください。/api/models で利用可能なモデルを確認できます。
MODEL_002
- Severity: medium
- HTTP Status: 503
- Message: モデルが準備できていません: {model_id}。ステータス: {status}
- Troubleshooting: モデルの読み込みが完了するまでお待ちください。/api/models/{model_id}/status でステータスを確認できます。
MODEL_003
- Severity: high
- HTTP Status: 500
- Message: モデルの読み込みに失敗しました: {model_id}。エラー: {error}
- Troubleshooting: モデルファイルの整合性とシステムリソースを確認してください。詳細はログを確認してください。
MODEL_004
- Severity: medium
- HTTP Status: 400
- Message: モデルの登録に失敗しました: {reason}
- Troubleshooting: モデルのメタデータとファイル形式を確認してください。モデルIDが一意であることを確認してください。
DB Errors
DB_001
- Severity: critical
- HTTP Status: 503
- Message: データベース接続に失敗しました: {error}
- Troubleshooting: データベースサーバーのステータスと接続文字列を確認してください。ネットワーク接続を確認してください。
DB_002
- Severity: high
- HTTP Status: 500
- Message: データベースクエリに失敗しました: {query}。エラー: {error}
- Troubleshooting: クエリ構文とデータベーススキーマを確認してください。データベースログを確認してください。
DB_003
- Severity: medium
- HTTP Status: 500
- Message: データベーストランザクションに失敗しました: {operation}
- Troubleshooting: 同時変更やデッドロックを確認してください。操作を再試行してください。
DB_004
- Severity: low
- HTTP Status: 404
- Message: レコードが見つかりません: {table}.{id}
- Troubleshooting: レコードIDを確認してください。レコードが削除された可能性があります。
NET Errors
NET_001
- Severity: critical
- HTTP Status: 503
- Message: Zenoh接続に失敗しました: {error}
- Troubleshooting: Zenohルーターのステータスとネットワーク接続を確認してください。ルーターアドレスを確認してください。
NET_002
- Severity: high
- HTTP Status: 500
- Message: メッセージの配信に失敗しました: {topic}。エラー: {error}
- Troubleshooting: ネットワーク接続とトピックの権限を確認してください。メッセージサイズを確認してください。
NET_003
- Severity: medium
- HTTP Status: 504
- Message: ネットワークタイムアウト: {operation} が {timeout}秒を超過しました
- Troubleshooting: ネットワークレイテンシを確認してください。必要に応じてタイムアウト値を増やしてください。
NET_004
- Severity: medium
- HTTP Status: 503
- Message: ノードに到達できません: {node_id}
- Troubleshooting: ノードのステータスとネットワークパスを確認してください。ノードがオフラインの可能性があります。
VAL Errors
VAL_001
- Severity: low
- HTTP Status: 400
- Message: 入力が無効です: {field}。{reason}
- Troubleshooting: 入力形式と制約を確認してください。APIドキュメントを確認してください。
VAL_002
- Severity: low
- HTTP Status: 400
- Message: 必須フィールドが不足しています: {field}
- Troubleshooting: リクエストに必要なフィールドがすべて含まれていることを確認してください。
VAL_003
- Severity: low
- HTTP Status: 400
- Message: 値が範囲外です: {field}={value}。期待値: {min} から {max}
- Troubleshooting: 指定された範囲内の値を入力してください。
VAL_004
- Severity: low
- HTTP Status: 400
- Message: データ型が無効です: {field}。期待値 {expected}、実際 {actual}
- Troubleshooting: フィールドが正しいデータ型であることを確認してください。
VAL_005
- Severity: low
- HTTP Status: 413
- Message: 入力が大きすぎます: {field}。最大サイズ: {max_size}
- Troubleshooting: 入力サイズを減らすか、複数のリクエストに分割してください。
INF Errors
INF_001
- Severity: high
- HTTP Status: 500
- Message: 推論に失敗しました: {reason}
- Troubleshooting: モデルのステータスと入力データを確認してください。推論ログを確認してください。
INF_002
- Severity: medium
- HTTP Status: 504
- Message: 推論タイムアウト: {timeout}秒を超過しました
- Troubleshooting: バッチサイズを減らすかタイムアウトを増やしてください。システム負荷を確認してください。
INF_003
- Severity: medium
- HTTP Status: 400
- Message: バッチサイズが大きすぎます: {batch_size}。最大値: {max_batch_size}
- Troubleshooting: システム制限内に収まるようバッチサイズを減らしてください。
INF_004
- Severity: low
- HTTP Status: 400
- Message: 入力形状が無効です: 期待値 {expected}、実際 {actual}
- Troubleshooting: モデル要件に合わせて入力を再形成してください。
SYS Errors
SYS_001
- Severity: critical
- HTTP Status: 500
- Message: システムの初期化に失敗しました: {component}
- Troubleshooting: システムログと設定を確認してください。システム管理者に連絡してください。
SYS_002
- Severity: critical
- HTTP Status: 500
- Message: 内部サーバーエラー: {error_id}
- Troubleshooting: 予期しないエラーが発生しました。エラーIDをサポートに報告してください。
SYS_003
- Severity: high
- HTTP Status: 503
- Message: サービスが利用できません: {service}
- Troubleshooting: サービスがメンテナンス中の可能性があります。後でもう一度お試しください。
SYS_004
- Severity: medium
- HTTP Status: 500
- Message: コンポーネントが初期化されていません: {component}
- Troubleshooting: システムの起動シーケンスが正しいことを確認してください。設定を確認してください。
CFG Errors
CFG_001
- Severity: high
- HTTP Status: 500
- Message: 設定エラー: {key}。{reason}
- Troubleshooting: 設定ファイルの構文と値を確認してください。ドキュメントを確認してください。
CFG_002
- Severity: high
- HTTP Status: 500
- Message: 設定が不足しています: {key}
- Troubleshooting: 必要な設定パラメータを追加してください。デフォルト設定を確認してください。
CFG_003
- Severity: medium
- HTTP Status: 500
- Message: 設定形式が無効です: {file}
- Troubleshooting: 設定ファイルの形式(YAML/JSON)を確認してください。構文エラーを確認してください。
CFG_004
- Severity: low
- HTTP Status: 400
- Message: 設定の検証に失敗しました: {errors}
- Troubleshooting: 設定の検証エラーを修正してください。スキーマ検証ツールを使用してください。
AUTH Errors
AUTH_001
- Severity: medium
- HTTP Status: 401
- Message: 認証に失敗しました: {reason}
- Troubleshooting: APIキーまたは認証情報を確認してください。適切な認証ヘッダーを確認してください。
AUTH_002
- Severity: medium
- HTTP Status: 403
- Message: 認可に失敗しました: {resource} に対する権限が不足しています
- Troubleshooting: 管理者に適切な権限を要求してください。
AUTH_003
- Severity: low
- HTTP Status: 401
- Message: APIキーが期限切れまたは無効です
- Troubleshooting: APIキーを再生成するか、新しいものを取得してください。
AUTH_004
- Severity: medium
- HTTP Status: 429
- Message: レート制限を超過しました: {window} あたり {limit} リクエスト
- Troubleshooting: リクエストを送る前に待機してください。プランのアップグレードを検討してください。
RES Errors
RES_001
- Severity: critical
- HTTP Status: 507
- Message: メモリ不足: 利用可能 {available}MB、必要 {required}MB
- Troubleshooting: メモリを解放するかシステムリソースを増やしてください。バッチサイズを減らしてください。
RES_002
- Severity: high
- HTTP Status: 507
- Message: ディスク容量不足: 利用可能 {available}GB、閾値 {threshold}GB
- Troubleshooting: ディスク容量を解放してください。一時ファイルと古いアーティファクトをクリーンアップしてください。
RES_003
- Severity: high
- HTTP Status: 503
- Message: GPUが利用できません: {reason}
- Troubleshooting: GPUドライバーとCUDAのインストールを確認してください。GPUが使用中でないことを確認してください。
RES_004
- Severity: medium
- HTTP Status: 429
- Message: リソースクォータを超過しました: {resource}。制限: {limit}
- Troubleshooting: リソースが解放されるまで待つか、クォータを増やしてください。
TASK Errors
TASK_001
- Severity: medium
- HTTP Status: 404
- Message: タスクが見つかりません: {task_id}
- Troubleshooting: タスクIDを確認してください。タスクが期限切れまたは削除された可能性があります。
TASK_002
- Severity: high
- HTTP Status: 500
- Message: タスクの実行に失敗しました: {task_id}。エラー: {error}
- Troubleshooting: タスクの設定と入力データを確認してください。タスクログを確認してください。
TASK_003
- Severity: medium
- HTTP Status: 503
- Message: タスクキューが満杯です: 新しいタスクを受け付けられません
- Troubleshooting: タスクの完了を待ってください。キューサイズの増加を検討してください。
TASK_004
- Severity: low
- HTTP Status: 409
- Message: タスクがキャンセルされました: {task_id}。理由: {reason}
- Troubleshooting: タスクがユーザーまたはシステムによってキャンセルされました。必要に応じて再送信してください。
NODE Errors
NODE_001
- Severity: medium
- HTTP Status: 404
- Message: ノードが見つかりません: {node_id}
- Troubleshooting: ノードIDを確認してください。ノードがオフラインまたは削除された可能性があります。
NODE_002
- Severity: high
- HTTP Status: 500
- Message: ノードの登録に失敗しました: {reason}
- Troubleshooting: ノードの設定とネットワーク接続を確認してください。
NODE_003
- Severity: medium
- HTTP Status: 503
- Message: ノードのヘルスチェックに失敗しました: {node_id}。ステータス: {status}
- Troubleshooting: ノードログとリソース使用状況を確認してください。ノードの再起動が必要な可能性があります。
NODE_004
- Severity: low
- HTTP Status: 503
- Message: ノードが非アクティブです: {node_id}。最終確認: {last_seen}
- Troubleshooting: ノードがハートビートを送信していません。ノードのステータスと接続を確認してください。
使用方法
Python コード内での使用
<!-- from evospikenet.error_messages import ErrorMessages, format_error_response -->
# エラーメッセージの取得(英語)
error_info = ErrorMessages.get("MODEL_001", model_id="my_model", lang="en")
print(error_info["message"]) # "Model not found: my_model"
# エラーメッセージの取得(日本語)
error_info = ErrorMessages.get("MODEL_001", model_id="my_model", lang="ja")
print(error_info["message"]) # "モデルが見つかりません: my_model"
# API レスポンス用のフォーマット
response = format_error_response("DB_001", error="Connection timeout", lang="ja")
FastAPI での使用
from fastapi import HTTPException
<!-- TODO: update or remove - import failort ErrorMessages, get_http_status -->
@app.get("/models/{model_id}")
async def get_model(model_id: str):
if model_id not in models:
error_info = ErrorMessages.get("MODEL_001", model_id=model_id, lang="ja")
raise HTTPException(
status_code=error_info["http_status"],
detail=error_info
)
return models[model_id]
カテゴリ別のエラー一覧
<!-- モジュール 'evospikenet' が見つかりません。パッケージ内の移動/名前変更を確認してください -->
<!-デル関連エラーの一覧
model_errors = ErrorMessages.list_by_category(ErrorCategory.MODEL)
for code, template in model_errors.items():
print(f"{code}: {template.message_en}")
ドキュメント生成
<!-- TODO: update<!-- モジュール 'evospikenet' が見つかりません。パッケージ内の移動/名前変更を確認してください -->kenet.error_messages import ang="ja")
with open("docs/ERROR_MESSAGES.md", "w") as f:
f.write(doc_ja)
# 英語ドキュメント生成
doc_en = ErrorMessages.export_documentation(lang="en")
with open("docs/ERROR_MESSAGES.en.md", "w") as f:
f.write(doc_en)
ベストプラクティス
1. 適切なエラーコードの選択
- エラーの性質に最も適したカテゴリを選択
- 深刻度レベルを正確に設定
- 適切なHTTPステータスコードを使用
2. エラーメッセージのパラメータ化
# ❌ 悪い例:ハードコードされたメッセージ
raise ValueError("Model test_model not found")
# ✅ 良い例:パラメータ化されたメッセージ
error_info = ErrorMessages.get("MODEL_001", model_id="test_model")
raise ModelNotFoundError(error_info["message"])
3. トラブルシューティング情報の活用
error_info = ErrorMessages.get("DB_001", error="timeout")
logger.error(f"{error_info['message']}")
logger.info(f"Troubleshooting: {error_info['troubleshooting']}")
4. 多言語対応
from fastapi import Request
def get_preferred_language(request: Request) -> str:
"""リクエストから優先言語を取得"""
accept_lang = request.headers.get("Accept-Language", "en")
return "ja" if accept_lang.startswith("ja") else "en"
@app.get("/api/data")
async def get_data(request: Request):
lang = get_preferred_language(request)
error_info = ErrorMessages.get("VAL_001", field="id", reason="Invalid format", lang=lang)
# ...
エラーコード追加ガイド
新しいエラーコードを追加する場合:
- 適切なカテゴリを選択
-
既存のカテゴリで対応できない場合は新規カテゴリを検討
-
連番を決定
-
カテゴリ内の既存コードを確認し、次の番号を使用
-
テンプレートを作成
"NEW_001": ErrorMessageTemplate( code="NEW_001", category=ErrorCategory.NEW, severity=ErrorSeverity.MEDIUM, message_en="English message with {param}", message_ja="日本語メッセージ {param}", troubleshooting_en="English troubleshooting guide", troubleshooting_ja="日本語トラブルシューティングガイド", http_status=400 ) -
ドキュメント更新
- このドキュメントに新しいエラーを追加
- コード例とユースケースを記載
関連ドキュメント
最終更新: 2025/12/20
バージョン: 1.0.0