SlideShare uma empresa Scribd logo
1 de 95
Baixar para ler offline
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
     from that dream, Neo?
    How would you know the
 difference between the dream
       world and the real. quot;

           Morpheus
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/
  – http://www.xpjug.org/
  – Test-Driven Development (TDD)
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
• メソッド内にテストする内容を書きます。
 – メソッド名は、testで始まる名前にします。
 – testXxx
 – テストは、Assertクラスのアサーションメソッドを使い
   ます。
 – junit.framework.Assert
アサーションメソッド
• assertTrue(boolean condition)
• assertEquals(Object expected,
  Object actual)
JUnit テストのはじめとおわり
• setUp()メソッドで共通なテストの準備
• tearDown()メソッドで共通な後処理を書
  くこともできます。
 – junit.framework.TestCase
• 順番
 – setUp() -> テストメソッド -> tearDown()
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
テキスト・モード
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;, cat.concatenate(quot;quot;, quot;quot;));
}



 • まだ、コンパイルはできません。
 • 次にコードを書きましょう。
実装1:二つの文字列が空。
  • コンパイルできるようにコードを書きます。
  • とりあえず、nullを返すようにしました。

public String concatenate(String left, String right) {
        return null;
}



  • さあ、コンパイルしてテストしてみましょ。
  • どうでしたか?
判定1:レッド
再実装1:二つの文字列が空。
  • テストは、空文字列を期待しているので、
    それを返すようにしました。

public String concatenate(String left, String right) {
        return quot;quot;;
}


  • さあ、もう一回テストをしましょ。
  • 今度は… グリーン?
再判定1:グリーン
テスト2:最初の文字列が空。
 • 次は、このテストコードを書きます。
 • 先ほどの要領で。

public void testLeftEmpty() {
        assertEquals(quot;abcquot;, cat.concatenate(quot;quot;, quot;abcquot;));
}


 • これでテストすると…
実装2:最初の文字列が空。
  • テストが成功しないので、先ほどの実装を
    また変えます。
  • 両方のテストが通るようにするには…

public String concatenate(String left, String right) {
        return right;
}


  • さあどうでしょう?
テスト3:二番目の文字列が空。
 • ここまでで二つのテストが成功しました。
 • 今度は、このテストコードを書きます。

public void testRightEmpty() {
        assertEquals(quot;abcquot;, cat.concatenate(quot;abcquot;, quot;quot;));
}


 • これでテストするともちろん…
実装3:二番目の文字列が空。
  • 今度はどうしましょう。
  • テストを3つとも成功させるには…

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

public void testNeitherEmpty() {
        assertEquals(quot;abcdefquot;, cat.concatenate(quot;abcquot;, quot;defquot;));
}



 • これで全部で四つのテストを書きました。
実装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;
}


  • グリーン?そしてクリーン?
実装5:お掃除
  • コードが重複しているような気が…
  • right が空だったら、
      – quot;leftquot; = quot;leftquot; + quot;rightquot;
public String concatenate(String left, String right) {
        if (left.length() > 0 ) {
                  return left + right;
        }
        return right;
}

  • これもグリーン?そしてクリーン?
実装6:お掃除の続き
  • left が空だったら、
      – quot; right quot; = quot;leftquot; + quot;rightquot;

public String concatenate(String left, String right) {
        return left + right;
}



  • これはシンプル!クリーン!
  • そして、これもグリーン?
判定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 duplication
  – Repeat
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( )
• スタックのサイズを返す
 – size( )
スタック (改)
• スタックを実装する。
• テスト・リスト (改編)
 – 1.   何も入ってないと空である。
 – 2.   1個入れると空ではない。
 – 3.   1個入れると1個入ってる。
 – 4.   1個取り出すと空になる。
 – 5.   最後に入れたのが最初に出る。
 – 6.   最初に入れたのが最後に出る。
スタック step1
  • test
public void testEmpty() {
        assertTrue(stack.isEmpty());   // step 1
}



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


  • implementation
public int size() {
         return 0;              // step 2
}
スタック step3
  • test
public void testOneIn() {
        stack.push(new String(quot;firstquot;));    // step 3
}



  • implementation

public void push(Object o) {    // step 3
}
スタック step4 test

public void testOneIn() {
        …
        assertFalse(stack.isEmpty());   // step 4
}
スタック 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
}
スタック 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
}

