SlideShare uma empresa Scribd logo
1 de 12
Baixar para ler offline
言語差異による
    TDDプロセスへの影響度の解析
     第64回電気関係学会九州支部連合大会
             佐賀大学
          中山裕貴 大月美佳




1
背景と目的
     テスト駆動開発(TDD)
      プログラム開発手法
      アジャイルにおけるプラクティスの一つ
     TDDはプログラミング言語を選ばない
      様々な言語に適用可能
     言語には様々な差異がある
      型付けやパラダイムなど
     言語の差異によりTDDプロセスに差が出ている
      経験的に得られている
     TDDプロセスデータを集めることで言語による差
     異を明示化したい

2
テスト駆動開発
     Red/Green/Refactorのサイクルを繰り返す
      Red:テストを書き失敗することを確認する
      Green:テストに通る最小の目的コードを書く
      Refactor:テストに通る状態を保ちながらリファク
      タリングを行う
     ここでのテスト→Developer Testing

                      Red


           Refactor         Green
3
プログラミング言語とTDD
     TDDは開発手法⇒言語を問わず利用可能
      テスティングフレームワークは必須
     言語による様々な差異
      静的型付けと動的型付け
      パラダイム(命令型、OO、関数型など)
      機能(null、例外処理など)
     TDDプロセスにも違いが表れる


    • 各言語のTDDプロセスを収集・比較
     • 影響度の調査
     • どの程度プロセスが変化するのかの統計データ
4
プロセスデータ記録
     言語を問わないプロセス記録ツール
      言語に依存しない
      開発環境に依存しない
     開発者の使いやすいツール
      ≒開発者が使ったことがある
      ローカルな環境でも使える




    Distributed Version Control System
      ・今回はGitを利用

5
Gitを用いる理由
     高速・高機能
      高速⇒作業リズムを崩さない
      tagによるポイントへの印付け
     git-nowコマンド
      自動で生成したコメントを利用
      素早くコミットできる
      作業リズムを崩さない
     コミットログ=開発の歴史
      コミットログを見れば開発プロセスを辿れる
      これはVersion Control System 共通
     誰でも利用可能
      多くのOSで利用可能
     多くのTDD経験者が利用

6
Gitを用いたプロセス記録方法(例)
    1.   git init … リポジトリ作成
    2.   git checkout –b hogehoge
           … ブランチ作成、チェックアウト
    3.  各種作業(テスト作成、目的コード実装など)
    4. テスト実行
    5. git now
    6. 3.~5.を繰り返す
    7. 1つのチケットが完了した時点でタグを打つ
    8. git now –rebase … git now部分の歴史改変
    9. hogehogeブランチをmasterにマージ
    10. 2.~9.を繰り返す

7
git-now
     テンポラリ用コミットを作成するコマンド
     非標準コマンド
      既存のgitコマンドを組み合わせて実装
     通常のコミットの場合
      コメントを毎回自分で考える必要がある
      コミット毎に数十秒~数分かかる
      作業リズムが崩れる
      有効なプロセスデータが得られない
     git-nowの場合
      自動でコメントを生成しコミット
      コミットに1秒もかからない
8     作業リズムが崩れない
課題公開方法
     今回はRedmineを使用
      Webベースプロジェクト管理ツール
      課題の説明などが見やすくなる




         図:Redmineで課題一覧を表示した状態


9
解析対象課題
      “つぶやきの種類を判断する”
      適度な課題量や仕様変更
      課題仕様一覧
       reply でもmention でもhash tag でもないTweet を普通の
        Tweet と判定する
       hash tag を含むTweet を判定する
       reply を含むTweet を判定する
       mention を含むTweet を判定する
       複数の種類がある場合、カンマ区切りで出力される
       Tweet をネットワークから取得し、種類を判定する


10
まとめ
      テスト駆動開発
      言語の差異によるTDDプロセスへの影響度を調査
       したい
      言語に依存しないプロセスデータ記録方法が必要
       今回はGitを利用
      解析対象課題
      現状
       Java/C#/Pythonのデータ(各1個)を解析中
       データ収集継続中



