🍰

AIコーディングとオーバーエンジニアリング —— スクラムに学ぶ「価値をスライスする」

に公開

co-generated by ChatGPT

はじめに

AIを使ってコードを書く機会が増えていますが、AIの提案が大げさで過剰設計になってしまうこと、ありませんか?
シンプルな機能でよいのに、アーキテクチャ全体を組み替えるようなコードを提示されると、かえってスピードが落ちてしまいます。

この課題を考えるときに、スクラム開発でよく語られる「価値をスライスする」考え方がヒントになります。


スクラムにおける「価値のスライス」

スクラムでは、プロダクトを「小さな価値の単位」に分割して届けることが重視されます。

  • 大きな機能を丸ごと作り込むのではなく
  • 最小限でもユーザーに価値を届けられる単位(スライス)にする

これにより、早い段階でユーザーからのフィードバックを得て、学びを次のスプリントに反映できます。


AIコーディングと同じ落とし穴

AIに実装を頼むときも、同じことが起こりがちです。

  • 大きすぎるストーリーをそのまま渡す → AIが包括的すぎる実装を返す
  • 価値の粒度を決めない → 過剰な抽象化やライブラリ導入が増える

つまり、AIは「プロダクトバックログアイテムが大きすぎるとチームが迷走する」のと同じ罠にはまります。


実例:ログインフォームを作るとき

バックログを大きくした場合

「安全で堅牢なログイン機能を実装する」

AIの出力:OAuth対応、JWT、CSRF対策、パスワード強度判定、多言語化…
立派だけど、過剰。

価値をスライスした場合

「未入力のときにエラーメッセージを表示する」

AIの出力:シンプルな必須チェックとエラーメッセージ表示。
これだけで最初のユーザー体験は成立します。必要になったら次のスライスを追加すればよいのです。


どうやってスライスするか

スクラムの実践と同じように、次の観点が役立ちます。

  1. ユーザー価値を最小化する
    • 例:「まずは未入力を弾くだけで十分」
  2. 完成の定義(DoD)をシンプルにする
    • 例:「エラーメッセージが1つ出れば完成」
  3. 次のスライスを見据える
    • 例:「次はパスワード強度チェックを追加」

まとめ

AIは「大きすぎる要求」をそのまま実装しようとするため、オーバーエンジニアリングに陥りやすい。
だからこそ、スクラムのように価値をスライスする視点が有効です。

  • プロダクト開発でもAIコーディングでも、
  • 「まず小さな価値を届ける」ことを意識する。

これが、シンプルで前に進むための一番の近道です。

Discussion