ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ

Book description

ソフトウェアアーキテクチャとは、ソフトウェアシステムの成功に欠かせない重要な土台です。そのためソフトウェア開発者には、効果的なアーキテクチャを実現するスキルが求められます。本書は、そうした効果的なアーキテクチャを設計、構築、維持するアーキテクトになるために必要なスキルや知識を、現代的な視点から整理して包括的に解説する書籍です。 ソフトウェアアーキテクチャの定義から、アーキテクトの役割、モジュールや結合、アーキテクチャスタイルといったアーキテクチャ設計の基礎、チームやステークホルダーと効果的にコラボレーションしていくために必要なソフトスキルまで、さまざまなトピックについて実践的な例とともに説明します。

Table of contents

  1.  大扉
  2.  原書大扉
  3.  クレジット
  4.  本書への推薦の言葉
  5.  はじめに:公理を疑う
  6.  1章 イントロダクション
  7.   1.1 ソフトウェアアーキテクチャの定義
  8.   1.2 アーキテクトへの期待
  9.   1.3 アーキテクチャと交わるもの
  10.   1.4 ソフトウェアアーキテクチャの法則
  11. 第Ⅰ部 基礎
  12.  2章 アーキテクチャ思考
  13.   2.1 アーキテクチャと設計
  14.   2.2 技術的な幅
  15.   2.3 トレードオフを分析する
  16.   2.4 ビジネスドライバーを理解する
  17.   2.5 アーキテクティングとコーディングのバランスを取る
  18.  3章 モジュール性
  19.   3.1 定義
  20.   3.2 モジュール性の計測
  21.   3.3 モジュールからコンポーネントへ
  22.  4章 アーキテクチャ特性
  23.   4.1 アーキテクチャ特性の(部分的な)リスト
  24.   4.2 トレードオフと少なくとも最悪でないアーキテクチャ
  25.  5章 アーキテクチャ特性を明らかにする
  26.   5.1 アーキテクチャ特性をドメインの関心事から捉える
  27.   5.2 要件からアーキテクチャ特性を抽出する
  28.   5.3 事例:シリコンサンドイッチ
  29.  6章 アーキテクチャ特性の計測と統制
  30.   6.1 アーキテクチャ特性の計測
  31.   6.2 統制と適応度関数
  32.  7章 アーキテクチャ特性のスコープ
  33.   7.1 結合とコナーセンス
  34.   7.2 アーキテクチャ量子と粒度
  35.  8章 コンポーネントベース思考
  36.   8.1 コンポーネントの分類
  37.   8.2 アーキテクトの役割
  38.   8.3 開発者の役割
  39.   8.4 コンポーネントを識別する流れ
  40.   8.5 コンポーネントの粒度
  41.   8.6 コンポーネント設計
  42.   8.7 事例:「Going、Going、Gone」におけるコンポーネントの発見
  43.   8.8 アーキテクチャ量子再び:モノリシックアーキテクチャと分散アーキテクチャの選択
  44. 第Ⅱ部 アーキテクチャスタイル
  45.  9章 基礎
  46.   9.1 基礎的なパターン
  47.   9.2 モノリシックアーキテクチャと分散アーキテクチャ
  48.  10章 レイヤードアーキテクチャ
  49.   10.1 トポロジー
  50.   10.2 層の分離
  51.   10.3 レイヤーの追加
  52.   10.4 その他の考慮事項
  53.   10.5 このアーキテクチャスタイルを採用する理由
  54.   10.6 アーキテクチャ特性の評価
  55.  11章 パイプラインアーキテクチャ
  56.   11.1 トポロジー
  57.   11.2 事例
  58.   11.3 アーキテクチャ特性の評価
  59.  12章 マイクロカーネルアーキテクチャ
  60.   12.1 トポロジー
  61.   12.2 レジストリ
  62.   12.3 コントラクト
  63.   12.4 事例とユースケース
  64.   12.5 アーキテクチャ特性の評価
  65.  13章 サービスベースアーキテクチャ
  66.   13.1 トポロジー
  67.   13.2 トポロジーの種類
  68.   13.3 サービスの設計と粒度
  69.   13.4 データベース分割
  70.   13.5 アーキテクチャ例
  71.   13.6 アーキテクチャ特性の評価
  72.   13.7 このアーキテクチャスタイルがふさわしいとき
  73.  14章 イベント駆動アーキテクチャ
  74.   14.1 トポロジー
  75.   14.2 ブローカー
  76.   14.3 メディエーター
  77.   14.4 非同期の能力
  78.   14.5 エラー処理
  79.   14.6 データロスの防止
  80.   14.7 ブロードキャスト能力
  81.   14.8 リクエスト・リプライ
  82.   14.9 リクエストベースとイベントベースの間を取る
  83.   14.10 ハイブリッドなイベント駆動アーキテクチャ
  84.   14.11 アーキテクチャ特性の評価
  85.  15章 スペースベースアーキテクチャ
  86.   15.1 一般的なトポロジー
  87.   15.2 データ衝突
  88.   15.3 クラウドとオンプレミス
  89.   15.4 レプリケーションキャッシュと分散キャッシュ
  90.   15.5 ニアキャッシュの考慮
  91.   15.6 実装例
  92.   15.7 アーキテクチャ特性の評価
  93.  16章 オーケストレーション駆動サービス指向アーキテクチャ
  94.   16.1 歴史と哲学
  95.   16.2 トポロジー
  96.   16.3 分類
  97.   16.4 再利用...と結合
  98.   16.5 アーキテクチャ特性の評価
  99.  17章 マイクロサービスアーキテクチャ
  100.   17.1 歴史
  101.   17.2 トポロジー
  102.   17.3 分散
  103.   17.4 境界づけられたコンテキスト
  104.   17.5 API層
  105.   17.6 運用面での再利用
  106.   17.7 フロントエンド
  107.   17.8 通信
  108.   17.9 アーキテクチャ特性の評価
  109.   17.10 参考文献
  110.  18章 適切なアーキテクチャスタイルを選ぶ
  111.   18.1 アーキテクチャにおけるトレンドの変遷
  112.   18.2 判断基準
  113.   18.3 モノリスの事例:シリコンサンドイッチ
  114.   18.4 分散型のケーススタディ:Going、Going、Gone
  115. 第Ⅲ部 テクニックとソフトスキル
  116.  19章 アーキテクチャ決定
  117.   19.1 アーキテクチャ決定に関するアンチパターン
  118.   19.2 アーキテクチャ上重要なもの
  119.   19.3 アーキテクチャデシジョンレコード
  120.  20章 アーキテクチャ上のリスクを分析する
  121.   20.1 リスクマトリックス
  122.   20.2 リスクアセスメント
  123.   20.3 リスクストーミング
  124.   20.4 ユーザーストーリーリスク分析
  125.   20.5 リスクストーミング例
  126.  21章 アーキテクチャの図解やプレゼンテーション
  127.   21.1 図解
  128.   21.2 プレゼンテーション
  129.  22章 効果的なチームにする
  130.   22.1 チーム境界
  131.   22.2 アーキテクトのパーソナリティ
  132.   22.3 どうやって管理する?
  133.   22.4 チームの警告サイン
  134.   22.5 チェックリストの活用
  135.   22.6 ガイダンスの提供
  136.   22.7 まとめ
  137.  23章 交渉とリーダーシップのスキル
  138.   23.1 交渉とファシリテーション
  139.   23.2 リーダーとしてのソフトウェアアーキテクト
  140.   23.3 開発チームに溶け込む
  141.   23.4 まとめ
  142.  24章 キャリアパスを開く
  143.   24.1 20分ルール
  144.   24.2 パーソナルレーダーの開発
  145.   24.3 ソーシャルメディアの使用
  146.   24.4 別れの挨拶
  147.  付録A 自己評価のためのチェックリスト
  148.  参考文献
  149.  訳者あとがき
  150.  著者紹介
  151.  奥付

