失われた判断を、既存コードから読み解く


設計の話をすると、
しばしばこう言われます、
「それは新規開発だからできた話ですよね」、

既にコードがあり、
既にモノリスになっていて、
既に判断が失われている場合、
どうすればよいのでしょうか、

この章では、
今あるコードを出発点として、 判断の軸を見つけ直す方法を扱います、


最初にやってはいけないこと

既存コードを前にしたとき、
多くのエンジニアが最初にやりがちなことがあります、

それは、
「理想的な構造」を思い描くことです、

レイヤーを引き直す、
責務を整理する、
きれいなアーキテクチャに作り替える、

気持ちはよく分かります、
しかし、このアプローチはほぼ確実に失敗します、

なぜなら、
現状の判断を理解しないまま、 別の判断を上書きしようとするからです、


コードは、判断の痕跡でできている

どれだけ荒れて見えるコードでも、
そこには必ず判断の痕跡があります、

意味の分からない条件分岐、
不自然な責務の集まり、
やたらと慎重なガード、

それらは偶然ではありません、

誰かが、
何かを恐れ、
何かを避け、
何かを守ろうとした結果です、

コードは、過去の判断の集合体です、


「変えにくい場所」から見る

判断の軸を探すとき、
まず注目すべき場所があります、

それは、
誰も触りたがらない場所です、

変更すると壊れそう、
影響範囲が読めない、
テストがなくて怖い、

こうした場所には、
強い判断が眠っています、

なぜここは、
こんなにも慎重に扱われているのか、

その理由を考えることが、
軸を見つける第一歩です、


不自然な一貫性を探す

もう一つ、
有効な手がかりがあります、

それは、
不自然なほど一貫している部分です、

毎回同じチェックをしている、
似たような変換が何度も出てくる、
例外処理の方針が妙に揃っている、

それは、
偶然ではありません、

誰かが、
「ここだけは揺らがせない」と 決めた可能性があります、

軸は、繰り返しの中に現れます、


変更履歴は、判断の化石層である

もし可能であれば、
変更履歴も確認してください、

どんな修正が、
どこに集中しているか、

何度も直されている場所は、
判断が揺れている場所です、

逆に、
ほとんど触られていない場所は、
長く守られてきた判断を含んでいます、

履歴は、判断の地層です、


軸は「正解」ではなく「現実」から見つける

ここで重要なことがあります、

見つけようとしているのは、
理想の判断軸ではありません、

このコードベースが、 実際に選んできた判断です、

それが未熟に見えても、
歪んでいても、
今の現実です、

設計とは、
現実を否定することではありません、

現実を理解した上で、
次の判断を重ねることです、


この章のまとめ

既存コードに、
判断が「ない」ことはありません、

見えなくなっているだけです、

変えにくい場所、
不自然な一貫性、
長く守られてきた構造、

そこには、
必ず判断の軸があります、

次の章では、
この見つけ出した軸を使って、
どうやって最初の一手を打つのかを 具体的に扱います、

つまり、 「どこから直し始めるのか」です、