雑記帳または /dev/null

ソフトウェア開発、哲学、プログラミング、その他雑多なものもののメモ

メモ - 非意味的切断と依存性管理・疎結合

私は『動きすぎてはいけない』で、「接続過剰から非意味的切断へ」というテーマを掲げました。自分と他者の間にあまりにも多い関係性、そして、そこに生じるあまりにも多い責任を想定すると、我々は何もできなくなる。というのは、何か行為をするにあたって考慮すべきパラメータが無限化し、行為に移れないからです。 (...) 他者のための行為、利他的な行為の条件は、行為する自分が存在すること = 他者への関係性をある程度は切断すること、なのです。 (...) あくまでも接続が前提の上で、かろうじて切断する、という話なのです。


『思弁的実在論と現代について』 p.16-17

関係性の肥大とそこから生じる多数の責任によって、考慮すべきパラメータが爆発し、結果何もできなくなる。 それを回避して、他者のために何か行為することを可能とするためには、関係性をある程度は切断することが必要になる。

ソフトウェアの文脈ではモジュール間の依存性の管理と疎結合が重視されるが、それらについて、この「接続過剰から非意味的切断へ」というテーマを応用できないか。

一つに、モジュールが相互に関連しあうと、一つのモジュールを変更したときの影響範囲が直接的・間接的に広がっていく危険が生じる。 よって、モジュール間の関係性を間接的にして影響範囲を狭めたり1、それを単方向にして循環させないようにしたり2といったテクニックないし原則が提唱されている。 しかし、これによってモジュール間が全く「無関係」にされたわけではなく、あくまでそれらは間接的にせよ接続し続けており、かつそうした依存関係の管理は、あくまでそれぞれのモジュールが「他者」としての他モジュールのため十全に「機能 = 行為」できるようにするための処置である。 これは、ソフトウェア上におけるモジュール間の「非意味的切断」とは考えられないか。

また、あるモジュールとモジュールが密接に関連しあった場合、それこそ互いの内部構造やその処理機構なども相互に承知したようなレベルでの密結合に陥った場合、両者は互いに相手に対して大きな責任を想定し、また実際に負う必要が生じる。その多大な責任によって、絡み合った両者のモジュールは「考慮すべきパラメータが無限化し、行為に移れない」という結果に至る。そこまでは至らずとも、他モジュールへの依存が強いほど、換言すれば他モジュールとの関係性が強く多様なほど、程度の差はあれ、「考慮すべきパラメータが無限化し、行為に移れない」という結果へと近づいていく。

そのような結果を回避するためにあるいは遠ざかるために、部分的な関係性に限定すること依存の程度を減らしたり3、依存する対象をより抽象化されたモジュールに規定することで関係性を弱めたり4、といったアプローチも存在する。 これらもまた、これは、ソフトウェア上におけるモジュール間の「非意味的切断」として、それも「接続が前提の上で、 かろうじて 切断」しようとする試みとは考えられないか。疎結合とは、完全な「切断」ではなく、あくまで緩やかに繋がりながら、その上でなおその関係性を「ある程度は切断する」試みである、と。