リファクタリング(りふぁくたりんぐ)情報システム用語事典

refactoring

» 2005年03月23日 00時00分 公開

 ソフトウェア・プログラムの保守性・再利用性を高めることを目的に、それが提供する機能仕様を変えることなく、内部構造を再構築(restructuring)するプログラミング・テクニックのこと。

 ソフトウェア開発・保守で、要求変更や障害対応などでプログラムの改版を繰り返しているとソースコードが冗長で複雑なものとなってしまうことが多い。また、初期段階において最適な設計だったとしても、前提となるプラットフォームやアーキテクチャが変更になったり、新たなテクノロジが登場したりなどの結果、そのプログラムが変更に対応しづらいものになってしまうこともある。

 こうしたプログラムの品質劣化を未然に防ぎ、将来にわたる機能拡張性の維持と保守作業の効率化を目的に、個々のプログラムを随時手直ししていくのがリファクタリングである。これはソフトウェアに機能を追加・変更するタイミングに併せて行われることもあるが、あくまでも“プログラムの外部の振る舞いを変えない作業”を指し、機能追加・変更とは別の概念である。また、システムの設計やアーキテクチャの変更を意味するものではない。

 具体的には、開発済み(多くの場合は動作中)のプログラムに対する、小さな変更(これ自体がrefactoringと呼ばれる)と振る舞いの保持・検証からなる一連の作業である。その技法は開発環境・言語によって微妙に異なるが、「メソッドの抽出」「メソッドの移動」「メソッド名の変更」「クラスの抽出」「委譲の隠ぺい」など、比較的シンプルなものである。

 リファクタリングを行うためには、まずプログラムの品質低下を招いている原因を特定し、それに対して適切なリファクタリング手法を選択しなければならない。さらに変更が影響を及ぼす個所を探し出す作業も求められる。これを手動で行うには専門的な知識や経験、そして最新の注意が必要となる。近年では、自動リファクタリング・ツールが登場し、Eclipseなどの環境に実装されている。

 テスト駆動開発XPなどにおいては、プロセスの一部としてリファクタリングが大きなウエイトを占めている。

参考文献

▼『リファクタリング――プログラミングの体質改善テクニック』 マーチン・ファウラー=著/児玉信、友野晶夫、平澤章、梅澤真史=訳/ピアソン・エデュケーション/2000年5月(『Refactoring: Improving the Design of Existing Code』の邦訳版)


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