【設計入門2026 #2】設計の目的

目次

💡 開発の究極の目標って?

Icon in a callout block
先輩:ソフトウェア開発のゴールって何だと思う?
Icon in a callout block
俺:うーん、機能をたくさん作ることですか…?
Icon in a callout block
先輩:惜しい!最終的には“コストと時間を最小にすること”なんだ。
それには何が必要?
  • 高速に開発ができること
  • 変更がしやすいこと
Icon in a callout block
俺:あー、後から直しにくいと時間かかりますもんね
Icon in a callout block
先輩:そう、それを支えるのが設計ってわけ

🏗 設計(アーキテクチャ)ってなんのためにある?

Icon in a callout block
先輩:ずばり、変更しやすくするためにあるよ
  • 設計がうまくいってる = 労力をかけずに変更できる
  • 設計が悪い = 触るたびに壊れる、直すのに時間がかかる

Icon in a callout block
俺:じゃあ、変更が楽かどうかで設計の良し悪しが分かるんだ(変更容易性)
開発・保守の中で起きるソフトウェアの変更を楽にしたいという気持ちによって生まれるのが設計

😱 設計しないとどうなる?

  • 処理と処理が依存し合っていて一箇所直したら別のとこが壊れた
  • どこを読めばいいかわからない
  • 変更による影響範囲が予測しにくく、バグを埋め込みやすい
  • 簡単な修正に数日かかる…
Icon in a callout block
俺:あるある…前触ったコードが自分の敵に見えてくるやつ
Icon in a callout block
先輩:まさにそれが技術的負債ってやつだ

🧟‍♂️ レガシーコードと技術的負債

レガシーコードとは?
  • 変更・拡張が難しく壊れやすいコード
技術的負債とは?
  • 後で直さなきゃいけないツケ、将来的に修正や変更が必要な状態

📉 総務省のレポートによると、技術的負債による損失は年間12兆円(「2025年の崖」)

Image in a image block

Image in a image block

Icon in a callout block
俺:これ、放っておいたら大変なことになりそうですね…モチベーションも下がりそう

🧨 なぜ設計が崩れるの?

Image in a image block

  • 優れた・クリーンな・うまく設計されたコードの重要性を理解していない
    • 〆切まで時間がないので、とりあえず動くものを作ろうという気持ちになる
      • 「とりあえずモノを完成させて、後でコードを綺麗にするか」と言って、結局時間がなくやらない
    • 競合に追いつくためには機能を追加し続けなければならない
      • 今、この間にも競合はどんどん先を行っている
      • 後からコードを綺麗にする時間なんてない
  • 崩壊したコードを書けば短期的には開発速度が上がると信じている
    • 最初はそれでいいかもしれないが…
    • どんどん変更が難しくなり、長期的には開発速度が下がる

Icon in a callout block
先輩:最初はいいけど、どんどんになる
Icon in a callout block
俺:あー、技術的負債のスパイラル
Icon in a callout block
先輩:そうそう。いったん崩れ始めると、みんな「もうこのコードは手遅れだ」って思って、さらに雑に書くようになる。まさに負のスパイラルだね。

まとめ

設計(アーキテクチャ)の目的は変更容易なシステムを作ることにある
設計が崩れると技術的負債が蓄積され、開発速度が低下する
設計をしっかりすることで、長期的なコストと時間を最小化できる