マーチン・ファウラー氏「リファクタリング 2nd Edition」で20年ぶり内容刷新、サンプルコードはJavaScriptに。Web主体で書籍はエッセンシャル版の位置づけ

2018年4月5日

マーチン・ファウラー氏が20年ぶりに大幅に内容を刷新した書籍「リファクタリング 2nd Edition」を今年秋に出版する計画だ。サンプルコードはJavaからJavaScriptに変わる。また、コンテンツ本体はWebサイトとなり、書籍はそのエッセンシャル版の位置づけとなる。


リファクタリング」とは、ソフトウェアの機能追加や変更、性能向上などに備えるため、開発されたコードの外部に対する振る舞いは変更せず、より整理された、あるいは洗練されたコードに書き換えること、あるいはその手法のことを指します。

新装版 リファクタリング 既存のコードを安全に改善する

いまでは開発者の間で広く知られているこのリファクタリングについて、その目的や手法などを書籍としてまとめあげ、出版したことで啓蒙と普及に大きな貢献を果たしたのが、マーチン・ファウラー氏が執筆した書籍「Refactoring. Improving the Design of Existing Code.」(1999年)でした。

日本語訳の書籍は、オーム社から「新装版 リファクタリング 既存のコードを安全に改善する」が出版されています。

そしてそのマーチン・ファウラー氏が約20年ぶりに新たなリファクタリングの書籍「リファクタリング 2nd Edition」を執筆中であることを、同氏のブログMartinFowler.comに3月27日付けでポストされた記事「Announcing the Second Edition of "Refactoring"」で発表しています。

Announcing the Second Edition of

全体構成は変わらないものの大幅な書き換えを実施

ファウラー氏は、執筆中の「リファクタリング 2nd Edition」は約20年前のオリジナル原稿を大幅に書き換えるものになっていると説明しています。

Despite this lack of change in the overall book structure, the changes to the words on pages is huge. Every chapter and refactoring has been rewritten, mostly from near scratch.

本書の構成自体の変更はそれほどでもないが、ページごとの文章の変更は大量にある。どの章も、どのリファクタリングも、ほとんどゼロから書き直されている。

その要因のひとつとして、2nd Editionではクラスを中心とした考え方を減らす方針があると。

The reorientation towards a less class-centered view is a large part of this. Although that may sound as simple as changing the name of "Extract Method" to "Extract Function", it did entail rethinking all aspects of every refactoring.

その大部分は、クラスを中心とした考え方を減らしていこうという方針転換によるものだ。これは「メソッドの抽出」を「ファンクションの抽出」に変えれば済むようなものに見えるかもしれないが、実のところどのリファクタリングについてもその側面について再考させられるものだった。

サンプルコードはJavaからJavaScriptへ

また、2nd Editionでの大きな変更点として、サンプルコードがJavaではなくJavaScriptで示されるようになったことがあげられます。

リファクタリングはプログラミング言語には依存しないものであり、それゆえにファウラー氏は執筆時点でもっとも多くの人に親しまれているプログラミング言語でサンプルコードを示そうと考えていました。その結果、JavaScriptを選んだとしています。

ただし、ファウラー氏は自身でJavaScriptを選択したものの、その結果については次のように心境を吐露しています。

Choosing JavaScript was deeply ironic for me, as many readers may know, I'm not a fan of it. [2] It has too many awkward edge cases and clunky idioms. ECMAScript 2015 (ES6) introduced a rather good class model, which makes many object-oriented refactorings much easier to express, but still has annoying holes that are built into the fabric of the language from its earliest days.

JavaScriptを選ぶというのは大いなる皮肉でもある。というのも、多くの読者がご存じと思うが、私はJavaScriptを好んでいないからだ。JavaScriptはあまりにも多くの特殊な例があり、用法も使いにくい。ECMAScript 2015(ES6)で多少ましなクラスモデルが導入されてオブジェクト指向でのリファクタリングが表現しやすくなってはいるが、登場当初から言語に絡んだやっかいな問題は残っているのだ。

Webがコンテンツの本体になり書籍はエッセンシャル版に

リファクタリング 2nd Edtionでもっとも大きく変わるのは、そのコンテンツの提供方法です。ファウラー氏は、2nd EditionではWebで提供されるコンテンツが本体であり、紙の書籍はそこから一部を抜き出したエッセンシャル版にすると宣言しています。

I think of the canonical form of this book as the web site. The paper book is a selection of material from the web site, arranged in a manner that makes sense for print. It doesn't attempt to include all the refactorings in the canonical book, particularly since I may well add more refactorings to the canonical web book in the future.

本書の正式な形態はWebサイトになると私は考えている。紙の書籍はWebサイトから選んだ内容を印刷にふさわしい形でアレンジしたものとなる。正規版(であるWeb)にあるすべてのリファクタリングを入れるつもりはない。というのも、将来にわたって正規版のWebにはさらにリファクタリングを追加していくであろうからだ。

ファウラー氏は、紙の書籍を購入した読者はWebサイトへもアクセス可能になると説明しており、またWebサイトは出版社であるピアソンによって構築されると説明されているため、リファクタリング 2nd Editionの本体となるWebサイトは有償の会員登録制サイトになるのではないでしょうか。

そしてこれはもちろん英語によるオリジナル版での提供形態ですので、日本語版が出版されるときに日本語版Webサイトが用意されるかどうかは未定のはずです。とはいえ、日本語版を出す出版社の動きに期待したいですね。

ファウラー氏は執筆の進行具合について、すでに過去1年以上この執筆をしており、現時点ではファーストドラフトを査読に出しているところと説明。大きな問題がなければ今年、2018年の秋には書籍の出版とWebサイトの公開が行われる計画とのことです。

追記(2018/9/20)ついに日本でも2nd Editionが出版されます。

関連記事

あわせて読みたい

プログラミング言語




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本