コンテンツにスキップ

エラーメッセージ一覧

[!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)
    # ...

エラーコード追加ガイド

新しいエラーコードを追加する場合:

  1. 適切なカテゴリを選択
  2. 既存のカテゴリで対応できない場合は新規カテゴリを検討

  3. 連番を決定

  4. カテゴリ内の既存コードを確認し、次の番号を使用

  5. テンプレートを作成

    "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
    )
    

  6. ドキュメント更新

  7. このドキュメントに新しいエラーを追加
  8. コード例とユースケースを記載

関連ドキュメント


最終更新: 2025/12/20

バージョン: 1.0.0