ThoughtWorksアンソロジー

―アジャイルとオブジェクト指向によるソフトウェアイノベーション

[cover photo]
TOPICS
発行年月日
PRINT LENGTH
276
ISBN
978-4-87311-389-0
原書
The ThoughtWorks Anthology
FORMAT
PDF
Ebook
2,860円
Ebookを購入する

マーティン・ファウラーが所属することでも知られるThoughtWorks社は、アジャイルコミュニティへの貢献で世界に知られています。本書は14人のThoughtWorkerが綴ったエッセイ集です。DSL、プログラミング言語、多言語プログラミング、オブジェクト指向設計、マネージメント、メトリクス、SOA、ドメインアノテーション、ビルド、デプロイ、テストといった、ソフトウェアのライフサイクル全般にわたる広範囲かつ興味深いテーマが目白押しです。ThoughtWorkerの知見に触れることができる一冊です。

翻訳者によるサポートページ
オージス総研の本

和書(日本語翻訳版)のサンプル
「推薦の言葉」「賞賛の声」「まえがき」のPDF(500KB)

正誤表

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

正誤表 - 2009年1月掲載(2刷で修正予定)

■P.91 本文の下から2行目
  • 【誤】● スコープバーンアップ:納期までのスコープ†における提供プロセス††の状態
  • 【正】● スコープバーンアップ:納期までのスコープ††における提供プロセス‡の状態
■P.130 訳注
  • 【誤】Retention(RetentionPolicy.RUNTIME)
  • 【正】@Retention(RetentionPolicy.RUNTIME)

目次

目次

推薦の言葉
賞賛の声
まえがき
1 章 ビジネスソフトウェアの「ラストマイル」を解決する
    1.1 「ラストマイル」問題とは何か
    1.2 問題の本質を理解する
    1.3 「ラストマイル」問題を解決するには
    1.4 人
    1.5 自動化
    1.6 非機能要求テストを自動化するための設計
    1.7 設計を稼働環境から分離せよ
    1.8 バージョンのないソフトウェアへ
2 章 とある秘密基地とRuby による20 のDSL
    2.1 秘密基地の例
    2.2 グローバル関数の利用
    2.3 オブジェクトの利用
        2.3.1 クラスメソッドとメソッドチェイン
        2.3.2 Expression Builder
        2.3.3 さらなるメソッドチェイン
    2.4 クロージャの利用
    2.5 コンテキストの評価
    2.6 リテラルコレクション
        2.6.1 可変長引数メソッド
    2.7 動的受信
    2.8 まとめ
3 章 言語の緑豊かな景観
    3.1 イントロダクション
    3.2 言語の標本
    3.3 種類の多種性
        3.3.1 パラダイム
        3.3.2 型特性
        3.3.3 実行時の振る舞い
        3.3.4 実装モデル
    3.4 言語の系統樹
    3.5 どれも興味深いことであるが、どうして重要なのか
4 章 多言語プログラミング
    4.1 多言語プログラミングとは
    4.2 Groovy の方法でファイルを読む
    4.3 JRuby とisBlank
    4.4 Jaskell と関数プログラミング
    4.5 Java のテスト
    4.6 多言語プログラミングの未来
5 章 オブジェクト指向エクササイズ
    5.1 ソフトウェア設計を改善する9 つのステップ
    5.2 エクササイズ
        5.2.1 9 つのルール
        5.2.2 ルール1:1 つのメソッドにつきインデントは1 段階までにすること
        5.2.3 ルール2:else 句を使用しないこと
        5.2.4 ルール3:すべてのプリミティブ型と文字列型をラップすること
        5.2.5 ルール4:1 行につきドットは1 つまでにすること
        5.2.6 ルール5:名前を省略しないこと
        5.2.7 ルール6:すべてのエンティティを小さくすること
        5.2.8 ルール7:1 つのクラスにつきインスタンス変数は2 つまでにすること
        5.2.9 ルール8:ファーストクラスコレクションを使用すること
        5.2.10 ルール9:Getter 、Setter 、プロパティを使用しないこと
    5.3 まとめ
