オブジェクト指向における
再利用のための
デザインパターン 改訂版

Erich Gamma,Richard Helm,Ralph Johnson,
John Vlissides 著
本位田 真一,吉田 和樹 監訳
ソフトバンク パブリッシング 発行
1999年11月
414ページ+CD-ROM
5040円(税込)
ソフトウェアアーキテクチャ
ソフトウェア開発のためのパターン体系

Frank Buschmann,Regine Meunier,Hans Rohnert,Peter Sommerlad,Michael Stal 著
金澤 典子,水野 貴之,桜井 麻里,関 富登志,千葉 寛之 訳
近代科学社 発行
2000年11月
454ページ
4830円(税込)
プログラムデザインのためのパターン言語
—Pattern Languages of Program Design選集
PLoPD Editors 編

直田 繁樹,長橋 賢児,名取 万里,吉田 裕之,渡瀬 慎一郎 訳
細谷 竜一,中山 裕子 訳・監訳
ソフトバンク パブリッシング 発行
2001年7月
511ページ
4830円(税込)
マルチパラダイムデザイン
James O. Coplien 著
金澤 典子,平鍋 健児,羽生田 栄一 訳
ピアソン・エデュケーション 発行
2001年12月
291ページ
3990円
入門 統一プロセス
Kendall Scott 著
テクノロジックアート 訳
長瀬 嘉秀,今野 睦 監訳
ピアソン・エデュケーション 発行
2002年10月
167ページ
2310円(税込)
XP エクストリーム・
プログラミング入門

Kent Beck 著
永田 渉,飯塚 麻理香 訳
長瀬 嘉秀 監訳
ピアソン・エデュケーション 発行
2000年12月
190ページ
2205円(税込)
リーンソフトウエア開発
アジャイル開発を実践する22の方法

Mary Poppendieck,Tom Poppendieck 著
平鍋 健児,高嶋 優子,佐野 建樹 訳
日経BP社 発行
2004年8月
307ページ
2520円(税込)
アジャイルと規律
ソフトウエア開発を成功させる
2つの鍵のバランス

Barry Boehm,Richard Turner 著
河野 正幸,原 幹,越智 典子 訳
日経BP社 発行
2004年8月
317ページ
2520円(税込)
初めてのアジャイル開発
スクラム、XP、UP、Evoで学ぶ反復型開発の進め方

Craig Larman 著
越智 典子 訳
ウルシステムズ 児高 慎治郎,
松田 直樹 監訳
日経BP社 発行
2004年9月
423ページ
2520円(税込)
ピープルウエア 第2版
ヤル気こそプロジェクト成功の鍵

Tom DeMarco,Timothy Lister 著
松原 友夫,山浦 恒央 訳
日経BP社 発行
2001年11月
328ページ
2310円(税込)

設計はパターンから勉強してみよう

 よく「分析/設計」などとひとくくりに語られることが多いですが,分析と設計の間には埋められない溝とは言わないまでも,明確な境界があると私は思っています。分析は,事実を解明してはっきり見えるようにするという視覚化の作業であるのに対し,設計は課せられた多数の制約条件をクリアする解を見つけるという創造の作業なのです。設計者には,この制約条件をクリアするための知識が必要になります。当然,プログラミング言語やOSについての知識も必要です。まずはPart1で紹介したような本を読んで,こうした基礎的な知識を身に付けてください。ろくな基礎知識もないのに設計を行うなんて,実装する側から見れば迷惑以外の何物でもありません。

 基礎固めができたら,設計パターンに関する本を読むとよいでしょう。お薦め書籍の一冊目は,定番中の定番「オブジェクト指向における再利用のためのデザインパターン 改訂版」です。俗にGoF(ゴフ:Gang of Four)本とも呼ばれています。概論,事例,パターン・カタログの三つで構成され,パターン・カタログばかり読む方が多いのですが,この本の本質的なところは,前半部分に集中しています。有名な「インタフェースに対して実装せよ」という格言も,この前半で述べられています。

 次は,アーキテクチャ・パターンをまとめた「ソフトウェアアーキテクチャ」を読むのがよいでしょう。GoFのデザインパターンを違う名前やカテゴリでまとめて説明しているのを見ると,「同じ構造のパターンでも,視点によってこうも変わるのか」と感心するのではないでしょうか。

 「プログラムデザインのためのパターン言語」もお薦めの一冊です。この本は,ソフトウエア・パターンのコミュニティに寄せられた論文の中から比較的グレードの高いパターンを選んで収録したものです。設計からソフトウエア開発組織までの広範な領域をカバーしていて大変お得な感じです。特に本書で取り上げている“組織パターン”は,設計とは少し離れますが,XPの原型とも言われており,ぜひ目を通してもらいたい内容です。

 さらに,この組織パターンの著者であるJames. O. Coplienが著した「マルチパラダイムデザイン」も設計者が読むべき本として外せません。設計をするうえで考慮すべき「共通性と可変性」について細かく記していたり,本当の意味での「関心の分離」は何なのかということに気づかせてくれたり,と得るものは多いはずです。私はこの本を読んで,GoFのデザインパターンの「Builderパターン」の意図するところが初めて理解できました。

