Tidy First?とソフトウェアの価値
今回はですね、Tidy First?というソフトウェア開発に関する書籍、これの読書会での議論を記録した資料をいただきまして、かなり深く掘り下げられていますよね。
ソフトウェアが持つ価値、特に現在の振る舞いと将来の変化に対応できる構造、つまりオプショナリティ。
この2つの側面について経済学の視点も交えながら考えられていて、今日はこの記録からその確信を探っていきましょうか。
非常に刺激的な内容ですね。ソフトウェアの価値を今動いている機能だけじゃなくて、未来に何ができるようになるかという可能性、オプションとして捉えると。
それが時間価値みたいな経済原則とどう関わってくるのか。これは開発の現場にとっても結構重要な問いかけだと思います。
そうですね。
では早速議論のポイントを見ていきましょう。
お願いします。まず議論の出発点になっていたのが、ソフトウェアには大きく2つの価値があるという点ですね。
今日何をしてくれるかという、現在の振る舞い。
はい、現在の。
それともう一つが、明日何をさせられる可能性があるかという将来の選択肢。これがオプショナリティだと。
まさに。そしてこのオプショナリティというのは、特に先行きが不透明で変化が多い、いわばカオスな状況。
カオスですか?
そういう状況ほど価値が高まるんだという指摘が非常に興味深かったです。
なるほど。
アジャイル開発なんかでよく言われる、エンブレイスチェンジ、変化を受け入れようって言葉がありますけど。
聞きますね。
これを単に変化に対応するっていう受け身の姿勢じゃなくて、いや、カオスはむしろチャンスなんだと捉える。
あー、より積極的に。
そうなんです。そういう積極的な意味合いで見てるっていうのは、なんかこう、目から鱗が落ちるような、そういう解釈でしたね。
面白いですね。その将来の選択肢、つまりオプショナリティを担保するのが、ソフトウェアの構造なんだと。
ええ、そうです。
ただ、議論の中でも触れられてたように、この構造への投資って、ちょっと効果がすぐには見えづらい。
まあ、そうですよね。
だから、これ本当に今やるべきなのかなっていう判断が、こう、難しいっていうジレンマが。
そうなんです。そこで、えーと、登場するのが、金融の世界ではおなじみの、お金の時間価値という考え方。
時間価値。
ええ。今日の1ドルは明日の1ドルより価値があるっていう、あの原則です。
はい。
これをソフトウェア開発に当てはめるとどうなるか。
つまり、目先の利益につながる機能、つまり振る舞いの変更を優先して、高度の整理整頓みたいな構造への投資は後回しにする方が、短期的には、まあ経済合理的に見えるかもしれないと。
うーん、なるほど。
そういう視点ですね。
でも、あの読書会の記録を読むと、必ずしもそれが正解ではないぞというニュアンスも感じましたね。常に後回しでいいわけじゃないと。
ええ、そこがあの肝心な点ですね。短期的な合理性がかえって長期的な価値を損なう可能性をちゃんと指摘していました。
金融の時間価値とソフトウェア開発
はあ。
ここでさらに、金融のコールオプションのアナロジーが持ち出されていました。
コールオプション。将来特定の価格で何かを買う権利のことですね。
そうですそうです。
これをソフトウェアに当てはめると。
つまり、今日のソフトウェア設計というのは、明日振る舞いの変更を安価に行うための権利を買うためのプレミアム権利量のようなものだと。
ああ、なるほど。これはわかりやすい例えですね。
そうでしょう。良い設計というのは、将来の並行可能性というオプションを確保するための一種の投資なんだと。
うーん。
言ってみれば、将来の変化に備えるための保険にちょっとお金を払うような、そんな感覚に近いかもしれません。
保険ですか?
ただし、ここで重要なのは、その保険料、つまり設計への投資をかけすぎてもいけないということです。
ああ、やゆすぎも良くないと。
ええ。多すぎず少なすぎず、適切なタイミングでという、いわゆるゴルディロックス。
ゴルディロックス。
はい、その状態を目指す必要があると。過剰な設計というのは、それ自体がもうコストになってしまいますからね。
やっぱりバランスが大事だと。
そういうことです。
議論では、もう少し具体的な部分にも何か踏み込んでいましたね。
私たちは社会的な部分をまだ設計していないっていう一文の解釈とか。
ええ、ありましたね。
あとは、振る舞いを表現する入出力ペアと普遍条件の違いとか。
ええ、そういう具体的な箇所への疑問とか解釈の試みっていうのが、理解を深める上ですごく役立ちますよね。
確かに。
例えば、その普遍条件の例として挙げられていた、給付と控除の合計が常に等しいっていうルール。
はい。
これは、システム全体の会計的な視点から見れば、当然の条件、普遍条件かもしれないけど、個々の従業員の視点から見ると、必ずしも自明ではないよねっていう指摘がありました。
ああ、誰の視点かで変わってくる。
そうなんです。誰の視点に立つかで、ルールの性質の捉え方が変わるっていうのは、これは面白い気づきだなと思いました。
確かに、視点の違いは重要ですね。
あと、気になったのが、社会的な部分をまだ設計していないっていう記述、これはどういう意図だと考えられていましたか?ちょっと謎めいた言葉ですよね。
そこは、読書界の中でも、この伏線は回収されるのか?なんて話題になっていたようですね。
はは、伏線。
まあ、技術的な設計だけじゃなくて、そのソフトウェアが使われる組織とか、プロセス、人間関係といった、もっと広い意味での社会的なシステムのデザイン。そこにまでまだ踏み込めていないという意味なのかなと。
まあ、明確な答えは出てなかったようですが、非常に示唆に富む一文だなと感じました。
なるほど。
社会的設計と未来の課題
あとは、言葉のニュアンスですよね。投資と借金っていう言葉の使い分けで、だいぶ印象が変わるよねみたいな、そういう細かい点にも注意が張られていましたね。
というわけで今回は、タイディーファーストに関する議論の記録からですね、ソフトウェアの振る舞いとオプショナリティという2つの価値、そしてそれを支える構造への投資の経済性について深く掘り下げてきました。
いやー、目先の価値と将来の可能性、このトレードオフをどう考えてどうバランスを取っていくか、これはソフトウェア開発に関わる上で本当に常に考えさせられるテーマですね。
まさにその通りです。そして議論の最後に触れられていた構造変更はアディティビティ、つまり追加容易性がポイントだっていう視点。
アディティビティ。
ええ。良い構造っていうのは、新しい機能とか変更を既存の部分を壊さずに追加しやすいものであるべきだと、これも重要な観点です。
なるほど。
それから先ほども出た社会的な部分をまだ設計していないという言葉。
ええ。
これが具体的に何を示していて、将来どう展開されていくのか。もしあなたがこの本を読んだり、あるいは開発に携わっているのであれば、この言葉の意味を自分なりに1個考えてみるのも面白いかもしれませんね。
そうですね。
技術だけじゃなくてそれを取り巻くシステム全体をどうデザインしていくかという、もっと大きな問いにもつながっていきそうです。
はい。