書籍「Tidy First?」を読んで正味現在価値(NPV)や金融オプションがサッパリだったので勉強してみた
書籍「Tidy First?」を読んで正味現在価値(NPV)や金融オプションがサッパリだったので勉強してみた
最近、Kent Beckさんの「Tidy First?」を読みました。
Tidy First? ―個人で実践する経験主義的ソフトウェア設計 - Kent Beck(Amazon)
Kent Beckさんは、エクストリームプログラミング(XP)の考案者であり、ソフトウェアパターンの先駆者としても知られています。当時は自分もXPをやるぞ!と意気込んでペアプログラミングをやろうとして、上司から「そんな工数、どっから捻出するねん!」と怒られたことしか覚えていません。。。
さて、話を「Tidy First?」に戻しましょう。この本はKent Beckさんの数十年ぶりの書籍で、三部作の第一弾だそうです。ざっくり言うと、コードのリファクタリングやクリーンコードの整理をいつするのか?という問いかけを私たちにしています。ページ数は少ないものの、結構難しい内容です。特に「第Ⅲ部 理論」では、正味現在価値や金融のオプションなどを例に説明されており、正直なところ全く理解できなかったので、勉強した内容をまとめました。
ソフトウェア設計は「すぐに稼ぐ/あとで使う」と「モノではなくオプションを作る」という要求を調和させなければいけない。
– 24章 経済性:時間価値とオプショナリティ
私が学んだ本質は、2つの驚くべき性質から成り立っていた。
- 今日の1ドルは明日の1ドルよりも価値があるので、早く稼ぎ、あとで使う。
- カオスな状況では、モノよりオプションのほうが優れているので、不確実性に対してオプションを作る。
– 24章 経済性:時間価値とオプショナリティ
「今日の1ドルは明日の1ドルよりも価値がある」というのが正味現在価値の考え方です。「不確実性に対してオプションを作る」というのが金融のオプションの考え方ということですね。まずは、正味現在価値から考えてみましょう。
正味現在価値 (Net Present Value, NPV)
Tidy First?では正味現在価値の説明に次のような文章が載っています。
多いことは多いことであり、少ないことは少ないことである。そう思うだろう? 実は場合による。ことお金に関しては、以下の条件次第だ。
- いつなのか
- どれくらい確実か
私が今日あなたに1ドルあげれば、あなたは好きなことに使えるし、あとでもっと大金になるように投資もできる。私が明日あなたに1ドルあげると約束しても、それは今日渡す1ドルより価値が低い。なぜか?
- 使えない。つまり価値が低くなる。
- 投資できない。つまりもらっても今日もらうよりは価値が低くなる。
- 実際には私があげない可能性がある。まあ私はそんなことはしない。私のことは完全に信頼してほしい。だが、他の人であればその1ドルを渡さない可能性に備えなければいけない。つまり「明日の1ドル」は価値が低くなる。
– 25章 明日の1ドルより今日の1ドル
洋書の善し悪しになりますが、途中でジョークを挟むのは和訳された書籍では読みづらいなぁ・・・と思ってしまいます。例えば、「実際には私があげない可能性がある。まあ私はそんなことはしない。私のことは完全に信頼してほしい。」とかですね。
自分なりに咀嚼して、言い換えてみました。 「今日1000円あげる」と言ったら、もらった人はすぐにお菓子を買ったり、貯金したり、いろいろなことができます。でも、「明日1000円あげる」と言われたら?少し違った感じがしませんか?
正味現在価値とは、この「今日もらうお金の価値」と「未来にもらうお金の価値」を比べる方法です。難しく言うと、将来のキャッシュフローを現在価値に割り引いた合計のことです。
いつもらえるか:
今日1000円もらえれば、すぐに使えるので価値が高いです。明日1000円もらう約束だと、ちょっと待たないといけないので、今日の1000円より価値が低くなります。
どれくらい確実か:
今日の1000円は確実に手に入るお金です。明日もらえる1000円は、もしかしたらもらえないかもしれないので、価値が低くなります。
つまり、正味現在価値は「いつもらえるか」と「どれくらい確実か」を考えることで、今日の価値に換算する方法です。
未来にもらうお金は、今日の同じ額よりも少し価値が低くなるので、先に稼いで後でゆっくり使う方が良いという理論です。
より早く確実にお金を稼ぎ、あとでお金を使う。先に整頓するのはやめよう。それはすぐにお金を使いあとでお金を稼ぐことだ。もしかすると、あとに整頓するのも、改めて整頓するのも、しないほうがよいかもしれない。
– 27章 オプション vs キャッシュフロー
Tidy First?の観点では、「まず動くものを作って、要件を満たし、その後ゆっくりソースを綺麗にしたり整理したりする方がいいんじゃない?」 という内容です。
金融のオプション
Tidy First?では「じゃがいも1個で1ドル」という例を使って説明されていますが、少し分かりづらいと感じました…。
そこで、私なりに言い換えてみます。 例えば、チョコレートが大好きなあなたがいるとします。今、スーパーではチョコが1枚100円ですが、来月には値上がりするかもしれないと考えています。そこでスーパーに「来月、このチョコを100円で買う権利」を100円で購入する契約をします。この「権利」こそが金融のオプションです。
もし来月、チョコが150円に値上がりしていたら、この権利を使うことでお得に買えます(50円の利益になりますね)。一方で、もしチョコが80円に値下がりしていた場合は、この権利を使わず、普通に安く買うこともできます。
金融の世界では、この「買う権利」をコールオプション、「売る権利」をプットオプションと呼びます。これらのオプションは、リスクを抑えたり利益を狙うために、投資家たちによく利用されています。
今お金を使って、あとでお金を稼ぐ(たとえ現時点でその方法を確実には知らなくても)。絶対に先に整頓しよう(整頓がオプションを作るときに)。あとに整頓しても、改めて整頓してもよい
– 27章 オプション vs キャッシュフロー
Tidy First?の観点では、「まずソースを綺麗に整理整頓すること」 が推奨されています。その理由は、将来の変更作業がスムーズになるからです。振る舞いを変更することで逆にややこしくなる場合は、その選択をしないこともできるということになります。
まとめ
いかがでしょうか。未だ理解仕切れていないので、まだまだ読み込みが浅いなぁ・・・と。投資とかやっていればピンっとくるんでしょうが。。。
- Tidy First? はコードの整理整頓の重要性を説く書籍である
- 正味現在価値 (NPV)は「今日のお金は未来のお金より価値が高い」という考え方である
- 金融のオプションは「不確実性に備え、選択肢(買う権利/売る権利)のこと」である
- 先に整頓するのは、後に整頓するのかはかかるコストにより判断する
Discussion