public boolean isEmpty() {
        if ( stack_.size() > 0) {           // step 5
                 return false;
        }
        return true;
}

public void push(Object o) {
        …
        stack_.add(o);              // step 5
}
スタック step6

   • test
public void testOneInAndOutEmpty() {
        stack.push(new String(quot;firstquot;));
        stack.pop();                        // step 6
}


   • implementation
public Object pop() {
        return new Object();    // step 6
}
スタック step7

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


   • implementation
public Object pop() {
        return stack_.remove(size()-1);      // step 7
}
スタック 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.
スタック step9

   • test
public void testLastInFirstOut() {
        …
        assertEquals(quot;secondquot;, stack.pop());
        assertEquals(quot;firstquot;, stack.pop());    // step 9
}



   • Implementation
       – Remains as it is.
スタック step10

   • clean
public boolean isEmpty() {
        return stack_.isEmpty();   // step 10
}
スタック 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());
}
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()メソッドでテストの準備
• tearDown()メソッドでテストの後処理
アサーションメソッド
• assertTrue(boolean condition)
• assertFalse(boolean condition)
• assertEquals(Object expected,
  Object actual)
• assertSame(Object expected,
  Object actual)
アサーションメソッド 続き
• assertNotSame(Object expected,
  Object actual)
• assertNull(Object object)
• assertNotNull(Object object)
• fail()
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開発環境での必須標準ビルドツール
  – 標準でいくつかのタスクが用意されている
  – 拡張も可能
• build.xml
Eclipse で Ant
• ビルドファイルの作成、実行がきます。
CVS
• Concurrent Versions System
• バージョン管理ツール
  – UNIXでのquot;SCCSquot;やquot;RCSquot;みたいなもの
• ファイルのリポジトリ(保管場所)
• サーバー・クライアントで使える。
  – WinCVS, TortoiseCVS, …
• チームでの開発に特に有効
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
• サーバー・クライアントで使える
 – TortoiseSVN, RapidSVN, …
• 現在絶賛開発中らしい
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
  – TDD Training text [2002/09/11-12]
  – http://www.tech-arts.co.jp/training/topics.html
  – 但し、テキストは公開されていないようです。
Bibliography
• テスト駆動開発入門
 – ケント ベック (著), Kent Beck (原著), 長
   瀬 嘉秀 (翻訳), テクノロジックアート (翻訳)
 – ISBN: 4894717115
Bibliography
• JavaによるExtreme Programmingクッ
  クブック アジャイル開発のためのレシピ集
 – エリック・M. バーク (著), ブライアン・M. コイ
   ナー (著), Eric M. Burke (原著), Brian
   M. Coyner (原著), 長瀬 嘉秀 (翻訳), テク
   ノロジックアート (翻訳)
 – ISBN: 4873111579
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
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
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
quot; But I can only show you
the door, you have to walk
        through it. quot;

         Morpheus
TO BE CONCLUDED.

Mais conteúdo relacionado

Mais procurados

090608-TogoWS REST
090608-TogoWS REST090608-TogoWS REST
090608-TogoWS RESTocha_kaneko
 
とちぎRuby会議01(原)
とちぎRuby会議01(原)とちぎRuby会議01(原)
とちぎRuby会議01(原)Shin-ichiro HARA
 
Republic 3 4
Republic 3 4Republic 3 4
Republic 3 4huquanwei
 
Fengshan Pri Presentation Slides Cl
Fengshan Pri Presentation Slides ClFengshan Pri Presentation Slides Cl
Fengshan Pri Presentation Slides Cltllmsg
 
Commonwealth Sec Presentation Slides Cl
Commonwealth Sec Presentation Slides ClCommonwealth Sec Presentation Slides Cl
Commonwealth Sec Presentation Slides Cltllmsg
 
資料庫期末Project Proposal
資料庫期末Project Proposal資料庫期末Project Proposal
資料庫期末Project ProposalFrank Chang
 
ไม้ขีดก้านเดียวที่เปลี่ยนสังคมเกาหลี: ชีวประวัติชุน เต-อิล
ไม้ขีดก้านเดียวที่เปลี่ยนสังคมเกาหลี: ชีวประวัติชุน เต-อิลไม้ขีดก้านเดียวที่เปลี่ยนสังคมเกาหลี: ชีวประวัติชุน เต-อิล
ไม้ขีดก้านเดียวที่เปลี่ยนสังคมเกาหลี: ชีวประวัติชุน เต-อิลJunya Yimprasert
 
