「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 テクニックの選択 第3章 緊急事態  3.1 最初のストーリー  3.2 Enterキーの処理  3.3 動作しない!  3.4 次の課題 第4章 モデルの抽出  4.1 どこから始めるか  4.2 基本的な計画  4.3 リファクタリング  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 インクリメンタルな開発の有効性