カップリングの概念 結合: モジュールが他のモジュールを認識し、依存している程度を示します。 低結合: 1 つのモジュールでの変更は、他のモジュールへの影響が少なくなります。 高結合: 1 つのモジュールの変更が他の複数のモジュールに影響を与える可能性があります。 凝集の概念 凝集度: モジュールの責任がどの程度適切にグループ化されているかを示します。 高い凝集性: モジュールには関連する責任があり、単一のタスクの実行に重点を置いています。 結束力が低い: 責任間の関連性が低い。 コミュニケーションアプローチ メッセージ通信。 伝統的なコミュニケーション メッセージング通信 非同期通信。 モジュールはメッセージを送受信します。 インターフェイスを介したメッセージ コントラクトの定義。 モジュール間のデカップリングを促進します。 モジュールはメッセージ バス経由で通信します ツール: RabbitMQ、Kafka など 従来のコミュニケーション モジュール間で関数を呼び出します。 パッケージ間でのオブジェクト、構造体、特性の使用。 あるモジュールが別のモジュールを呼び出します。 名前空間、パッケージ、モジュールの使用。 観察 完全なデカップリングを保証することは困難です モジュール間には常に何らかの依存関係が存在します。 コントラクト、インターフェース、メッセージングを使用する場合でも、ある程度の依存関係が存在します。 あるモジュールと別のモジュールの間に依存関係があるのは通常のことです。 ソースコード: https://github.com/ortizdavid/golang-modular-software