改善を止めないために必要なもの

第6章で見たように、
最初の一手は「判断を動かす」ことから始まります。

この一手がうまくいくと、
現場では次に、こんな感覚が生まれます。

「もう少し、ここも直せそうだ」
「次は、あの判断も整理できそうだ」

設計改善が、
連鎖し始める瞬間 です。

しかし、この連鎖は、
意外と簡単に途切れます。


連鎖が途切れる典型的な瞬間

連鎖が止まるのは、
多くの場合、次の判断をしたときです。

「今の流れで、
 まとめて構造も整理してしまおう」

判断を一つ動かせた成功体験があると、
つい、こうしたくなります。

  • クラス構成を整理する
  • パッケージを切り直す
  • 似た責務をまとめる
  • 命名を一気に整える

結果として、
コードはきれいになります。

しかし、
ここで一気に構造を触ると、
改善の連鎖は途切れます。


なぜ一気に触ると、連鎖が止まるのか

理由は単純です。

判断の変化が、追えなくなるからです。


判断を一つだけ動かした場合

たとえば、
第6章で扱ったように、

  • 散らばっていた if の判断を
  • SpecialDiscountPolicy に集めた

この変更は、
とても説明しやすい状態です。

「特別割引という判断を、
 このクラスに置きました」

  • 何が変わったのか
  • なぜ変えたのか
  • どの判断を動かしたのか

が、
一文で説明できます。

変わった判断が、ひとつだけ
だからです。


変更が重なると、因果が見えなくなる

一方で、
次のような変更を同時に行った場合を考えてみてください。

  • 判断を切り出した
  • クラスを分割した
  • パッケージを整理した
  • util を削除した

コードの見た目は、
確実に良くなっています。

ですが、
ここでこう聞かれると、どうでしょうか。

「なぜ、この構造になったんですか?」

多くの場合、
答えがこうなります。

「判断を整理した結果で……
 ついでに構造も見直して……
 全体的にきれいにしました」

これは、
説明できているようで、できていません。


「追えない」とは、どういう状態か

ここで言っている
「判断の変化が追えない」とは、

  • どの判断が起点だったのか分からない
  • この構造が、どの判断に対応しているのか説明できない
  • diff を見ても、意図が読み取れない

という状態です。

設計の変更が、

  • 「なぜそうなったか」ではなく
  • 「そうなっている」という結果

だけを残してしまいます。

これはつまり、

判断の履歴が、消えてしまった状態
だと言えます。


連鎖が続く条件は「因果が見えること」

改善が連鎖するためには、
次の対応関係が、常に見えている必要があります。

  • この変更で
  • この判断が
  • ここに置かれた

この 1 対 1 の因果が、
誰の目にも明らかであること。

一気に構造を触ると、

  • どの判断が前進を生んだのか
  • 次は、何を基準に直せばいいのか

が分からなくなります。

その結果、
次の一手が選べなくなる。

これが、
「連鎖が途切れる」という現象の正体です。


チームでは、さらに問題が大きくなる

この問題は、
チーム開発では、より深刻になります。

  • レビューで意図が共有できない
  • 「とりあえずきれいにした変更」に見える
  • 次に触る人が、元の if を復活させる

つまり、
判断が再び漂流し始める のです。

「良くなったはずなのに、戻ってしまう」

多くの現場で起きているこの現象は、
技術力の問題ではありません。

判断の因果が、
コードに残っていないだけ
です。


改善を止めないためのルール

改善を連鎖させたいなら、
守るべきルールは、実はとてもシンプルです。

  • 1 回の変更で
  • 動かす判断は 1 つ
  • 説明は 1 文でできる

この状態を保てていれば、
設計改善は自然に続いていきます。


この章のまとめ

改善が止まるのは、
難しいことをしているからではありません。

何を変えたのかが、
分からなくなるからです。

判断を一つ動かす。
その因果を、コードに残す。

この積み重ねが、
モノリスを少しずつ、
しかし確実に変えていきます。

次の章では、
この判断の連鎖を
個人の感覚ではなく、チームの共通理解にする方法
について扱います。