name: first-principles description: "設計原則から再考。行き詰まった時に根本から考え直す。前提を疑い、本質的な解決策を探る。トリガー: /first-principles, 原点回帰, 根本から, ゼロベース" user-invocable: true allowed-tools: Read, Grep, Glob, WebSearch model: sonnet
First Principles Thinking
行き詰まった時、複雑になりすぎた時に、根本から考え直すためのスキル。
いつ使うか
- 実装が複雑になりすぎた
- 何を作ろうとしていたか見失った
- 技術的な解決策に固執している
- トレードオフの判断に迷っている
- 「なぜこうなっているのか」がわからなくなった
思考フレームワーク
Step 1: 本質的な問題の特定
## 今、何を解決しようとしている?
**表面的な問題**:
(技術的な実装の話)
**本質的な問題**:
(ユーザー/ビジネスにとっての価値)
**確認質問**:
- この問題が解決されると、誰がどう嬉しい?
- この機能がなかったら、どんな困りごとがある?
Step 2: 前提の洗い出しと疑問
## 暗黙の前提
現在の実装で当然としている前提を列挙:
1. [ ] <前提1> → 本当にそうか?
2. [ ] <前提2> → なぜそう思った?
3. [ ] <前提3> → 別の方法はないか?
**疑うべき前提**:
- 「〜でなければならない」
- 「〜は無理」
- 「みんなそうしている」
- 「前からこうだった」
Step 3: 制約の再確認
## 本当の制約 vs 思い込み
| 制約 | 種類 | 根拠 |
|------|------|------|
| 予算 100万円 | 🔒 固定 | 承認済み |
| React使用 | ⚠️ 要確認 | 「チームが慣れている」だけ? |
| REST API | ⚠️ 要確認 | GraphQLではダメな理由は? |
| 1週間で完成 | 🔒 固定 | リリース日決定済み |
Step 4: ゼロベースでの選択肢
## もし最初からやり直すなら?
**制約だけを条件に、白紙から考えた選択肢**:
1. **案A**: <description>
- メリット:
- デメリット:
2. **案B**: <description>
- メリット:
- デメリット:
3. **案C(現在の方向性)**: <description>
- メリット:
- デメリット:
**最もシンプルな解決策は?**
(機能を削る、別のアプローチ、やらない選択肢)
Step 5: 判断と次のアクション
## 結論
**選択**: 案X
**理由**:
1. <reason1>
2. <reason2>
**捨てるもの**:
- <what to drop>
**次のアクション**:
1. [ ] <action1>
2. [ ] <action2>
質問リスト
行き詰まった時に自問する質問:
問題について
- 「そもそも、これは解決すべき問題か?」
- 「問題の定義は正しいか?」
- 「誰のための機能か?」
解決策について
- 「最もシンプルな解決策は何か?」
- 「この機能を作らない選択肢は?」
- 「80%の価値を20%の労力で得る方法は?」
- 「完璧でなくていいなら、どうする?」
前提について
- 「なぜそう思った?」
- 「それは事実か、推測か?」
- 「逆のことが正しい可能性は?」
- 「5年後もこの前提は有効か?」
出力形式
## First Principles 分析
### 現状
**やろうとしていること**:
<description>
**行き詰まっている点**:
<description>
---
### 本質
**解決すべき本当の問題**:
<core problem>
**成功の定義**:
<what success looks like>
---
### 前提の検証
| 前提 | 検証結果 |
|------|---------|
| <assumption1> | ✅ 有効 / ❌ 無効 / ⚠️ 要確認 |
---
### 再考後の選択肢
1. **シンプル案**: <description>
2. **現行案の修正**: <description>
3. **やらない案**: <description>
---
### 推奨
**選択**: <option>
**理由**: <rationale>
**削ぎ落とすもの**: <what to cut>
注意事項
- 分析麻痺を避ける: 考えすぎず、行動につなげる
- 完璧を求めない: 70%の解決策で十分なこともある
- チームと共有: 一人で抱え込まず、視点を借りる
- 時間を区切る: 30分考えて結論が出なければ相談