📌 概要
本番環境でバグが出たり、ローカルで謎のエラーが起きたとき、「なぜ?」という疑問の解決過程を 体系的に記録 するスキルです。備忘録として再利用でき、ナレッジとしてチーム共有・ブログ発信も可能になります。
🤔 背景・なぜ必要か
従来の問題対応の課題
❌ 通常の対応:
エラー発生
↓
「ネットで検索してコピペで直す」
↓
「動いた!」
↓
「なぜうまくいったのか忘れる」
↓
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 分に短縮
- チーム内で「よくあるバグ集」が自動作成
- ブログ発信で外部からも信頼を得る
「苦労した問題ほど記録価値がある」。後の自分と、チームメンバーに感謝されます!

コメント