高結合度:境界が曖昧で副作用が広がる状態
共有状態・内部アクセス・フラグ制御が混ざると、AI修正時に意図しない場所へ波及しやすくなります。
Bの内部とグローバル状態を前提に呼び出す。
内部変更がA側の破壊につながりやすい。
AIで実装スピードが上がるほど、結合度の差がそのまま変更コストと品質差になります。
結合度(Coupling)とは、モジュール間の依存の強さを表す指標です。
このページでは、密結合↔疎結合の判断軸、危険な依存の見抜き方、改善の方向性をまとめて理解できます。
結合度が高いほど、1か所の変更が別モジュールへ波及しやすくなります。 逆に結合度が低いほど(疎結合なほど)、影響範囲を限定しやすく、修正・テスト・差し替えが安全になります。
混同しやすい用語として凝集度があります。凝集度は「1モジュール内部のまとまり」で、 結合度は「モジュール外部とのつながり」です。 理想は 高凝集・低結合 です(凝集度はこちら)。
※一般的には「6つの結合度(強度)」で分類して解説することが多いですが、本ページではAI時代に重要となる「密結合↔疎結合の判断軸(依存を契約=インターフェースに限定する発想)」に焦点を当てるため、詳細な分類は割愛します。
結合度は0/1で決まるラベルではなく尺度です。密結合と疎結合は「状態の違い」であり、 どちら側に寄っているかで、変更の波及・テスト容易性・理解しやすさが変わります。
【密結合側】 【疎結合側】
依存: 内部実装や共有状態まで前提 依存: 契約(インターフェース)中心
変更: 1点修正で広範囲へ波及 変更: 影響範囲を局所化しやすい
テスト: モックしづらく重い テスト: 境界ごとに分けやすい
理解: 相互前提が多く読解コスト高 理解: 責務境界が明確で追いやすい
※結合度は言わば「診断(今の状態がどう悪いか見抜く)」で、疎結合は「治療(どうやって直すか)」です。 疎結合(治療)の詳細は 疎結合のページ を参照してください。
密結合なコードで AI に「ここだけ直して」と依頼すると、関知しない場所へ副作用が出やすくなります。 原因は、境界が曖昧で影響範囲を読み違えやすいことです。
対して、引数と返り値で境界が明確なデータ結合寄りの設計は、AIも守るべき範囲を判断しやすくなります。 つまり 結合度を下げる=影響範囲を限定する=AI生成の安全性が上がる です。
既存の依存構造を、AI時代の観点(影響範囲・境界・安全性)で読み解く図です。
共有状態・内部アクセス・フラグ制御が混ざると、AI修正時に意図しない場所へ波及しやすくなります。
Bの内部とグローバル状態を前提に呼び出す。
内部変更がA側の破壊につながりやすい。
契約と必要最小限データだけを共有することで、AI修正時も影響範囲を局所化しやすくなります。
契約に沿って必要データだけ渡す。
内部を変更しても契約が同じならAは維持される。
暗記よりも、「危険な結合ほどAIが境界を守れない」という判断軸で見ることが重要です。
// 擬似コード(JS/TS風)
globalState.discountRate = 0.2;
function calcOrderTotal(order) {
// 別ファイルで変更された globalState に依存
return order.subtotal * (1 - globalState.discountRate);
}
function updateCampaign() {
// AIがこの修正を入れると、他機能の計算が一斉に変わる恐れ
globalState.discountRate = 0.35;
}
// 擬似コード(JS/TS風)
class UserRepo {
_internalCache = new Map();
}
const repo = new UserRepo();
function patchUserName(id, name) {
// 内容結合: 本来非公開の内部へ直接アクセス
repo._internalCache.get(id).name = name;
}
// 擬似コード(JS/TS風)
type PromptRequest = { prompt: string };
type PromptResponse = { text: string };
function askAi(req: PromptRequest): PromptResponse {
// 実装詳細はここに閉じ込める
return { text: "..." };
}
function summarizeArticle(articleText: string) {
const res = askAi({ prompt: articleText });
return res.text;
}
境界が明確なほど、AIは「どこまで触ってよいか」を判断しやすくなります。 データ結合寄りにすると、無関係な場所への副作用を減らし、レビューとテストの焦点も合わせやすくなります。
GPT-4o、Claude、Geminiのように主役モデルは入れ替わります。 呼び出しコードを各所にベタ書きすると、差し替え時の修正範囲が拡大します。 「AIへの窓口」を1つに寄せ、入出力をシンプルな契約に絞ると、心臓部だけを交換しやすくなります。
App/UseCase
|
v
AiGateway (唯一の窓口)
|
+--> OpenAI Provider
+--> Claude Provider
+--> Gemini Provider
結合度は言わば「診断(今の状態がどう悪いか見抜く)」で、疎結合は「治療(どうやって直すか)」です。 疎結合(治療)の詳細は 疎結合のページ を参照してください。
将来、AIエージェントが自動で置換・分割・移動を行うほど、低結合な構造の価値が上がります。 低結合は独立性を判定しやすく、密結合はスパゲッティ化して解きほぐしが難しくなります。 低結合は、AI自動メンテの恩恵を最大化するための事前準備です。
結合度は、AI時代の安全性・モデル差し替え・自動メンテを左右する土台です。 結合度を下げる=影響範囲を限定する=変更とAI活用に強くなる という判断軸で、 まずは現在の依存状態を診断することから始めましょう。
経験:Webアプリ/業務システム
得意:PHP・JavaScript・MySQL・CSS
個人実績:フォーム生成基盤/クイズ学習プラットフォーム 等
詳しいプロフィールはこちら! もちもちみかんのプロフィール