QM-076-六標準差管理方法的解題邏輯與策略
QM-076-六標準差管理方法的解題邏輯與策略QM-076-六標準差管理方法的解題邏輯與策略
QM-076-六標準差管理方法的解題邏輯與策略handbook
 
俄罗斯Gost标准,进出口购买商品目录№RG 375
俄罗斯Gost标准,进出口购买商品目录№RG 375俄罗斯Gost标准,进出口购买商品目录№RG 375
俄罗斯Gost标准,进出口购买商品目录№RG 375Turkmenistan Laws
 
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2676
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2676俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2676
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2676Turkmenistan Laws
 
IE-027 動作與時間研究建立精實生產環境
IE-027 動作與時間研究建立精實生產環境IE-027 動作與時間研究建立精實生產環境
IE-027 動作與時間研究建立精實生產環境handbook
 

Mais procurados (16)

Green IT
Green ITGreen IT
Green IT
 
06.04.2014 f
06.04.2014 f06.04.2014 f
06.04.2014 f
 
090608-TogoWS REST
090608-TogoWS REST090608-TogoWS REST
090608-TogoWS REST
 
とちぎRuby会議01(原)
とちぎRuby会議01(原)とちぎRuby会議01(原)
とちぎRuby会議01(原)
 
Republic 3 4
Republic 3 4Republic 3 4
Republic 3 4
 
Fengshan Pri Presentation Slides Cl
Fengshan Pri Presentation Slides ClFengshan Pri Presentation Slides Cl
Fengshan Pri Presentation Slides Cl
 
Commonwealth Sec Presentation Slides Cl
Commonwealth Sec Presentation Slides ClCommonwealth Sec Presentation Slides Cl
Commonwealth Sec Presentation Slides Cl
 
資料庫期末Project Proposal
資料庫期末Project Proposal資料庫期末Project Proposal
資料庫期末Project Proposal
 
ไม้ขีดก้านเดียวที่เปลี่ยนสังคมเกาหลี: ชีวประวัติชุน เต-อิล
ไม้ขีดก้านเดียวที่เปลี่ยนสังคมเกาหลี: ชีวประวัติชุน เต-อิลไม้ขีดก้านเดียวที่เปลี่ยนสังคมเกาหลี: ชีวประวัติชุน เต-อิล
ไม้ขีดก้านเดียวที่เปลี่ยนสังคมเกาหลี: ชีวประวัติชุน เต-อิล
 
Ar10 pa-006
Ar10 pa-006Ar10 pa-006
Ar10 pa-006
 
Business
BusinessBusiness
Business
 
QM-076-六標準差管理方法的解題邏輯與策略
QM-076-六標準差管理方法的解題邏輯與策略QM-076-六標準差管理方法的解題邏輯與策略
QM-076-六標準差管理方法的解題邏輯與策略
 
Iir 08 ver.1.0
Iir 08 ver.1.0Iir 08 ver.1.0
Iir 08 ver.1.0
 
俄罗斯Gost标准,进出口购买商品目录№RG 375
俄罗斯Gost标准,进出口购买商品目录№RG 375俄罗斯Gost标准,进出口购买商品目录№RG 375
俄罗斯Gost标准,进出口购买商品目录№RG 375
 
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2676
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2676俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2676
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2676
 
IE-027 動作與時間研究建立精實生產環境
IE-027 動作與時間研究建立精實生產環境IE-027 動作與時間研究建立精實生產環境
IE-027 動作與時間研究建立精實生產環境
 

Destaque

Revolutions The Appendix
Revolutions The AppendixRevolutions The Appendix
Revolutions The AppendixShunsaku Kudo
 
Silent Running Prevue Trailer
Silent Running Prevue TrailerSilent Running Prevue Trailer
Silent Running Prevue TrailerShunsaku Kudo
 
Silent Running Side C
Silent Running Side CSilent Running Side C
Silent Running Side CShunsaku Kudo
 
Silent Running Side D
Silent Running Side DSilent Running Side D
Silent Running Side DShunsaku Kudo
 
