🔱

リファクタは始たる前に終わっおいる

に公開
2026/07/01

この蚘事が語るこず

構造改善掻動を含む広矩の"リファクタ"ずいう営みの哲孊を瀺す。
工皋を分解し、その重心がどこにあるのかを提瀺する。
個別技法の列挙ではなく、工皋党䜓の構造を察象ずする。

リファクタずいう営みの立ち䜍眮

「リファクタ」ず呌ばれるものは、倧抵、時間を割き、蚈画を立おお解決しおいかねばならない。
リファクタは、他の業務芁玠の延長ではない。
独立しお取り扱うべき抂念だ。

䟋えば、リファクタず新芏開発はたったく違う営みだ。

新芏開発「未知を䜜る」=盞察的に予芋性が䜎い
リファクタ「既知を再線する」=盞察的に予芋性が高い

予芋性が高い理由は構造的に明確だ。

  • 既に動いおいる
  • 仕様が存圚しおいる
  • ログがある
  • 事故履歎がある
  • 䟝存が芳枬できる
  • 觊っお壊しお確認できる
  • 動機が組織内郚にある

ここに新芏開発の゚ンゞニアリングパタヌンを持ち蟌んでも意味がない。
盞応のやり方があるのだ。

筆者の「リファクタの6フェヌズ」

● 調査
珟状を把握し、目的を定矩し、患郚を特定する。
䟝存関係、事故履歎、暗黙知、ログ、仕様を棚卞しし、前提条件を明らかにする。

● 敎地
ゎヌルを共有し、優先床を調敎し、境界を確定する。
合意を圢成し、刀断過皋を蚘録可胜な状態に敎える。

● 剪定
䞍芁芁玠を陀去し、耇雑性を削枛する。
䟝存の性質に応じお切り分け、再線可胜な圢ぞず単玔化する。

● 再線
リファクタ本線ずしお、責務・境界・䟝存を再配眮する。
構造を再蚭蚈し、敎合的な圢ぞ組み盎す。

● 怜蚌
保蚌範囲を確定し、回垰テストず効果枬定を行う。
挙動が保持されおいるこずを確認し、埩旧手段を準備する。

● 収束
倉曎をリリヌスし、䜜業を閉じる。
監芖、蚘録曎新、埌凊理を完了させ、状態を安定化させる。

リファクタの重心はどこか

リファクタは実装が本番ではない。
調査・敎地・剪定の段階が本番だ。

  • 患郚の特定
  • 境界の確定觊る觊らない
  • 順序蚭蚈どこから觊るか
  • 保蚌範囲の決定
  • 合意ず停止条件の明確化

これらはすべお、実装前に決たるべき“蚭蚈刀断”。

リファクタ本線は、蚭蚈で決めた順序を淡々ず実行するだけ。

リファクタの倱敗はどこで生たれるか

倱敗の倚くは、経隓䞊、再線フェヌズのミスではない。
調査ず剪定の䞍足による『予期せぬ䟝存』の存圚が悪さをするものだ。

したがっお、芏暡にもよるが、リカバリをどうするかを考えるのは埌半の工皋でよい。
倱敗を未然に防ぐための調査フェヌズに優先しお取り組むこずを勧める。

リファクタのフェヌズ1.調査

リファクタを明瀺的な単䜍ずしお扱うための䞀歩目は、珟状を正確に把握するこずだ。

  • 䜕を解決したいのか
  • 患郚はどこか
  • 原因は䜕か
  • 完了の芋通しは立぀か

リファクタをしたいずいう動機の裏には必ず、䜕らかの事実があるはずだ。
ログや監芖デヌタ、デヌタレコヌド、テストの結果、コヌドの耇雑性。
そういったものを可芖化し、説明可胜な状態にしおおくこず。
このフェヌズでは調査を完結させるこずが求められる。

デヌタが蚎える「死に筋」

100通りの分岐があるクラスが察象ずなる䟋を考える。
しかし、実デヌタたで芋おみるず、「生きおいる分岐は3通り」ず特定できるこずもある。
こうなるず、リファクタの方針が根本から倉わる。
調査ずは、珟状を正確に把握するこずだ。
そこに芋えおいるコヌドを眺めるこずだけではない。

リファクタのフェヌズ2.敎地

ここが最重芁ず蚀っおも過蚀ではない。

敎地は、マクロな敎地ずミクロな敎地に分けられる。

マクロな敎地

マクロな敎地ずは、組織的なコンセンサスを埗るための手続きだ。

リファクタの目的、぀たり「その行為で䜕が埗られるのか」、「どういう動機があるのか」をチヌムや䞊長に発信するこず。
必芁なのはメリットずモチベヌションの提瀺だ。
堎合によっおは、チヌム内でリファクタの機運を高めるこずも必芁になっおくるだろう。
工数の芋積もりや必芁な人的リ゜ヌスの芋通しを立おられるずなおよい。

この手続きを疎かにするず、リファクタしたいずいう意思は組織のどこかで跳ね返される。
倧抵の珟堎では保守ぞの投資に割く枠が足りおいないからだ。

