インターフェイス指向設計

―アジャイル手法によるオブジェクト指向設計の実践

[cover photo]
TOPICS
Programming
発行年月日
PRINT LENGTH
240
ISBN
978-4-87311-366-1
原書
Interface Oriented Design
FORMAT
PDF
Ebook
2,860円
Ebookを購入する

本書はインターフェイスを用いたソフトウェア設計の仕組みを解説する本です。ソリューションをインターフェイスのレベルにまで分解し、相互作用するインターフェイスを適切に実装して、しっかりとした構造を持つプログラムを作成する手法を学びます。インターフェイスの凝集度とは、継承の利点、リモートインターフェイスとの通信など、基礎となる知識から、開発プロセスについて、Web自動集約ツール、サービスレジストリなど、発展的な内容まで、「インターフェイスから考える設計」についてを包括的に学びます。
最初に完璧をめざすのではなく「まず動くものをつくる」というアジャイル開発手法でインターフェイス設計を学ぶ本書は、より信頼度の高いソフトウェアを開発したい技術者必携の一冊です。

目次

監訳者まえがき
はじめに

I部 インターフェイスのすべて

1章 インターフェイスとは何か
    1.1 ピザを注文するインターフェイス
        1.1.1 ピザの注文
        1.1.2 ピザのインターフェイス
    1.2 現実のインターフェイス
        1.2.1 インターフェイスって何?
        1.2.2 その他のインターフェイス
        1.2.3 Unixデバイス
        1.2.4 インターフェイス
        1.2.5 テキスト型インターフェイス
        1.2.6 GUIインターフェイス
    1.3 まとめ

2章 インターフェイスと契約
    2.1 インターフェイスの三原則
    2.2 契約による設計
        2.2.1 契約のチェック
        2.2.2 ピザ注文時の契約
        2.2.3 ファイル処理時の契約
        2.2.4 プロトコル
    2.3 インターフェイスの契約をテストする
        2.3.1 ピザの契約をテストする
        2.3.2 Fileの契約をテストする
    2.4 契約のレベル
        2.4.1 明示的な型の契約と暗黙的な型の契約
    2.5 契約の品質
    2.6 まとめ

3章 インターフェイスの材料
    3.1 データインターフェイスとサービスインターフェイス
    3.2 データアクセスインターフェイスの構造
        3.2.1 シーケンシャルな取得とランダムな取得
        3.2.2 プルインターフェイスとプッシュインターフェイス
        3.2.3 各組み合わせの実装
    3.3 インターフェイスの選択
    3.4 ステートフルインターフェイスとステートレスインターフェイス
    3.5 インターフェイスの変換
        3.5.1 非オブジェクト指向インターフェイスをオブジェクト指向インターフェイスに
        3.5.2 用途に特化したインターフェイス
        3.5.3 テキスト型インターフェイスを、プログラム型インターフェイスに変換する
    3.6 複数インターフェイスの実装
        3.6.1 アイスクリームのインターフェイス
    3.7 まとめ

4章 何をインターフェイスに持たせるべきか
    4.1 凝集度
    4.2 プリンタのインターフェイス
    4.3 結合度
    4.4 インターフェイスの評価基準
        4.4.1 最小か完全か
        4.4.2 単純さと複雑さ
    4.5 まとめ

5章 継承とインターフェイス
    5.1 継承とインターフェイス
    5.2 ポリモーフィズム
    5.3 階層
        5.3.1 継承とメソッド
        5.3.2 フットボールチーム
    5.4 InputStreamをインターフェイスで代替する
        5.4.1 InputStreamインターフェイス
        5.4.2 入力をマークする
        5.4.3 FileInputStream:もう1つのインターフェイス
        5.4.4 InputStreamのレビュー
    5.5 まとめ

6章 リモートインターフェイス
    6.1 イントロダクション
        6.1.1 外部インターフェイス
        6.1.2 ネットワークの中断
    6.2 手続き型インターフェイスとドキュメント型インターフェイス
        6.2.1 手続き型スタイル
        6.2.2 ドキュメント型スタイル
    6.3 外部インターフェイスの特性
        6.3.1 同期と非同期
        6.3.2 ステートフルとステートレス
        6.3.3 安定性と柔軟性
    6.4 サービスの発見
    6.5 ドキュメント型スタイルについてさらに詳しく
        6.5.1 ドキュメントの表現
        6.5.2 ドキュメントの検証
        6.5.3 ドキュメントのエンコーディング
        6.5.4 ドキュメントベースのビジネスフロー
    6.6 セキュリティ
    6.7 テスト
    6.8 まとめ

II部 インターフェイス指向による開発

7章 開発の進め方
    7.1 アジャイルな手法
    7.2 ビジョンの決定
    7.3 概念化
        7.3.1 テスト
    7.4 分析と設計
    7.5 インターフェイス指向設計
        7.5.1 IRIカード
    7.6 設計
        7.6.1 テスト
    7.7 実装
    7.8 まとめ

III部 インターフェイス指向開発の実例

8章 リンクチェッカー
    8.1 ビジョン
    8.2 概念化
    8.3 分析
    8.4 設計
        8.4.1 WebPage
        8.4.2 Webページを解析する
        8.4.3 Webページの取得
        8.4.4 リンク情報の保持
        8.4.5 リンクをたどる処理を制御する
        8.4.6 レポートの作成
    8.5 テスト
    8.6 実装
        8.6.1 コード
        8.6.2 GUIのアイデア
    8.7 最後に
    8.8 まとめ

9章 Web自動集約ツール
    9.1 ビジョン
    9.2 概念化
    9.3 分析
        9.3.1 DataGathererの具体化
    9.4 テスト
    9.5 設計
        9.5.1 Webページの取得ムムテキスト型インターフェイスの場合
    9.6 実装
    9.7 最後に
    9.8 まとめ

10章 サービスレジストリ
    10.1 ビジョン
    10.2 概念化
    10.3 分析
        10.3.1 ユニークなServiceID
        10.3.2 登録のテスト
        10.3.3 登録解除
        10.3.4 パフォーマンスをテストする
        10.3.5 セキュリティ
    10.4 設計
        10.4.1 ドキュメント型インターフェイス
    10.5 実装
        10.5.1 ドキュメントを表現するインターフェイス
        10.5.2 ドキュメント形式の詳細
        10.5.3 コード
    10.6 公布済インターフェイス
        10.6.1 複数サーバー
        10.6.2 分散サーバー
        10.6.3 実装
    10.7 今後のイテレーション
        10.7.1 TimeToLive
        10.7.2 ServiceConsumerの認可
    10.8 まとめ

11章 パターン
    11.1 はじめに
    11.2 Factory Method
    11.3 Proxy
    11.4 Decorator
    11.5 Adapter
    11.6 Façade
    11.7 Composite
    11.8 まとめ

付録
    A.1 ドキュメント型インターフェイスについての補足
        A.1.1 ドキュメントの指針
        A.1.2 標準ドキュメントを使う
    A.2 SOA(サービス指向アーキテクチャー)
    A.3 コレクションとコレクションメソッド
        A.3.1 Web自動集約ツール
    A.4 設定
        A.4.1 設定とFactory
    A.5 サービスレジストリの追加イテレーション
        A.5.1 一致条件によるマッチング
    A.6 その他のインターフェイスに関するトピック
        A.6.1 複数インターフェイス連携の強制
        A.6.2 Mix-in
        A.6.3 継承よりもコンポジション

索引