ObjectSquare [2001 年 4 月号]

[書籍紹介]





これだけは読んでおきたい!
オブジェクト指向関係の文献ガイド


渡辺博之



   街の書店にはたくさんの「オブジェクト指向」本が並んでいます。しかも、最近は「UML」や「パターン」なども加わって、その占有スペースはより拡張される傾向にあるようです。せっかくオブジェクト指向に取り組もうとしても、こうまでたくさんの本があったのでは、自分に合った良書を探すだけで疲れてしまいますよね。そこで本稿では、そういった方々のお役に立てるよう、オブジェクト指向をいくつかのカテゴリに分け、それぞれに最適と思われる本を数冊ずつ選んで紹介して行きたいと思います。カテゴリも、初心者から実際に現場で活用しているエンジニア、さらには管理者といった多くの方々に役立つよう、幅広く設定してみたつもりです。とくにオブジェクト指向初心者には、各カテゴリから1冊ずつ選んで順に読み進んでいけば、ひととおりの知識が得られるように工夫を凝らしてみました。なお、私自身も、あくまで一開発者であって、書籍評論家や書籍マニアというわけではありません。したがって、ここで紹介する本は、私自身が実際に読み、しかも開発現場で役立ったと思えるものに限定しています。必然的に独断と偏見も入っていますので、その点はご了承ださい。
   また、当初この記事は組込み分野のエンジニアの方を対象に書いたものですので、一番最後の章については、組込み分野に特化した書籍を紹介しています。
   では、前置きはこのぐらいにして、早速紹介に入っていきましょう。




1.オブジェクト指向への招待

   まず、いちばん基本的な「オブジェクト指向って何?」かを理解するところから始めましょう。この分野に該当する本は、それこそ分厚いものから文庫本サイズのものまで数多くそろっており、選ぶのにとても苦労する分野の一つです。今回は、忙しい人でも電車の中で気軽に読めるような「薄い」「わかりやすい」をキーワードにして選んだ2冊と、コタツにでも入りながらよりヘビーにじっくりと読める1冊をピックアップしてみました。

オブジェクト指向アプローチ
−その全貌−
著者 :デビッド A.テイラー
監訳 :増永 良文、訳:寺島 哲史
発行 :アジソン・ウェスレイ
発売 :星雲社
ISBN :4-7925-9639-1
オブジェクト指向アプローチ −その全貌−

   オブジェクト指向とは何かを知りたい管理職や初心者にピッタリの本です。この本では、プログラミングレベルから従来のアプローチの問題点を指摘し、オブジェクト指向アプローチが生まれた理由とその良さを解説していきます。
   もともと管理職向けに書かれただけあって、全120ページととても薄く、しかも各段落ごとに短い要約まで付いているため、「なるべく時間をかけずにオブジェクト指向とは何かをおさえておきたい」という人には最適です。また、プログラミングレベルから入るとはいっても、あくまでも考え方の話であって、ソースコードのたぐいはいっさい出てこないので、日頃プログラムを書いていない人でも十分理解できる内容になっています。
   オブジェクト指向の概念以外にも、オブジェクト指向データベース、コンポーネント開発、新技術の導入に際してのリスクと効果の評価、今後のソフトウェア開発のあり方などが含まれており、たんなる技術解説に終わっていない点も本書の特徴です。
   おそらく本書のいちばんの効用は「オブジェクト指向を理解して欲しい上司へ謹呈する」といったあたりなのでしょうが、それだけではあまりにもったいないので、そんな場合でも差し上げる前にぜひ一度、自分でも読んでおくことをおすすめします。