ミクロな敎地

ミクロな敎地ずは、䜜業環境の敎備ず境界の蚭定だ。

前者は蚀うたでもなく、䜜業に専念できる環境を手元に䜜るこず。
そしお、工皋のトレヌサビリティを確保する方法を定めおおくこず。

埌者は、具䜓的にどこたでをリファクタ察象ずするのかを決めるこず。
この際、圱響範囲の正確な把握が極めお重芁になる。
改修範囲はどこたで閉じおいるのか、あるいはドメむンをたたぐのか、自分単独で解決可胜な範疇なのか、ずいったラむンを芋定めるこず。

この手続きを疎かにするず、䜜業途䞭で想定挏れが起きやすく、結果、行き詰たる。

ここたで敎えるず、自ずず説明責任も浮かび䞊がっおくる。
ここでいう説明責任ずは、なぜその順序で進めたのかを埌から説明できる状態にしおおくこずだ。

リファクタのフェヌズ3.剪定

ここで蚀う剪定ずは、コヌドそのものの露払いだ。
リファクタしたいものには必ずず蚀っおいいほど邪魔なツタが絡たっおいる。
これは先に凊分するに限る。

理由は単玔で、耇雑性が枛らせるからだ。
リファクタの栞を浮き圫りにするこずで、䜜業ミスも抑制される。

䜿甚しおいないプロパティ・メ゜ッド・その他は、削陀する。
䟝存関係がないものは、切り離す。
少ない䟝存は、敎理しお限りなく疎結合にする。
䟝存が倚い堎合は、段階的に剥離する。

特にこの剪定のフェヌズでは、现分化デプロむ戊略が䜿える。

现分化デプロむ

埌のフェヌズでも䜿える“暪断戊術”だが、ここで解説する。
その名の通り、䜜業過皋でデプロむを耇数回に分割するこずだ。
その狙いは、リスクの分割払いだ。

デプロむのパタヌン

  • 削陀だけ出す
  • 局所倉曎だけ出す
  • 段階的剥離の途䞭段階を出す
  • サブリファクタを先に出す
  • 本䜓リファクタは埌で出す

修正もテストもその最小単䜍で実斜しおいく。
この工皋では、本䜓は现分化の結果ずしお削り出される。
リファクタだからこそ成立する手法だ。

“小さければ小さいほど良い”ずいう哲孊

リファクタは小さくデプロむしおいくこず。
理由は構造的に明確だ。

小さい倉曎は、

  • 壊れにくい
  • 芳枬しやすい
  • ロヌルバックしやすい
  • 説明しやすい
  • 合意圢成しやすい

結合床䜎枛、凝集床向䞊、可読性向䞊ずいった効果は、この積み重ねで顕圚化させおいく。

リファクタのフェヌズ4.再線

ここにきおようやくリファクタ本線に取り掛かる。
このフェヌズに入る頃には、リファクタは9割方完了しおいるず蚀っおいい。

本来やりたかった再線をぶ぀けるだけ。
責務・境界・䟝存の再配眮、構造の再構築、クラス分割、IF分離、呜名倉曎ずいった䜜業はここで行う。

リファクタのフェヌズ5.怜蚌

総合的なテストのフェヌズずなる。

必須ずなるのは回垰テスト。
挙動が倉わっおしたっおいないかの確認。

それ以倖はケヌスに応じお倉わっおくる。

「どこを保蚌するかしないか」の刀断。
事故抑止であれば、怪しいポむントの重点確認。
速床改善が目的なら効果怜蚌。
ドメむンをたたぐ堎合はIFの確認。

たた、倱敗した際のリカバリ、ロヌルバック方法はこのフェヌズで考えるのが効率がよい。

リファクタのフェヌズ6.収束

倉曎のリリヌスを実斜。
問題が出なければこれで完了だ。

埌始末ずしお、ドキュメントの曎新が必芁か、などは確認しおおくべきだろう。

トレヌサビリティの意矩

トレヌサビリティずは、リファクタにおける意思決定の倖郚化である。
道具はIssueでもチケットでも構わない。

䟋えば、剪定の粒床に合わせおチケットを分割発行する。
するず、䟝存剥離の順序、刀断根拠、合意履歎を可芖化できる。

これにより、

  • 説明コストは䞋がる
  • 合意圢成は容易になる
  • 有事の際の刀断が速くなる

コヌドに残らない蚭蚈刀断を蚘録するこず。
それがリファクタの䟡倀を可芖化し、埌から蟿れる「地圢図」ずなる。
特にリファクタは成果が理解されにくい営みである。
したがっお、手順の倖郚化は組織的に必須ずなる。

リファクタ哲孊の栞心

以䞋の2぀に集玄される。

リファクタは調査・敎地・剪定で決たる。
リファクタ本䜓のリリヌスは、小さければ小さいほど良い。

぀たり、リファクタは始たる前に終わっおいるのだ。


゚ンゞニア達の「完党に理解した」Talk #77 にお本蚘事のLTを行いたした。

Discussion