【書評】オブジェクト指向における再利用のためのデザインパターン

オブジェクト指向における再利用のためのデザインパターン の書評です。

結論から言うと、オブジェクト指向プログラミングの学習において、『デザインパターン』をマスターするなら必修の原典です。

■ 良い点
・ とにかくデザインパターンの理解が深まる
・ 実装上の注意点や代替案が豊富
・ 各パターンのバリエーションにも言及されている
・ 結果のトレードオフ(メリット・デメリット)がよく考慮されている
・ 他のパターンとの関連の説明が深い

■ 悪い点
・ 1999年の改訂版であり内容に古い箇所が散見される
・ 所々で理解が困難な記述がある
・ C++の言語仕様に依存した説明が少々ある

■ 総評
いわずと知れた『デザインパターン』の古典的名著であり原典です。

本書を読了すれば、デザインパターンの基礎はもちろん、各パターンの実装上の注意点や、パターンを採用する際のトレードオフ、他のパターンとの関連、そしてオブジェクト指向の本質まで深いレベルでマスターすることができるでしょう。

ただ、メインの解説言語がC++ということで敬遠している人も多いのではないでしょうか。

たしかに、C++がメインですが、JavaやPHP使いにとっても、本書を学習する価値は大いにあると思います。ちなみに、高橋麻奈さんの やさしいC++ 第4版 (「やさしい」シリーズ) を使ってC++の文法の学習をした後に本書を読んだところ、重要な箇所のコードはだいたい理解できました。

また、予習として、結城氏のデザインパターン本 増補改訂版Java言語で学ぶデザインパターン入門 を読んでおくこともお勧めします。デザインパターンの学習の第一歩が本書のGoF本だと、かなりハードルが高いと思います。お勧めは、結城本と本書を交互に参照しながら読み進めることです。

つまり、やさしいC++等の書籍で言語の予習をして、結城本でデザインパターンの予習をしておくと挫折せずに読み終えることができると思います。

ただし、言語を問わず、オブジェクト指向の基礎が理解できていることが前提ですので、カプセル化、継承、ポリモーフィズム等の基礎知識は必要です。

量的には、約400ページほどで結構なボリュームがありますが、読了するとかなりの達成感と実力の向上を感じることができます。

ちなみに、本書は先頭から順に読み進める必要はなく、最初の第一章や二章が難しいと感じたなら、簡単なパターンの章から学習することが可能です。自分もTemplate MethodやStratgyなどから目を通すことで全パターンを網羅することができました。各パターンは、数ページから十数ページほどの適量に小分けされており、構成も一貫しているので、好きなパターンから負担なく読み進めることが可能です。

なお、第二章のエディタの作成の例は8つのパターンをまとめた応用的な例なので、一番最後に読むのが良いでしょう。また、第一章の概要は、『オブジェクト指向』そのものを掘り下げた良質な解説であり、他の章に劣らず、重要な章となっています。

本書の難点を言えば、やや古いことと、現在ではあまり主流でないSmallTalkについて所々で言及されていることでしょうか。また、UMLでなく、OMTというクラス図が使われているのも、最新版がでるならば修正して欲しい箇所です。これらの難点もありますが、それを遥かに上回るメリットが本書にはあるので、迷っている人は一度は手に取り、目を通すことをお勧めします。

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

カテゴリー: BOOK, C++, オブジェクト指向, デザインパターン | コメントする

【書評】44のアンチパターンに学ぶDBシステム

44のアンチパターンに学ぶDBシステム の書評です。

結論から言うと、データベースの設計や運用において、やりがちな悪いパターンを初心者にもわかりやすく、上手くまとめた一冊です。

■ 良い点
・ 各アンチパターンが適度な量にまとまっている
・ 構成が一貫していて読みやすい
・ 図表がわかりやすい
・ 実務的なトピックが多い
・ 著者の体験談が参考になる
・ 人や組織によるアンチパターンも扱われている

■ 悪い点
・ 特に無し
・ あえて言えば上級者には少し物足りないかも

■ 総評
DBシステムに重点をおいたアンチパターン集です。44のトピックが3~5ページほどにまとめられていて、スラスラと読むことができます。初心者にもわかりやすい解説がなされていて、DBシステムの定石をあまり知らない初心者向きと言える一冊です。

ちなみに、著者は、Oracle関連の人なので、DBはOracleが念頭におかれています。ただ、DBに依存しない解説となっているので、MySQL等でも通用する内容になっています。

内容的には、DBシステムに重点をおいているため、SQLの解説は少なく、設計や保守管理等の解説が多くなっています。最後の編では、人や組織にまつわるトピックも扱われており参考になります。

著者の実体験にもとづく、「挿話」といった経験談が、ちょっぴり皮肉が効いていたりして飽きずに最後まで読み通せます。

初心者が早めに読むと、後々困らなくなる予防薬的な一冊です。

44のアンチパターンに学ぶDBシステム (DB Magazine SELECTION)

カテゴリー: BOOK, DB | コメントする

【書評】パターン指向リファクタリング入門

パターン指向リファクタリング入門~ソフトウエア設計を改善する27の作法 の書評です。

結論から言うと、デザインパターンとリファクタリング、そしてテスト駆動開発を複合的に学習でき、それぞれの理解の相乗効果が得られる応用本です。