11
ご静聴ありがとうございました。

                    ご協力お願いします!
     http://redmine.cs.is.saga-u.ac.jp/projects/tdd-process/wiki




12

Mais conteúdo relacionado

Mais procurados

MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発を
Atsuhiro Kubo
 
プログラミング勉強会 その0
プログラミング勉強会 その0プログラミング勉強会 その0
プログラミング勉強会 その0
Hirokazu Fukami
 
第11回モヤLT 男女ペアプログラミング合コンに行ってきた
第11回モヤLT 男女ペアプログラミング合コンに行ってきた第11回モヤLT 男女ペアプログラミング合コンに行ってきた
第11回モヤLT 男女ペアプログラミング合コンに行ってきた
take4_k
 
FlexUnit4でテスト駆動開発
FlexUnit4でテスト駆動開発FlexUnit4でテスト駆動開発
FlexUnit4でテスト駆動開発
theworldinunion
 
nseg第5回勉強会
nseg第5回勉強会nseg第5回勉強会
nseg第5回勉強会
ko ty
 
20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...
20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...
20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...
tkawashita
 

Mais procurados (20)

Enshu2012 1
Enshu2012 1Enshu2012 1
Enshu2012 1
 
Refactoring
RefactoringRefactoring
Refactoring
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発を
 
20160326 第10回 Rad Studio 勉強会@Osaka
20160326 第10回 Rad Studio 勉強会@Osaka20160326 第10回 Rad Studio 勉強会@Osaka
20160326 第10回 Rad Studio 勉強会@Osaka
 
pytest × TDD テスト駆動開発のススメ
pytest × TDD テスト駆動開発のススメpytest × TDD テスト駆動開発のススメ
pytest × TDD テスト駆動開発のススメ
 
CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料
 
いつでも聞けるTDD入門 #TDDBC_NAGOYA
いつでも聞けるTDD入門 #TDDBC_NAGOYAいつでも聞けるTDD入門 #TDDBC_NAGOYA
いつでも聞けるTDD入門 #TDDBC_NAGOYA
 
TDD のこころ @ OSH2014
TDD のこころ @ OSH2014TDD のこころ @ OSH2014
TDD のこころ @ OSH2014
 
TDDBC横浜3rd
TDDBC横浜3rdTDDBC横浜3rd
TDDBC横浜3rd
 
プログラミング勉強会 その0
プログラミング勉強会 その0プログラミング勉強会 その0
プログラミング勉強会 その0
 
from old JUnit to modern JUnit
from old JUnit to modern JUnitfrom old JUnit to modern JUnit
from old JUnit to modern JUnit
 
サンドボックス化によるセキュアなプログラミング
サンドボックス化によるセキュアなプログラミングサンドボックス化によるセキュアなプログラミング
サンドボックス化によるセキュアなプログラミング
 
レビューで保守性のためにした コメントをふりかえってみた
レビューで保守性のためにした コメントをふりかえってみたレビューで保守性のためにした コメントをふりかえってみた
レビューで保守性のためにした コメントをふりかえってみた
 
第11回モヤLT 男女ペアプログラミング合コンに行ってきた
第11回モヤLT 男女ペアプログラミング合コンに行ってきた第11回モヤLT 男女ペアプログラミング合コンに行ってきた
第11回モヤLT 男女ペアプログラミング合コンに行ってきた
 
FlexUnit4でテスト駆動開発
FlexUnit4でテスト駆動開発FlexUnit4でテスト駆動開発
FlexUnit4でテスト駆動開発
 
nseg第5回勉強会
nseg第5回勉強会nseg第5回勉強会
nseg第5回勉強会
 
テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2
 
Web開発用ツール導入のすすめ
Web開発用ツール導入のすすめWeb開発用ツール導入のすすめ
Web開発用ツール導入のすすめ
 
TDD、ペアプログラミングのすすめ
TDD、ペアプログラミングのすすめTDD、ペアプログラミングのすすめ
TDD、ペアプログラミングのすすめ
 
20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...
20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...
20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...
 

Destaque

私とTDDと研究と(TDDBC横浜LT)
私とTDDと研究と(TDDBC横浜LT)私とTDDと研究と(TDDBC横浜LT)
私とTDDと研究と(TDDBC横浜LT)
pocketberserker
 
