🍰
AIコーディングとオーバーエンジニアリング —— スクラムに学ぶ「価値をスライスする」
co-generated by ChatGPT
はじめに
AIを使ってコードを書く機会が増えていますが、AIの提案が大げさで過剰設計になってしまうこと、ありませんか?
シンプルな機能でよいのに、アーキテクチャ全体を組み替えるようなコードを提示されると、かえってスピードが落ちてしまいます。
この課題を考えるときに、スクラム開発でよく語られる「価値をスライスする」考え方がヒントになります。
スクラムにおける「価値のスライス」
スクラムでは、プロダクトを「小さな価値の単位」に分割して届けることが重視されます。
- 大きな機能を丸ごと作り込むのではなく
- 最小限でもユーザーに価値を届けられる単位(スライス)にする
これにより、早い段階でユーザーからのフィードバックを得て、学びを次のスプリントに反映できます。
AIコーディングと同じ落とし穴
AIに実装を頼むときも、同じことが起こりがちです。
- 大きすぎるストーリーをそのまま渡す → AIが包括的すぎる実装を返す
- 価値の粒度を決めない → 過剰な抽象化やライブラリ導入が増える
つまり、AIは「プロダクトバックログアイテムが大きすぎるとチームが迷走する」のと同じ罠にはまります。
実例:ログインフォームを作るとき
バックログを大きくした場合
「安全で堅牢なログイン機能を実装する」
AIの出力:OAuth対応、JWT、CSRF対策、パスワード強度判定、多言語化…
立派だけど、過剰。
価値をスライスした場合
「未入力のときにエラーメッセージを表示する」
AIの出力:シンプルな必須チェックとエラーメッセージ表示。
これだけで最初のユーザー体験は成立します。必要になったら次のスライスを追加すればよいのです。
どうやってスライスするか
スクラムの実践と同じように、次の観点が役立ちます。
-
ユーザー価値を最小化する
- 例:「まずは未入力を弾くだけで十分」
-
完成の定義(DoD)をシンプルにする
- 例:「エラーメッセージが1つ出れば完成」
-
次のスライスを見据える
- 例:「次はパスワード強度チェックを追加」
まとめ
AIは「大きすぎる要求」をそのまま実装しようとするため、オーバーエンジニアリングに陥りやすい。
だからこそ、スクラムのように価値をスライスする視点が有効です。
- プロダクト開発でもAIコーディングでも、
- 「まず小さな価値を届ける」ことを意識する。
これが、シンプルで前に進むための一番の近道です。
Discussion