チャレンジ基盤としての
  チケット駆動開発

 株式会社SRA
  阪井 誠
自己紹介
• 阪井誠(さかば、Twitter: @sakaba37)
• ソフトウェアプロセス、チケット駆動開発、アジャイルに
  興味を持つ「プロセスプログラマー」
• 研究開発から現場まで、論文、書籍、雑誌など




                            2
本の内容と発表内容

TiDDの基本、 障害管理、
構成管理、 Mantisの運用例、
障害管理からTiDDへ、
プロジェクトを成功に導く、
アジリティの向上、 アダプタブルWF開発、
アジャイルブームを超えて、 高度な運用方法、
FAQとアンチパターン集、 テーラリング、

                         3
ソフトウェア業界のパラダイムシフト
• 1990年代に始まった
• ネオダマという標語によってソフトウェアハウスは
  SI erに変わった
• 高機能ソフトの開発が容易になり、自由度が増し
  た反面、リスクが増えた
• 技術者の守備範囲はソフトからシステムになり、
  今、ビジネスに広がりつつある
• 常に新しい分野へのチャレンジが求められるよう
  になった
                            4
1995年の発表より




阪井,松本,鳥居, "ダウンサイジング時代のプロセス改善モデル", ソフトウェアシンポジウム'95論文集,1995.
技術者の責任範囲
• 開発の効率化とともに責任範囲は広がった
 – ビジネスは広がったが純粋なソフトウェア開発が
   減少した
                           ビジネス


                 ソフトウェア

        ハードウェア
                          ネットワーク


 ネオダマ              Web    クラウド

                                   6
要求の不安定さ
• ハンフリーは機能・インタフェース・環境の変更は
  管理されないと開発は不安定になるとした
  • Watts S. Humphrey, ソフトウェアプロセス成熟度の改善, 日科技連, 1991.




  不安定な要求              誤解された要求                 未知の要求
 大体わかっているか           実現するために必               知っているつもりが、
 もしれないが、詳細           要な詳細を理解して              使ってみて違いに気
 は流動的                いない                    づく



• プロトタイプ、分離、段階的な開発など、アジャイル
  やオブジェクト指向につながる提案をしているが
  どのように管理して解決するかを示していない
パラダイムシフトを生き抜くには
• 環境、フレームワーク、ユーザーインタフェース、
  ビジネスは日々変化している
• ソフトウェア開発は、常にチャレンジ!
• 開発中にノウハウやアイデア、気づきを蓄積し、
  共有し、活用しないといけない



解決法の一つとして、チケット駆動開発をチャレンジ
基盤として活用する方法を提案します
                            8
発表内容
• ソフトウェア業界のパラダイムシフト
 – 技術者の責任範囲
 – 要求の不安定性
• チケット駆動開発
 – チケットによる管理
 – ツール連携による自動化
 – チケットによるコミュニケーション
• チャレンジ基盤
 – 必要とされるもの
 – チケット駆動開発のテーラリング
 – 課題と可能性
                      9
チケット駆動開発
• チケットで障害、課題、タスクを管理して
  個人のタスクとプロジェクトを管理する
• 構成管理、Wiki、継続的統合などツールを
  チケットに連携させて自動化する
• プロジェクトの情報をチケットに関連付けて
  管理することで、コミュニケーションを支援する




                           10
チケットによる管理
チケットシステム(ITS)            プロジェクト
                       親チケット
      障害・課題・タスク

   ステータス
                       継続チケット
 種類とロール毎のワークフロー


                レポート、カスタムクエリ、
  関連チケット        ロードマップ、ガントチャート
                等で参照できる
チケット一覧(例:Redmine)

              タスクボードの代わりとして 担
               当者毎の進捗を確認できる




                                            12
                      SQiP2009発表資料より ©小川明彦, 阪井誠
ガントチャート




    SQiP2009発表資料より ©小川明彦, 阪井誠



                          13
ワークフロー設定(例:Redmine)
                           ソフトウェア開発のワークフローは
                           BTSのワークフロー機能で
                           制御できる


                       ユーザ権限と
                       チケット種類の単位で
                       ステータスの現在・移行先を指
                       定する

                                     ステータスの移行先
ス現
 在
 の
 ス
 テ
 ー
 タ


                                               14
                         SQiP2009発表資料より ©小川明彦, 阪井誠
ツール連携


 作業、担当、
ステータス、進捗
 開始、終了
                refs #チケット番号
                fixes #チケット番号
 コメント
           バージョン管理
  ITS        ツール

                           15
