ジャバ・ザ・ハットリ
Published on

YAGNIはソフトウェア実装の原則。直訳は「そんなモン要らんって!」

Authors
  • avatar
    ジャバ・ザ・ハットリ

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 を思って、ひとしれず泣きました。
ヤーグニ!おわり。

関連記事