出版社内容情報
アジャイル系のプログラム開発手法の1つであるXP(エクストリームプログラミング)の入門書です。本書では、「Three Extremos」と呼ばれる3人の主要なXP提唱者の1人であるRon Jeffriesが、仮想的なプロジェクトの実行を通じて、エクストリームプログラミングの概念(シンプル設計やペアプログラミング、テスト駆動開発、ユーザーテスト、リファクタリングといった各種のプラクティス、イテレーション、ストーリーなど)や実際の開発の流れを紹介します。
従来のエクストリームプログラミング解説書の多くはプログラム言語としてJavaを使用してきましたが、本書ではMicrosoftの.NET言語の1つであるC#を使用します。.NET開発者でエクストリームプログラミングを導入することを検討されている方や、既にエクストリームプログラミングを実践していてC#を使用することを考えている方に最適な1冊です。
■目次
推薦のことば
はじめに
謝辞
序章:エクストリームプログラミング(XP)
第1章 XML Notepadのストーリー
1.1 XPスタイルでのアプリケーション構築
1.2 最初の構想
1.3 最高のものからの学習
1.4 Petzoldのメモ帳プログラムバージョン1
1.5 キーボードイベントの処理
1.6 リリースの形成
1.7 最初のリリースに含めるストーリー
1.8 次のイテレーションとリリース
1.9 XProgramming.comのフォーマット
第2章 NUnitを用いたテスト
2.1 テスト:コアプラクティス
2.2 NUnit
2.3 NUnitの設定
2.4 シンプルなパターンの発見
2.5 ペアになったタグ
2.6 ペアになった未知のタグ
2.7 一致しないタグ
2.8 残されていること
2.8.1 思い付いたこと
2.9 NUnitにおけるデバッグ作業の概説
2.10 デバッグ時の起動プログラム
2.11 NUnitプロセスへのアタッチ
2.12 テクニックの選択
2.13 まとめ
第3章 緊急事態
3.1 最初のストーリー
3.2 Enterキーの処理
3.3 動作しない!
3.4 次の課題
第4章 モデルの抽出
4.1 どこから始めるか
4.2 基本的な計画
4.3 リファクタリング
4.3.1 最後に
4.4 次の課題
第5章 アイデアの表現
5.1 実行すること
5.2 「わかりやすさ」のためのコメント
5.2.1 本当にわかりやすくなっているのか
5.3 コメントは「完成していない」ことを意味する
5.3.1 簡単な導入
5.3.2 カーソル行
5.4 ここでテストが必要となる
5.5 テストの追加
5.6 開始コード
5.7 現在のコード
5.8 次の課題
5.8.1 ストーリーが動作する
5.8.2 移ることはできない:ユーザー受け入れテストはどこにあるのか
5.9 小さなリファクタリング:美しくないget操作
5.10 テキストコピーの削除
5.11 観察結果および結論
5.12 見直し
5.13 現在のコード
第6章 最初のユーザー受け入れテスト
6.1 ユーザーテストは必要か
6.2 テストは必要
6.3 テストは動作する
6.4 長期の遅延を想像する
6.4.1 学習ルール
6.4.2 問題後回しルール
6.5 ファイルからのテスト
6.6 多数のファイルのテスト
6.6.1 モデルの抽出
6.6.2 テストに向かって作業を進める
6.7 次の課題
第7章 一切合財
7.1 ユーザーテストの強化
7.2 テストの存在
7.3 最初のテストの成功
7.4 やるべきことは1つ
7.5 オブジェクトの必要性
7.5.1 テストできなければ、それは間違っている
7.5.2 手続きコードはとてもひどい悪臭がする
7.5.3 グリーンバーの間隔が長すぎる
7.6 今日の結論
7.7 考察
7.7.1 意図を明確にするプログラミング
7.7.2 適切なコードの管理
7.8 コードマネージャのアップグレード
第8章 InputCommandオブジェクト
8.1 要約
8.2 行の洗練
8.3 SelectionStartメソッドの設定
8.3.1 クラフトの蓄積
8.3.2 Watts Humphreyが推奨するコンパイル前チェック
第9章 最初のストーリーの完成
9.1 作業計画の作成
9.1.1 コマンドというメタファの推進
9.1.2 読み込みロジックの重複
9.1.3 コードマネージャの自動実行機能
9.1.4 Watts Humphreyとの約束
9.2 コードの整理
9.2.1 CustomerTestクラスのArrayToEndメソッド
9.2.2 テストの土台
9.2.3 テスト名の変更
9.2.4 変数名の変更
9.2.5 InterpretFileInputメソッド
9.2.6 読み込みループ
9.3 InputCommandクラスのリファクタリング
9.3.1 Watts Humphreyとの約束の有用性
9.3.2 CleanTheLinesメソッド
9.4 些細な詳細
9.4.1 コマンドのテスト
9.4.2 TextModelクラスのTestTextメソッド
9.4.3 コメント
9.4.4 LinesAfterCursorメソッドとLinesThroughCursorメソッド
9.5 結論
9.6 出荷
9.7 イテレーション計画
9.7.1 ファイルの保存
9.7.2 Enterキー入力後のスクロール
9.7.3 XML変換
9.8 結論
第10章 バグを発見し、テストを作成する
10.1 バグの発生
10.2 欠陥を発見し、テストを作成する
10.3 テキストボックスの模型
10.3.1 モックオブジェクトの効果
10.4 メソッドの抽出
10.5 スクロールのテスト
10.6 インターフェイスの作成
10.7 多い学習、多くないテスト
10.7.1 属性、操作の横恋慕
10.7.2 誕生間近のオブジェクト
10.7.3 インターフェイスの作成と使用
10.7.4 モックオブジェクトの作成
10.7.5 多くのテストの必要性
10.7.6 目的地までの距離
10.8 結論
10.9 コードの概要
10.10 CustomerTest.cs
10.11 InputCommand.cs
10.12 InputCommandTest.cs
10.13 ITestTextBox.cs
10.14 MockTextBox.cs
10.15 Notepad.cs
10.16 TestableTextBox.cs
10.17 TestScroll.cs
10.18 TestTextBox.cs
10.19 TestTextModel.cs
10.20 TextModel.cs
10.21 XMLNotepad.cs
第11章 セクションタグの追加(パート1)
11.1 いくつかのストーリーの検討
11.2 簡単な考察
11.2.1 入力コマンドテスト
11.2.2 ITestTextBoxクラスとMockTextBoxクラス
11.2.3 テキストモデル用テスト
11.3 新規のユーザーテスト
11.4 プログラマテストの追加
11.5 昼食後少し遅れて
11.6 Ctrl+Sキーの追加(大部分)
11.6.1 Alt+Sキー用のテスト
11.6.2 Alt+Sキーの実装
11.7 コードの改善
11.8 重複の除去
11.9 次の課題
第12章 セクションタグの追加(パート2)
12.1 コードのレビュー
12.2 すべてのテストが動作する
12.3 教訓
12.4 TextModelのコード
12.5 考察
12.6 気付いたこと
12.7 個人的な見解
12.8 これまでの成果
12.9 コードのまとめ
第13章 メニューの発見
13.1 問題の調査
13.2 他の問題
13.3 地固め
13.4 メニューの追加
13.5 これまでの成果
13.6 次の課題
第14章 家では試さないでください
14.1 暇な脳は悪魔の遊び場
14.1.1 YAGNI
14.2 解決策の概要
14.3 落とし穴にさらにはまる
14.4 すぐに発生
14.5 家では試さないでください
第15章 落とし穴からの脱出
15.1 リモートでのペア作業
15.2 デリゲートとは何か
15.3 XMLNotepadでのデリゲートの使用
第16章 preタグの追加
16.1 新しいストーリー
16.2 preタグ
16.3 予想外の新しいストーリーの登場
16.3.1 重要な教訓
第17章 実行できないテストの実施方法
17.1 ユーザー受け入れテストの改善の必要性
17.2 問題の再確認
17.3 最初の改善
17.4 沈没しそうな船を見捨てるな
17.5 接続のテスト
17.6 待て、待て、待て、待て
第18章 シンプルな機能から得られる教訓
18.1 preタグ内のShift+Enterキーの入力
18.2 Shift+Enterキーのテスト
18.2.1 1回目の間違い
18.2.2 2回目の間違い
18.3 新しい計画
18.4 学習した教訓
18.4.1 意図を明確にするプログラミング
18.5 これまでの成果
第19章 水平線にかかる暗雲
19.1 大ピンチ!
19.2 テストの必要性
19.3 イエローバー
第20章 Shift+Enterキーのストーリーの完成
20.1 仕事のしあげ
20.1.1 規則に反していないか
20.2 行うべきこと
20.3 動作後のユーザーテストの追加
20.4 ユーザー受け入れテストの改良
20.5 とりあえず、すべて完成
第21章 行うべきこと
21.1 Commandパターン
21.2 Adapterパターン
21.3 Mediatorパターン
21.4 パターン本を抱えた少年
21.5 Fileクラスの派生
21.6 より効率的なテキスト表示
21.6.1 TextBoxコントロールの代わりにRichTextBoxコントロールを使用する
21.6.2 XMLの適切な保持
21.6.3 タグの保護
21.6.4 構造の検証
21.6.5 ツリーとしてのTextModelオブジェクト
21.7 .NET FrameworkにおけるXMLのサポート
21.8 計画とは
21.8.1 学習を行うというストーリーの作成
21.8.2 マネージャによる学習時間の割り当て
21.8.3 プログラマによる学習時間の捻出
21.9 再度、計画とは
第22章 Troyからのデリゲート
22.1 ペアと行うべきことの発見
22.2 小さなリファクタリング
22.3 重複の除去のための重複の追加
22.4 まとめ
22.4.1 これは適切な変更だったか
22.4.2 ペアは成功したか
22.4.3 他に行うべきこととして何が残っているか
22.4.4 最後に
第23章 計画の作成
23.1 納期に合わせた計画の立て方
23.2 提案されるストーリー
23.3 見積もり方法について
23.4 計画
第24章 ファイルの保存と読み込み
24.1 機能からの開始
24.2 メニュー
24.3 欠陥を示し、修正する
24.4 ずる賢い計画
24.5 最後の仕上げ
24.6 見直し
24.7 XML Notepadフォーム
第25章 一緒にタグ付け
25.1 方向の設定
25.2 基本方針
25.3 実際の作業
25.4 プラットフォームの改善
25.5 sbテストから開始する
25.6 リスト項目の追加
25.7 シンプルの反対
25.8 行わなければならないこと
25.9 開始時のアイデア
25.10 重複の除去
25.11 責任の移動
25.12 整理
25.13 見直し
25.14 番号付きリスト
25.15 現時点でのコード
25.16 ユーザーテストの抜粋
第26章 メニュー配列
26.1 苦痛
26.2 計画
26.3 メニュー配列
26.4 テーブル
26.5 これまでのレビュー
26.6 TextModelのコード
第27章 記事の表示
27.1 本日のプロセス
27.2 可能性
27.3 調査と実験
27.3.1 .NET FrameworkのInternet Explorerコントロール
27.3.2 ブラウザの起動
27.4 思いがけない発見
27.4.1 本当にすばらしい機能
27.5 ごまかしているのか
27.6 見直しの力
27.7 ようやく晴天
27.8 魔法のように
27.9 次の課題
第28章 Undoの悲劇
28.1 最終試験
28.2 要件
28.3 可能な解決策
28.4 テストの方法
28.5 テストの開始
28.6 保存用のオブジェクトとしてのTextModelオブジェクトの使用
28.7 毎回のスナップショット作成
28.8 組み込み
28.9 実験の消去
28.10 不思議な状態
28.11 既に完成しているのか
28.12 作業内容のレビュー
28.13 全体像
28.14 証明
第29章 Undoの最適化された最終形
29.1 再出発の決定
29.2 作業場所の整理
29.3 新しいアイデア
29.4 成功への道の小さな挫折
29.5 可能な限りの最適化
29.6 Undo機能のまとめ
第30章 長く暗い魂のティータイム
30.1 回想
30.2 繰り返される間違い
30.3 苦痛の中での作業
30.4 設計の思考
30.5 テストなしでの実験
30.6 1回目の試み
30.7 2回目の試みと大きな間違い
30.8 3回目の試み
30.9 最初の原稿からの抜粋:悪臭
第31章 プロジェクトの反省
31.1 過去からの学習
31.2 今回のプログラムの完成度
31.3 本物のユーザーの価値
31.4 ユーザーテスト
31.5 ペアプログラミング
31.6 プログラミングの傾向
31.7 テストの有用性
31.8 オブジェクトの有用性
31.9 テストとオブジェクトの十分な有用性
31.10 プロダクトの自己使用
31.11 コードマネージャ
31.12 コーディング規約
31.13 応用機能を使用するための準備
31.14 TextModelクラスの大きさ
31.15 未熟な最適化
31.16 プレッシャーへの対応
31.17 プレッシャーと生産性
31.18 プレッシャーと品質
31.19 デバッグテクニック
31.20 設計とコードの品質
31.21 「追加設計」の有用性
31.22 些細な質問
31.23 怪我の影響
31.24 インクリメンタルな開発の有効性
目次
XML Notepadのストーリー
NUnitを用いたテスト
緊急事態
モデルの抽出
アイデアの表現
最初のユーザー受け入れテスト
一切合財
InputCommandオブジェクト
最初のストーリーの完成
バグを発見し、テストを作成する〔ほか〕
著者等紹介
ジェフリーズ,ロン[ジェフリーズ,ロン][Jeffries,Ronald E.]
ソフトウェア開発者の大半が生まれる前からソフトウェアを作成していた。熟練のシステム開発者であり、世界で最も優れたソフトウェア開発者たちを手助けしている
長瀬嘉秀[ナガセヨシヒデ]
1986年東京理科大学理学部応用数学科卒業。朝日新聞社を経て、1989年テクノロジックアートを設立。OSF(Open Software Foundation)のテクニカルコンサルタントとしてDCE関連のオープンシステムの推進を行う。OSF日本ベンダ協議会DCE技術検討委員会の主査を務める。現在、株式会社テクノロジックアート代表取締役。UMLによるオブジェクト指向セミナーの講師、UML関連のコンサルティングを行っている。UML Profile for EDOCの共同提案者、ISO/IEC JTC1 SC32/WG2委員、情報処理相互運用技術協会(INTAP)オープン分散処理委員、電子商取引推進協議会(ECOM)XML/EDI標準化調査委員。明星大学情報学部講師
※書籍に掲載されている著者及び編者、訳者、監修者、イラストレーターなどの紹介情報です。
-
- 和書
- ある「BC級戦犯」の手記
-
- 電子書籍
- モンパの木の下で 「椎名誠 旅する文学…