Design It! ―プログラマーのためのアーキテクティング入門

Book description

本書は、設計スキルを成長させたいプログラマーに向けたアーキテクティングの入門書です。ソフトウェアアーキテクチャの基礎とデザイン思考の考え方から始まり、ソフトウェアアーキテクトとして、チームと共に優れたソフトウェアを作り上げていく方法を包括的に解説します。本書を読むことで、適切なステークホルダーを特定してニーズを理解する方法、アーキテクチャ上重要な要求に基づいて技術やアーキテクチャを適切に選択する方法、アーキテクチャを軽量かつ効果的に評価する方法、チームのアーキテクト力を高める方法などを学べます。モダンなアーキテクチャ設計のための実践的な手法が詰まった本書は、より良いプログラマー、技術リーダー、そしてソフトウェアアーキテクトになるために必携の一冊です。平鍋健児氏による「日本語版序文」を収録。

Table of contents

  1.  大扉
  2.  原書大扉
  3.  クレジット
  4.  本書への推薦の言葉
  5.  日本語版序文
  6.  序文
  7.  はじめに
  8.   対象読者
  9.   本書の読み方
  10.   お問い合わせ
  11.   謝辞
  12. 第Ⅰ部 ソフトウェアアーキテクチャ入門
  13.  1章 ソフトウェアアーキテクトになる
  14.   1.1 ソフトウェアアーキテクトが行うこと
  15.   1.2 ソフトウェアアーキテクチャとは何か
  16.   1.3 チームのアーキテクトになる
  17.   1.4 素晴らしいソフトウェアを作り上げる
  18.   1.5 ケーススタディ: Lionheartプロジェクト
  19.   1.6 次にやること
  20.  2章 デザイン思考の基礎
  21.   2.1 デザイン思考の4つの原則
  22.   2.2 デザインマインドセットを身に付ける
  23.   2.3 Think、Do、Check
  24.   2.4 次にやること
  25. 第Ⅱ部 アーキテクチャ設計の基礎
  26.  3章 デザイン戦略を立てる
  27.   3.1 満足のいく設計を見つける
  28.   3.2 どれくらい前払いの設計を行うかを決める
  29.   3.3 リスクに道案内させる
  30.   3.4 設計計画を立てる
  31.   3.5 Lionheartプロジェクト:ここまでのあらすじ
  32.   3.6 次にやること
  33.  4章 ステークホルダーに共感する
  34.   4.1 適切な人たちと話をする
  35.   4.2 ステークホルダーマップを作る
  36.   4.3 ビジネス目標を発見する
  37.   4.4 Lionheartプロジェクト:ここまでのあらすじ
  38.   4.5 次にやること
  39.  5章 アーキテクチャ上重要な要求を掘り下げる
  40.   5.1 制約によって設計の選択肢を絞る
  41.   5.2 品質特性を定義する
  42.   5.3 機能要求の分類を探す
  43.   5.4 それ以外のアーキテクチャに影響するものを見つけ出す
  44.   5.5 必要な情報を掘り下げる
  45.   5.6 ASRワークブックを組み立てる
  46.   5.7 Lionheartプロジェクト:ここまでのあらすじ
  47.   5.8 次にやること
  48.  6章 アーキテクチャを選ぶ(君がアーキテクチャに選ばれる前に)
  49.   6.1 選択肢を広げるために発散させ、決定するために収束させる
  50.   6.2 制約を受け入れる
  51.   6.3 望ましい品質特性を促進する
  52.   6.4 機能的責務を要素に割り当てる
  53.   6.5 変化に向けて設計する
  54.   6.6 Lionheartプロジェクト:ここまでのあらすじ
  55.   6.7 次にやること
  56.  7章 パターンで土台を作る
  57.   7.1 アーキテクチャパターンとは
  58.   7.2 レイヤー(Layers)
  59.   7.3 ポートとアダプター(Ports and Adapters)
  60.   7.4 パイプとフィルター(Pipe and Filter)
  61.   7.5 サービス指向アーキテクチャ(Service-Oriented Architecture)
  62.   7.6 パブリッシュ・サブスクライブ(Publish-Subscribe)
  63.   7.7 共有データ(Shared-Data)
  64.   7.8 多層(Multi-Tier)
  65.   7.9 コンピタンスセンター(Center of Competence)
  66.   7.10 オープンソース型の貢献(Open Source Contribution)
  67.   7.11 巨大な泥団子(Big Ball of Mud)
  68.   7.12 新しいパターンを発見する
  69.   7.13 Lionheartプロジェクト:ここまでのあらすじ
  70.   7.14 次にやること
  71.  8章 意味のあるモデルで複雑さを扱う
  72.   8.1 アーキテクチャを見通す
  73.   8.2 メタモデルを記述する
  74.   8.3 コード内にモデルを構築する
  75.   8.4 Lionheartプロジェクト:ここまでのあらすじ
  76.   8.5 次にやること
  77.  9章 アーキテクチャデザインスタジオを開く
  78.   9.1 アーキテクチャデザインスタジオを計画する
  79.   9.2 適切なデザインアクティビティを選択する
  80.   9.3 適切な参加者を招く
  81.   9.4 グループを管理する
  82.   9.5 リモートチームと実施する
  83.   9.6 Lionheartプロジェクト:ここまでのあらすじ
  84.   9.7 次にやること
  85.  10章 設計判断を可視化する
  86.   10.1 異なる視点からアーキテクチャを示す
  87.   10.2 素晴らしい図を描く
  88.   10.3 Lionheartプロジェクト:ここまでのあらすじ
  89.   10.4 次にやること
  90.  11章 アーキテクチャを記述する
  91.   11.1 全体像を語る
  92.   11.2 状況に応じた記述方法を選ぶ
  93.   11.3 聴衆に配慮する
  94.   11.4 ステークホルダーの関心事を中心にビューを構成する
  95.   11.5 判断の論理的根拠を説明する
  96.   11.6 Lionheartプロジェクト:ここまでのあらすじ
  97.   11.7 次にやること
  98.  12章 アーキテクチャに通知表をつける
  99.   12.1 評価し、そこから学ぶ
  100.   12.2 設計をテストする
  101.   12.3 評価ワークショップを開く
  102.   12.4 早くから評価を始め、頻繁に継続的に評価する
  103.   12.5 Lionheartプロジェクト:ここまでのあらすじ
  104.   12.6 次にやること
  105.  13章 チームのアーキテクト力を強める
  106.   13.1 アーキテクチャ思考を促進する
  107.   13.2 意思決定を促し、スキルの成長を促進する
  108.   13.3 安全に実践する機会を作り出す
  109.   13.4 設計権限を委譲する
  110.   13.5 共にアーキテクチャを設計する
  111.   13.6 Lionheartプロジェクト:大団円
  112.   13.7 次にやること
  113. 第Ⅲ部 アーキテクトの道具箱
  114.  14章 問題理解のアクティビティ
  115.   アクティビティ1 たった一つを選ぶ(Choose One Thing)
  116.   アクティビティ2 共感マップ(Empathy Map)
  117.   アクティビティ3 GQMワークショップ(Goal-Question-Metric Workshop)
  118.   アクティビティ4 ステークホルダーインタビュー(Interview Stakeholders)
  119.   アクティビティ5 前提リスト(List Assumptions)
  120.   アクティビティ6 品質特性ウェブ(Quality Attribute Web)
  121.   アクティビティ7 ミニ品質特性ワークショップ(Mini-Quality Attribute Workshop)
  122.   アクティビティ8 POV Madlib(Point-of-View Madlib)
  123.   アクティビティ9 応答測定のたたき台(Response Measure Straw Man)
  124.   アクティビティ10 ステークホルダーマップ(Stakeholder Map)
  125.  15章 潜在的な解決策を探るアクティビティ
  126.   アクティビティ11 アーキテクチャの擬人化(Personify the Architecture)
  127.   アクティビティ12 アーキテクチャフリップブック(Architecture Flipbook)
  128.   アクティビティ13 CRCカード(Component Responsibility Collaborator Cards)
  129.   アクティビティ14 概念マップ(Concept Map)
  130.   アクティビティ15 分割統治(Divide and Conquer)
  131.   アクティビティ16 イベントストーミング(Event Storming)
  132.   アクティビティ17 グループポスター(Group Posters)
  133.   アクティビティ18 ラウンドロビン設計(Round-Robin Design)
  134.   アクティビティ19 ホワイトボードジャム(Whiteboard Jam)
  135.  16章 設計をタンジブルにするアクティビティ
  136.   アクティビティ20 アーキテクチャデシジョンレコード(Architecture Decision Records)
  137.   アクティビティ21 アーキテクチャ俳句(Architecture Haiku)
  138.   アクティビティ22 コンテキスト図(Context Diagram)
  139.   アクティビティ23 まずこれを読もうリスト(Greatest Hits Reading List)
  140.   アクティビティ24 インセプションデッキ(Inception Deck)
  141.   アクティビティ25 モジュール分解図(Modular Decomposition Diagram)
  142.   アクティビティ26 選ばなかった道(Paths Not Taken)
  143.   アクティビティ27 学習か判断のためのプロトタイプ(Prototype to Learn or Decide)
  144.   アクティビティ28 シーケンス図(Sequence Diagram)
  145.   アクティビティ29 システムメタファー(System Metaphor)
  146.  17章 設計の選択肢を評価するアクティビティ
  147.   アクティビティ30 アーキテクチャブリーフィング(Architecture Briefing)
  148.   アクティビティ31 コードレビュー(Code Review)
  149.   アクティビティ32 意思決定マトリクス(Decision Matrix)
  150.   アクティビティ33 振る舞いの観察(Observe Behavior)
  151.   アクティビティ34 質問-意見-懸念(Question-Comment-Concern)
  152.   アクティビティ35 リスクストーミング(Risk Storming)
  153.   アクティビティ36 サニティチェック(Sanity Check)
  154.   アクティビティ37 シナリオウォークスルー(Scenario Walkthrough)
  155.   アクティビティ38 スケッチして比較(Sketch and Compare)
  156.  付録A コミュニティ貢献者の略歴
  157.  参考文献
  158.  訳者あとがき
  159.   謝辞
  160.  著者紹介
  161.  奥付

Product information

  • Title: Design It! ―プログラマーのためのアーキテクティング入門
  • Author(s): Michael Keeling, 島田 浩二
  • Release date: November 2019
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873118956