リファクタリングはどこからやってきた?

この疑問は、私が『リファクタリング』の執筆中に何度か頭をよぎりました。この用語は比較的小さなコミュニティ内で使用されていることを知っていたため、彼ら(ウォード・カニンガム、ケント・ベック、ビル・オプダイク、ジョン・ブラント、ドン・ロバート、ラルフ・ジョンソンなど)にリファクタリングの語源について話を聞くことにしました。彼らはどこから用語の着想を得たのでしょうか。

リファクタリングが数学の因数分解(ファクタリング)に由来するのは明らかです。たとえば、x^2 + 5x + 6は(x+2)(x+3)に因数分解できます。因数分解することで、数学的な演算を大幅に簡略化できます。18を2*3^2にするのも同じことです。プログラムを論理的に意味のある単位に分解できたことを「うまく因数分解できた」と表現している人がいるというのはよく耳にします。

リファクタリングの考案者たちに用語の由来について質問したところ、口をそろえて「知らない」という答えが返ってきました。以前から使われてきたはずですが、その由来については誰も把握していなかったのです。

確かな回答がビル・オプダイクから得られました。彼はリファクタリングに関する最初の学位論文を書いた人物です。彼は散歩中にラルフ・ジョンソンと交わした会話を覚えていました。彼らは当時流行していた「ソフトウェア・ファクトリー」の概念について議論していました。彼らは、ソフトウェア開発は製造よりも設計に近いため、「ソフトウェア・リファクトリー」と呼ぶほうが適切だと考えました。なお、「リファクトリー」はラルフたちのコンサルティング会社の社名に採用されています。

現在「リファクタリング」と呼ばれる手法の基礎はSmalltalkコミュニティに由来します。ただし、プログラムを「因子分解する」という比喩表現は、Forthコミュニティでも用いられていました。ビル・ウェイクの調査によると「リファクタリング」という用語がはじめて印刷物に登場したのは、レオ・ブロディの著書『Thinking Forth』(1984年)だそうです。ただし、ForthコミュニティからSmalltalkコミュニティに伝播したわけではなく、それぞれが独立して発展したと私たちは考えています。