Vlad Khononovのレビュー一覧

  • ソフトウェア設計の結合バランス 持続可能な成長を支えるモジュール化の原則

    Posted by ブクログ

    ネタバレ

    ソフトウェア設計においては「高凝集・疎結合」がよいと教わってきたが、それは具体的にはどういうものなのか?良し悪しはどうやって測れば良いのか?そもそも「結合」とは何か?
    漠然としていた上記が、本書を読むとクリアに整理される。

    本書により、新たに「統合強度」「距離」「変動性」というモノサシと、これらを基に算出できる指標(ソフトウェアの安定性・変動コスト・モジュール性・複雑性・均衡度)を手に入れることができた。
    実際の現場でも健康診断的に、上記指標によってシステムの結合バランスを測り、再均衡が必要な部分の見極めなどをしていきたいと思った。

    0
    2026年06月28日
  • ソフトウェア設計の結合バランス 持続可能な成長を支えるモジュール化の原則

    Posted by ブクログ

    「ちょうどいい結合」は均衡度「(強度 XOR 距離) OR NOT 変動性」が高くなる結合で、均衡度が低い結合は変更コストが高く、変化が難しいことが問題となる。たとえば勝手に別システムのDBに直接接続したような場合、結合強度が高く(侵入結合)、距離も遠くなる(別サービス)が、それがほぼ変更されないことがわかっている場合(支援サブドメインなど)、変動性は低いので、バランスはとれている。同じ手法でもコアサブドメインで適用するとひどい目に合う。
    この本を読むことで、このように「バランス」感覚が身に付くことと思う。
    またソフトウェア設計の「複雑性」とは、「局所的複雑性」「大域的複雑性」にわけられ、それぞれどのような状態を指すのか、という言葉の定義を説明してくれていて助かる。

    0
    2026年03月27日
  • ソフトウェア設計の結合バランス 持続可能な成長を支えるモジュール化の原則

    Posted by ブクログ

    > 現代のソフトウェアシステムは、何百、時には何千ものモジュールで構成されている。...結合を完璧なバランスに保つことは、精密な時計製造の世界で見られる最新の調和と同様に、堅牢性と適応性を兼ね備えたシステムの実現に不可欠だ。
    > では、どうしたらそのバランスを実現できるだろうか。
    > それが本書でこれから学ぶことだ。(イントロダクション)

    「結合」をテーマにした、ソフトウェアの構成の仕方を書いている。言語化がとてもうまく、良書。

    クネビンフレームワーク(明確系、煩雑系、複雑系、混沌系)の説明は、複雑性は主観に基づいているという立場のもと、どの解説よりもわかりやすく書かれている。本書にも書かれているように、ソフトウェアを例に書かれているものの、多くの例に適用可能だと感じた。

    > クネビンフレームワークは、医療から農業まで、さまざまな状況で使用できる意思決定支援ツールだ。...機能を内製化すべきか、それとも既存のソリューションを購入する方が費用対効果が優れているかなど、戦略的な意思決定を行う際にも使用できる。(クネビンフレームワークの適用)

    「モジュール」の定義もよく言語化されている。

    > モジュールとは、明確に定義された機能を内包する境界であり、システムの他の部分から使用されるために公開されるものを指す。(ソフトウェアモジュール)

    コンポーネント間の距離を記述した後に続くコラボレーションと組織に対する洞察もおもしろい。

    > システムのコンポーネント間の距離は、チームの距離がより離れることによるライフサイクル結合の減少によって拡大する可能性がある。...チームが分散するにつれて、ライフサイクル結合の減少により、システム内のコンポーネント間の処理が増加する。一方では、この距離の増加はコンポーネントの独立性を促進する。しかし、変更がそれらの遠く離れたコンポーネントに影響を与える場合、より高いレベルの調整作業が必要になる。...ここで述べていることは...リモートファースト企業に対する反論だろうか。そうではない。これはソフトウェア設計で解決すべき組織的な要因だ。(ソリューションの変更)

    そのほか、企業の競争上の優位性をもたらすドメインは本質的に複雑性を含むこと、機能の線型的な成長に伴って知識はサブリニアに、相互作用はスーパーリニアに成長するが、我々の認知的限界は成長しないことなど、前提となる概念の明確な定義の上に豊かな議論が展開されていて、学びがある。

    0
    2026年02月07日
  • ソフトウェア設計の結合バランス 持続可能な成長を支えるモジュール化の原則

    Posted by ブクログ

    ソフトウェア設計では、結合をなるべく減らす「疎結合」が推奨される。では、結合は本当に悪なのだろうか。

    本書は、結合を悪と断じない。要はバランスである。結合とはコンポーネント間の相互作用だ。システムは複数のコンポーネントの組み合わせで成り立つ。相互作用がなければシステムは動かない。だから重要なのは「結合をなくすこと」ではなく、「どの程度の結合に収めるか」という見極めだ。

    では、何を物差しにバランスを取るのか。本書は三つの次元を示す。強度・距離・変動性である。結合の強度が高いものは近くに置き、低いものは遠くに置く。強度が高いのに距離が遠い関係はバランスが悪い。ただし、変動性が低いなら、必ずしも直ちに是正する必要はない。

    この三つの次元に至るまでの道筋で、本書は抽象化の要点を解きほぐす。複雑性から出発し、モジュール設計、コナーセンス、結合の諸論点をたどって考察を深め、最終的に強度・距離・変動性へと収束させる。読後に残るのは、この三語のインデックスだ。その導出過程自体が、抽象化の良い手本になっている。

    0
    2025年11月07日
  • ソフトウェア設計の結合バランス 持続可能な成長を支えるモジュール化の原則

    Posted by ブクログ

    結合のバランスをとるためのファクターについて細やかに説明して、シンプルな定量化をしている。分かりやすかった。
    ぼやっと考えてることが言語化されてる感じ。

    0
    2026年01月19日