現場で役立つシステム設計の原則
〜変更を楽で安全にするオブジェクト指向の実践技法

この本の概要

「ソースがごちゃごちゃしていて,どこに何が書いてあるのか理解するまでがたいへん」「1つの修正のために,あっちもこっちも書きなおす必要がある」「ちょっとした変更のはずが,本来はありえない場所にまで影響して,大幅なやり直しになってしまった」といったトラブルが起こるのは,ソフトウェアの設計に問題があるから。日本最大級となる60万件以上の求人情報サイト「イーキャリアJobSearch」の主任設計者であり,システム設計のベテランである著者が,コードの具体例を示しながら,良い設計のやり方と考え方を解説します。

こんな方におすすめ

  • システム設計のポイントを知りたいエンジニア

著者の一言

ソフトウェアを変更するとき,こんな経験がありませんか?

  • ソースがごちゃごちゃしていて,どこに何が書いてあるのか理解するまでが大変だった
  • 1つの修正のために,あっちもこっちも書き直す必要があった
  • ちょっとした変更のはずが,本来はありえない場所にまで影響して,大幅なやり直しになってしまった

オブジェクト指向でソフトウェアを設計する目的は,こういう変更の大変さを減らすことです。どこに何が書いてあるかをわかりやすくし,変更の影響を狭い範囲に閉じ込め,安定して動作する部品を柔軟に組み合わせながらソフトウェアを構築する技法がオブジェクト指向設計です。
しかし,オブジェクト指向と聞くと「よくわからない」「今の自分の仕事には関係ない」「やってみたがうまくいかない」という人も多いようです。そうなってしまうのは,オブジェクト指向の説明が具体性に欠けていたり,例が単純すぎて現場の感覚には合わない内容が多いからです。
オブジェクト指向は理論ではありません。開発の現場で工夫されてきた設計のノウハウです。現場ですぐに役に立つ実践的なやり方と考え方です。
本書では,私が業務アプリケーションの変更に苦しんだ経験をもとに,オブジェクト指向設計のやり方と考え方,効果があった解決策を,具体的なソースコードを示しながら紹介していきます。特に「なぜそうするのか」を重視して説明します。
オブジェクト指向設計の考え方を理解し,実践で活用するポイントは2つあります。
第1のポイントは「体験」です。オブジェクト指向で設計する良さは,最初はなかなか理解できません。本書で紹介するオブジェクト指向設計のやり方を,現場の実際のコードで繰り返しているうちに,しだいにオブジェクト指向設計で変更が楽で安全になることが実感できるようになります。一度,その良さを体感できるとオブジェクト指向で設計することが当たり前になります。
第2のポイントは「発想の切り替え」です。オブジェクト指向の言語を使っているが,設計のやり方が手続き型のまま,というケースを私は何度も見てきました。特にJavaは手続き型の発想で書くこともできるプログラミング言語のため,そのようなケースが多いのが実情です。本書で紹介するオブジェクト指向らしい設計の考え方とやり方を理解し,発想を転換する手がかりにしていただければと思います。
オブジェクト指向の考え方は,要件定義や基本設計という,いわゆる上流工程でも威力を発揮します。本書では,要求分析やモデリングのやり方,アプリケーションアーキテクチャの考え方,フレームワークの活用についても,オブジェクト指向の観点から説明します。
また,業務アプリケーションではデータベース,画面インターフェース,外部システム連携も重要な設計課題です。これらについても,オブジェクトの設計と関連づけながら,変更に対応しやすい設計の考え方とやり方を説明します。
そして最後に,参考書籍を紹介しながら,オブジェクト指向設計の学び方/教え方についても取り上げます。
なお,本書のサンプルコードのプログラミング言語はJava,アプリケーションフレームワークはSpring FrameworkとSpring Bootです。ほかの言語やフレームワークを使っている方には,理解しにくい箇所があるかと思いますが,本書で説明する設計の考え方とやり方は,言語やフレームワークの違いを超えて活用できる部分があるはずです。
オブジェクト指向の開発は,分析から実装までが継ぎ目のない一貫した活動です。分析/設計/実装をうまく関係づけることで,ソフトウェアの変更を楽で安全にできるのです。ソフトウェアの変更が楽で安全になれば,開発のやり方が変わります。
みなさんが本書を手がかりに,変更が楽で安全になるオブジェクト指向らしい設計にチャレンジし,その効果を実感していただく助けになればうれしい限りです。
(本書「はじめに」より)

この書籍に関連する記事があります!

コードの変更作業が楽で安全なものにならないのはきっと設計のせい
世の中には2種類のコードがあります。

著者プロフィール

増田亨(ますだとおる)

有限会社システム設計 代表。ギルドワークス株式会社 取締役。業務アプリケーションのアーキテクト。日本最大級の60万件以上の求人情報サイト「イーキャリアJobSearch」の主任設計者。非同期メッセージング/API/クラウド技術を組み合わせた,柔軟で発展性に優れた疎結合のシステム間連携方式でサービスを支える。ビジネスの関心事を正しく理解し,顧客に価値あるソフトウェアを届けるために,日々「ドメイン駆動設計」を実践している。全体と部分,短期と長期,論理と感覚,理論と実践,それぞれの視点をバランスよく組み合わせることを大切にしている。