チケット駆動開発のフレームワーク
~現場の経験知からパターン言語へ



14-B-5                                     小川 明彦
                                           XPJUG関西
                                           XPJUG関西


         Developers Summit 2013 Action !             1
チケット駆動でよく聞かれる質問
似たような質問が多い
 チケットの粒度
 複数チームのタスク管理


判断基準が暗黙知なので明確でない
 現場のノウハウが形式知として共有されていない


チケット駆動開発(TiDD)はAgile開発なのか?
 日本の開発現場で生まれたアジャイルな実践技法
 人によって説明がバラバラ


         Developers Summit 2013 Action !   2
体系化の方針
1. ツールの説明を排除
   TiDDはツールに依存しない
   RedmineでもPostItでもチケット駆動は運用可能


2. プラクティスをパターン言語の形式で表現
   現場の経験知を再利用できる形式にする
   特定の状況の問題に対して有効な解決法を提示


3. 原則・価値観・プラクティスでまとめる
   開発フレームワークの作業仮説として提示
   コミュニティで議論した結果を反映して補強したい
           Developers Summit 2013 Action !   3
TiDDの原則、
  価値観、
 プラクティス

 Developers Summit 2013 Action !   4
TiDDの原則
原則とは
 価値とプラクティスの領域における不変のルール



1. 最初にチケットありき (Ticket First)
    SW開発の作業も課題も障害もチケットへ
    チケット無しの作業不可 (No Ticket, No Work)

2. 成果物は構成管理に従う
    プログラムや仕様書は構成管理へ
    議事録や報告書はWikiやチケット集計へ

            Developers Summit 2013 Action !   5
チケットとは




製品の変更時に管理すべき対象プロセス(チケットは製品に従う
                     チケットは製品に従う)
                     チケットは製品に従う
チケットはワークフローで制御される(チケットはワークフローに従う
                  チケットはワークフローに従う)
                  チケットはワークフローに従う
チケットは成果物や仕様ではない(成果物は構成管理に従う
                成果物は構成管理に従う)
                成果物は構成管理に従う


          Developers Summit 2013 Action !   6
構成管理とは




ソフトウェア資産を記録する仕組み (成果物は構成管理に従う
                  成果物は構成管理に従う)
                  成果物は構成管理に従う
バージョンは、ソフトウェア資産を確定させる締日
チケットはリリースに至るまでのコミット履歴というメタ情報
         Developers Summit 2013 Action !   7
TiDDの価値観とは
何が望ましく何がふさわしくないのかという基準
価値を実現するためにプラクティスを実践する




       Developers Summit 2013 Action !   8
プラクティスとは
 現場で実証された実践技法
     プラクティスは価値観に基づく行動を促す
 パターン言語で表現してみる
     特定の状況の問題における解決法

名前・別名     プラクティス名。別の名称。
頻出場所      プラクティスが出現する工程、作業
状況(文脈
状況 文脈)
   文脈     問題が発生し、価値が妨害される状況(context)
          問題が発生し、価値が妨害される状況

問題        プラクティスで解決しようとする問題
          プラクティスで解決しようとする問題(problem)
                で解決しようとする問題

解決法       問題を取り除くための解決方法(solution)
          問題を取り除くための解決方法
結果文脈      プラクティスで解決した後に変化した状況。
          プラクティスで解決した後に変化した状況。
          別の価値を促進する副次的な効果。
             Developers Summit 2013 Action !   9
TiDDが目指す世界




      Developers Summit 2013 Action !   10
パターンの適用例
~チケットの粒度に関する問題




   Developers Summit 2013 Action !   11
「チケットの粒度」に関する問題
あいまいなチケット
 チケットがタスクではなく仕様書になっている
 作業内容がよく分からない


肥満児チケット
 タスク分割が不十分
 当初の見積りよりも倍以上の工数がかかる


放置されたチケット
 チケットを細かくすれば、チケットは乱発されやすい
 期日やリリースバージョンが未定の「今すぐ」チケット
          Developers Summit 2013 Action !   12
No Ticket, No Work
名前     チケット無しの作業不可
頻出場所   チケットの作り方

状況     担当者の作業が公開されていない
        オープンを妨害
       →オープンを妨害
問題     作業がチケットに記録されていない

解決法    チケットを起票してから作業を開始する

