ソフトウェア開発におけるオプションとは何なのか?

2025/2/21に開催のオンラインイベント「"Tidy First?" 翻訳者陣に聞く!Kent Beck氏の新刊で学ぶ、コード整頓術のススメ」の登壇資料です

Transcript

1. ソフトウェア開発における オプションとは何なのか? 2025/2/21 fi 株式会社アトラクタ / Certi ed Scrum Trainer (CST) 吉羽 龍太郎 (@ryuzee)
2. 自己紹介 吉羽龍太郎 / Ryutaro YOSHIBA / ryuzee ▸ 株式会社アトラクタCTO /アジャイルコーチ / 翻訳者 ▸ Scrum Alliance 認定スクラムトレーナー ▸ X(Twitter): @ryuzee / https://www.ryuzee.com/ 2
3. 自己紹介 3 最新書籍紹介(買ってください!!) 2025/3/26 発売!!
4. ソフトウェア開発におけるオプションとは何なのか? 4 Tidy First? 個人で実践する経験主義的ソフトウェア設計 ▸ Kent Beck(著)、吉羽龍太郎、永瀬美穂、細澤あゆみ(訳) ▸ 2024年12月25日発売 ▸ 164ページ、2640円、オライリー・ジャパン ▸ エクストリーム・プログラミング(XP)の父、ケント・ベックの16年ぶりの 著作で3巻シリーズの1冊目。個人に焦点を当てている ▸ 2冊目以降は現在執筆中。2作目のタイトルは『Tidy Together』 ▸ 待ち切れない人は https://tidy rst.substack.com/ を購読! fi ▸ 薄い本が簡単だとは限らない
5. ソフトウェア開発におけるオプションとは何なのか? 本書のタイトルには実は大きな意味がある ▸ 『Tidy First? ―個人で実践する経験主義的ソフトウェア設計』 (先に整頓?) ▸ この疑問符こそが本書の重要な論点 ▸ 著者の願い: どのタイミングでどれだけ整頓するかを読者に判断できるようになってほしい ▸ この疑問符に答えるための中核的な理論が本書の24章〜27章まで ▸ 本書でいちばん重要な箇所で、本書の目玉 ▸ ただし難しいので何度も読んでほしい ▸ 今日はこの24章〜27章までの内容をざっくり解説します 5
6. ソフトウェア開発におけるオプションとは何なのか? 6 本書における整頓とは何か? ▸ リファクタリングとは、「振る舞いを変更することなく構造を変更する」こと ▸ だが、リファクタリングという言葉が誤った使われ方をするようになっている ▸ 機能開発を長く中断してしまう ▸ 振る舞いも変えてしまう ▸ そこで、本来の意味のリファクタリングのサブセットのことを意図的に整頓(Tidying)と呼んでいる ▸ 本書では「個人で実践する経験主義的ソフトウェア設計」というサブタイトルにもあるように、個人に 収まる範囲に焦点を当てている ▸ 数分から1時間くらいまでの規模(小さなリファクタリング) ▸ チームに関わる話は次回作
7. ソフトウェア開発におけるオプションとは何なのか? 整頓のタイミングの選択肢 ▸ 整頓しない (Never) ▸ コードの振る舞いをこの先絶対に二度と変更することがなければ合理的な選択(本当に少ない) ▸ 改めて整頓 (Later) ▸ 十分な時間がないという思い込みを打破できる場合、将来整頓するリストを作って取り組むかも ▸ あとに整頓 (After) ▸ 先に振る舞いを変更したあとに良いやり方が見つかり、今後その領域を再度変更する可能性がある ▸ 先に整頓 (First) ▸ 状況によるが、この選択肢に偏る。なぜだろうか? 7
8. ソフトウェア開発におけるオプションとは何なのか? ソフトウェアの経済的価値 ▸ 『Tidy First?』ではソフトウェアの経済的価値を以下の2つの観点から検討している ▸ お金の時間価値 ▸ ソフトウェアのオプション価値 ▸ この2つの価値はときに衝突する ▸ ソフトウェア設計ではこの2つのバランスを取らなければいけない 8
9. ソフトウェア開発におけるオプションとは何なのか? お金の時間価値 ▸ 明日の1ドルより今日の1ドルのほうが価値が高いという前提をもとにしている ▸ 先に貰えば、それが利子を生んだり、別に投資したりできるし、手に入らないリスクもない ▸ = 将来もらう予定の1ドルを今もらうと、1ドルより少ない額になる(割り引かれる) ▸ 例えば3か月後に決済される手形を今現金化すると、額面より安くなる ▸ 現在の価値を考慮するときは、将来手に入る金額を割り引いた金額で評価する ▸ 時間あたり均等に割り引かれると想定した時の1年あたりの割引の割合を割引率という ▸ 割引率の要素: 資本コスト、金利、物価、リスクなど ▸ この考え方を投資判断に適用したのが、ディスカウントキャッシュフロー(DCF) ▸ 同じお金を手に入れるのであれば、お金の時間価値だけを踏まえると 「先に使って、あとで稼ぐ」よりも「先に稼いで、あとで使う」ほうが得ということになる 9
10. ソフトウェア開発におけるオプションとは何なのか? 10 参考: ディスカウントキャッシュフロー(DCF) ▸ ディスカウントキャッシュフロー(DCF)は将来のキャッシュフローを現在価値に変換する手法 ▸ ディスカウントキャッシュフロー(DCF)の合計値から初期投資額を引いたものが正味現在価値(NPV) ▸ (例) 初期投資1000万円のプロジェクトで、回収期間を3年。1年後に400万円、2年後に500万円、3年 後に600万円の利益が出ると見込んだ場合 ▸ 割引率を10%とする ▸ DCF = 400 / 1.1 + 500 / (1.1 x 1.1) + 600 / (1.1 x 1.1 x 1.1) = 1227.6万円 ▸ 正味現在価値(NPV) = 1227.6 - 1000 = 227.6万円 ▸ 正味現在価値(NPV)がプラスなので投資の価値がある、と判断できる
11. ソフトウェア開発におけるオプションとは何なのか? オプション取引 ▸ 「あらかじめ定められた価格と期日に取引できる権利」を売買する取引のこと ▸ 買う権利(コール・オプション)の売買 (※本書のオプションはこちら) ▸ 売る権利(プット・オプション)の売買 ▸ 権利を手に入れるときにプレミアムと呼ばれる料金を払う ▸ 期日には種類がある ▸ アメリカンタイプ: 満期日までの期間中いつでも権利行使できる ▸ ヨーロピアンタイプ: 満期日のみ権利行使できる ▸ 義務ではないので、権利を行使しないこともできる ▸ 行使しない場合に失うのはプレミアムだけなので、リスクは限定的になる 11
12. ソフトウェア開発におけるオプションとは何なのか? 12 オプション取引(コールオプション)に関係する要素 パラメーター 『Tidy First?』 26章の例 食品会社Aが農場Bからコールオプション を購入するシナリオ 購入できる原資産となるもの じゃがいも1個 じゃがいも10トン 原資産の価格(変動性も含む) 現在1ドルより少し少ない金額 (お金の時間価値を想定) 現在90万円。満期時に大きく値上がりす ると想定している オプション行使価格 1ドル 100万円 オプションのプレミアム 権利行使しない場合に原資産を別で使え るなら安い金額 10万円 オプションの残存期間 1日 (ヨーロピアンタイプ) 8か月 (ヨーロピアンタイプ) 期日の行動 ピクニックに行かない場合はオプションを 行使しない オプション行使価格 < (原資産価格 - プ レミアム)ならオプションを行使しない
13. ソフトウェア開発におけるオプションとは何なのか? 13 オプション取引(コールオプション)に関係する要素 パラメーター 『Tidy First?』 26章の例 ソフトウェア 購入できる原資産となるもの じゃがいも1個 将来の振る舞いの変更 原資産の価格(変動性も含む) 現在1ドルより少し少ない金額 (お金の時間価値を想定) 将来の振る舞いの変更から得られる価値 (大きく変動するほどうれしい) オプション行使価格 1ドル 将来の振る舞いの変更にかかるコスト オプションのプレミアム 権利行使しない場合に原資産を別で使え るなら安い金額 今日の設計 オプションの残存期間 1日 (ヨーロピアンタイプ) 長ければ長いほどよい (アメリカンタイプ) 期日の行動 ピクニックに行かない場合はオプションを 行使しない 振る舞いの変更の価値が低くなった場合 はオプションを行使しない
14. ソフトウェア開発におけるオプションとは何なのか? オプションの価値 ▸ オプションの価値を最も左右する要因は価格変動の大きさ(ボラティリティ) ▸ 価格が上がるだけでなく、価格が下がることも含めて ▸ 将来の振る舞いの変更から得られる価値が不明確であればあるほど、オプションの価値が上がる ▸ つまりプレミアム(=整頓にかかる時間)を払う合理性が増える ▸ どの機能が価値を生むかわからないという状況においては、将来の選択肢は多いほうがよい ▸ その選択肢を持っていること自体に価値がある ▸ オプションの価値だけを踏まえれば 「先に稼いで、あとで使う」よりも「先に使って、あとで稼ぐ」ほうが得ということになる 14
15. ソフトウェア開発におけるオプションとは何なのか? ディスカウントキャッシュフロー vs オプション ▸ 経済的な綱引き ▸ ディスカウントキャッシュフロー: 先に稼いであとで使う ▸ オプション: 先に使ってあとで稼ぐ ▸ 両方の選択肢がありえる、ということになる 15
16. ソフトウェア開発におけるオプションとは何なのか? では、数分から数時間の規模の整頓のタイミングは? ▸ 「cost(整頓) + cost(整頓のあとに振る舞いを変更) < cost(整頓せずに振る舞いを変更)」の場合 ▸ 先に整頓 ▸ 「cost(整頓) + cost(整頓のあとに振る舞いを変更) > cost(整頓せずに振る舞いを変更)」の場合 ▸ 生み出されるオプションの価値が先に使うお金よりも大きい場合は先に整頓 ▸ これは判断の領域 ▸ ただし、個人レベルでの整頓は時間が短い(数分〜1時間)ので正当化できる ▸ 経済的なインセンティブには逆行していることは認識しておく ▸ つまり、「先に整頓するか?」という問いへの答えは、多くの場合イエスになる ▸ 全部ではない。「次の振る舞いを変更できる」ように整頓する。暴飲暴食はあとにとっておく 16
17. PR 17 株式会社アトラクタについて ▸ 社名:株式会社アトラクタ Attractor Inc. ▸ https://www.attractor.co.jp ▸ 開発プロセスに関するコンサルティングやトレーニングを提供 ▸ アジャイルコーチング: 貴社のアジャイルチームの伴奏支援をいたします ▸ 技術顧問: 組織全体に対してさまざまなテーマでアドバイスいたします ▸ 認定トレーニング: 認定スクラムマスターを始めとした各種認定トレーニングを提供しています。所定 の人数が集まる場合は1社向けのプライベート開催も可能です ▸ 集合研修: 1社向けにスクラム研修やマネージャー向けアジャイル研修を提供しています ▸ 初回相談無料。詳しくはお気軽にお問い合わせください

Comment

No comments...