問題解決の過程を記録!トラブル原因調査スキル

📌 概要

本番環境でバグが出たり、ローカルで謎のエラーが起きたとき、「なぜ?」という疑問の解決過程を 体系的に記録 するスキルです。備忘録として再利用でき、ナレッジとしてチーム共有・ブログ発信も可能になります。

🤔 背景・なぜ必要か

従来の問題対応の課題

❌ 通常の対応:
エラー発生
  ↓
「ネットで検索してコピペで直す」
  ↓
「動いた!」
  ↓
「なぜうまくいったのか忘れる」
  ↓
2 ヶ月後、同じバグが再発 → 同じ調査の繰り返し

スキルの解決方法

✅ スキル4のフロー:
1️⃣ 「何が困ったのか」を記録
2️⃣ 原因調査の過程を記録
3️⃣ 解決方法を実装コード付きで記録
4️⃣ 学んだことを整理

💻 実装方法

ステップ1: トラブル記録を開始

スキルに指示:

「EF Core でデータベース初期化時に、
『The type 'Habit' cannot be used as type parameter 'TEntity'』
というエラーが出ました。解決過程を記録してください」

ステップ2: 記事構成の確認

セクション 役割 目安
❓疑問・問題 具体的な症状・エラーメッセージ 200-300字
🔍原因調査 試した仮説と調査方法 400-600字
💡理由付け なぜその解決方法を選んだか 300-400字
🛠️トラブルシューティング 試行1, 2, 3…各試行の結果 600-800字
✅最終的な解決方法 実装コード + テスト方法 300-500字
📚学んだこと 得られた知見 200-300字

合計: 2000-3000 字

ステップ3: 実装コード例付きで記録

## ❓ 疑問・問題

### 症状
DbContext でデータベース初期化時にエラー:

\`\`\`
System.InvalidOperationException: 
The type 'HabitTracker.Models.Habit' cannot be used 
as type parameter 'TEntity'
\`\`\`

### 発生時期
EF Core 9.0 + SQLite での初期化時

---

## 🔍 原因調査

### 試した仮説
1. EF Core バージョン不一致 → ❌
2. DbContext の DbSet 定義ミス → ❌
3. Habit エンティティの設定不足 → ✅

### 判明した原因
エンティティクラスにプライマリキー属性がなかった:

\`\`\`csharp
// ❌ ダメな例
public class Habit
{
    public int Id { get; set; }  // プライマリキー属性がない
    public string Name { get; set; }
}

// ✅ 正解
public class Habit
{
    [PrimaryKey]  // ← これが必須!
    public int Id { get; set; }
    public string Name { get; set; }
}
\`\`\`

⭐ ポイント

1. 記録の深さ

  • ❌ 「解決した」だけでは NG
  • ✅ 「なぜこのエラーが出たのか」を掘り下げる

2. 試行錯誤の価値

試行1: 〇〇を試す → ❌ 失敗
試行2: △△を試す → ❌ 失敗
試行3: □□を試す → ✅ 成功!

← この過程が記録されることで、
   他の人も「試行1, 2 を飛ばして試行3 からスタート」できる

3. 環境情報の記録

- OS: Windows 11
- .NET: .NET 10
- EF Core: 9.0.0
- MAUI: 10.0.0
- Visual Studio: 2026 Community

4. 検索キーワードを含める

## ❓ 疑問・問題

**検索キーワード:**
`EF Core DbSet TEntity` `DbContext 初期化エラー` `PrimaryKey 属性`

これにより、他の人が同じキーワードで検索したときにヒットします。

✅ まとめ

トラブルシューティングスキルは、「個人の経験」を「チームのナレッジ」に変換 する仕組みです。

記録のメリット:

  • 同じバグが再発したときの対応時間 → 数時間から 5 分に短縮
  • チーム内で「よくあるバグ集」が自動作成
  • ブログ発信で外部からも信頼を得る

「苦労した問題ほど記録価値がある」。後の自分と、チームメンバーに感謝されます!


📚 参考資料

コメント

タイトルとURLをコピーしました