ツール連携とチケット
                             チケットシステム(ITS)
 CIツール
             実行結果                  親プロジェクト
  参照         チケット
  連携                          プロジェクト
                             親タスク/ストーリー
 バージョン管理
                             タスク
              参照
     リビジョン
    リビジョン            ステータス
  リビジョン       連携
 リビジョン
                    チケットの種類とロール毎のワークフロー


                                             継続タスク
構成管理、Wiki、          参照

CIツールなどを            Wiki      関連タスク

チケットに連携
チケットによるコミュニケーションの支援
                            チケットシステム(ITS)
 CIツール
            実行結果                  親プロジェクト
 参照         チケット
 連携                          プロジェクト
                            親タスク/ストーリー
バージョン管理
                            タスク
             参照
    リビジョン
   リビジョン            ステータス
 リビジョン       連携
リビジョン
                   チケットの種類とロール毎のワークフロー


                                            継続タスク
議論や更新を             参照
メール、RSS、           Wiki      関連タスク

プラグインで
通知できる
発表内容
• ソフトウェア業界のパラダイムシフト
 – 技術者の責任範囲
 – 要求の不安定性
• チケット駆動開発
 – チケットによる管理
 – ツール連携による自動化
 – チケットによるコミュニケーション
• チャレンジ基盤
 – 必要とされるもの
 – チケット駆動開発のテーラリング
 – 課題と可能性
                      18
チャレンジ基盤の構築
• 新しい環境、実装方法、アプリケーションに挑戦
  するには、以下の点を考慮しないといけない
 – 気づいたことが共有されること
 – 少ない経験が蓄積されること
 – 蓄積した経験が生かせること


=> ふさわしいチケット駆動開発の運用方法が必要



                           19
気づいたことが共有されること
• チケットが容易に起票できるようにする
 – 起票の権限をメンバーに与える
 – ワークフローの制限を少なくする
• チケットの種類や属性を増やしすぎない
 – 考えなくてよいようにする
 – 記入項目を減らす
• リアルタイムに共有してモチベーションを高める
 – メール、RSS、Eclipse 用のMylynプラグイン
 – コミュニケーションのタイムラグ減ると利用が増える

                                  20
少ない経験が蓄積されること
• チケット駆動を習慣づける
 – 基本的な教育
 – メリットを感じさせる
 – 備忘録としての利用
• 利用に向けた支援
 – カスタムレポートの用意など環境整備
 – アドバイスのための棚卸し
 – ルールの整備(“No Ticket, No, Commit!!”をどこまで守
   るか、など)

                                        21
蓄積した経験が生かされること
• 経験の種類に応じて整理する
 – 一度だけの作業はチケットを起票する
 – 手順やチェックリストはWikiにまとめる
• 書きっぱなしのチケットを防ぐ
 – 完了条件を明確にする
 – 適切な棚卸しをする
• 発想力・提案力の向上
 – 棚卸しの頻度を増やしすぎない
 – 自律的なチーム

                          22
自律的なチーム
• サーバントリーダーシップ
 – コマンドコントロールをやめ、メンバーが能力を生かせ
   るように支援する
• マクロマネジメント
 – マイクロマネジメントをすると依存するようになり、自律
   性が失われる
• 作り濡れぞうきんはしぼらない
 – 本田宗一郎氏がIIJ鈴木幸一社長に送った言葉
 – ガチガチの管理からは柔軟な発想は生まれない

                               23
課題と可能性
• CBR(Case Based Reasoning)の経験による問題
  解決する際にはインデックスが重要とされている
 – 現状では日々の情報整理が必要
 – チケット駆動開発の事例報告が少ない
 – より多くの事例を集めて整理したい
• チャレンジ基盤の活用でリスクが低減できる可能
  性がある
 – ソフトウェア開発は常にチャレンジだと認識する
 – チケット駆動開発を活用する
 – 発想力・提案力のあるチーム作りをする
                                      24
まとめ
• パラダイムシフトは続いている
 – リスクは増え続け、ソフト開発は常にチャレンジである
• チケット駆動開発
 – プロジェクトの情報を集中管理
 – 自動化やコミュニケーションの支援ができる
• チャレンジ基盤への利用
 – 気づきや経験を蓄積して活用
 – チーム作りが重要

=> ぜひ皆さんも活用してください
                               25
おわり

チャレンジ基盤としての
 チケット駆動開発

チャレンジ基盤としてのチケット駆動開発(旧版)