今月の書籍
レビュワー:高橋 征義
- 『ソフトウェア設計の結合バランス 持続可能な成長を支えるモジュール化の原則』
50年越しの難題に対する、現時点でのベストな回答
本書は「結合度」あるいは「結合」(Coupling)について、現代的なソフトウェア設計の文脈のもと新たな知見を盛り込んだ書籍である。
「結合」の問題について簡単に説明すると、ソフトウェアの一部分(本書では「コンポーネント」)を変更したい場合、別の部分に影響があったり、別の部分も変更しなければならなくなったりする。この影響の度合いが結合度である。こういった影響は、予測が容易な場合もあれば、予測が困難だったり、ほぼ不可能だったりする場合もある。
この問題を解決するにはコンポーネントを小さくし、それぞれを疎結合(コンポーネント同士の依存度が低い)にすればよい、というのが一般的な指針である。が、本書の第1部でも論じられている通り、素朴に疎結合を目指して細かく分割したり、抽象化を図ったりしても、それだけでは問題は解決せず、むしろ複雑化することもある。そもそもコンポーネントを使うには各コンポーネント同士の相互作用が何らかの形で必要であり、結果として小さな変更でも大量の修正が必要になったり、全体的な変更結果が予測困難になったりする。
本書はまず結合とソフトウェアの複雑性について概観した後、第5章で構造化設計での結合評価モデル、第6章でコナーセンスと呼ばれる結合評価モデルについて改めて解説している。構造化設計はオブジェクト指向よりもさらに古く、1970年代から使われていた開発手法である。さすがに半世紀近く前からある手法だけあって、そのモデルも現代的なソフトウェア開発には直接当てはめにくい部分もある。しかし、本書は当時の意味と現代的な翻案を行うことで今の開発しか知らない人にも理解できるものとなっていてありがたい。
続く第7章では、著者独自の4つのレベルを持つ統合強度モデルを提唱し、さらに結合されたコンポーネント間の「距離」と変更されやすさである「変動性」という2つの軸を追加する。この「結合強度」「距離」「変動性」という3つの軸の組み合わせにより、システムの複雑さや変更のコストがわかり、結合の均衡度(バランス度合い)を導き出すこともできる。そして、ソフトウェアが成長していき、設計に問題が生じても、結合の再均衡化を図ることで適切な設計を維持し続けることができるのではないか。著者は本書でそのような提案を試みている。
本書P.184でも「警告:これは正確な科学ではない」と書かれている通り、本書は決定的な解決策を打ち出したものと受け止めるべきではないだろう。あくまで、従来の結合に関する議論に新たな次元を付け加え、その議論を進展させる試案といったところではないか。それでも、素朴に疎結合を掲げるよりはかなり洗練されているし、例えば変動性が低いコンポーネントよりも変動性が高いコンポーネントを問題視するべきといった実践的な判断を助ける効果も期待できる。
複雑になってしまっているソフトウェアの改善を試みるにあたっては、ぜひ本書を読み、結合のバランスという視点からも検証してみることを勧めたい。
『ソフトウェア設計の結合バランス 持続可能な成長を支えるモジュール化の原則』
著者:Vlad Khononov
翻訳:島田浩二
出版社:インプレス
今月のレビュワー

高橋 征義(たかはし・まさよし)
札幌出身。Web制作会社にてプログラマとして勤務する傍ら、2004年にRubyの開発者と利用者を支援する団体、日本Rubyの会を設立、現在まで代表を務める。2010年にITエンジニア向けの技術系電子書籍の制作と販売を行う株式会社達人出版会を設立、現在まで代表取締役。著書に『たのしいRuby』(共著)など。好きな作家は新井素子。
2026/01/21

















