アプリケーションアーキテクチャ設計パターン

[表紙]アプリケーションアーキテクチャ設計パターン

紙版発売
電子版発売

B5変形判/528ページ

定価3,850円(本体3,500円+税10%)

ISBN 978-4-7741-9303-8

電子版

→学校・法人一括購入ご検討の皆様へ

この本の概要

本書は,アプリケーションアーキテクチャの基本設計フェーズにおいて「何を作るか」ではなく「どう作るか」を設計する際のガイドです。心臓部となるサーバサイドを中心に,シングルページアプリケーションの台頭で再び重要性を増してきたクライアントサイド,SQLなどの伝統的な処理方式とビッグデータ技術という新潮流が混在するバッチ処理,システム間連携と,さまざまな分野を網羅します。アーキテクトやエンジニアが習得するべきコアのスキルとして,長きに渡って活用できる一冊です。

こんな方におすすめ

  • アーキテクチャのパターンを俯瞰したいアーキテクトやエンジニア

著者の一言

本書のテーマは,アプリケーションアーキテクチャの設計パターンです。アプリケーションアーキテクチャの世界には,すでに偉大な先人たちによって編み出された優れた設計パターンがあります。本書の狙いは,それらの設計パターンをベースに,私がこれまで携わってきた数々のプロジェクトで積み上げてきた設計ノウハウをミックスし,最新のJava EEプラットフォームやフレームワークの仕様を前提に,パターン体系として再整理することにあります。
本書は,エンタープライズアプリケーションの心臓部であるサーバサイドを中心に,シングルページアプリケーションの台頭で再び重要性を増してきたクライアントサイド,SQLなどの伝統的な処理方式とビッグデータ技術という新潮流が混在するバッチ処理,そして昨今「オープンAPI」で改めて注目が集まっているシステム間連携と,様々な分野を広くカバーしています。本書では,すべての分野に渡って語彙や記述レベルを統一し,使用するサンプルも合わせるように工夫しました。たとえば「第10章 非同期呼び出しと並列処理のための設計パターン」と,「第18章 ビッグデータ技術による分散並列バッチ処理」では,「売上取引データを集約する」という同じ例を用いています。これは,同じ例を使うことで,マルチスレッドによる並列処理とビッグデータ技術(Hadoopなど)という2つの異なるアーキテクチャの間に,「大きなデータセットを如何にして効率的に処理するか」という共通の課題があることに気が付きやすくするためです。このように異なる分野におけるアプリケーションアーキテクチャであっても,実は処理の効率化や拡張性の向上など,設計における本質的な課題は同じであることが多いのです。
本書では,「設計パターンのトレードオフ」を特にクローズアップしています。ある1つの機能要件を充足するための設計パターンには,ほとんどの場合,いくつかの選択肢があります。そしてそれらの設計パターン同士には,コスト,技術的な難易度,パフォーマンスなど,様々な観点でトレードオフがあります。本書を通じてこのようなトレードオフを理解すれば,何を基準にどういったパターンを選択するべきか,プロジェクトの中で適切な判断ができるようになるでしょう。
さて,本書のテーマはあくまでも設計パターンですが,各設計パターンを具現化するためのソースコードを,なるべく多めに掲載しています。ウォーターフォール型の開発では,設計フェーズと実装フェーズは分離されますが,設計と実装は「上流と下流」というよりは,相互依存の関係にあると考えるべきです。つまり,実装は「設計ありき」ですが,設計もまた「実装ありき」なのです。アーキテクト自身が実装までを自ら検証して習熟することができれば理想的ですが,現実的には時間の制約などから難しいことが多いでしょう。ただし,自身で実装まですべてをカバーすることはできなくても,「実装のイメージ」を頭の中で描けるようにさえなっていれば,アプリケーションアーキテクチャを設計する上で支障をきたすことはありません。ぜひ読者の皆様には,最適な設計のために,本書に掲載されたソースコードを読み解くことによって,実装をイメージできる力を養っていただきたいと考えています。
エンタープライズシステムは,これからクラウドへの移行がますます進むものと思いますが,過去の資産も含めると,まだまだオンプレミスの比率が相応に高い状況です。しかし,クラウドであろうとオンプレミスであろうと,アプリケーションアーキテクチャの根幹部分は大きくは変わりません。本書で取り扱っているアプリケーションアーキテクチャの設計は,今後エンタープライズシステムを取り巻く環境が移り変わっても,「ぶれる」ことの少ない普遍性の高いテーマです。アーキテクトが習得するべきコアのスキルとして,長きに渡って活用することができるでしょう。
本書が,読者の皆様が担当するエンタープライズシステムにおいて,アプリケーションアーキテクチャ設計の一助となれば幸いです。
(本書「はじめに」より)

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

巨大なシステムはどう作る?
ソフトウェアの開発に限った話ではなく,ものづくり全般に言えることですが,開発の規模が大きくなればなるほど難しくなるのが,プロジェクト全体の整合性の確保です。