0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

YAGNI原則とは?物語

Last updated at Posted at 2022-05-19

Wikipediaによると

機能は実際に必要となるまでは追加しないのがよいとする、エクストリーム・プログラミングにおける原則である。

ちなみにここでいう機能とは、内部的なデータ等も含むと広く解釈して良い。

例えば、めちゃくちゃ単純な例。

たとえばデータベースで「本のテーブル」があって、タイトルと価格カラムがあるとする。
だけど果たしてこれだけで足りるだろうか?

将来の拡張性を考えておこう。

  • セール時の価格を示す「セール価格」カラムを追加しておこう。セールを開く予定はないけれど。
  • 本の詳細を示す「詳細カラム」を追加しておこう。ユーザーに詳細を見せる予定はないけれど。
  • 男性用の本か、女性用の本かを示す「性別カラム」を追加しておこう。今は全性別向けの本しかないけれど。

ま、使わなかったら、その時削除すれば良いや。

You Ain't Gonna Need It!

どのカラムも結局使いませんでした。当時の担当者は辞任しました。

プログラムのコードや、データベース構造はいつの間にか複雑になり、なんだかよく分からないカラムが3つあるけど、誰もいつまでも削除しません。なぜなら、今動いているプログラムが、もし動かなくなったらどうしましょう。クビを切られるのは自分です。

そしてこのプロジェクトの担当者は、新しい世代に語り続けるのです。

「あ、その3カラムね!どうやら使ってないらしいよ。まあ、削除しても良いかもね。どうせ使ってないわけだから。え、じゃあ削除すれば良いだって?そうだね。まずはカラム削除のストーリーを見積もって、削除して動作チェックして、リリースチェックをしてと。そこまでする必要があるかって?そりゃそうよ。プロダクトコードってのはそういうもんだよ。えーとこのプロジェクトは今とても忙しくてね。君、こんなことをしてる暇があるなら、もっと必要案件のことを進めてくれないだろうか。まあ余裕がある時にその3カラムは削除するってことで。あ、ところで私も来月に辞任するので、このことは次の担当者にも伝えておいていただければ!」

めでたしめでたし

YAGNI原則を破ったことにより、みんな少しずつ不幸になりましたとさ。

おしまい!

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

Twitter

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?