大学出版部協会

 

リファクタリング

アジャイルソフトウェア開発技術シリーズ・応用編
リファクタリング

A5判 208ページ 並製
価格:2,750円 (消費税:250円)
ISBN978-4-501-55170-4 C3004
奥付の初版発行年月:2013年05月 / 発売日:2013年05月中旬

内容紹介

近年のソフトウェア開発には迅速・適応的・軽量が求められている。それに応えるべく登場したのがアジャイル手法である。すでに世界中で取り入れられ、数々の成果をあげている。本シリーズは、アジャイル開発技術を短時間で効率よく習得できるようにと考えられた実践的教科書で、基礎編と応用編から構成されている。あらゆるソフトウェア開発に必要な、プログラム言語、設計技術、開発プロセスを、全10巻の中で解説。基本的な解説、たくさんの応用例、ふんだんな演習問題と解答によって、理解が深まる。

前書きなど

 リファクタリングという技法は,アジャイル開発のプラクティス(実践手法)のひとつとして発展してきた。しかし現在では,リファクタリングという言葉そのものは,「コードをきれいにする」という程度の一般的な意味で,ソフトウェア開発者なら聞いたこと,使ったことがある方が多いだろう(正確な定義は本文参照)。しかし,その意義・意味をどれだけ正確に理解していただいているだろうか。
 よくある誤解の1つめは,技法も作法もなく,プログラマー個人の勘と経験でコードをきれいにすることを,リファクタリングとよんでいる場合である。リファクタリングには,プログラミング初心者であっても,安全にコードをきれいにするためのテクニックと手順がきちんと存在する。
 もう1つ,よくある誤解としては,リファクタリングを非常に小さいレベルでコードをきれいにするためだけの手法だと思っている場合である。たとえばメソッド内の条件分岐の構造をわかりやすくしたり,変数名を変更したりすることである。
 これも,もちろんリファクタリングの一種であるが,リファクタリングにはもっとさまざまな粒度のものも含まれる。クラス内で別メソッドをつくる,クラス間でフィールドやメソッドを移動する,クラス間の継承関係を変更する,さらにはデザインパターンの適用もリファクタリングのひとつである。とくにアジャイル開発では進化的設計が基本であるため,開発途中でソフトウェアの全体構造を変更する「アーキテクチャリファクタリング」を行なうことさえある。
 逆に,大きなレベルでのソフトウェアの構造変化のみを,リファクタリングと考えている場合もある。さらにこの場合は,「リファクタリングツール」とよばれる魔法のようなツールがあって,それを使えば,現状スパゲティ状態になっている構造がすぐにきれいになると誤解している場合もある。たしかにリファクタリングツールとよばれるものは存在するが,それはそんな魔法の道具ではない。小さいレベルのリファクタリングを安全に行えるように考えられたツールである。
 重要なことは,そのような小さいレベルのリファクタリングを積み上げることによって,大きな粒度の構造変更が行なえるということである。アーキテクチャリファクタリングも,小さいリファクタリングを着実に積み上げることで,初めて実施できる。
 これに伴って,ぜひとも認識して頂きたいことは,「設計を具現化しているのはコードである」ということだ。当然だと思われる方は,それで構わない。しかし,とくにウォータフォール的な開発になじんでいる方の一部には,設計とはUML(Unified Modeling Language)などを使って図を描き,さらに各メソッドをどのようにプラグラムするかというプログラミング指示書を書くことであり,実装者(プログラマー)は単純にそれをコードに変換するだけだと考えている人がいる。
 もちろん,UMLでクラス図を描いたり,設計書を書いたりすることも,設計という行為の一部である。しかしその設計の実体はどこにあるかといえば,コードにある。UMLやドキュメントはあくまでもモデルであり実体ではない。これはコミュニケーションの手段としてUMLやドキュメントの必要性を否定しているのではない。チームで設計の議論をするためにUMLを使ったり,今後のメンテナンスのためにドキュメントを残したりする必要はあるだろう。しかし,それはあくまでもコードのなかにある設計を人間にとってわかりやすくするための手段であって,コードとドキュメントのあいだに差異があれば,違っているのはつねにドキュメントの方である。
 つまり,いくらきれいな設計図があったとしても,コードがそれを具現化していなければ,よい設計のソフトウェアとはいえない。そのようなよくない設計(コード)をきれいな設計(コード)にすることが,リファクタリングである。行なっていることの1つ1つは,既存のコードから新規にメソッドを抽出したり,あるフィールドを別のクラスに移動したりという,単純なことである。しかし,それによってソフトウェアがきちんとコンポーネント化されたり,アーキテクチャレイヤー間の依存関係が疎になるなど,ソフトウェアの大きな構造を変えていることを念頭に置く必要がある。
 リファクタリングといえば,原典はマーチン・ファウラー著『リファクタリング』である。この書籍の内容は現在でも陳腐化していないし,本書で同じ内容を繰り返す必要もない。原典は「カタログ」として手元に置いていただきつつ,そのカタログに掲載されているリファクタリングを組み合わせた比較的大きなレベルの設計の変更を行ない,リファクタリングの意義や進め方を理解していただこうというのが,本書の目的である。

2013年3月
著者しるす


目次

第1章 リファクタリング概要
 1.1 ソフトウェアの2つの価値
 1.2 リファクタリングとは
 1.3 リファクタリングとアジャイル開発との関わり
 1.4 いつリファクタリングするか
第2章 既存コード改善手順
 2.1 改善に必要なステップ
 2.2 演習:基本的なリファクタリング
 2.3 演習:昨日追加
第3章 リファクタリングとパターン
 3.1 リファクタリングとオブジェクト指向
 3.2 演習:Template Methodの導入
 3.3 演習:Template Methodの応用
第4章 コンポーネントレベルのリファクタリング
 4.1 コンポーネント概要
 4.2 被参照側のリファクタリング
 4.3 参照側のリファクタリング
 4.4 レイヤーパターンへの適用
第5章 組織的なリファクタリング
 5.1 組織的なリファクタリングの導入
 5.2 今後の展開
演習問題
解答
索引


一般社団法人 大学出版部協会 Phone 03-3511-2091 〒102-0073 東京都千代田区九段北1丁目14番13号 メゾン萬六403号室
このサイトにはどなたでも自由にリンクできます。掲載さ>れている文章・写真・イラストの著作権は、それぞれの著作者にあります。
当協会 スタッフによるもの、上記以外のものの著作権は一般社団法人大学出版部協会にあります 。