結果文脈   ・日々のタスク管理はメンバー自身で行うようになる
         コミットメント、勇気の効果
       →コミットメント、勇気の効果
       ・チーム内で情報共有が促進される
         コミュニケーションの効果
       →コミュニケーションの効果
           Developers Summit 2013 Action !   13
TiDDによるパラダイムシフト




  チケットの取捨選択でスコープ管理する
    変化に強いタスク管理が運用可能
       Developers Summit 2013 Action !   14
No Ticket, No Commit
名前     チケット無しのコミット不可

頻出場所   チケットの閉じ方

状況     ソース修正が意図された修正なのか判別できない
         コミットメントを妨害
       →コミットメントを妨害
問題     障害の記録と、成果物の作業履歴が同期されてな
       い
解決法    ソースをコミットする時、チケットに変更理由を残して
       Closeする
       Closeする
結果文脈   トレーサビリティの実現によって保守作業で役立つ
         フィードバックの効果
       →フィードバックの効果


          Developers Summit 2013 Action !   15
TiDDの運用サイクル




      Developers Summit 2013 Action !   16
Iteration is Version
名前     イテレーションはバージョンに同一視

頻出場所   バージョンの登録・終了、チケットの分類
状況     リリース計画が現実と合致していない
        オープンを妨害
       →オープンを妨害
問題     リリースが1回だけなので学生症候群になりやすい
解決法    イテレーションをリリースバージョンとして定期的に
       リリースする
結果文脈   ・マイルストーンごとにリリースできるようになる
         コミットメント、勇気の効果
       →コミットメント、勇気の効果
       ・開発中の経験知がフィードバックされて蓄積される
         フィードバックの効果
       →フィードバックの効果
            Developers Summit 2013 Action !   17
小規模リリース




 小刻みに機能拡張しながら定期的にリリースしていく
  Velocity(開発速度
           開発速度)=イテレーション単位の平均消化チケット数
           開発速度
            Developers Summit 2013 Action !   18
開発のリズム
チケットの作業に集中 (Scrumの集中
                 の集中)
                 の集中
 割り込み作業はしない

コミットのリズム
 コミットと同時にチケットをCloseする (No Ticket, No Commit)

定期的なリリース
 持続可能な開発ペース (Velocity)

定期的なイベントで検査 (Scrumの透明性
                  の透明性)
                  の透明性
 毎日の朝会
 リリースごとにふりかえり
             Developers Summit 2013 Action !   19
TiDDは自発的行動を促す




開発者に自己管理する勇気の基盤を与える
 作業の見える化がメンバー間の信頼関係を強化する
 リーダーは管理者から支援者へ変わる
        Developers Summit 2013 Action !   20
その他のプラクティス(作成中)
チケット管理の観点    適用可能なプラクティス、概念
チケットの作り方     No Ticket, No Work
チケットの整理      チケットの棚卸し
チケットの閉じ方     No Ticket, No Commit
チケットの渡し方     ペア作業
チケットの分類      分割統治、 チケットはワークフローに従う
チケットの集計      ・チケット集計もワークフローに従う
             ・ロールでビューを切り替える etc.
チケットの通知      私に聞くな、チケットに聞け(TiDD版ハリウッドの原則)
                           TiDD版ハリウッドの原則
                               版ハリウッドの原則)

チケットの並べ方     バックログ etc.

バージョンの作り方    Iteration is Version
プロジェクトの作り方   チケットは製品に従う
              Developers Summit 2013 Action !   21
まとめ


Developers Summit 2013 Action !   22
まとめ
パターン言語で現場の経験知を表現できそう
 状況と問題によってプラクティスを使い分ける
 パターンで経験知の本質を取り出したい

TiDDとAgile開発の親和性を説明できそう
 透明性、小規模リリース、持続可能な開発ペース etc.
 TiDDは価値観に基づく行動を促す


プラクティスが生成的(generative)な特徴を表現したい
       生成的
 単独のプラクティスから「品質」「効率」は出現しない
 プラクティスの相乗効果として「計画」「品質」「リズム」が現れる

          Developers Summit 2013 Action !   23
ご清聴
 ありがとう
ございました
 Developers Summit 2013 Action !   24

デブサミ2013発表資料(14-B-5)「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ」 #devsumi #devsumiB