YAGNIはソフトウェア実装の原則。直訳は「そんなモン要らんって!」
移転しました。
YAGNI (You Ain't Gonna Need It) 直訳は「そんなモン要らんって!」
YAGNIの原則は「機能は実際に必要となるまでは追加しないのがよい」とすること。後で使うだろうという予測の元に作っても、実際に使われるのはほんの一部。ソフトウェア実装において「予期しない変更」は常についてまわり、できるだけ設計をシンプルにするべき。現実の問題に集中して余計なモノを足さない。
それがヤーグニ。
会話の中での使い方は「それってヤグニだろ」とか「なんでって?だってヤグニだし」無駄にカッコつけて「そこはですね、単一責任の原則に反してまして。。。」なんて言うよりよほど親しみがあっていい言葉だと思う。
日本の中学校の先生からマルをもらえる英語に直すと「You are not going to need it.」実際に英語圏の職場で話す場合は「よーえいん、がな、にーでぃTっ」
YAGNI物語
エンジニア歴5年目に到達したA君は持ち前の技術を活かすべく海外転職を狙っていました。見事にロンドンのIT企業への転職が決まり、意気揚々とイギリスにやってきました。
慣れない英語を駆使しながらも、自己紹介を終えて自分のデスクにつきました。するとA君とチームを組むことになった金髪美女プロジェクトマネージャーのB子が話があるので会議室に来て、と言いました。2人っきりで小さな会議室に入るとB子の色気と強烈な香水の香り、UK訛りの英語に悩殺されそうでした。そうした中でなんとか理解したのは以下のこと。
- 新しいウェブサービスのプロトタイプを作って欲しいの(ハート)
- それは大企業とのコラボプロジェクトなの(ハート)
- アタシが相手企業の重役達にプロトタイプを持ってプレゼンしなくちゃいけないの(ハート)
A君は他にも色々はっきりしなくて聞きたいことはあったけど、英語もいまいち分からないし、これ以上会話を続けるとB子の短いスカートから伸びる太ももと乳の谷間に悩殺されるので「分かりました」といって会議を終了しました。
張り切っているA君はまずはReactでプロトタイプを構築することにしました。ReactのState管理には当然Reduxとしました。クライアントサイドだけでなく、ちょっとしたサーバーサイドの機能も要るだろうな、と考えたA君はRailsサーバーも立てました。するとAPIが必要になります。そこはRESTfulではなく、流行りのGraphQLにしました。かっちょいいー。こんな素敵なプロトタイプを見せたらB子とニャンニャンできるかも、と想像してほくそ笑んでいました。
セクシー金髪美女のB子がA君に聞きました。「プロトタイプできた。見せてくれる?」
A君が誇りを持って見せた、プロトタイプをざっと確認したB子はトップページのスクリーンショットを取って、その画像を自分のプレゼン資料に貼り付けて言いました。「ありがと」
その日の晩、A君がロンドンのパブでひとりで飲んでいるとB子が同じ会社のイケメンマネージャーと一緒にいました。彼らはA君に気付いていません。彼らがA君の名前を言っているのが聞こえてきたので、気付かれないようにそっと聞き耳を立てました。
イケメン「最近入ったA君、どうだった?」
B子「意欲はあるんだけど、作業が超遅いの。単にHTMLでプロトタイプのトップページ作るだけなのに、なんであんなに遅いんだろ。ああいうのに限ってベッドの上ではやたら早いのよね」
イケメン「あんなのじゃなくてオレがかわいがってあげるよ」
B子「ニャンニャン」
A君はがんばってムダに実装したReact+Redux+Rails+GraphQLを思って、ひとしれず泣きました。
ヤーグニ!おわり。
tango-ruby.hatenablog.com
tango-ruby.hatenablog.com
tango-ruby.hatenablog.com
tango-ruby.hatenablog.com
tango-ruby.hatenablog.com