開発プロセスを学んで開発の手順を知る

 分析や設計の大まかな目的や意図については,先に述べしましたが,より具体的なところを知りたい場合は,開発プロセスを学ぶ必要があります。UMLのクラス図をとってみても,どの程度詳細なものを描けばいいかまでUMLの仕様書に書いてあるわけではありません。どんな順番で,何を行って,何を作るかについては,開発プロセスや開発方法論などと呼ばれるもので決めているのです。

 開発方法論とは何かを学ぶ際には,最初にUP(Unified Process:統一プロセス)を学ぶことをお勧めします。そしてそのときに読んでいただきたいのが「入門 統一プロセス」です。簡潔にまとめられているので,まず第一歩としてソフトウエア開発の全体像を知るのに最適な本ではないでしょうか。この本を読むと,ソフトウエア開発ではどのような人々がどのような作業を行い,どんな成果物が作成され,その作成された成果物同士がどのように結びつくかというのが理解できます。

 開発プロセスの中で最近注目を浴びているのが,アジャイル・ソフトウエア開発プロセス(以下アジャイル)です。これは,ソフトウエアをより手早く,無駄なく作る方法論全般を指す言葉です。その中でも代表的な方法論と言えるのがXP(Extreme Programming)です。

 XPを学ぶならば,やはりXPの提唱者の一人であるKent Beckが著した「XP エクストリーム・プログラミング入門」から読みはじめるのがよいでしょう。すでにシリーズとして10冊以上出版されていますが,その出発点としてぜひこの本を読んでいただきたいものです。とくに第8章の「基本原則」をよく読んでください。私としては,この章こそがXPの神髄だと思っています。

 ちなみに,本号が発売されるころには,この本の第2版が買えるようになりそうです。まだ発売されていないのでインターネット上の情報だけが頼りなのですが,かなり内容が見直されているようです。どんな内容になるのか,楽しみですね。

 UPとXPを理解したら,そのほかのアジャイルの本に進みましょう。ここではアジャイルに関する3冊の本を紹介します。「リーンソフトウエア開発」は,「トヨタ生産方式」の研究から生まれた「リーン(無駄のない)開発」の原則をソフトウエア開発に活用する方法を,22個の「思考ツール」という形で解説しています。「設計が終わるまで開発に取りかからない」といった製造業を手本にしたソフトウエア開発の“常識”は,当の製造業では20年以上前に捨てられている,などアジャイルに懐疑的な人でも思わず納得する内容です。アジャイルで開発を行いたいのに顧客や上司の了解が得られない場合に,この本を渡してみてはいかがでしょうか。

 「アジャイルと規律」は,リスク・ベースの開発プロセスとして,これまで広く使われてきたウォータフォール型(本書では計画駆動型という言葉が定義されている)と,アジャイルの長所短所を見極めて,組み合わせていく方法が具体的に書かれています。学術書でもあり実践書でもあるというのが,この本の特徴です。ウォータフォール型の経験しかないプロジェクト・マネージャに,アジャイルの要素を取り込んでもらうよう説得するのにも使えそうですね。

 「初めてのアジャイル開発」は,タイトルの通り開発者,特にマネージャに向けてアジャイル開発の進め方の基本を紹介する本です。広くアジャイルに関する見識を広めたいならば,こちらの本を読むことをお勧めします。新たに開発プロジェクトを立ち上げようとしているなら,この本を読むことで開発プロセスの設計を行うヒントがつかめるのではないでしょうか。

 アジャイルの特徴として,プロジェクトに参加している人たちのモチベーションについて言及している点があります。このあたりのことを掘り下げたい方には,すでに古典となった感のある「ピープルウエア 第2版」を読むことをお勧めします。この本を読めば「ソフトウエアを作っているのは人」であることを強く認識できるでしょう。先ほど紹介した,「構造化分析とシステム仕様」の同じ著者の本とは思えないほどです。

 ここまでアジャイルの本を中心に取り上げてきましたが,「ウォータフォールについては知らなくてもいいの?」と思った方もいらっしゃるかもしれませんね。ご安心ください。アジャイルの本のほとんどは,比較対象としてウォータフォールを引き合いに出して説明しています。したがって,これらの本を読めばウォータフォールのことも理解できるというわけです。