6 章 ところでイテレーションマネージャとは何だろうか
    6.1 イテレーションマネージャとは何だろうか
    6.2 よいイテレーションマネージャとは
    6.3 何がイテレーションマネージャでないか
    6.4 イテレーションマネージャとチーム
    6.5 イテレーションマネージャと顧客
    6.6 イテレーションマネージャとイテレーション
    6.7 イテレーションマネージャとプロジェクト
    6.8 まとめ
7 章 プロジェクトバイタルサイン
    7.1 プロジェクトバイタルサインとは
    7.2 プロジェクトバイタルサイン vs..プロジェクトヘルス
    7.3 プロジェクトバイタルサイン vs..情報発信器
    7.4 プロジェクトバイタルサイン:スコープバーンアップ
        7.4.1 スコープバーンアップの情報発信器の例
        7.4.2 スコープの測定単位を定義する
        7.4.3 中間マイルストーンによってボトルネックを発見する
        7.4.4 スコープバーンアップ図の詳細説明
    7.5 プロジェクトバイタルサイン:提供品質
        7.5.1 提供品質における情報発信器の例
        7.5.2 バグカウント図の詳細説明
    7.6 プロジェクトバイタルサイン:予算バーンダウン
        7.6.1 予算バーンダウンの情報発信器の例
        7.6.2 予算バーンダウン図の詳細説明
    7.7 プロジェクトバイタルサイン:開発実況
        7.7.1 開発実況における情報発信機の例
        7.7.2 開発状態の定義
        7.7.3 ストーリーボードとストーリーカードの詳細説明
    7.8 プロジェクトバイタルサイン:チーム知覚
        7.8.1 チーム知覚の情報発信器の例
        7.8.2 チームムード図の詳細説明
8 章 コンシューマ駆動契約――サービス進化パターン
    8.1 サービスの進化:例
    8.2 スキーマのバージョニング
        8.2.1 拡張点
    8.3 互換性に影響する変更
        8.3.1 Schematron
    8.4 コンシューマ駆動契約
        8.4.1 プロバイダ契約
        8.4.2 コンシューマ契約
        8.4.3 コンシューマ駆動契約
        8.4.4 契約の特性の要約
        8.4.5 実装
        8.4.6 メリット
        8.4.7 コンシューマ駆動契約とSLA
        8.4.8 課題
        8.4.9 まとめ
9 章 ドメインアノテーション
    9.1 ドメイン駆動設計とアノテーション
        9.1.1 ドメイン固有メタデータ
        9.1.2 Java のアノテーションと.NET の属性
        9.1.3 ドメインアノテーションとは
        9.1.4 ドメインアノテーションの実例
    9.2 ケーススタディ:リロイのトラック
        9.2.1 ドメインモデル
        9.2.2 データの分類
        9.2.3 ナビゲーションのヒント
    9.3 まとめ
10 章 Ant ビルドファイルのリファクタリング
    10.1 イントロダクション
        10.1.1 リファクタリングとは。Ant とは
        10.1.2 いつリファクタリングをすべきか。あるいは、いつ逃げ出すべきか
        10.1.3 build.xml はリファクタリング可能か
    10.2 Ant リファクタリングカタログ
        10.2.1 macrodef の抽出
        10.2.2 ターゲットの抽出
        10.2.3 宣言の導入
        10.2.4 依存によるcall の置き換え
        10.2.5 プロパティによるリテラルの置き換え
        10.2.6 filtersfile の導入
        10.2.7 プロパティファイルの導入
        10.2.8 ターゲットのラッパービルドファイルへの移動
        10.2.9 description によるコメントの置き換え
        10.2.10 デプロイ用コードのimport 先への分離
        10.2.11 要素のantlib への移動
        10.2.12 fileset による多数のライブラリ定義の置き換え
        10.2.13 実行時プロパティの移動
        10.2.14 ID を用いた要素の再利用
        10.2.15 プロパティのターゲット外部への移動
        10.2.16 location によるvalue 属性の置き換え
        10.2.17 build.xml 内へのラッパースクリプトの取り込み
        10.2.18 taskname 属性の追加
        10.2.19 内部ターゲットの強制
        10.2.20 出力ディレクトリの親ディレクトリへの移動
        10.2.21 apply によるexec の置き換え
        10.2.22 Publisher の利用
        10.2.23 明確なターゲット名の導入
        10.2.24 ターゲット名の名詞への変更
    10.3 まとめ
    10.4 参考文献
    10.5 リソース