オブジェクト指向狂詩曲
著者 :吉田 弘一郎
発行 :技術評論社
ISBN :4-87408-484-2
オブジェクト指向狂詩曲

   表紙に「TURBO C++/BORLAND C++による」と書いてあることからもわかるように、ずいぶん昔の本です。しかし、読みやすく、かといってビジネス本のようなダサダサな書き方じゃない、という意味ではいまでも十分魅力のある本です。
   この本はCプログラマの立場からオブジェクト指向の概念をボトムアップ的に説明してくれるので、設計や実装を職業としている人にとっては、先に紹介した本よりもこちらのほうがより具体的にオブジェクト指向の良さを実感できるでしょう。
   また、プログラマ向けとはいいながらも、イラストが多いエッセイ風の文章なので、帰りの電車の中で1日の疲れを癒しながらでも十分読めてしまうあたりもうれしいところです。
   そして、全部読み通した暁には、いままでよくわからなかった、クラス、オブジェクト、インスタンスやインヘリタンス、オーバロードにオーバライド、そしてポリモーフィズムといったオブジェクト指向横文字用語の数々もなんとなく理解できるようになっているでしょう。おカタい本ばかりのオブジェクト指向関連書籍の中にあって、肩肘張らずに流し読みできるという稀有な1冊です。

   さて、すでにオブジェクト指向の何たるかはひととおりおさえてはいるけれど、なんとなくしっくりこない、あるいはやっぱり今までの考え方との違いがよくわからない、という人もけっこう多いのではないでしょうか。そこで最後に、「オブジェクト指向とは何か?」、「なぜオブジェクト指向を使うと良いのか?」といった基本的かつ根本的な問いに対して明快な答を授けてくれる本を紹介したいと思います。


Booch法:オブジェクト指向分析と設計 第2版
著者 :グラディ・ブーチ
訳 :山城明宏/井上勝博/田中博明/入江豊
/清水洋子/小尾俊之
発行 :アジソン・ウェスレイ
発売 :星雲社
ISBN :4-7952-9654-5
Booch法:オブジェクト指向分析と設計 第2版

   この本は、現在のオブジェクト指向技術の世界で「スリーアミーゴ」と呼ばれる三大巨人のうちの一人、Grady Boochによって書かれたもので、彼の提唱する方法論Booch法(UML以前に栄えた方法論の一つ。クラスを雲形または漫画の吹き出しのような形で表現するので有名)のバイブルでもあります。後述するように、UMLができてからは、紐解かれることが少なくなりましたが、まだまだ十分に読む価値のある1冊です。
   「オブジェクト指向って何がいいの?」と聞かれて即答できる人はどれぐらいいるでしょうか? 「継承が使えるから」、「ポリモーフィズムが使えるから」、「カプセル化されているから」といった答が聞こえてきそうですね。もちろん、決して間違いではないのですが、それはオブジェクト指向のもつメリットのほんの一部にすぎません。
   本書の第一部「概念編」では、「ソフトウェアは本質的に複雑である」といった前提から始まり、「その混沌に秩序を与えるのが『分割』『抽象化』『階層化』の三つであり、それらをすべて持ち合わせたものがオブジェクト指向である」という結論を導き出します。
   つまり、「オブジェクト指向とは複雑なものをより簡単に扱うための技術」ということなんですね。そして、その視点に立って見た場合、いままで使用されてきた機能分割についても「機能分割とオブジェクト指向分割のどちらの観点も重要である」といいながら、「ただし、われわれの経験によれば、オブジェクト指向を最初に適用するほうが良い」とつないでいきます。
   巷によくある構造化・機能分割の完全否定とは違った現実的な視点は、なかなかGOODです。では、オブジェクト指向のほうがなぜ良いのでしょうか? ここから先が気になる方は、この本で直接Boochから教えてもらいましょう。
   現場で実際にOOP(オブジェクト指向プログラミング)をしている人からは、「そんな話はどうだっていいじゃん」という声が聞こえてきそうですが、そんなことはありません。もっと上流のオブジェクト指向分析あたりの作業を始めると、あまりの自由度の高さに困惑してしまい、「何がオブジェクトなの?」、「これってオブジェクトにしてもいいの?」といった疑問で混沌としてしまうこと請け合いです。そんなときのためにも、ぜひこの本の第一部「概念編」だけには目を通しておくべきでしょう。
   ちなみに、第二部以降は、Booch法ベースの話と開発プロセスの話が中心になります。世の中がすっかりUMLになったとはいえ、後でも触れるように、少なくとも一つの方法論を通読することには大きな価値があります。もしあなたが雲形のクラス図を嫌いでなければ、残りの部分も読み通すことをぜひおすすめします。




