# エラー処理とフォールバック戦略 ## 設計理念 > いかなるエラーもユーザーの創造的なフローを中断すべきではありません。フォールバックすれど、中断せず。 ## エラー分類とフォールバックマトリックス ### タイプA:環境の欠如 | エラーシナリオ | 検出方法 | フォールバック戦略 | ユーザーへの通知 | |----------|---------|---------|---------| | Python 3が利用不可 | `python3 --version` が失敗 | gacha.pyをスキップし、10種類のプリセット方向からランダム選択 | 「ガチャエンジンにはPython 3が必要です。内蔵のランダム選択に切り替えました」 | ### タイプB:オプションの依存関係が利用不可 | エラーシナリオ | 検出方法 | フォールバック戦略 | ユーザーへの通知 | |----------|---------|---------|---------| | 画像生成スキルが未インストール | スキルの存在確認 | 完全なプロンプトテキスト + 手動生成プラットフォームの説明を出力 | 「利用可能な画像生成スキルが検出されませんでした。手動使用用のプロンプトを出力しました」 | | 画像生成スキルの呼び出し失敗 | スキルがエラーを返す | 1回再試行し、それでも失敗ならプロンプトテキストを出力 | 「画像生成が失敗しました。手動使用用のプロンプトを出力しました」 | ### タイプC:ランタイムエラー | エラーシナリオ | フォールバック戦略 | ユーザーへの通知 | |----------|---------|---------| | gacha.pyの出力フォーマットエラー | 10種類のプリセット方向からランダム選択 | 「ガチャの結果のパースに失敗しました。内蔵のランダム選択に切り替えました」 | | 予期しないエラー | エラー情報を記録し、そのステップをスキップして、メインフローを継続 | 「問題が発生しました:[エラーの簡単な説明]。スキップして継続します」 | ## エラーメッセージの統一フォーマット ```markdown > [警告] **[ステップ名] がフォールバックしました** > 理由:[何が起きたか] > 影響:[どの機能が制限されるか] > 代替:[何がフォールバックとして使われているか] > 修正:[完全な機能を回復する方法] ``` 例: ```markdown > [警告] **アバター生成がフォールバックしました** > 理由:利用可能な画像生成スキルが検出されませんでした > 影響:アバター画像を自動生成できません > 代替:完全なプロンプトを出力しました。Gemini / ChatGPTにコピーして手動生成できます > 修正:現在の環境に審査済みの画像生成スキルをインストールして有効化してください ``` ## 重要原則 1. **テキストの成果物がコアバリュー、アバターは付加価値** — 補助機能の失敗はメインフローを中断しない 2. **フォールバック情報は実行可能であること** — 「エラーが発生しました」だけでなく「どう修正するか」も伝える 3. **1つのフォールバックは後続ステップに影響しない** — ステップ5がフォールバックしても、ステップ6は通常通り出力する