中規模〜大規模プロダクトを安全にリファクタリングする方法|東京のWEB制作会社・ホームページ制作会社|株式会社GIG
BLOG
ブログ
中規模〜大規模プロダクトを安全にリファクタリングする方法
2025-01-29 制作・開発
株式会社GIGのSales事業部でプロダクトエンジニアをしているちいかた(片田)です!
プロダクト開発においてリファクタリングって重要ですよね。
0→1の初期リリースにはとにかくスピード感が大事なので、技術の選定やシステムデザイン、アーキテクチャの設計よりもとにかく早く作ることを重要視することもあり、そうしたプロダクトを数年運用すると必ず負債の返済という壁にぶち当たると思います。
単純に技術の移り変わりにより、開発当初はモダンなスタックでベストな選択肢であったものが、現在は陳腐化してしまい負債になっていることもよく見かけます。
まさに直近数ヶ月に及ぶ自社プロダクトの大規模リファクタリングをしていた私ちいかたが、数年運用した中規模〜大規模プロダクトを安全にリファクタリングする方法を解説します。
なぜリファクタリングが重要なのか
エンジニアならリファクタリングの重要性を日々感じていると思うので、ここではあえて非エンジニア向けの内容をお話しします。
私が考えるリファクタリングの重要性は、主に2点あります。
1. プロダクトのメンテナンスコストが下げられるため、改修にかかる工数を下げたりバグの発生率を下げられ、安全にビジネスを行える
日々の改修で少しずつリファクタリングするならまだしも、機能開発を止めて全員で大規模でリファクタリングするとなった場合、目にみえるプロダクトの成長がなくなったように見えます。
しかし、リファクタリングを先延ばしにし続けると、以下のようなビジネス上のリスク・損失が生じることもあります。
・改修スピードが落ち、競合他社との機能開発競争で不利になる
・テストやバグ対応の工数が増え、開発コスト・人件費がかさむ
・開発チームのモチベーション低下により、離職リスクが高まる
逆に、適切なタイミングでリファクタリングを行うことで
・バグ対応や機能追加にかかる時間が短くなる
・長期的に安定したリリースができ、ビジネスの拡張性が高まる
・開発者が最新の技術を学びやすくなり、優秀なエンジニアを惹きつけやすくなる
といったメリットを享受できます。
リファクタリングのタイミングを逃し続けてしまうと、負債はどんどん膨らんでしまうため、開発メンバーと会話をすることで適切なタイミングでリファクタリングを実施する必要があります。
2. 常に選定した技術を見直し続けることで、技術力の高い優秀なエンジニアを採用できる可能性が高まる
良いプロダクトを作るうえで優秀な技術者は必要不可欠であると考えます。
新しい技術をキャッチアップするだけが優秀なわけではありませんが、私の観測上は新しい技術をキャッチアップし続け、プロダクト開発に落とし込んでいるエンジニアに優秀な人が多いと感じています。
技術は常に進化しているので、一昔前では実現できなかったことや、実現するためには多くの労力が必要だったことも最新の技術を使えば簡単に品質高く実現できたりします。
大規模なリファクタリングで技術選定も見直すことで、プロダクトの品質を高めるだけでなく、今後のエンジニア採用にも良い影響を及ぼすでしょう。
リファクタリングを進めるうえで重要なこと
ここからは実際にリファクタリングを進める開発メンバーの方に向けた内容をお話しします。
ビジネスメンバーとの合意がとれ、実際にリファクタリングを進めていくとなった際に重要だと思うのは、「リファクタリング前後でユーザーに提供している価値が変わらないか」、「既存のユーザーがリファクタリングの影響でサービスを利用できなくならないか」、そして「アプリケーションのソースコードのメンテナンス性が向上しているか」の3点だと思います。
実際に私も最初はそうだったのですが、いかに可読性が高く保守もしやすいディレクトリ構成にするかや、どんなライブラリ・フレームワークを使うかばかり考えてしまうのがエンジニアの性です。
でも、それらを達成するための前提条件として既存ユーザーに悪い影響を与えないかがあると考えていて、開発メンバーとしてはコードベースの改善と同じくらいの熱量で達成すべき内容だと思っています。
プロダクトを開発している側としては、リファクタリングをするとなると大仕事になりますが、プロダクトを使うユーザーとしては目にみえる変化は基本的にはありません。
そのため、言わずもがなリファクタリングをする前とした後でアプリケーションの挙動が変わらないことを担保することが大事です。
安全にリファクタリングする方法
自動テストによる動作担保
E2E(End-to-End)テストや、単体テスト・統合テストを活用してリファクタリング前後の動作差分を最小限に抑えます。
たとえば、以下のようなテストツールを用いると効果的です。
・Playwright:ブラウザ操作まで含めてE2Eテストが可能
・Jest / PHPUnit:言語ごとのユニットテストフレームワーク
「リファクタリング前」と「リファクタリング後」の比較テストを行うことで、既存ユーザーに影響が出そうな箇所を早期発見できます。E2Eテストを活用して、リファクタリング前後でアプリケーションの画面遷移や動作に差異が生じていないかを自動で確認できるため、人的工数を大幅に削減しながら品質を担保できます。
できる限り最小単位でリリースする
リファクタリングの対象範囲を「機能ごと」「モジュールごと」に細かく区切り、段階的にリリースしていく方法です。
・例1:管理画面のUIコンポーネントを先に刷新し、その後バックエンドロジックを段階的にリファクタリングする
・例2:コンテンツ詳細ページのみ先に刷新し、ページ単位でリファクタリングする
メリット
・リリースごとの影響範囲が小さいため、万が一問題が発生しても限定的ですむ
・リリース頻度が高くなるため、ビジネスサイドにも進捗を報告しやすい
・開発者の心理的ハードルが下がり、着実に負債解消を進められる
注意点
・機能間の依存関係を把握しておかないと、部分的なリファクタリングが逆にバグを生む場合がある
・事前にアーキテクチャを見直し、ある程度の疎結合を実現しておくと進めやすい
ブルーグリーンデプロイする
新旧2つの環境を並行して用意し、トラフィックを徐々に新環境に切り替える方法です。
・Blue:現在の本番環境
・Green::新しくリファクタリングした環境
ユーザーに切り替えがほぼわからない形でデプロイできるため、稼働中に障害が起きるリスクを最小化できます。もし新環境で問題が発生しても元の環境(Blue)にすばやく切り戻せるため、ビジネスへの影響が極めて少ないのがメリットです。
まとめ
大規模なリファクタリングは非常にコストがかかり、当面の新機能開発を止める必要があるため、ビジネスサイドから見ると「すぐに売上に直結しない施策」に思われがちです。しかし、長期的な視点で見ると、リファクタリングを怠って技術的負債を抱え続けるほうが、開発スピードの低下やバグ対応の増加、人材流出など、結果的に大きなビジネス損失を招く可能性があります。
私たちも数ヶ月にわたるリファクタリングを通して感じたのは、「適切なタイミングで負債を解消しないと、結局いつかもっと大きな代償を払う」ということです。開発当初は最速リリースに向けて技術選定や設計を短期志向に振り切るのも間違いではありませんが、ある程度成長した段階でプロダクトの土台を見直し、強固な基盤を再構築することが、将来的な機能拡張や新しいサービス展開において大きなアドバンテージになります。
さらに、最新の技術を取り入れることで、開発者の学習意欲やチームモチベーションを高める効果も期待できます。技術的に魅力ある環境をつくることで優秀なエンジニアが集まりやすくなり、プロダクトの質も自然と向上していきます。
より良いプロダクトを、より速く、より安全に届けるためにも、リファクタリングは「投資」として必要不可欠な要素だと考えています。
E2Eテストや段階的なリリース、ブルーグリーンデプロイなどの方法を適切に組み合わせることで、ビジネスへのリスクを最小限に抑えつつ、大きな負債を解消するチャンスになります。
もし大規模なリファクタリングを検討しているプロダクトがあるなら、ぜひ早めに着手してみてください。きっと、未来の開発チームとユーザーが大きな恩恵を受けられるはずです。
◇
株式会社GIGは、ナショナルクライアントからスタートアップまで、Webコンサルティング、UI/UXデザイン、システム開発など、DX支援をおこなうデジタルコンサルティング企業です。また、50,000人以上が登録するフリーランス・副業向けマッチングサービス『Workship』や、7,000人以上が登録するデザイナー特化エージェントサービス『クロスデザイナー』、リード獲得に必要な機能を備えたCMS『LeadGrid』、UXコンサルティングサービス『UX Design Lab』などを展開しています。
WebやDX支援のご相談はいつでもご連絡ください。
MA機能も備えたノーコードCMS「LeadGrid」を用いたWebサイト制作も承っております。
Web制作/Webマーケティングに関するご相談・ご依頼はこちら
会社紹介資料のダウンロードはこちら
また、株式会社GIGでは一緒に働くメンバーも募集中です!技術が好きなエンジニアも多く、モダンな技術に関しても常に情報交換しながら切磋琢磨しています。挑戦したいことにはどんどん挑戦できる環境なので、LeadGridの開発に少しでもご興味を持っていただいた方は、ぜひカジュアル面談でお話しましょう。
採用応募はこちら(GIG採用サイト)
採用応募はこちら(Wantedly)
片田 凌太
1997年10月生まれ。自動車のコネクティッドサービス開発や日本最大のコーヒーサブスクリプションサービス開発などの経験を経て2023年10月に株式会社GIGに入社。現在は、Webサイト制作からコンテンツSEO、問い合わせ管理、LP制作などWebマーケティングに必要な機能をもったCMS『LeadGrid』の開発チームに所属。