2.オブジェクト指向プログラミング

   本来なら、次はUMLとオブジェクト指向による分析・設計を学んでクラス図あたりを書いてみるところですが、ここではその前にプログラミングすることをお勧めしたいと思います。いくらオブジェクト指向について学んでも、日頃から相当抽象的なことをやっていないかぎり、クラスや関連といっても実際のイメージは何ひとつ沸いてこないというのが正直なところでしょう。クラスや関連、継承、ポリモーフィズムなどは、実際にゴリゴリ実装しガンガン動かしてみて、初めて地に足のついた理解ができるものです。
   ですから、使う言語は、JavaでもC++でも、あるいは最近話題のC#でも、それこそオブジェクト指向言語と呼ばれるものであれば何でもかまいません。要は例題をいくつか書いて、それを実際に動かしてデバッグしてみることが大事です。
   さて、そこでどんな本を教科書にするかですが、プログラミング本に関してはそれこそ莫大な数の入門書があり、詳細に紹介していたのではそれだけで誌面がつきてしまいます。そういうわけで、プログラミング本にかぎっては、あえて今回ここでは紹介しないことにしました。
   とかくこの分野は、内容の好き嫌い、書き方や厚さ、例題の数など、それぞれに関して好みに個人差が出やすいところなので、実際に書店でじっくりと見比べて気に入ったものを購入されると良いでしょう。なお、組み込み開発に必要なプログラミングスキルを身につける本に関しては、最後の項目で紹介します。




3.オブジェクト指向方法論

   オブジェクトについての理解と実践がひととおり得られたなら、次はオブジェクト指向を使って開発を進めていく方法について書かれた本を紹介しましょう。
   オブジェクト指向を使って開発を進めていくためには、システムをオブジェクトの集まりとして考え、それをモデルとして表現する方法が一般的です。そして、その際に必要となるのが「何をオブジェクトにすべきか」、「どのようなモデルをいつ書くのか」、「その際に気をつけるべき点は何か」、「分析や設計での作業手順はどうするのか」などといった、いわゆる作業のノウハウとモデルの書き方(表記法)であり、これらをまとめたものは、いわゆるオブジェクト指向方法論と呼ばれるものになります。
   従来は、非常に多くの方法論が乱立するホットな分野だったのですが、表記法がUMLに統一されてからは、議論されることがめっきり少なくなってしまいました。そして最近では、後述するRational Unified Process(RUP)のような開発プロセスの中の作業手順や成果物といった形で定義されるようになりました。
   従来に比べるとたしかに工業的になったといえますが、私から見ると逆にあまりにもスマートにマニュアル化されすぎて、その底辺にあるいちばん重要な考え方やポリシー、つまり「なぜモデルを書くのか」、「何をオブジェクトとするのか」などといったものが見えにくくなってしまっているように感じられます。
   ですから、ここではあえて地道に古き良き方法論を紐解いて、その中から上記の考え方を習得するための本を紹介したいと思います(一刻も早くUMLでモデルを書きたい方はスキップしても構いませんが、時間ができたらいつかは読んでみてください)。
   では、どの方法論が良いかといえば、前節で紹介したBoochを含め、やはりスリーアミーゴと呼ばれる人たちのものが一般的でしょう。なお、ここではBooch以外の2冊を紹介しますが、基本的な考え方はそれほど変わらないので、三つのうちのどれか一つをきちんと理解しておけば問題ないでしょう。


