0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

“動くから OK” が一番危ない: AI 個人開発で 「AI 借金」 を作らない PR 採用ゲート(Stripe / Webhook 例つき)

Last updated at Posted at 2026-01-13

個人開発に AI を入れると、実装速度は爆上がりします。
でも最近増えてるのが、「それっぽい機能は増えたのに、運用で死ぬ」パターン。

バグが怖いんじゃない。
“動くのに、説明できないコード” が積み上がるのが怖い。

この記事は、AI を使いながらも事故らないために、僕が PR に入れた AI 採用ゲート(チェックリスト)を公開します。
※Stripe / Webhook の具体例も入れます。

先に結論

  • AI 出力の最大リスクは バグではなく「それっぽさ」
  • “動くから OK” でマージすると、未来の自分に AI 借金 が回ってくる
  • 対策は「上手く任せる」ではなく、マージする条件(採用ゲート)を固定すること

トランキーロ。
アクセルは AI に任せていい。
でもマージの許可証は、人間が出す。

【具体例】 Stripe / Webhook で 「動くのに壊れる」 を踏んだ話

ある夜、AI にこう投げました。

「Next.js + Supabase で認証つけて、Stripe 課金も繋いで」

朝には “動く” ところまでできてた。
ログインも通る。
課金も通る。
最高。

……でも 1 週間後、テストユーザーから連絡が来ました。

  • 「解約したのに有料のまま」
  • 「二重請求っぽい挙動がある」

原因は Stripe じゃなく、こちらの実装でした。

Webhook の処理が idempotency(同じ通知が複数回届いても 1 回だけ反映する性質) を考慮してなくて、イベントが再送されるたびに DB 更新が走って 状態がズレる

しかも、そのコードを僕が説明できなかった。

“動くから OK” でマージしたのが、未来の自分への請求書になった。

【AI 借金の正体】 速度じゃなく 「止まれないこと」

AI 借金は、こういう流れで増えます。

  • 動く → 安心する
  • 理解が浅いままマージする
  • 例外ケースで壊れる
  • ログが薄くて追えない
  • 修正が怖くて触れない
  • さらに AI に継ぎ足す(借金の複利)

個人開発で怖いのは速度じゃない。
止まれないことです。

だから必要なのは「AI に上手に任せる技術」ではなく、“マージしない勇気” を仕組みにすること

【解決策】 PR に入れる 「AI 採用ゲート」

AI 出力を採用するかどうかを、感覚で決めない。
PR にチェックを置いて、条件を満たさない限りマージしない

これだけで事故率が下がります。

【コピペ OK】 AI 出力をマージする前の PR 採用ゲート (必須)

そのまま PR テンプレに貼ってください。
カスタマイズしても OK。

## 🤖 AI 出力をマージする前の採用ゲート(必須)
- [ ] 目的: この変更で「誰のどんな痛み」が減るか 1 行で言える
- [ ] 説明: 自分の言葉で処理 / 設計の流れを説明できる(AI の言い回し禁止)
- [ ] 例外: 壊れ方を最低 3 つ列挙した(入力 / 権限 / 外部 API / ネットワーク / 再送など)
- [ ] 捨てやすさ: 差し替え可能(境界が切れてる・モジュール化・feature flag)
- [ ] 観測性: ログ / メトリクスの最低限がある(必要箇所のみ)
- [ ] テスト: クリティカルパスに最低 1 つ(ユニットでも E2E でも可)
- [ ] リスク: 課金 / 認証 / 権限 / DB 根幹に触れるなら、人間レビュー必須

【“壊れ方” を先に見る】 Pre-mortem テンプレ (これが効く)

AI 出力は「理想系」を書くのが得意です。
でも現実は「最悪ケース」で壊れます。

そこで、壊れ方を先に列挙する Pre-mortem を PR にセットで置きます。

なぜ効くのか

  • 再送 / タイムアウト / 例外みたいな「現実の敵」を先に想像できる
  • “動く” ではなく “壊れても戻れる” へ視点が移る
  • ログ / 監視 / リカバリを 必要最小限で入れられる

コピペ用テンプレ

## 🧨 Pre-mortem(壊れ方を先に考える)
| 失敗 | 起きると何が痛い? | 対策 | 今やる/後でやる |
|---|---|---|---|
| Webhook 再送で二重反映 | 課金状態ズレ / 信用低下 | idempotency / event_id 記録 / upsert | 今やる |
| 例外時に状態が中途半端 | サポート地獄 | トランザクション / リトライ方針 | 今やる |
| ログが薄く原因不明 | 復旧が遅い | request_id / event_id をログに残す | 今やる |
| 重複イベント順序が逆転 | 状態が巻き戻る | 最新イベント判定(timestamp) | 後でやる |

Stripe / Webhook で最低限やること (例)

  • event_id を DB に記録して二重処理を弾く
  • ログに event_id / customer / subscription_id を残す
  • “状態更新” は 単純な上書きにしない(イベント順序に注意)

AI に任せていい領域 / 危険な領域 (線引きルール)

✅ AI に任せて良い(むしろ任せたい)

  • 雛形生成(CRUD、フォーム、型定義、UI の土台)
  • 仕様の抜け漏れチェック
  • ドキュメントの下書き
  • 単純作業の自動化
  • (販売寄り)訴求案・FAQ の候補出し

⚠️ AI に任せすぎると危険 (人間が責任を持つ)

  • 課金・認証・権限・セキュリティ(責任が重い)
  • データ設計の根幹(後で変えにくい)
  • 運用設計(監視、障害対応、例外処理方針)

AI は優しい。
だからこそ、こちらが甘えると、静かに借金が増えます。

【まとめ】 AI 時代に強い個人開発は 「速さ」 じゃなく 「壊れても戻れる」

  • AI 出力の最大リスクは “それっぽさ”
  • “動くから OK” でマージすると、未来の自分が死ぬ(AI 借金)
  • 対策は PR 採用ゲートで、マージ条件を固定する
  • Pre-mortem で 壊れ方を先に見る とさらに強い

トランキーロ。
アクセルは AI に任せても、ハンドルは握る。

補足(任意): 背景や、収益化の順番について

「なぜ AI で “進んでる感” に酔うと迷子になるのか」
「実装より先に固めるべき収益化の順番(LP → 価格 → 導線 → 検証 → 実装)」

このあたりの背景は note にまとめています(無料):

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?