11 章 1 クリックデプロイ
    11.1 継続的ビルド
    11.2 継続的ビルドを越えて
    11.3 ライフサイクル全体の継続的インテグレーション
        11.3.1 バイナリの管理
    11.4 チェックインゲート
    11.5 受け入れテストゲート
    11.6 デプロイの準備
    11.7 その後のテスト
    11.8 プロセスの自動化
    11.9 まとめ
12 章 アジャイルかウォーターフォールか――エンタープライズWeb アプリケーションのテスト
    12.1 イントロダクション
    12.2 テストのライフサイクル
    12.3 テストの種類
        12.3.1 単体テスト
        12.3.2 機能テスト
        12.3.3 探索的テスト
        12.3.4 統合テスト
        12.3.5 データの妥当性確認
        12.3.6 ユーザ受け入れテスト
        12.3.7 性能テスト
        12.3.8 非機能テスト
        12.3.9 回帰テスト
        12.3.10 本番検証
    12.4 環境
        12.4.1 開発統合環境
        12.4.2 システム統合環境
        12.4.3 ステージング環境
        12.4.4 本番環境
    12.5 課題管理
    12.6 ツール
    12.7 レポートとメトリクス
    12.8 テストのロール
        12.8.1 テスト分析
        12.8.2 テスト記述
        12.8.3 テスト実行
        12.8.4 環境管理
        12.8.5 課題管理
        12.8.6 トラブルシューティング
    12.9 参考文献
13 章 実践的な性能テスト
    13.1 性能テストとは何か
    13.2 要求収集
        13.2.1 何を測定するのか
        13.2.2 どのように数値を設定するか
        13.2.3 要求収集を通常のソフトウェア開発プロセスにどのように適合させるのか
        13.2.4 開発者も性能テストによって要求を持たないのか
        13.2.5 性能要求の利害関係者を見つけられない場合はどうなるか
        13.2.6 顧客があまり技術に詳しくなく、不可能と考えられることを要求する場合はどうなるか
        13.2.7 なぜビジネスアナリストにもこれらの要求収集に参加させないのか
        13.2.8 まとめ
    13.3 テストの実行
        13.3.1 どのようなテストを繰り返し行うのか
        13.3.2 いつテストすべきか
        13.3.3 どのような環境でテストすべきか
        13.3.4 性能の低いテスト機でのテスト結果をどのように本番環境に関連づけるか
        13.3.5 性能テストに適したデータベース容量はどのくらいか
        13.3.6 サードパーティインターフェイスをどのように扱うか
        13.3.7 何種類のテストケースが必要か
        13.3.8 レスポンスタイムとスループットに数種類の測定方法をとるのはなぜか
        13.3.9 システムのすべての機能をテストする必要があるのか
        13.3.10 まとめ
    13.4 コミュニケーション
        13.4.1 知る必要があるのは誰か
        13.4.2 つまり、単にレポートを作成すればよいということか
        13.4.3 まとめ
    13.5 プロセス
        13.5.1 すべてをどのようにつなげるのか
        13.5.2 遅れを防ぐためにはどうすればよいか
        13.5.3 問題が発見されたとき、対策漏れがないようにするにはどうすればよいか
    13.6 まとめ
参考文献
訳者あとがき
索引