リファクタリングの語源

2003 年 9 月 10 日

リファクタリングという言葉はどこからきたのでしょうか?

この疑問はリファクタリングに関する書籍を執筆しているときに何度か湧いてきました。この用語は比較的狭いコミュニティ内で使用されていることを知っていたので、リファクタリングの語源を調査するために、このグループのメンバー(Ward Cunningham、Kent Beck、Bill Opdyke、John Brant、Don Roberts、Ralph Johnsonなど)に話を聞いて、この用語を考案した経緯を尋ねました。

最も一般的な答えは数学における因数分解の概念から来ているというものです。x^2 + 5x + 6 などの式は、(x+2)(x+3) と因数分解できます。因数分解することで、多くの数学演算が容易になります。明らかに、これは 18 を 2*3^2 と表現することとほぼ同じです。プログラムを論理的にまとめると、よくファクター化されたプログラムになるという話を聞いたことがあります。

リファクタリングの考案者に尋ねたところ、一般的な答えは彼らはそれがどこから来たのかは知らないということでした。用語自体は昔から存在しており、どこから来たのかはわかりません。

明確な答えを教えてくれたのは Bill Opdyke であり、リファクタリングに関する 最初の論文 を執筆しました。彼は Ralph Johnson と散歩中に交わした会話を思い出しました。話題は当時流行していたソフトウェアファクトリーの概念についてでした。彼らは、ソフトウェア開発は 製造よりも設計に近い と考え、ソフトウェアファクトリーと呼ぶのがより適切だと推測しました。リファクトリーは Ralph と彼の同僚が使用する コンサルティング企業 の名前になっています。

現在リファクタリングと呼んでいるものの基礎は Smalltalk コミュニティから来ています。ただし、プログラムのファクター化という比喩は Forth コミュニティにも由来します。 Bill Wake は、Thinking Forth(1984 年に Leo Brodie が執筆した書籍)の中で「リファクタリング」という言葉が初めて印刷で言及されたことを発見しました。この言葉の使用は Forth コミュニティから Smalltalk コミュニティに伝わったのではなく、独立して発展したとほぼ確信しています。