Silent Running Side A
Silent Running Side ASilent Running Side A
Silent Running Side AShunsaku Kudo
 
Where The Cloud Things Are
Where The Cloud Things AreWhere The Cloud Things Are
Where The Cloud Things AreShunsaku Kudo
 

Destaque (7)

Revolutions The Appendix
Revolutions The AppendixRevolutions The Appendix
Revolutions The Appendix
 
Silent Running Prevue Trailer
Silent Running Prevue TrailerSilent Running Prevue Trailer
Silent Running Prevue Trailer
 
Silent Running Side C
Silent Running Side CSilent Running Side C
Silent Running Side C
 
Silent Running Side D
Silent Running Side DSilent Running Side D
Silent Running Side D
 
Silent Running Side A
Silent Running Side ASilent Running Side A
Silent Running Side A
 
Where The Cloud Things Are
Where The Cloud Things AreWhere The Cloud Things Are
Where The Cloud Things Are
 
What is an Ansible?
What is an Ansible?What is an Ansible?
What is an Ansible?
 

Semelhante a Reloaded

Where20 2009report
Where20 2009reportWhere20 2009report
Where20 2009reportToru Mori
 
Cop",!@#%$%&*()*()
Cop",!@#%$%&*()*()Cop",!@#%$%&*()*()
Cop",!@#%$%&*()*()hehe123456
 
Sc2009autumn 次世代Daoフレームワーク Doma
Sc2009autumn 次世代Daoフレームワーク DomaSc2009autumn 次世代Daoフレームワーク Doma
Sc2009autumn 次世代Daoフレームワーク DomaToshihiro Nakamura
 
Search Engines Chapter 1 Summary
Search Engines Chapter 1 SummarySearch Engines Chapter 1 Summary
Search Engines Chapter 1 Summarysleepy_yoshi
 
英語ブログのスヽメ - 1000スピーカープロジェクト#5
英語ブログのスヽメ - 1000スピーカープロジェクト#5英語ブログのスヽメ - 1000スピーカープロジェクト#5
英語ブログのスヽメ - 1000スピーカープロジェクト#5Yusuke Kawasaki
 
【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション
【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション
【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーションYuya Yamaki
 
20090410 Gree Opentech Presentation (opening)
20090410 Gree Opentech Presentation (opening)20090410 Gree Opentech Presentation (opening)
20090410 Gree Opentech Presentation (opening)Hideki Yamane
 
Opportunity Magazine 2008-11-03 Vol.5
Opportunity Magazine 2008-11-03 Vol.5Opportunity Magazine 2008-11-03 Vol.5
Opportunity Magazine 2008-11-03 Vol.5opportunity service
 
Out-002-Suc3rum-20090720
Out-002-Suc3rum-20090720Out-002-Suc3rum-20090720
Out-002-Suc3rum-20090720Sukusuku Scrum
 
Tcl/Tk+ハッシュリスト
Tcl/Tk+ハッシュリストTcl/Tk+ハッシュリスト
Tcl/Tk+ハッシュリストHiromu Shioya
 
【12-B-4】 並列処理開発を支援するコンパイラの機能
【12-B-4】 並列処理開発を支援するコンパイラの機能【12-B-4】 並列処理開発を支援するコンパイラの機能
【12-B-4】 並列処理開発を支援するコンパイラの機能devsumi2009
 
【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」
【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」
【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」devsumi2009
 
Practical Bug Reporting
Practical Bug ReportingPractical Bug Reporting
Practical Bug Reportingcharsbar
 
秩序从哪里来?
秩序从哪里来?秩序从哪里来?
秩序从哪里来?guest8430ea2
 
[Nahu] - An wa3ul 'Irab (arabic)
[Nahu] - An wa3ul 'Irab (arabic)[Nahu] - An wa3ul 'Irab (arabic)
[Nahu] - An wa3ul 'Irab (arabic)Syukran
 
Development toolsforteamdevelopment
Development toolsforteamdevelopmentDevelopment toolsforteamdevelopment
Development toolsforteamdevelopmentTakao Tetsuro
 
Ds 008 方法設計之技術產品流程
Ds 008 方法設計之技術產品流程Ds 008 方法設計之技術產品流程
Ds 008 方法設計之技術產品流程handbook
 
