0
RELOADED

 KAZUHIRO   FUJIE
Reloaded
Test-Driven Development




      Kazuhiro Fujie
Itochu techno-science corporation
Follow the white rabbit.
quot; Have you ever had a dream,
Neo, that you were so sure was
              real?
What if you were unable to wake
     f...
quot; Welcome to the Desert
     of the Real! quot;
        Morpheus
Water Fall
• 予測、目録
• 大量のドキュメント
 – 変更ができない、実際との乖離
 – フィードバックの欠如
• 欠陥、浪費
• プレッシャー、ストレス
• 繰り返す、雪だるま式、混沌
Negative Feedback Loop


  Predictability   Inventory




    Waste           Feedback
quot; I’m sorry, This is the
      dead end. quot;
    Smith (not Agent)
quot; Not like this, not like this. quot;

             Switch
Always another way.

     Key Maker
Antithesis
• Agile
  – http://www.agilealliance.com/
• eXtreme Programming
  – XP
  – http://www.xprogramming.com/
  – htt...
Test-Driven Development
• TDD
• テスト駆動開発
• Kent Beck
• テスト・ファースト
• シンプル
• 確実な開発手法
Our way or the Highway

        Switch
Simplistic Cycle
• Write a test
• Make it compile
• Make it run
• Repeat
簡単なサイクル
• まず、テストコードを書く。
• 次にコードを書く。
• コンパイルする。
• 実行する。
• 繰り返す。
JUnit
• Java言語のテスティングフレームワーク
• Erich Gamma と Kent Beckが開発
• xUnit
• ユニットテスト
• Testを自動化
• テストの合否判定がわかりやすい
JUnitでテストをつくろう
• サブクラスを作ってテストを書きます。
 – junit.framework.TestCase
 – テストクラス名は、Testで終わる名前にします。
 – XxxTest
• メソッド内にテストする内容を書きま...
アサーションメソッド
• assertTrue(boolean condition)
• assertEquals(Object expected,
  Object actual)
JUnit テストのはじめとおわり
• setUp()メソッドで共通なテストの準備
• tearDown()メソッドで共通な後処理を書
  くこともできます。
 – junit.framework.TestCase