Scala基礎勉強会 懇親会LT
Scala基礎勉強会 懇親会LTScala基礎勉強会 懇親会LT
Scala基礎勉強会 懇親会LT
pocketberserker
 
F#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみているF#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみている
pocketberserker
 
F#のコンピュテーション式
F#のコンピュテーション式F#のコンピュテーション式
F#のコンピュテーション式
pocketberserker
 
F#で学ぶ関数プログラミング入門?
F#で学ぶ関数プログラミング入門?F#で学ぶ関数プログラミング入門?
F#で学ぶ関数プログラミング入門?
pocketberserker
 
FP習熟度レベルとFSharpxのIteratee
FP習熟度レベルとFSharpxのIterateeFP習熟度レベルとFSharpxのIteratee
FP習熟度レベルとFSharpxのIteratee
pocketberserker
 

Destaque (9)

私とTDDと研究と(TDDBC横浜LT)
私とTDDと研究と(TDDBC横浜LT)私とTDDと研究と(TDDBC横浜LT)
私とTDDと研究と(TDDBC横浜LT)
 
GParsの?Actor Model
GParsの?Actor ModelGParsの?Actor Model
GParsの?Actor Model
 
Scala基礎勉強会 懇親会LT
Scala基礎勉強会 懇親会LTScala基礎勉強会 懇親会LT
Scala基礎勉強会 懇親会LT
 
F#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみているF#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみている
 
F#のコンピュテーション式
F#のコンピュテーション式F#のコンピュテーション式
F#のコンピュテーション式
 
F#で学ぶ関数プログラミング入門?
F#で学ぶ関数プログラミング入門?F#で学ぶ関数プログラミング入門?
F#で学ぶ関数プログラミング入門?
 
FP習熟度レベルとFSharpxのIteratee
FP習熟度レベルとFSharpxのIterateeFP習熟度レベルとFSharpxのIteratee
FP習熟度レベルとFSharpxのIteratee
 
TDDBC東京 1.6 LT
TDDBC東京 1.6 LTTDDBC東京 1.6 LT
TDDBC東京 1.6 LT
 
TDDを研ぎ究める
TDDを研ぎ究めるTDDを研ぎ究める
TDDを研ぎ究める
 

Semelhante a 言語差異によるTDDプロセスへの影響度の解析

少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発
lnial
 
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02
Hiro Yoshioka
 

Semelhante a 言語差異によるTDDプロセスへの影響度の解析 (20)

コードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Androidコードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Android
 
博士論文公聴会
博士論文公聴会博士論文公聴会
博士論文公聴会
 
Ti dd force09
Ti dd force09Ti dd force09
Ti dd force09
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 
少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発
 
サービス開発における工程
サービス開発における工程サービス開発における工程
サービス開発における工程
 
大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について
 
テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前に
 
Caketest
CaketestCaketest
Caketest
 
20151029 ヒカラボ講演資料
20151029 ヒカラボ講演資料20151029 ヒカラボ講演資料
20151029 ヒカラボ講演資料
 
株式会社waja 安藤様 登壇資料
株式会社waja 安藤様 登壇資料株式会社waja 安藤様 登壇資料
株式会社waja 安藤様 登壇資料
 
Coderetreat
CoderetreatCoderetreat
Coderetreat
 
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
 
VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011 VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011
 
Net advantage 2012 volume2 最新情報 Windows Forms / ASP.NET 編
Net advantage 2012 volume2 最新情報 Windows Forms / ASP.NET 編Net advantage 2012 volume2 最新情報 Windows Forms / ASP.NET 編
Net advantage 2012 volume2 最新情報 Windows Forms / ASP.NET 編
 
BDD Frameworkで回帰テストの自動実行を実現する方法
BDD Frameworkで回帰テストの自動実行を実現する方法BDD Frameworkで回帰テストの自動実行を実現する方法
BDD Frameworkで回帰テストの自動実行を実現する方法
 
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02
 
Github基礎 | [FLEXER Project]
Github基礎 | [FLEXER Project]Github基礎 | [FLEXER Project]
Github基礎 | [FLEXER Project]
 
