前回の責任分離と、この講義の役割

前回のN-05では、1つの部品に1つの責任を持たせる責任分離を学びました。ただ、分けたつもりでも、うまく分かれているとは限りません。分離の出来を客観的に測るために、この講義では結合度と凝集度という2つの指標を導入します。指標を持つと、AIが書いたコードに対して、感覚ではなく言葉で、ここは結合が強すぎると指摘できるようになります。
このスライドのポイント
- N-05: 1つの部品に1つの責任を持たせる「責任分離」を学んだ
- ただし「分けたつもり」がうまく分かれているとは限らない
- 分離の出来を客観的に測るのが、結合度と凝集度
- 感覚ではなく言葉で「ここは結合が強すぎる」と指摘できるようになる
結合度と凝集度の定義

結合度とは、部品同士の依存の強さのことです。弱いほど良く、理想は、相手の内部を知らず、あらかじめ決めた接続、つまりK-02で学んだ契約だけで繋がっている状態です。凝集度とは、1つの部品の中身のまとまりの強さです。こちらは強いほど良く、同じ目的の処理だけが入っている状態を指します。この2つは、N-05の責任分離がうまくいっているかを測る物差しだと考えてください。目指す方向は一つ、結合は弱く、凝集は強くです。
このスライドのポイント
- 結合度=部品同士の依存の強さ。弱いほど良い
なぜこの2つの言葉が要るのか

この2つの言葉を持たないと、問題を正確に伝えられません。たとえば、Aという部品を直したらBが壊れた、という現象は結合が強すぎるサインです。この関数は何をするものか一言で言えない、という状態は凝集が低いサインです。言葉がなければ、AIには、なんとなく整理して、としか頼めません。指標があれば、どこがどう悪いのかを名指しで改善指示できるようになります。
このスライドのポイント
- 言葉がないと、問題を正確に伝えられない
- 「Aを直したらBが壊れた」=結合が強すぎるサイン
- 「この関数、何屋さん?」=凝集が低いサイン
- 言葉がなければAIに「なんとなく整理して」としか頼めない
- 指標があれば、どこがどう悪いかを名指しで改善指示できる
4象限で見る、理想と最悪

結合度と凝集度は、2つの軸で組み合わせて考えると分かりやすくなります。縦軸に凝集の強弱、横軸に結合の強弱を取り、4つの象限で整理します。目指すのは、結合が弱く凝集が強い右上の理想、避けたいのは、結合が強く凝集が弱い左下の最悪の象限です。経費精算アプリでいえば、申請の処理は申請の部品にまとまり、他の部品とは契約越しにしか繋がらない状態が理想です。1つの図として頭に入れておくと、コードを見たときの判断が速くなります。
このスライドのポイント
- 縦軸に凝集の強弱、横軸に結合の強弱を取る
- 右上(結合弱×凝集強)=理想
- 左下(結合強×凝集弱)=最悪
- 経費精算アプリの理想: 申請の処理は申請の部品にまとまり、他とは契約越しにしか繋がらない
経費精算アプリで見る、強結合と低凝集

強結合と低凝集を、経費精算アプリの具体例で見てみましょう。強結合の例は、画面のコードがデータベースの列名を直接知っている場合です。列名を変えただけで画面が壊れます。これはN-05の層を飛び越えて、画面がデータの内部に手を伸ばしている状態です。低凝集の例は、ユーティリティという名前の、何でも入れる関数の寄せ集めです。名前からは何をするのか分からず、変更のたびに中を読み直すことになります。
このスライドのポイント
- 強結合の例: 画面のコードがデータベースの列名を直接知っている
技術サンプル: 症状→診断→処方の早見表

スライドの表は、よくある症状から原因と対処を引く早見表です。同じ修正を毎回3箇所に加えているなら、凝集の失敗であり、処方は1箇所への集約です。この3行を覚えておくと、AIのコードを診断する順番が身につきます。読み方のコツは、症状は現象、診断は結合か凝集のどちらの問題か、処方は具体的な直し方、と段階で見ることです。AIには、結合が強すぎる箇所と凝集が低い箇所を、理由付きで挙げてもらいましょう。
このスライドのポイント
- 種別: table
- 目的: よくある症状から、結合・凝集のどちらの問題かを診断し、処方を引く
- サンプル本体:
混同しやすい: 結合度と凝集度の見ている場所

結合度と凝集度は、似た言葉ですが、見ている場所が違います。結合度は部品と部品の間の話で、外との依存の強さです。凝集度は1つの部品の中の話で、内側のまとまりの強さです。外の線を細く、中のまとまりを濃く、と覚えると混同しません。そして、どちらも良くしたいときの合言葉が、結合は弱く、凝集は強くです。
このスライドのポイント
- 結合度=部品と部品の「間」の話(外との依存の強さ)
- 凝集度=1つの部品の「中」の話(内側のまとまりの強さ)
- 外の線は細く、中のまとまりは濃く
- どちらも良くしたいときの合言葉が「結合は弱く・凝集は強く」
バイブコーディングでの確認点

AIにコードの構造を直してもらう作業を、リファクタリング、つまり動作を変えずに構造だけを改善することと呼びます。このリファクタリングを頼むとき、結合を弱く、凝集を強くという方向を明示すると、意図が正確に伝わります。方向を指定しないと、AIは見た目を変えるだけで、依存の強さには手を付けないことがあります。改善後は、動作が前と同じままかを、必ず人間が確認してください。
このスライドのポイント
- リファクタリング=動作を変えずに構造を改善すること
- AIに頼むとき「結合を弱く・凝集を強く」の方向を明示すると、意図が正確に伝わる
- 方向を指定しないと、見た目だけ変えて依存には手を付けないことがある
- 改善後は、動作が前と同じままかを必ず人間が確認する
一問一答とまとめ

最後に一問一答です。良い設計の方向は、結合と凝集でそれぞれどちらでしょうか。(間)答えは、結合は弱く、凝集は強く、です。30秒まとめです。結合度は部品の間の依存、凝集度は部品の中のまとまりで、前者は弱く、後者は強くが良い設計です。これがN-05の責任分離を測る2つの物差しになります。次回のN-07では、アプリ全体をどんな形にするか、モノリスとマイクロサービスの選択を学びます。関連資料は、リファクタリング指示文50と、非エンジニアのための開発会話集です。
このスライドのポイント
- 一問一答: 良い設計の方向は、結合と凝集それぞれどっち?
- 答: 結合は弱く、凝集は強く
- 30秒まとめ: 結合度は部品の間の依存、凝集度は部品の中のまとまり。前者は弱く、後者は強くが良い設計=N-05の責任分離を測る2つの物差し
- 次回: N-07 アプリ全体の形(モノリスとマイクロサービス)
- 関連資料: 「リファクタリング指示文50」「非エンジニアのための開発会話集」