• 順番
 – setUp(...
JUnitの実行
  • TestRunner
      – junit.textui.TestRunner
      – junit.swingui.TestRunner

public static void main(String[]...
テキスト・モード
Reload classes every run
quot; I know Kung Fu. quot;

       Neo
quot; Show me. quot;

  Morpheus
文字列を繋げる
• 二つの文字列を繋げる。
• テスト・リスト
 – 1.   二つの文字列が空。
 – 2.   最初の文字列が空。
 – 3.   二番目の文字列が空。
 – 4.   両方とも空ではない。(二つ文字列あり。)
テスト1:二つの文字列が空。
 • まずは、このテストコードを書きます。
 • assertEquals 二つの値が等しいか?

public void testEmpty() {
        assertEquals(quot;quot;...
実装1:二つの文字列が空。
  • コンパイルできるようにコードを書きます。
  • とりあえず、nullを返すようにしました。

public String concatenate(String left, String right) {
 ...
判定1:レッド
再実装1:二つの文字列が空。
  • テストは、空文字列を期待しているので、
    それを返すようにしました。

public String concatenate(String left, String right) {
        r...
再判定1:グリーン
テスト2:最初の文字列が空。
 • 次は、このテストコードを書きます。
 • 先ほどの要領で。

public void testLeftEmpty() {
        assertEquals(quot;abcquot;, cat.con...
実装2:最初の文字列が空。
  • テストが成功しないので、先ほどの実装を
    また変えます。
  • 両方のテストが通るようにするには…

public String concatenate(String left, String rig...
テスト3:二番目の文字列が空。
 • ここまでで二つのテストが成功しました。
 • 今度は、このテストコードを書きます。

public void testRightEmpty() {
        assertEquals(quot;abc...
実装3:二番目の文字列が空。
  • 今度はどうしましょう。
  • テストを3つとも成功させるには…

public String concatenate(String left, String right) {
        if ( r...
テスト4:両方とも空ではない。
 • 最後のテストコードを書きます。

public void testNeitherEmpty() {
        assertEquals(quot;abcdefquot;, cat.concatenat...
実装4:両方とも空ではない。
  • すべてのテスト成功させるには…
public String concatenate(String left, String right) {
        if (right.length() > 0 &...
実装5:お掃除
  • コードが重複しているような気が…
  • right が空だったら、
      – quot;leftquot; = quot;leftquot; + quot;rightquot;
public String con...
実装6:お掃除の続き
  • left が空だったら、
      – quot; right quot; = quot;leftquot; + quot;rightquot;

public String concatenate(String...
判定6:グリーン
quot; Causality,
 Action, Reaction,
Cause and Effect. quot;

     Merovingian
Real Cycle
• Outline the test we will need
• Then
  – Write a test
  – Make it compile
  – Make it run
  – Eliminate all d...
quot; There is a difference
between knowing the road
    and following it. quot;

         Morpheus
スタック
• スタックを実装する。
• テスト・リスト
 – 1.   何も入ってないと空である。
 – 2.   最後に入れたのが最初に出る。
 – 3.   最初に入れたのが最後に出る。
 – 4.   3個入れると3個入っている。
スタックのイメージ
• オブジェクトを挿入
 – push( Object obj )
• オブジェクトを取り出す
 – pop( )
• スタックが空かどうかを真/偽で返す
 – isEmpty( )
• スタックのサイズを返す
 – siz...
スタック (改)
• スタックを実装する。
• テスト・リスト (改編)
 – 1.   何も入ってないと空である。
 – 2.   1個入れると空ではない。
 – 3.   1個入れると1個入ってる。
 – 4.   1個取り出すと空になる。...
スタック step1
  • test
public void testEmpty() {
        assertTrue(stack.isEmpty());   // step 1
}



  • implementation
pub...
スタック step2
  • test
public void testEmpty() {
        …
        assertEquals(0, stack.size());   // step 2
}


  • impleme...
スタック step3
  • test
public void testOneIn() {
        stack.push(new String(quot;firstquot;));    // step 3
}



  • imple...
スタック step4 test

public void testOneIn() {
        …
        assertFalse(stack.isEmpty());   // step 4
}
スタック step4 impl.
private boolean empty_ ;       // step 4

public Stack() {
        empty_ = true;         // step 4
}

pu...
スタック step5 test


public void testOneIn() {
        …
        assertEquals(1, stack.size());   // step 5
}
スタック step5 impl.
private List stack_;    // step 5

public Stack() {
        stack_ = new ArrayList();           // step 5...
スタック step6

   • test
public void testOneInAndOutEmpty() {
        stack.push(new String(quot;firstquot;));
        stack....
スタック step7

   • test
public void testOneInAndOutEmpty() {
        …
        assertTrue(stack.isEmpty()); // step 7
}


  ...
スタック step8

   • test
public void testLastInFirstOut() {
        stack.push(new String(quot;firstquot;));
        stack.pu...
スタック step9

   • test
public void testLastInFirstOut() {
        …
        assertEquals(quot;secondquot;, stack.pop());
  ...
スタック step10

   • clean
public boolean isEmpty() {
        return stack_.isEmpty();   // step 10
}
スタック step excessive
public void testLastInFirstOutAndFirstInLastOut () {
        assertTrue(stack.isEmpty());
        asse...
quot; However, I was again
 frustrated by failure. quot;

       The Architect
quot; Denial is the most
predictable of all human
      response. quot;
       The Architect
quot; To deny our own
 impulses is to deny the
very things that makes us
         human. quot;

          Mouse
quot; Green and Clean! quot;

      Kent Beck
リファクタリング
• Martin Fowler
• 改善すること
• 「実装したあとで、設計を改善する」
• できるだけシンプルに
• 重複を取り除く
• 修正前と後では同じ動作
• テストで確認
XPでのテスト/コードサイクル
• テストを一つ書く。
• テストをコンパイルする。テストを呼び出すコードをまだ実
  装していないのでコンパイルに失敗する。
• コンパイルに必要なだけの実装を行う。
    – (必要なら最初にリファクタリン...
まとめ
• 少しずつ作っていく。
• 確認しながら作っていく。
• Green and Clean!
• シンプルにする。
• 不安からの開放。
• テストを楽しく。
quot; Cause and Effect,
    My Love. quot;

     Persephone
quot; Dejavu? quot;

    Neo
JUnit Basics
• サブクラスを作ってテストを書きます。
 – junit.framework.TestCase
• クラス名は、Testで終わる名前
• メソッド名は、testで始まる名前
• setUp()メソッドでテストの準備
...
アサーションメソッド
• assertTrue(boolean condition)
• assertFalse(boolean condition)
• assertEquals(Object expected,
  Object actua...
アサーションメソッド 続き
• assertNotSame(Object expected,
  Object actual)
• assertNull(Object object)
• assertNotNull(Object object)...
TestCase and TestSuite
quot; Touch me and that hand
will never touch anything
         again. quot;

          Trinity
Eclipse
• IDE
  – Integrated Development Environment
  – 統合開発環境
  – Javaの開発も可能
• オープンソースプロジェクト
  – eclipse.org
  – 当初IBMによ...
Eclipse で JUnit
• JUnit プラグイン が組み込まれています。

• Ctrl + S
  – セーブとコンパイル
• Ctrl + F11
  – 前回の実行。
Ant
• ビルド・ツール
  – UNIXでのquot;makequot;ツールみたいなもの
• Java-based
  – Ant自身がJavaでできている
  – Java開発環境での必須標準ビルドツール
  – 標準でいくつかのタスク...
Eclipse で Ant
• ビルドファイルの作成、実行がきます。
CVS
• Concurrent Versions System
• バージョン管理ツール
  – UNIXでのquot;SCCSquot;やquot;RCSquot;みたいなもの
• ファイルのリポジトリ(保管場所)
• サーバー・クライアン...
WinCVS
TortoiseCVS
Eclipse で CVS
• CVSのクライアントを組み込んでいます。
quot; How many people keep
silver bullets in their gun? quot;

          Persephone
Maven
• メイベン
• ビルドツール
• プロジェクト管理ツール
• プロジェクト・オブジェクト・モデル (POM)
• 現在、ベータ版
Subversion
• バージョン管理ツール
• WebDAV のバージョニング実装
 – Web-based Distributed Authoring and
   Versioning
• サーバー・クライアントで使える
 – Tort...
TortoiseSVN
RapidSVN
XDoclet
• コード生成エンジン
• アトリビュート指向のプログラミング
• Javadoc Doclet として実装
 – @タグを使う
• Antなどと連携可能
quot; More … quot;

Smith (one of many inside)
Bibliography
• Rebirth
  – Kent Beck
  – http://www.tech-arts.co.jp/xp/Rebirth.pdf
• Test-Driven Development
  – Kent Beck...
Bibliography
• テスト駆動開発入門
 – ケント ベック (著), Kent Beck (原著), 長
   瀬 嘉秀 (翻訳), テクノロジックアート (翻訳)
 – ISBN: 4894717115
Bibliography
• JavaによるExtreme Programmingクッ
  クブック アジャイル開発のためのレシピ集
 – エリック・M. バーク (著), ブライアン・M. コイ
   ナー (著), Eric M. Burk...
Resources
•   http://www.junit.org/
•   http://www.eclipse.org/
•   http://ant.apache.org/
•   http://www.cvshome.org/
•  ...
Philosophy
• http://www.agilealliance.com/
• http://www.xprogramming.com/
• http://www.xpjug.org/xpjug_root/xp.html
• http...
Philosophy cont.
• http://objectclub.esm.co.jp/eXtremeProgram
  ming/index.html

• http://whatisthematrix.warnerbros.com/r...
quot; But I can only show you
the door, you have to walk
        through it. quot;

         Morpheus
TO BE CONCLUDED.
Upcoming SlideShare
Loading in...5
×

Reloaded

1,513

Published on

2003/12/04
Talk about Test Driven Development (TDD)

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,513
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Reloaded"

  1. 1. RELOADED KAZUHIRO FUJIE
  2. 2. Reloaded Test-Driven Development Kazuhiro Fujie Itochu techno-science corporation
  3. 3. Follow the white rabbit.
  4. 4. quot; Have you ever had a dream, Neo, that you were so sure was real? What if you were unable to wake from that dream, Neo? How would you know the difference between the dream world and the real. quot; Morpheus
  5. 5. quot; Welcome to the Desert of the Real! quot; Morpheus
  6. 6. Water Fall • 予測、目録 • 大量のドキュメント – 変更ができない、実際との乖離 – フィードバックの欠如 • 欠陥、浪費 • プレッシャー、ストレス • 繰り返す、雪だるま式、混沌
  7. 7. Negative Feedback Loop Predictability Inventory Waste Feedback
  8. 8. quot; I’m sorry, This is the dead end. quot; Smith (not Agent)
  9. 9. quot; Not like this, not like this. quot; Switch
  10. 10. Always another way. Key Maker
  11. 11. Antithesis • Agile – http://www.agilealliance.com/ • eXtreme Programming – XP – http://www.xprogramming.com/ – http://www.xpjug.org/ – Test-Driven Development (TDD)
  12. 12. Test-Driven Development • TDD • テスト駆動開発 • Kent Beck • テスト・ファースト • シンプル • 確実な開発手法
  13. 13. Our way or the Highway Switch
  14. 14. Simplistic Cycle • Write a test • Make it compile • Make it run • Repeat
  15. 15. 簡単なサイクル • まず、テストコードを書く。 • 次にコードを書く。 • コンパイルする。 • 実行する。 • 繰り返す。
  16. 16. JUnit • Java言語のテスティングフレームワーク • Erich Gamma と Kent Beckが開発 • xUnit • ユニットテスト • Testを自動化 • テストの合否判定がわかりやすい
  17. 17. JUnitでテストをつくろう • サブクラスを作ってテストを書きます。 – junit.framework.TestCase – テストクラス名は、Testで終わる名前にします。 – XxxTest • メソッド内にテストする内容を書きます。 – メソッド名は、testで始まる名前にします。 – testXxx – テストは、Assertクラスのアサーションメソッドを使い ます。 – junit.framework.Assert
  18. 18. アサーションメソッド • assertTrue(boolean condition) • assertEquals(Object expected, Object actual)
  19. 19. JUnit テストのはじめとおわり • setUp()メソッドで共通なテストの準備 • tearDown()メソッドで共通な後処理を書 くこともできます。 – junit.framework.TestCase • 順番 – setUp() -> テストメソッド -> tearDown()
  20. 20. JUnitの実行 • TestRunner – junit.textui.TestRunner – junit.swingui.TestRunner public static void main(String[] args) { junit.textui.TestRunner.run(StringConcatenationTest.class); } C:¥>java junit.textui.TestRunner StringConcatenationTest C:¥>java junit.swingui.TestRunner
  21. 21. テキスト・モード
  22. 22. Reload classes every run
  23. 23. quot; I know Kung Fu. quot; Neo
  24. 24. quot; Show me. quot; Morpheus
  25. 25. 文字列を繋げる • 二つの文字列を繋げる。 • テスト・リスト – 1. 二つの文字列が空。 – 2. 最初の文字列が空。 – 3. 二番目の文字列が空。 – 4. 両方とも空ではない。(二つ文字列あり。)
  26. 26. テスト1:二つの文字列が空。 • まずは、このテストコードを書きます。 • assertEquals 二つの値が等しいか? public void testEmpty() { assertEquals(quot;quot;, cat.concatenate(quot;quot;, quot;quot;)); } • まだ、コンパイルはできません。 • 次にコードを書きましょう。
  27. 27. 実装1:二つの文字列が空。 • コンパイルできるようにコードを書きます。 • とりあえず、nullを返すようにしました。 public String concatenate(String left, String right) { return null; } • さあ、コンパイルしてテストしてみましょ。 • どうでしたか?
  28. 28. 判定1:レッド
  29. 29. 再実装1:二つの文字列が空。 • テストは、空文字列を期待しているので、 それを返すようにしました。 public String concatenate(String left, String right) { return quot;quot;; } • さあ、もう一回テストをしましょ。 • 今度は… グリーン?
  30. 30. 再判定1:グリーン
  31. 31. テスト2:最初の文字列が空。 • 次は、このテストコードを書きます。 • 先ほどの要領で。 public void testLeftEmpty() { assertEquals(quot;abcquot;, cat.concatenate(quot;quot;, quot;abcquot;)); } • これでテストすると…
  32. 32. 実装2:最初の文字列が空。 • テストが成功しないので、先ほどの実装を また変えます。 • 両方のテストが通るようにするには… public String concatenate(String left, String right) { return right; } • さあどうでしょう?
  33. 33. テスト3:二番目の文字列が空。 • ここまでで二つのテストが成功しました。 • 今度は、このテストコードを書きます。 public void testRightEmpty() { assertEquals(quot;abcquot;, cat.concatenate(quot;abcquot;, quot;quot;)); } • これでテストするともちろん…
  34. 34. 実装3:二番目の文字列が空。 • 今度はどうしましょう。 • テストを3つとも成功させるには… public String concatenate(String left, String right) { if ( right.length() == 0) { return left; } return right; }
  35. 35. テスト4:両方とも空ではない。 • 最後のテストコードを書きます。 public void testNeitherEmpty() { assertEquals(quot;abcdefquot;, cat.concatenate(quot;abcquot;, quot;defquot;)); } • これで全部で四つのテストを書きました。
  36. 36. 実装4:両方とも空ではない。 • すべてのテスト成功させるには… public String concatenate(String left, String right) { if (right.length() > 0 && left.length() > 0 ) { return left + right; } else if ( right.length() == 0) { return left; } return right; } • グリーン?そしてクリーン?
  37. 37. 実装5:お掃除 • コードが重複しているような気が… • right が空だったら、 – quot;leftquot; = quot;leftquot; + quot;rightquot; public String concatenate(String left, String right) { if (left.length() > 0 ) { return left + right; } return right; } • これもグリーン?そしてクリーン?
  38. 38. 実装6:お掃除の続き • left が空だったら、 – quot; right quot; = quot;leftquot; + quot;rightquot; public String concatenate(String left, String right) { return left + right; } • これはシンプル!クリーン! • そして、これもグリーン?
  39. 39. 判定6:グリーン
  40. 40. quot; Causality, Action, Reaction, Cause and Effect. quot; Merovingian
  41. 41. Real Cycle • Outline the test we will need • Then – Write a test – Make it compile – Make it run – Eliminate all duplication – Repeat
  42. 42. quot; There is a difference between knowing the road and following it. quot; Morpheus
  43. 43. スタック • スタックを実装する。 • テスト・リスト – 1. 何も入ってないと空である。 – 2. 最後に入れたのが最初に出る。 – 3. 最初に入れたのが最後に出る。 – 4. 3個入れると3個入っている。
  44. 44. スタックのイメージ • オブジェクトを挿入 – push( Object obj ) • オブジェクトを取り出す – pop( ) • スタックが空かどうかを真/偽で返す – isEmpty( ) • スタックのサイズを返す – size( )
  45. 45. スタック (改) • スタックを実装する。 • テスト・リスト (改編) – 1. 何も入ってないと空である。 – 2. 1個入れると空ではない。 – 3. 1個入れると1個入ってる。 – 4. 1個取り出すと空になる。 – 5. 最後に入れたのが最初に出る。 – 6. 最初に入れたのが最後に出る。
  46. 46. スタック step1 • test public void testEmpty() { assertTrue(stack.isEmpty()); // step 1 } • implementation public boolean isEmpty() { return true; // step 1 }
  47. 47. スタック step2 • test public void testEmpty() { … assertEquals(0, stack.size()); // step 2 } • implementation public int size() { return 0; // step 2 }
  48. 48. スタック step3 • test public void testOneIn() { stack.push(new String(quot;firstquot;)); // step 3 } • implementation public void push(Object o) { // step 3 }
  49. 49. スタック step4 test public void testOneIn() { … assertFalse(stack.isEmpty()); // step 4 }
  50. 50. スタック step4 impl. private boolean empty_ ; // step 4 public Stack() { empty_ = true; // step 4 } public boolean isEmpty() { return empty_; // step 4 } public void push(Object o) { empty_ = false; // step 4 }
  51. 51. スタック step5 test public void testOneIn() { … assertEquals(1, stack.size()); // step 5 }
  52. 52. スタック step5 impl. private List stack_; // step 5 public Stack() { stack_ = new ArrayList(); // step 5 } public boolean isEmpty() { if ( stack_.size() > 0) { // step 5 return false; } return true; } public void push(Object o) { … stack_.add(o); // step 5 }
  53. 53. スタック step6 • test public void testOneInAndOutEmpty() { stack.push(new String(quot;firstquot;)); stack.pop(); // step 6 } • implementation public Object pop() { return new Object(); // step 6 }
  54. 54. スタック step7 • test public void testOneInAndOutEmpty() { … assertTrue(stack.isEmpty()); // step 7 } • implementation public Object pop() { return stack_.remove(size()-1); // step 7 }
  55. 55. スタック step8 • test public void testLastInFirstOut() { stack.push(new String(quot;firstquot;)); stack.push(new String(quot;secondquot;)); stack.push(new String(quot;thirdquot;)); assertEquals(quot;thirdquot;, stack.pop()); // step 8 } • Implementation – Remains as it is.
  56. 56. スタック step9 • test public void testLastInFirstOut() { … assertEquals(quot;secondquot;, stack.pop()); assertEquals(quot;firstquot;, stack.pop()); // step 9 } • Implementation – Remains as it is.
  57. 57. スタック step10 • clean public boolean isEmpty() { return stack_.isEmpty(); // step 10 }
  58. 58. スタック step excessive public void testLastInFirstOutAndFirstInLastOut () { assertTrue(stack.isEmpty()); assertEquals(0, stack.size()); stack.push(new String(quot;firstquot;)); assertFalse(stack.isEmpty()); assertEquals(1, stack.size()); stack.push(new String(quot;secondquot;)); assertEquals(2, stack.size()); stack.push(new String(quot;thirdquot;)); assertEquals(3, stack.size()); assertEquals(quot;thirdquot;, stack.pop()); assertEquals(2, stack.size()); assertEquals(quot;secondquot;, stack.pop()); assertEquals(1, stack.size()); assertEquals(quot;firstquot;, stack.pop()); assertEquals(0, stack.size()); assertTrue(stack.isEmpty()); }
  59. 59. quot; However, I was again frustrated by failure. quot; The Architect
  60. 60. quot; Denial is the most predictable of all human response. quot; The Architect
  61. 61. quot; To deny our own impulses is to deny the very things that makes us human. quot; Mouse
  62. 62. quot; Green and Clean! quot; Kent Beck
  63. 63. リファクタリング • Martin Fowler • 改善すること • 「実装したあとで、設計を改善する」 • できるだけシンプルに • 重複を取り除く • 修正前と後では同じ動作 • テストで確認
  64. 64. XPでのテスト/コードサイクル • テストを一つ書く。 • テストをコンパイルする。テストを呼び出すコードをまだ実 装していないのでコンパイルに失敗する。 • コンパイルに必要なだけの実装を行う。 – (必要なら最初にリファクタリングを行う)。 • テストを実行し、失敗するのを確認する。 • テストをパスするのに必要なだけの実装をする。 • テストを実行し、パスするのを確認する。 • リファクタリングを行い重複している部分を取り除く。 • 最初から繰り返す。
  65. 65. まとめ • 少しずつ作っていく。 • 確認しながら作っていく。 • Green and Clean! • シンプルにする。 • 不安からの開放。 • テストを楽しく。
  66. 66. quot; Cause and Effect, My Love. quot; Persephone
  67. 67. quot; Dejavu? quot; Neo
  68. 68. JUnit Basics • サブクラスを作ってテストを書きます。 – junit.framework.TestCase • クラス名は、Testで終わる名前 • メソッド名は、testで始まる名前 • setUp()メソッドでテストの準備 • tearDown()メソッドでテストの後処理
  69. 69. アサーションメソッド • assertTrue(boolean condition) • assertFalse(boolean condition) • assertEquals(Object expected, Object actual) • assertSame(Object expected, Object actual)
  70. 70. アサーションメソッド 続き • assertNotSame(Object expected, Object actual) • assertNull(Object object) • assertNotNull(Object object) • fail()
  71. 71. TestCase and TestSuite
  72. 72. quot; Touch me and that hand will never touch anything again. quot; Trinity
  73. 73. Eclipse • IDE – Integrated Development Environment – 統合開発環境 – Javaの開発も可能 • オープンソースプロジェクト – eclipse.org – 当初IBMにより開発 • プラグインにより拡張 – 様々なプラグインが公開されている
  74. 74. Eclipse で JUnit • JUnit プラグイン が組み込まれています。 • Ctrl + S – セーブとコンパイル • Ctrl + F11 – 前回の実行。
  75. 75. Ant • ビルド・ツール – UNIXでのquot;makequot;ツールみたいなもの • Java-based – Ant自身がJavaでできている – Java開発環境での必須標準ビルドツール – 標準でいくつかのタスクが用意されている – 拡張も可能 • build.xml
  76. 76. Eclipse で Ant • ビルドファイルの作成、実行がきます。
  77. 77. CVS • Concurrent Versions System • バージョン管理ツール – UNIXでのquot;SCCSquot;やquot;RCSquot;みたいなもの • ファイルのリポジトリ(保管場所) • サーバー・クライアントで使える。 – WinCVS, TortoiseCVS, … • チームでの開発に特に有効
  78. 78. WinCVS
  79. 79. TortoiseCVS
  80. 80. Eclipse で CVS • CVSのクライアントを組み込んでいます。
  81. 81. quot; How many people keep silver bullets in their gun? quot; Persephone
  82. 82. Maven • メイベン • ビルドツール • プロジェクト管理ツール • プロジェクト・オブジェクト・モデル (POM) • 現在、ベータ版
  83. 83. Subversion • バージョン管理ツール • WebDAV のバージョニング実装 – Web-based Distributed Authoring and Versioning • サーバー・クライアントで使える – TortoiseSVN, RapidSVN, … • 現在絶賛開発中らしい
  84. 84. TortoiseSVN
  85. 85. RapidSVN
  86. 86. XDoclet • コード生成エンジン • アトリビュート指向のプログラミング • Javadoc Doclet として実装 – @タグを使う • Antなどと連携可能
  87. 87. quot; More … quot; Smith (one of many inside)
  88. 88. Bibliography • Rebirth – Kent Beck – http://www.tech-arts.co.jp/xp/Rebirth.pdf • Test-Driven Development – Kent Beck – TDD Training text [2002/09/11-12] – http://www.tech-arts.co.jp/training/topics.html – 但し、テキストは公開されていないようです。
  89. 89. Bibliography • テスト駆動開発入門 – ケント ベック (著), Kent Beck (原著), 長 瀬 嘉秀 (翻訳), テクノロジックアート (翻訳) – ISBN: 4894717115
  90. 90. Bibliography • JavaによるExtreme Programmingクッ クブック アジャイル開発のためのレシピ集 – エリック・M. バーク (著), ブライアン・M. コイ ナー (著), Eric M. Burke (原著), Brian M. Coyner (原著), 長瀬 嘉秀 (翻訳), テク ノロジックアート (翻訳) – ISBN: 4873111579
  91. 91. Resources • http://www.junit.org/ • http://www.eclipse.org/ • http://ant.apache.org/ • http://www.cvshome.org/ • http://www.wincvs.org/ • http://www.tortoisecvs.org/ • http://maven.apache.org/ • http://subversion.tigris.org/ • http://rapidsvn.tigris.org/ • http://xdoclet.sourceforge.net/ • http://www.xprogramming.com/software.htm
  92. 92. Philosophy • http://www.agilealliance.com/ • http://www.xprogramming.com/ • http://www.xpjug.org/xpjug_root/xp.html • http://www.tech-arts.co.jp/xp/xp.html • http://www- 6.ibm.com/jp/developerworks/java/030926/j_j -beck.html • http://junit.sourceforge.net/doc/testinfected/t esting.htm
  93. 93. Philosophy cont. • http://objectclub.esm.co.jp/eXtremeProgram ming/index.html • http://whatisthematrix.warnerbros.com/rl_cm p/phi.html • http://awesomehouse.com/matrix/reflect.html #Rebirth
  94. 94. quot; But I can only show you the door, you have to walk through it. quot; Morpheus
  95. 95. TO BE CONCLUDED.
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×