『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト
『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト
『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト
 

言語差異によるTDDプロセスへの影響度の解析

  • 1. 言語差異による TDDプロセスへの影響度の解析 第64回電気関係学会九州支部連合大会 佐賀大学 中山裕貴 大月美佳 1
  • 2. 背景と目的  テスト駆動開発(TDD)  プログラム開発手法  アジャイルにおけるプラクティスの一つ  TDDはプログラミング言語を選ばない  様々な言語に適用可能  言語には様々な差異がある  型付けやパラダイムなど  言語の差異によりTDDプロセスに差が出ている  経験的に得られている  TDDプロセスデータを集めることで言語による差 異を明示化したい 2
  • 3. テスト駆動開発  Red/Green/Refactorのサイクルを繰り返す  Red:テストを書き失敗することを確認する  Green:テストに通る最小の目的コードを書く  Refactor:テストに通る状態を保ちながらリファク タリングを行う  ここでのテスト→Developer Testing Red Refactor Green 3
  • 4. プログラミング言語とTDD  TDDは開発手法⇒言語を問わず利用可能  テスティングフレームワークは必須  言語による様々な差異  静的型付けと動的型付け  パラダイム(命令型、OO、関数型など)  機能(null、例外処理など)  TDDプロセスにも違いが表れる • 各言語のTDDプロセスを収集・比較 • 影響度の調査 • どの程度プロセスが変化するのかの統計データ 4
  • 5. プロセスデータ記録  言語を問わないプロセス記録ツール  言語に依存しない  開発環境に依存しない  開発者の使いやすいツール  ≒開発者が使ったことがある  ローカルな環境でも使える Distributed Version Control System ・今回はGitを利用 5
  • 6. Gitを用いる理由  高速・高機能  高速⇒作業リズムを崩さない  tagによるポイントへの印付け  git-nowコマンド  自動で生成したコメントを利用  素早くコミットできる  作業リズムを崩さない  コミットログ=開発の歴史  コミットログを見れば開発プロセスを辿れる  これはVersion Control System 共通  誰でも利用可能  多くのOSで利用可能  多くのTDD経験者が利用 6
  • 7. Gitを用いたプロセス記録方法(例) 1. git init … リポジトリ作成 2. git checkout –b hogehoge … ブランチ作成、チェックアウト 3. 各種作業(テスト作成、目的コード実装など) 4. テスト実行 5. git now 6. 3.~5.を繰り返す 7. 1つのチケットが完了した時点でタグを打つ 8. git now –rebase … git now部分の歴史改変 9. hogehogeブランチをmasterにマージ 10. 2.~9.を繰り返す 7
  • 8. git-now  テンポラリ用コミットを作成するコマンド  非標準コマンド  既存のgitコマンドを組み合わせて実装  通常のコミットの場合  コメントを毎回自分で考える必要がある  コミット毎に数十秒~数分かかる  作業リズムが崩れる  有効なプロセスデータが得られない  git-nowの場合  自動でコメントを生成しコミット  コミットに1秒もかからない 8  作業リズムが崩れない
  • 9. 課題公開方法  今回はRedmineを使用  Webベースプロジェクト管理ツール  課題の説明などが見やすくなる 図:Redmineで課題一覧を表示した状態 9
  • 10. 解析対象課題  “つぶやきの種類を判断する”  適度な課題量や仕様変更  課題仕様一覧  reply でもmention でもhash tag でもないTweet を普通の Tweet と判定する  hash tag を含むTweet を判定する  reply を含むTweet を判定する  mention を含むTweet を判定する  複数の種類がある場合、カンマ区切りで出力される  Tweet をネットワークから取得し、種類を判定する 10
  • 11. まとめ  テスト駆動開発  言語の差異によるTDDプロセスへの影響度を調査 したい  言語に依存しないプロセスデータ記録方法が必要  今回はGitを利用  解析対象課題  現状  Java/C#/Pythonのデータ(各1個)を解析中  データ収集継続中 11
  • 12. ご静聴ありがとうございました。 ご協力お願いします! http://redmine.cs.is.saga-u.ac.jp/projects/tdd-process/wiki 12