YAGNIとは
あるWebアプリのプロトタイプを採用した開発で、一覧画面に複数選択による一括削除やインライン編集機能を実装する場面がありました。これらの機能はどうせ後から要望されるだろうと考え、現段階の要件には含まれていなかったものの、時間があったこともあり、先に隠し機能として実装しておくことにしました。
後日、社内で「まだそんな要望も出ていないのに、なぜ先に実装しているのか、必要はないと思う」という指摘を受けました。私はあんまり納得がいかずそこで、自分の行動が適切だったのか、こんなことよくあるだろうなと調べてみると、ソフトウェア開発には「YAGNI」という原則があることをそこで知りました。YAGNIは「You Aren't Gonna Need It(それは必要にならないだろう)」の略で、要件にない機能を先走って作らないことを推奨する考え方のようです。
実際の結果と感想
ただ、実際には、私が先に実装していたこれらの機能は、後に本当に要望が出されました。結果として、「無駄だった」とは一概には言えず、むしろ対応が早く済んだことで、プロジェクトの進行がスムーズになった部分もありました。そのため、YAGNIの原則を学びつつも、今回のケースでは必ずしも無駄なリソースだったとは感じていません。(反省していない)
ただ、この経験から定義するなら、現実化する可能性が非常に高い近未来のことは考慮し先に進めるべきだと感じました。ファイル管理機能にせっかくなんでOCR付けときました!はYAGNIなことくらいはわかります。
YAGNIという考え方があることを頭に入れておきたいと思います。つまり、無駄な作業を避けつつも、慎重に判断し、必要な場合は適切に対応することが重要だと再認識しました。(終わり)