Product information

  • Title: ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ
  • Author(s): Mark Richards, Neal Ford, 島田 浩二
  • Release date: March 2022
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873119823

You might also like

book

プロダクトマネジメント ―ビルドトラップを避け顧客に価値を届ける

by Melissa Perri, 吉羽 龍太郎

本書は、顧客に価値を届けるプロダクトを作り出すプロダクトマネジメントについて学ぶ本です。プロダクトマネジメントを理解することで、企業がビジネス目標を達成しながら、顧客の課題を解決する方法を解説します。はじめにプロダクトマネージャーの役割と責任を定義し、優れた意思決定を促す戦略の立て方を紹介します。実験と最適化によって作るべきプロダクトを決めるプロセスを解説し、最後にプロダクト主導の組織を支えるための文化や方針を紹介します。ビルドトラップを避け、顧客の課題にフォーカスするプロダクトマネジメントの原則を解説する本書は、規模の大小を問わずすべてのプロダクトチーム、マネージャー、プログラマ、アーキテクト、デザイナ、マーケターに必携の一冊です。

book

行動を変えるデザイン ―心理学と行動経済学をプロダクトデザインに活用する

by Stephen Wendel, 武山 政直, 相島 雅樹, 反中 望, 松村 草也

深津貴之氏推薦!「行動経済学、データ分析、サービス設計のエッセンスが高度に統合された行動変容デザインの良書です」 本書は、行動経済学と心理学をもとに、人々の行動、日常習慣を変える“行動変容”を促すプロダクトをデザインするための書籍です。主にヘルスケア(健康管理)、金融(資産管理)など、これまでITプロダクト(サービス、アプリなど)がなかなか使われてこなかった分野を対象に、ユーザーがやりたいと思っていたものの実行できなかった行動の実現を助けるプロダクトを作り出すための、実践的な視点や知識を提供します。

book

ハンズオンNode.js

by 今村 謙士

Node.jsの入門書。対象読者は、フロントエンド開発の知識はあってもサーバサイド開発は知らないエンジニアや、他言語の経験はあってもNode.jsは触ったことがないプログラマー。本書ではターミナルのプロンプトにコマンドを入力してその反応を確認したり、簡単なスクリプトをNode.js環境で実行したりしながら、Node.jsプログラミングの基本からWebアプリケーションの開発、テスト、デプロイまでをハンズオン形式で学びます。また、コードの背景にある設計思想や、プログラムの挙動の仕組みについてもしっかり掘り下げます。本書のゴールは、読者がNode.jsの全体像を掴み、業務レベルでのアプリケーション開発に対応可能な知識を身につけることです。

book

入門 監視 ―モダンなモニタリングのためのデザインパターン

by Mike Julian, 松浦 隼人

本書は、システムのどの部分をどのように監視すべきか、また監視をどのように改善していくべきかについて解説する書籍です。前半で監視のベストプラクティス、デザインパターン/アンチパターンを示して、監視の基本原則を詳しく説明し、後半でフロントエンド、アプリケーション、サーバ、ネットワーク、セキュリティの各テーマで強力な監視の基盤を設計して実装するための方法を示します。監視対象が変化し、システムアーキテクチャが進化する中で、従来から変わらない監視の基本を示しながら、時代に合った監視の実践を解説する本書は、監視についての理解を深めたいエンジニア必携の一冊です。