081210 Idcon 04 Itoh Peopleservice
081210 Idcon 04 Itoh Peopleservice081210 Idcon 04 Itoh Peopleservice
081210 Idcon 04 Itoh PeopleserviceHiroki Itoh
 

Semelhante a Reloaded (20)

Where20 2009report
Where20 2009reportWhere20 2009report
Where20 2009report
 
dRuby
dRubydRuby
dRuby
 
Cop",!@#%$%&*()*()
Cop",!@#%$%&*()*()Cop",!@#%$%&*()*()
Cop",!@#%$%&*()*()
 
Sc2009autumn 次世代Daoフレームワーク Doma
Sc2009autumn 次世代Daoフレームワーク DomaSc2009autumn 次世代Daoフレームワーク Doma
Sc2009autumn 次世代Daoフレームワーク Doma
 
Search Engines Chapter 1 Summary
Search Engines Chapter 1 SummarySearch Engines Chapter 1 Summary
Search Engines Chapter 1 Summary
 
英語ブログのスヽメ - 1000スピーカープロジェクト#5
英語ブログのスヽメ - 1000スピーカープロジェクト#5英語ブログのスヽメ - 1000スピーカープロジェクト#5
英語ブログのスヽメ - 1000スピーカープロジェクト#5
 
【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション
【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション
【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション
 
20090410 Gree Opentech Presentation (opening)
20090410 Gree Opentech Presentation (opening)20090410 Gree Opentech Presentation (opening)
20090410 Gree Opentech Presentation (opening)
 
Opportunity Magazine 2008-11-03 Vol.5
Opportunity Magazine 2008-11-03 Vol.5Opportunity Magazine 2008-11-03 Vol.5
Opportunity Magazine 2008-11-03 Vol.5
 
Out-002-Suc3rum-20090720
Out-002-Suc3rum-20090720Out-002-Suc3rum-20090720
Out-002-Suc3rum-20090720
 
Tcl/Tk+ハッシュリスト
Tcl/Tk+ハッシュリストTcl/Tk+ハッシュリスト
Tcl/Tk+ハッシュリスト
 
【12-B-4】 並列処理開発を支援するコンパイラの機能
【12-B-4】 並列処理開発を支援するコンパイラの機能【12-B-4】 並列処理開発を支援するコンパイラの機能
【12-B-4】 並列処理開発を支援するコンパイラの機能
 
【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」
【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」
【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」
 
Practical Bug Reporting
Practical Bug ReportingPractical Bug Reporting
Practical Bug Reporting
 
秩序从哪里来?
秩序从哪里来?秩序从哪里来?
秩序从哪里来?
 
[Nahu] - An wa3ul 'Irab (arabic)
[Nahu] - An wa3ul 'Irab (arabic)[Nahu] - An wa3ul 'Irab (arabic)
[Nahu] - An wa3ul 'Irab (arabic)
 
Development toolsforteamdevelopment
Development toolsforteamdevelopmentDevelopment toolsforteamdevelopment
Development toolsforteamdevelopment
 
説明会資料
説明会資料説明会資料
説明会資料
 
Ds 008 方法設計之技術產品流程
Ds 008 方法設計之技術產品流程Ds 008 方法設計之技術產品流程
Ds 008 方法設計之技術產品流程
 
081210 Idcon 04 Itoh Peopleservice
081210 Idcon 04 Itoh Peopleservice081210 Idcon 04 Itoh Peopleservice
081210 Idcon 04 Itoh Peopleservice
 

Mais de Shunsaku Kudo

Mais de Shunsaku Kudo (8)

Silent Running Side B
Silent Running Side BSilent Running Side B
Silent Running Side B
 
Silent Running Side E Appendix
Silent Running Side E AppendixSilent Running Side E Appendix
Silent Running Side E Appendix
 
Revisited
RevisitedRevisited
Revisited
 
Reification
ReificationReification
Reification
 
Revolutions Side D
Revolutions Side DRevolutions Side D
Revolutions Side D
 
Revolutions Side C
Revolutions Side CRevolutions Side C
Revolutions Side C
 
Revolutions Side B
Revolutions Side BRevolutions Side B
Revolutions Side B
 
Revolutions Side A
Revolutions Side ARevolutions Side A
Revolutions Side A
 

Último

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 

Último (20)

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 

Reloaded