オブジェクト指向方法論OMT
モデル化と設計
著者 :J. ランボー/M. プラハ/W. プメラニ
/F. エディ/W. ローレンセン
監訳 :羽生田 栄一
発行 :トッパン
ISBN :4-8101-8257-3
オブジェクト指向方法論OMT モデル化と設計

   この本は、Boochと並ぶスリーアミーゴのもう一人、J. ランボーらによって書かれた、いわゆるOMT法と呼ばれる方法論を記述したものです。UMLが決まるまでは、ここで定義された方法論が事実上の標準となっていました。
   OMTは、そのかなりの部分がUMLに反映されたこともあり、この本で書かれている内容は、多くのUML入門書やオブジェクト指向入門書でもふれられています。それでもあえて今この本を読むことを薦めるのは、システムを三つの側面からモデリングする重要性と、分析やアーキテクチャ設計(本書ではシステム設計と呼んでいる)といった上流工程とその意義を理解するには、依然としてこの本がいちばん良いからです。
   たとえば、OMTではシステムをモデリングする際に、オブジェクトの静的な構造をクラス図で、動的な側面をシーケンス図と状態図で、機能的な側面をデータフロー図でそれぞれ表現します。この本では各モデルの記法だけではなく、その三つの側面からモデリングすることの効果や、それぞれのモデルのトレードオフにまで言及しています。巷に多く出回っているUML解説書のほとんどが、図自体の説明が詳細すぎて別々の視点からモデルをとらえるという本質的な説明に欠けているのとは、まさに好対照です。
   また、今ひとつピンとこないアーキテクチャ設計に関しても、非常にコンパクトで具体的な解説がなされており、ここで定義されている標準アーキテクチャは、アーキテクチャの分類についての良い見本と言えるでしょう。
    日頃は設計や実装が中心で、これらの分析やアーキテクチャ設計といった、いわゆる上流工程に関して、今ひとつイメージがつかめない、あるいは有効性が感じられない、といったエンジニアの方々は、ぜひ本書で上流工程の意味や効果を体感してみてください。ちなみに、私もOMTを読んで「分析とは何か」、「分析の効用」を会得した一人です。


オブジェクト指向ソフトウェア工学  OOSE
use-caseによるアプローチ
著者 :I. ヤコブソン/M. クリスターソン/P. ジョンソン
/G. ウーバーガード
監訳 :西岡利博/渡邊克弘/梶原清彦
発行 :トッパン
ISBN :4-8101-8066-2
オブジェクト指向ソフトウェア工学 OOSE use-caseによるアプローチ

   スリーアミーゴの最後の一人であるI. ヤコブソンの著書です。先に紹介したOMT本と合わせて、この本も避けて通るわけにはいきません。
   この本の特徴的な点は二つあります。一つは良きにつけ悪しきにつけ、いまやオブジェクト指向開発になくてはならないユースケースという考え方を紹介したということ、もう一つはオブジェクト指向のメリットの代名詞ともなっている再利用性について「オブジェクト指向だけでそれが可能になるわけではない」という画期的な見解を示したことです。個人的に、今回紹介する本の中で1冊だけあげるとすれば、私はこの本を推したいと思います。
   先に紹介したOMTがオブジェクトをとてもインテリジェントなものとして擬人化・汎用化させたのに対し、OOSEはもう少し現実的な立場に立ちました。すなわち、汎用的すぎたオブジェクトの適用範囲を、ユースケースという特定の機能に限定することで、オブジェクトの機能を簡単にし、かつ当初のシステム要求からずれることのないようにしましょう、と現実路線に引き戻したのです。
   また、再利用性・拡張性を実現するためには「局所化」が大切であり、そのためには変化の種類ごとにオブジェクトを分けなくてはならないとして、とにかくオブジェクトは擬人化され、しかもデータ中心でなければならないとする従来の考え方に一石を投じました(これについて述べている第6章の「頑健な構造」というコラムは絶品です)。
   最終的には、これが一石どころか、UMLのクラスの分類の種類(ステレオタイプ)として「エンティティ(データ構造を局所化)」、「バウンダリ(インターフェースを局所化)」、「コントローラ(機能を局所化)」が定義されるほどの主流となりました。
   UMLの入門書などでは、これらのステレオタイプについては、ごくあっさりとしか触れられていませんが、じつはオブジェクト指向が現実のシステム開発に向けて一枚脱皮したことを示す、深い意味があったのです。
   私などが日夜相手にしている組み込みシステムのような制御中心のシステムでは、どうしても従来のデータ中心の方法ではオブジェクトの発見に無理がありました。この気持ち悪さを「きれいなオブジェクトよりもきちんと局所化できることが大事」として喝破してくれたのが、まさにこの本であり、これを読んで以来、私はオブジェクトの抽出基準はデータ構造だけではなく、機能も含めた「役割」もしくは「責任」だと考えるようになりました。
   ただ、物事にはすべて長所と短所があるように、ユースケースやコントローラオブジェクトについても、それらに安易に頼りすぎると、あまりにも機能的すぎるモデルを作り上げてしまう危険性が指摘されています。私の経験でも、たしかにそのとおりで、この部分に対しては十分に注意する必要があります。