■ 良い点
・ デザインパターンとリファクタリングを複合的に学習できる
・ パターンとリファクタリングの相乗効果により理解が深まる
・ 翻訳書としては、文章が明快で読みやすい
・ クラス図が理解を助ける
・ サンプルのコード例によりJavaの勉強にもなる

■ 悪い点
・ 修正前・途中経過だけでなく、修正後のコードが欲しい
・ コード例が若干、難しい
・ 所々でわかりにくくなる箇所がある

■ 総評
「パターン指向リファクタリング入門」というタイトル通り、デザインパターンとリファクタリングを複合的に解説した書籍です。リファクタリングには、テストが必須であることから、ユニットテストにも触れられていて、テスト駆動開発の理解も深まります。

逆に言えば、本書を読みこなすには、「デザインパターン」と「リファクタリング」、そして「テスト駆動開発」の知識が前提として必要とも言えます。

形式的には、27個のリファクタリングが取り上げられており、各10~20ページほどを要します。コード例は、5~6個ほどのサンプルを使いまわしており、本書で指定される順序で読み進めると効率よく学習できます。なお、扱われているデザインパターンは、13個ほどです。

各節の最初にある、「要約」と「クラス図」、そして「動機」のセクションを読むと、各リファクタリングの内容がわかるようになっています。そして、「手順」と「コード例」を相互参照しながら読み進めると、理解が深まり学習効果が高まります。

サンプルのコード例は、欧米文化的なものなので、最初は取っ付きにくく、しんどいですが、使いまわしのためJavaの学習と割り切って取り組むと実力がつくと思います。

全体を通して、パターンを採用する際に、メリットとデメリットを比較衡量するので、トレードオフの感覚が掴めることが役に立ちます。また、Compositeパターン等の重要なパターンが複数回取り上げられるので、重要パターンの理解が深まります。ちなみに、Interpreterパターンの使いどころが、本書の解説を読みやっと理解ができました。

デザインパターンを使って、より良いコーディングがしたいというプログラマにお勧めの一冊です。

パターン指向リファクタリング入門~ソフトウエア設計を改善する27の作法

カテゴリー: BOOK, Java, デザインパターン, リファクタリング | コメントする

【書評】Webエンジニアのためのデータベース技術[実践]入門

Webエンジニアのための データベース技術[実践]入門 の書評です。

結論から言うと、MySQLをメインにデータベース全般のトピックを学習できるWebエンジニア向けの入門書です

■ 良い点
・ データベース全般のトピックを学習できる
・ 大規模開発や大量のデータの扱いに詳しい
・ ポイントや要点が絞られている
・ 筆者の経験談が参考になる
・ 実際に役立つ情報が多い
・ Tips(薀蓄)がためになる

■ 悪い点
・ 本文の文字が若干小さい
・ 説明や内容に少々重複がある

■ 総評

MySQLがメインのデータベース(DB)解説本です。用途としては、Webアプリ開発に焦点があてられています。

元々、雑誌に掲載された4つの連載記事や特集を編集し一冊の書籍にまとめたものであり、各章間で内容に少々の重複があります。ページ数は、約310ページほどで、スラスラと読めます。

内容的には、データベースの仕組みと機能全般がわかるような解説となっています。中でも、インデックスやトランザクション、バックアップ、MyISAMとInnoDBの違いなど重要なポイントが詳しく説明されています。

更に、上級者向けに、MySQLのソースコード(C、C++)の解析などもあります。入門者から上級者まで、読めば何かしら得ることのある一冊だと思います。
また、筆者が経験した大規模開発(mobage)などでの経験談など、先輩エンジニアの話として興味深いトピックも扱われています。

大量のデータをMySQLで扱うWeb開発エンジニアならば、一通り目を通しておきたい一冊です。

Webエンジニアのための データベース技術[実践]入門 (Software Design plus)

カテゴリー: BOOK, DB, MySQL | コメントする

【書評】おうちで学べるデータベースのきほん

おうちで学べるデータベースのきほん の書評です。

結論から言えば、データベース(DB)をはじめて扱う初心者が、DBの概要を知るためのコンパクトな入門書です。

■ 良い点
・ DBの基本に重点が置かれている
・ 解説の要点が絞られている
・ 読みやすくスラスラ読める
・ 図表がわかりやすい
・ 特定のデータベースに依存しない説明

■ 悪い点
・ SQLの章は説明が駆け足

■ 総評

データベース入門者が、DBについて一通り学習するための一冊です。なお、MySQLがメインに扱われており、ページ数は約340Pほどです。

DBとは何か、DBはなぜ必要か、SQLとは何かといった基礎の基礎から解説がなされます。DB全般部分については、ミック氏が、SQL(6章,7章)とトランザクション(9章)は、木村氏が担当しています。つまり、共著です。

ある程度知識がある人にとっても、データベースの総復習として役に立ちます。ただ、SQLに関する説明はだいぶ駆け足で、もう少し詳しい説明があっても良かったかなと思います。

個人的には、パフォーマンスの章がかなり役に立ちました。インデックスの扱いなどこの辺は実務でも役立ちます。また、DBのコストや冗長化など、実務的な話題もためになります。そして、DBというものを通した、ある種のものの考え方が新鮮な一冊でした。

おうちで学べるデータベースのきほん

カテゴリー: BOOK, DB, MySQL, SQL | コメントする