リファクタリングか、リライトか【後編】
「リファクタリング」ではなく「リライト」を選ぶべき場面とは? 利点と欠点
アプリケーションの抜本的な改革を目指して、ソースコードを一から書き直す「リライト」は、困難を伴うと同時に、さまざまなメリットをもたらす。細かい修正で済ませる「リファクタリング」との選択のポイントとは。
運用を続けてきたアプリケーションのソースコードは、変更を重ねるうちに複雑化し、開発速度を優先したことで発生する将来的な負荷「技術的負債」を生む。この問題に対し、開発者は既存のソースコードの挙動を変えずに部分的に手直しして改善する「リファクタリング」か、全てを作り直す「リライト」かを選択することになる。リファクタリングと比較して、リライトにはどのようなメリットとデメリットがあるのか。自社のプロジェクトに適した手法をどのように見極めればよいのか。その判断基準を解説する。
リライトのメリットとデメリット
併せて読みたいお薦め記事
連載:リファクタリングか、リライトか
コーディングのヒント
複雑で見通しが悪いソースコードを読み解いてリファクタリングする代わりに、ソースコード全体を新たに書き直すリライトを実施する選択肢もある。一から機能を再実装するため、リライトは問題を根本から解決できる単純明快な手法のように思えるが、メリットばかりではない。開発体制や費用、プロジェクトそのものに大きな影響を及ぼし得る、特有の課題も存在する。
リライトのメリット
メリット1.新機能の実装につながる
新しい技術の導入や機能実装といった要望に応えることは、既存ソースコードの改修では対処が難しい。ソースコードを一から書き直すことで、新しい利用者や市場、技術に接触できる可能性が生まれる。リライトは一般消費者向けのアプリケーションをデスクトップアプリケーションからWebアプリケーション、モバイルアプリケーションに移行させるための手段になり得る。
メリット2.クリーンな状態で再出発できる
リライトによって、開発者は自身が扱いやすい技術を用いて開発を始められる。この利点は、企業の合併や買収後には特に魅力的だ。クリーンな新プロジェクトは、開発者が自身の腕を奮って代表作を完成させる好機になる。同時に、積み重なった技術的負債を解消するチャンスでもある。
メリット3.最新技術への適応力を高める
アプリケーションの土台となっている技術やプログラミング言語、設計思想などを、現代的なものに刷新する機会を創出することもリライトのメリットだ。これによって将来的に新しい技術や機能を追加しやすくなるレガシーソースコードを一掃することで、現在のアプリケーションと、将来利用可能になる最新の技術の間にあるギャップを埋めることが可能だ。
リライトのデメリット
デメリット1.時間がかかりやすい
リライトは、厳格な要件に基づいて新しいアプリケーションを開発することに等しく、概して時間がかかる。ソースコードを再構築するための期間を確保できる場合にのみ、リライトに踏み切るのが賢明だ。
デメリット2.新たな欠陥を生む可能性がある
古いソースコードはただでさえ質が低い上に、リライト中にもさらに悪化していく可能性がある。リライトチームが古いソースコードを調査したり、そこから必要なソースコードをコピーしたりしている間にも、保守チームは稼働中のアプリケーションのソースコードを修正し続けている。保守チームが修正の過程で意図せず欠陥を組み込んでしまうこともあり、さらにそれを修正するための場当たり的な対処が、ソースコードの品質をさらに悪化させる可能性がある。
デメリット3.さらに手に負えないソースコードになる可能性がある
自動化ツールを使ってアプリケーションのソースコードを別のプログラミング言語で実装し直す方法は、リライトにおける有力な選択肢であり、時間を節約できる可能性がある。だが自動化ツールが生成するソースコードは、しばしば異なるプログラミング言語の概念を無理やり混ぜ合わせようとするため、人間にとって読みにくく、保守しづらいものになることがある点には注意が必要だ。
リファクタリングかリライトを選ぶ際の判断基準
開発チームは、最終的に複数の要素を考慮してリライトかリファクタリングかを選択すべきだ。
考慮点1.時間
リファクタリングは段階的に改善を進める手法であるため、納期が厳しいプロジェクトや継続的デリバリー(アプリケーションに加えた変更を、常に本番環境へリリース可能な状態に保つ開発手法)が求められる場合に適する。これに対してリライトは、より大掛かりで時間を要する抜本的な改善だ。チームは新しいソースコードを書き直す作業と並行して、古いコードベースの保守も続けなければならない。プロジェクトのスケジュールやチームの経験、リスク許容度を加味して、最も現実的なアプローチを選択する必要がある。
考慮点2.目標
企業の長期的な目標は、判断における重要な考慮事項だ。単に保守性を高めたいだけならば、リファクタリングが有力な選択肢になる。現在のコードベースでは実現不可能な新技術の導入や新規市場への参入を目指しているのであれば、リライトを選択すべきだ。
考慮点3.予算
リファクタリングは、新機能の開発と並行して段階的に実施できるため、初期投資を抑えることが可能だ。対照的に、リライトはより多くの予算を必要とすることが一般的だ。リライトでは2つのコードベースを同時に保守する必要があり、リライトが完了するまで新機能の提供が滞る可能性もある。
考慮点4.アーキテクチャ
コードベースの設計思想も重要な判断材料だ。アーキテクチャは健全だが実装に問題がある場合、ソースコードを一から書き直さず、リファクタリングによってソースコードの品質を回復できる。アーキテクチャが時代遅れになっていたり、現代の開発手法やビジネスプロセスに順応できなくなっていたりする場合は、望ましい技術を導入するためにリライトに踏み切るべきだ。
どちらを選べばよいのか
リファクタリングが適しているケースは以下の通りだ。
- 時間や予算に制約があるプロジェクト
- アーキテクチャは健全だが、実装が整備されていないアプリケーション
- 継続的デリバリーに取り組んでいるプロジェクト
リライトが適しているケースは以下の通りだ。
- 使用中のツールや技術を根本的に変更する必要があるアプリケーション
- 新しい市場や利用者層の開拓を目指すプロジェクト
- 2つのコードベースを同時に保守できる人員と予算があるプロジェクト
Copyright © ITmedia, Inc. All Rights Reserved.
本記事は制作段階でChatGPT等の生成系AIサービスを利用していますが、文責は編集部に帰属します。
TechTarget.AI
TechTarget.AI編集部は生成AIなどのサービスを利用し、米国TechTargetの記事を翻訳して国内向けにお届けします。
この記事の著者
関連記事
新着ホワイトペーパー PR
-
製品資料
[株式会社MatrixFlow] 「物流リソース最適化」ガイド:人員・配車・傭車を出庫依頼の確定前に決めきる -
製品資料
[株式会社キーエンス] なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは -
製品資料
[株式会社セールスフォース・ジャパン] 「CRMは設計と無関係」は本当か? PLMとの融合で実現する高速開発 -
事例
[日本ヒューレット・パッカード合同会社] AIエージェントの時代にどう備える? 「新たな働き手」を支える3要素とは -
製品資料
[日本ヒューレット・パッカード合同会社] “横並びの自動化”から脱却、AI活用で生産性と競争力を高める秘訣
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
ChatGPTは“検索しまくり”でGeminiは“淡泊”? データが明かすAIの裏側
-
2
なぜ「全社配布Copilot」は使われないのか? 失敗に学ぶAI定着
-
3
法務と開発者で「言葉が通じない」問題 トヨタやソニーが語るOSS管理の真実
-
4
「IBM iはDXのボトルネック」は誤解 意外と知らない今風モダナイズの効果
-
5
「朝8時にバッチが終わらない」データ爆発の危機をJPX総研はどう乗り越えたか
-
6
損保ジャパンはなぜ「COBOL」を捨てなかったのか? 脱メインフレームの真相
-
7
AI導入後に発覚する「社内文書を読めない」問題 情シスは何を直せばいい?
-
8
なぜ「Gemini 4 Argon」は出遅れたのか? Googleが狙う“逆転のシナリオ”
-
9
「中堅・中小企業のネットワーク・セキュリティ運用実態」に関するアンケート
-
10
AIの導入効果はどう測る? DMM.comのエンジニア組織に学ぶ効果検証のノウハウ
ホワイトペーパーランキング PR
-
1
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
2
家庭用Wi-Fiルーターの業務利用は危険? 避けるべき理由と具体的な対策
-
3
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
-
4
プログラミング不要で誰でも実現できる、ネットワーク運用管理の自動化とは
-
5
財務部門がAIを最大限に活用する方法 無駄のない戦略的リーダーシップへの道
-
6
LLMが兵器化? 元FBI高官が鳴らす警鐘とセキュリティツール統合のポイント
-
7
なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは
-
8
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
-
9
「オンプレミス回帰」せざるを得ない“合理的な理由”
-
10
“あのファイル転送”で暗躍するノーウェアランサム
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー