苦労して移行を終えたシステムも、放っておけば同じ道を辿ります。10年後に「誰も触れない」と言われる可能性は、いま作っているものにも等しくあります。
この回は、何がシステムをレガシーにするのかを構造として整理し、その予防を扱います。区切りとして、連載全体を振り返る回でもあります。
1. レガシーになる条件は「古さ」ではない
まず定義を確認します。 とは、古いシステムのことではありません。30年動いていても、必要なときに安全に変更できるなら問題はない。
問題なのは、触れなくなった状態です。変更したいのに、影響範囲が読めず、壊れるのが怖くて手が出せない。古さではなく、触れなさがレガシーの本体です。
| 触れなくなる原因 | 起きること |
|---|---|
| 何をしているか分からない | 変えると何が壊れるか予測できない |
| 壊れたことに気づけない | 変えるのが怖い(テストがない) |
| 触れる人がいない | 変えられる人が退職した |
| 変更の手順が確立していない | リリースが大事になり、頻度が下がる |
| 影響範囲が広すぎる | 1つ直すのに全部を確認することになる |
どれも時間とともに悪化します。放置すれば必ずこの方向に進むので、能動的に維持しないと、レガシー化は既定路線です。 という言葉は「溜まっていくもの」という印象を与えますが、実際には溜まるのではなく、放っておくと勝手に増えるという性質のほうが近い。
2. 移行直後が最も危うい
意外に思われるかもしれませんが、移行直後こそ再レガシー化が始まりやすい時期です。
- 移行を急いだ結果、暫定対応が残っている — 直す予定が立っていない
- 互換層が残っている — EP.07 で作った、旧形式に合わせる層
- 移行チームが解散する — 作った人が別の案件へ移る
- 「やっと終わった」で誰も触りたくない — 心理的な反動
- 移行の記録が残っていない — なぜその設計かが失われる
2番目が典型です。EP.07 で「互換層には廃止時期を決めておく」と書いたのは、これが恒久化すると、新システムの中に旧システムの形が住み着くからです。数年後、新システムを触る人が「なぜこんな変な形式なのか」と悩むことになります。
移行の完了は始まりであって終わりではありません。暫定対応と互換層の一覧を作り、それぞれに期限を付ける。ここを移行プロジェクトの成果物に含めておくと、解散後も追跡できます。
3. 触れる状態を測る
「触れる状態か」は感覚で判断せず、測って見えるようにします。定期的に出せば、悪化に早く気づけます。
| 指標 | 何が分かるか | 悪化の兆候 |
|---|---|---|
| 領域ごとに何人が触ったか | 属人化の度合い | 1人だけの領域が増えている |
| 変更から反映までの日数 | 手順の重さ | だんだん伸びている |
| 同規模の改修にかかる期間 | 全体の触りやすさ | 過去と比べて伸びている |
| テストの実行時間 | 確認の負担 | 伸びて、流されなくなる |
| 暫定対応の残数 | 先送りの蓄積 | 減らずに増えている |
3行目が最も本質的です。同じ規模の改修に、以前より時間がかかるようになったなら、それは触りにくくなっているということです。EP.09 で「決定者に伝わる言葉」として挙げたのも、この指標でした。
1行目は エンジニアの引き継ぎ術 EP.07 で紹介した方法がそのまま使えます。変更履歴から機械的に出せるので、定期実行にしておくと手間がかかりません。
4. 触り続けられる設計
予防としてできることを整理します。新しい技術を使うことではありません。
- 1壊れたら気づける状態を保つ — テストと監視。これが最優先
- 2変更を小さく、頻繁にする — 大きな変更は怖くなり、頻度が下がる
- 3複数人が触る状態を保つ — レビューと担当の入れ替え
- 4判断の理由を残す — なぜそうしたかは、コードからは読めない
- 5依存を減らす — 外部への依存が多いほど、変えにくくなる
- 6流行に強く依存しない — 数年後に扱える人がいるか
2番目が効きます。変更を小さく保つと、変更が怖くなくなり、頻度が保たれる。逆に頻度が下がると、次の変更がさらに大きく怖くなる ── という悪循環に入ります。頻度は、触りやすさの原因でもあり結果でもあります。
6番目は誤解されやすい項目です。最新の技術を避けろという意味ではなく、数年後にその技術を扱える人がいるかという問いです。これは EP.08 で扱った移行の動機と同じ構造で、技術の良し悪しではなく、人の確保の話です。
1番目を最優先に挙げたのは、これが無いと他の対策が効かないからです。壊れたことに気づけないなら、変更を小さくしても頻繁にしても怖いままです。EP.03 で作った特性化テストは、移行後も維持する価値があります。
5. 記録を腐らせない
「ドキュメントを整備する」は正しい方向ですが、書いて放置すれば、実態とずれて誤解の原因になります。古い記録は、無い記録より悪いことがあります。
| 記録の種類 | 腐りやすさ | 対策 |
|---|---|---|
| 処理の説明 | すぐ腐る | 書かない(コードを読む) |
| 判断の理由 | 腐らない | そのときの判断として残す |
| 手順書 | 腐る | 使うたびに直す |
| 構成図 | 腐る | 生成できる形にする |
| 連携先の一覧 | 腐る | 記録から定期的に再生成(EP.07) |
1行目が重要です。処理の説明を文章で書くと、必ずコードとずれます。引き継ぎ EP.04 で扱ったとおり、コードから読めるものは書かない。書くべきは判断の理由です。
2行目の「判断の理由」だけが腐りません。「2026年時点でこう判断した」という事実は、後から変わらないからです。判断そのものが古くなっても、記録としては有効であり続けます。むしろ古い判断ほど価値があるとも言えます。当時なぜそう決めたかが分かれば、いま変えてよいかを判断できるためです。
6. 連載を振り返って
ここまで11回、読めないコードの解析から、テストによる固定、移行方針の決定、並行運用、データ移行、連携の棚卸し、特殊資産、組織の合意、退役、そして予防まで扱ってきました。
全体を通して繰り返し出てきたのは、技術的な難しさより、判断と合意のほうが難しいという構造でした。読み解きは LLM で速くなりました。テストの自動採取もできます。それでも移行が進まないのは、決められないからです。
そして最後の回で言いたいのは、この連載の内容を、次の10年のために使ってほしいということです。いま作っているシステムも、放っておけば同じ状態になります。能動的に維持しなければ、レガシー化は既定路線です。
レガシーとは古いシステムのことではなく、変えたいのに変えられないシステムのこと。だから、新しく作ったものも初日からレガシーになりうる。
レガシー化の本体は古さではなく触れなさ。移行直後こそ危うい(暫定対応・互換層・チーム解散)。触れる状態は測って見えるようにする(同規模の改修にかかる期間が最も本質的)。予防の最優先は壊れたら気づける状態で、次に変更を小さく頻繁に。記録は判断の理由だけが腐らない。ここまでの内容への反応や、掘り下げてほしい局面があれば、記事下のリアクションからお寄せください。続編は随時追加していきます。
この記事の感想を教えてください
あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。