4.モデリング言語

   オブジェクト指向での開発にモデルが必要なことは先に述べたとおりですが、ここではそのモデルを表現するために必要なモデリング言語について書かれた本を3冊紹介します。いずれも、モデリング言語としてすっかり標準となったUMLを扱ったものです。
   なお、最近はいきなりUMLからオブジェクト指向に入ることが多いようですが、より深く理解するためにも、ここまで紹介してきた本を先に読んでおくことをおすすめします。


かんたんUML
著者 :(株)オージス総研
発行 :翔泳社
ISBN :4-88135-759-X
かんたんUML

   「かんたん」とタイトルがついているわりには内容が盛りだくさんです。冒頭からいきなりUMLの必要性を示唆するストーリが始まり、以降では、システム開発のイメージや用語集、例題に沿ってUMLを学んでいけるチュートリアルなど、必要最低限の内容がすべて盛り込まれた1冊となっています。
   管理者向けと書かれていますが、初めてUMLを学ぶエンジニアにもちょうど良い内容です。そして本書でUMLを学んだら、次はWeb上で実施されているUML認定試験にトライしましょう(
URL:https://www.ogis-ri.co.jp/otc/hiroba/UMTP.html)。
   ブロンズレベルであれば、この本のチュートリアルさえきちんとこなしておけば、とくに難しい問題はありません。合格すると、スリーアミーゴのサイン入り認定証がもらえるというオマケつきです。


UMLモデリングのエッセンス  第2版
著者 :マーチン・ファウラー/ケンドール・スコット
監訳 :羽生田 栄一
発行 :翔泳社
ISBN :4-88135-864-2
MLモデリングのエッセンス 第2版

   いわゆるUMLの七つ道具(クラス図、ユースケース図、相互作用図、状態図、配置図、コンポーネント図、アクティビティ図)に関して、タイトルどおり重要な部分だけに限定して解説したのがこの本です。
   とにかくUMLの何たるかだけを理解して、後はさっさとモデリングしてみたい、というせっかちな方(ただし、オブジェクト指向に関してある程度の基礎知識をもっていることが前提です)には最適な1冊です。そうかといって、薄さのわりには内容が濃いので、ある程度オブジェクト指向開発を経験済みの方でもモデリングのコツやポイントなどを習得するのにも最適です。
   しかし、本当にオブジェクト指向が初めての方や、モデリング経験があまりない方には、多分これだけでは足りないでしょうから、次に紹介する『UMLユーザーガイド』と併用するのがよいでしょう。
   なお、本書の第2章には開発プロセスを実に的確に概観した部分が含まれており、そこを読むだけでも十分この本を買う価値があります。それについては、もう少し後の開発プロセスの項で再度触れたいと思います。


UMLユーザーガイド
著者 :グラディ・ブーチ
訳 :オージス総研オブジェクト技術
ソリューション事業部
発行 :ピアソン
ISBN :4-89471-155-9
UMLユーザーガイド

   UMLに関する最新のチュートリアルとして位置付けられるのがこの本です。UMLに含まれるあらゆる構成要素とほとんどの図が説明されているので、現時点で日本語で読むことのできるUML本の中で、いちばん詳細な解説書といえるでしょう。とはいえ、内容自体はチュートリアルにふさわしく平易な書き方がされているので、初心者から上級者まで幅広く活用できる1冊になっています。
   また、この本の第5部では「振る舞いモデリング:上級編」と題して、イベントやシグナル、状態マシン、プロセスやスレッドなどといった、他の書籍ではあまり扱っていない組み込み・リアルタイム分野の要素を扱っています。もしあなたが組み込みエンジニアであるならば、この部分にもぜひ目を通しておきたいところです。




5.UMLを使ったシステム開発

   さて、ここまではオブジェクト指向やUMLについて説明した本を紹介してきました。ここからは、それらを使って実際に分析・設計・実装と、オブジェクト指向開発を進めていく方法について、より実践的に説明した本を紹介することにしましょう。


実践UML  
パターンによるオブジェクト指向開発ガイド
著者 :クレーグ・ラーマン
監訳 :今野 睦/依田 智夫
訳 :依田 光江
発行 :プレンティスホール
ISBN :4-89471-077-3
実践UML パターンによるオブジェクト指向開発ガイド

   POSシステムの構築を例題として、UMLと繰り返し開発を使いながらオブジェクト指向開発によってシステムを構築していく方法を詳細に説明した本です。
   ちょっと分厚く重いので敬遠してしまいがちですが、内容は非常に読みやすく、ページ数を感じさせません。そのうえ、通常の解説本からは得られない実開発で必要なエッセンスがいっぱい詰まっているので、初心者だけでなく経験者も知識の棚卸をするために一度は目を通すとよい本です。
   この本では、「クラス図」、「相互作用図(コラボレーション図)」、「ユースケース図」といった非常に基本的な図しか出てきません。その代わり、モデルを作成するためのノウハウやテクニックを解説する方に重点を置いています。たとえば、ちょっと羅列しただけでも、

   ・ユースケースのランク付けとスケジューリング
   ・クラス抽出の方法
   ・概念モデルの作成
   ・システムシーケンス図の作成
   ・現実的ユースケースの記述
   ・協調設計時の責務割り当てノウハウ
   ・抽象化と責務の割り当ての順序
   ・ユースケース状態図、システム状態図の作成

   などがあり、こうやって見ても、あらためて「実践」であることがわかります。
   それともう一つ、この本の面白いところは、イテレーションの作業順序にしたがって章立てがなされている点です。たとえば、2回目のイテレーションの分析については、1回目のイテレーションの設計の次に説明される、といった具合です。あまりに細かすぎるので、注意して読み進めないとその工夫がわかりにくいのが難点ですが、注意して読めば、ユースケース駆動による繰り返し開発のイメージをおおまかにつかむことができます。この本で繰り返し開発のイメージがつかめたら、後で紹介する開発プロセスに挑戦してみましょう。

   さて、ここまで来れば、オブジェクト指向開発を実践していくうえでの基礎知識はもう完璧です。あとは何回か経験を積みながら、「より良い設計の方法」、「効果的な開発の進め方」といったあたりをひたすら習得していくだけです。ということで、いよいよ次からはそのあたりについて詳しく説明している「設計」と「開発プロセス」の本を紹介していくことにしましょう。




© 2001 OGIS-RI Co., Ltd.
Index Next
Index Next