Field Map中堅エンジニアの地図

古いシステムを一度に作り直すのは、多くの場合うまくいきません。
継ぎ目で分け、並べて動かし、照合して、戻せる形で少しずつ移します。

一度に作り直す危うさ

「今と同じものを、新しい技術で作り直す」は、簡単そうに聞こえる計画です。版を上げて延ばせるなら、先にバージョンアップの計画を検討します。

少しずつ置き換える(ストラングラー・フィグ)

古いシステムの横で新しいシステムを育て、振る舞いを少しずつ移していくやり方です。この考え方で必要な 4 つの活動を、Fowler の同僚たちがまとめています(順番は、続く順という意味ではありません)。

    出典: Martin Fowler「Strangler Fig」(2024 年 8 月 22 日)

    置き換えのパターン

    出典: Ian Cartwright・Rob Horn・James Lewis「Patterns of Legacy Displacement」・「Feature Parity」。日本語の短い名前は、このサイトでの呼び方です。

    置き換え方の種類

    練習: 古い勤怠のシステムを、どの順で移すか 考え方のヒント

    あおば商事の 2012 年からの勤怠のシステム(作り物)を、新しいシステムへ移す順番を、最初から考えます。矢印は「データを作る機能 → 使う機能」です。機能を選んで「新へ移す」を押してください。片方だけ移すと、つなぐ橋が要ります。旧の写しを新が読む橋(青)は 1 点、新で作ったデータを旧へ書き戻す橋(橙)は 2 点として数えます。まとめて選ぶと、一度に移せます。

    旧どうし旧の写しを新が読む(1 点)新から旧へ書き戻す(2 点)新どうし★ お金に直結する大事な所

    移した記録

      並行稼働と現新比較

      新しいシステムを動かしながら、古いシステムも動かし続け、同じ入力の結果を比べます。比べる項目と、どこまで比べたら終えるかを、使う側と一緒に先に決めます。一部の利用者から出す基本は Stack Map「本番への出し方と、戻し方」へ。

      データの移行(リハーサルと照合)

      IPA のガイドが、データ移行で問題が起きやすい代表的な観点として挙げている 6 つです。見積もりでの扱いは見積もりと計画「作業の分け方」、リスクとしての扱いはリスクと課題「リスク管理表」へ。

      練習: 移したデータを照合する 考え方のヒント

      照合は、件数 → 合計 → 人ごと → 日ごと、と粗い所から細かい所へ進めます。差が見つかったら、どちらが正しいかを、決まりに照らして決めます。人・日付・数字は作り物です。

      機能の切り替えの旗(フィーチャーフラグ)

      コードを変えずに、だれに・どの機能を出すかを切り替える仕組みです。置き換えでは、新しい部分を少しずつの人に出し、何かあればすぐ戻すために使います。旗には種類があり、それぞれ持ち方と寿命が違います。

      Pennant での書き方の例(作り物) 考え方のヒント

      
        

      戻せる切り替え(試す) 考え方のヒント

      新しい打刻の仕組みを、フラグで段階的に広げます(人数と日数は作り物)。段と、書き戻しの橋のあり・なしを選び、「ここで旧に戻す」を押してください。元に戻せるか(切り戻し)は、戻した先にデータがあるかで決まります。

        データの形 考え方のヒント

        置き換えの間は、旧と新の対応・照合の結果・どこで動いているか・どの橋があるか、を記録として持つと、だれでも今の状態に答えられます。表と列は一例です。

        落とし穴

        置き換えで、よくはまる所です。返していない技術的負債が置き換えの理由になっているなら、技術的負債の返し方もあわせて読んでください。

        AI 時代の置き換え

        AI は、古いコードを読む・変換の下書きを作る、を速くします。どちらが正しい動きかを決めること、照合の数字で確かめることは、人とチームの仕事です。

        チェックリスト

        置き換えの計画を見直したら、チェックを付けてください(この端末にだけ残ります)。考え方のヒント