YAGNI

November 26, 2018
エンジニアリング
-

講座目次

YAGNIとは

You’re NOT gonna need it! 原文翻訳

-

YAGNIとは

エンジニアの世界では、YAGNI Principle という主要原則があり、「必要のないものは、必要になるまで作らない」という考え方が強く支持されている。財務モデリングも、限られた時間の中でシミュレーションを構築しなければならないという点で、アジャイル開発工程と似た部分があり、財務モデル構築を行う上で非常に重要な、設計に指針に繋がる考え方でもある。

 

YAGNI は、 「You aren't gonna need it!」 を省略したものだ。財務モデルを構築していると、財務モデルの構築に慣れた担当者であればあるほど、生半可な実力があるが故に色々な機能を付与したがる傾向にある。

 

・為替レートの影響を加味するため、米ドルと円建ての計算を正確に反映しよう

・将来的にモニタリングに使えるように、月次でモデルを作成しよう

・資金調達スキームが柔軟に変更できるよう、様々な調達トランシェを用意しておこう

・ダウンサイドケースに備えて、追加出資のシミュレーションを構築しておこう

・買収対象先の正確なPL把握のため、現地の会計基準を詳細に反映しよう

・案件の長期化や引き継ぎを考慮して、詳細な計算マニュアルを作成しよう

 

財務モデルを構築している途中、「これから必要になるかもしれないから…」という理由で、何かを追加的な機能や計算をしようとしたら、白い紙にペンで大きく以下の言葉を書いて、デスクに貼っておくようにしよう。

 

「You are NOT gonna need it!」

(それは要らない!)

 

財務モデリングとは、案件や計画を評価するためのツールだと原則を思い出し、ツール開発のための作業にならないよう、常に心掛けよう。最後に、Extreme Programming の創始者であるソフトウェアエンジニア Ron Jeffries の YAGNI 原文の日本語訳をご紹介する。

You’re NOT gonna need it! 原文翻訳

 

Often you will be building some class and you’ll hear yourself saying “We’re going to need…”.
(君は「これから必要になるから」と言い聞かせながら、いつも何かの計算処理を作ろうとしている)

Resist that impulse, every time. Always implement things when you actually need them, never when you just foresee that you need them. Here’s why:
(その衝動を抑え込む。常にだ。必ず今目の前で必要なものだけを作るようにする。絶対に将来を予測して計算処理を作ってはいけない。理由はこうだ:)

  • Your thoughts have gone off track. You’rethinking about what the class might be, rather than what it must be. You were on a mission when you started building that class. Keep on that mission rather than let yourself be distracted for even a moment.
    (そもそも思考が脱線している。計算処理が、今どうあるべきかではなく、将来「どうなりそうか」を想像している。君はその計算を作り始めた時、重要な目的があったはずだ。余計なことを考えず、その目標に向かって真っすぐ進め)
  • Your time is precious. Hone your sense of progress to focus on the real task, not just on banging out code.
    (時間は貴重だ。現実のタスクが前進している感覚を大事にするんだ。キーボードを叩いた数は問題ではない)
  • You might not need it after all. If that happens, the time you spend implementing the method will be wasted; the time everyone else spends reading it will be wasted; the space it takes up will be wasted.
    (結局その計算は必要ないかもしれない。もしそうなら、今計算している処理は全て無駄だ。その計算をチェックする人全員の時間も無駄だ。計算部のスペースすら無駄になる)

You find that you need a getter for some instance variable. Fine, write it. Don’t write the setter because “we’re going to need it”. Don’t write getters for other instance variables because “we’re going to need them”.
(君は、ある計算のために変数の用意が必要だと分かった。いいだろう、計算を書け。ただ、「これから必要になるから...」という理由で絶対に変数を加工するな。「これから必要になるかも」という理由で、他の変数も用意しようとするな) 

The best way to implement code quickly is to implement less of it. The best way to have fewer bugs is to implement less code.
(プログラムを最も早く書く方法は、そもそもあまり書かないことだ。バグを最も少なくする方法は、コードを少なくすることだ。)

 

You’re not gonna need it!
(それは要らない!)


Source:
https://ronjeffries.com/xprog/articles/practices/pracnotneed/
-

関連記事一覧

-
ページ上部へ戻る

専門トレーニングに関する資料をダウンロード

つぶやきました