なぜ日本ではチケット駆動開発が注目されるのか?(ゲストブログ)

今回はゲストブログです。今、日本のソフトウェア開発において注目されており、先日書籍も出版された「チケット駆動開発」について2回に渡り紹介していきます。今回は Part 1 ということで著者のお一人である Makoto Sakai 様から寄稿頂きました。

Makoto Sakai / SRA (Software Research Associates,Inc.)

近年、日本では書籍が発売されるなど「チケット駆動開発」が注目を集めています。「チケット駆動開発」が注目されているのは、短期間に大規模開発が行われる日本独特のソフトウェア開発の事情によるものです。しかしその利用方法を見ていると、チケット駆動開発によって、分散開発が可能な電子カンバン、チケットを中心としたコミュニケーション、ツール連携と情報の管理、ワークフローによるプロセスの自動化、などソフトウェア開発における制約を取り除く事を目的としているので、日本に限らず広く応用が可能であることがわかります。この記事では、日本でチケット駆動開発が注目される理由と、どのように利用されているかについて説明します。

チケット駆動開発

チケット駆動開発はBTS/ITSのチケット(issue)を用いてソフトウェア開発のタスクを管理する方法です。その基本的なルールは "No Ticket, No Commit!" と呼ばれ、BTS/ITSのチケットと構成管理を関連づけます。このルールの下で、チケットを中心にプロジェクトを運営する事で、以下のような効果が得られます。

1. ツール連携と情報の管理

  • チケットの履歴と構成管理の関連付けによってメンテナンス性が向上する
  • 様々なツールの連携によって、情報を一元管理できる

2. チケットを中心としたコミュニケーション

  • 不要なコミュニケーションが減るので、リズムが生まれて作業に集中できる
  • 内気なメンバーとコミュニケーションが容易になる

3. 分散開発が可能な電子カンバン

  • 遠隔地であってもスムーズな情報共有が可能なので、変化に柔軟に対応できる
  • チームや個人の視点で報告を集計できるので、プロジェクト管理や自己管理が容易になる

4. ワークフローによるプロセスの自動化

  • ワークフローによって、確認プロセスを自動化できる
  • 作業漏れ、確認漏れが防止できる

日本のソフトウェア開発の特徴

日本においても、Webソフトウェアやゲームソフトウェアの開発ではアジャイル開発が多く行われています。しかし、開発上の制約によって、ウォーターフォールをベースとしたソフトウェア開発も多く行われています。これは、以下のような複雑なシステム、請負契約、開発標準、設計法が背景にあるからでと考えられます。

      • System of systemと呼ばれるような、複雑で大規模なソフトウェアが開発されている。
      • 複数組織で短期間に開発できる様に、仕様を確定した上で請負契約される(もちろん、仕様の変更も行われる)
      • 80年代よりウォーターフォールを基にした開発の標準化が進んでいる
      • DBMSを用いたデータ中心指向が重視されたので、オブジェクト指向の普及が遅れた

上記のような背景から、日本ではアジャイル開発に対するモチベーションの低い分野が存在していました。

なぜチケット駆動開発が注目されるか?

しかし、日本においても以下のような理由で、状況が変わりつつあるようです。

      • コストダウン圧力が高まり、事前の仕様決定に対するリスク予算が確保できなくなった
      • ビジネスニーズの変化に対して、自律的で機敏な組織の実現が求められている
      • ソフトウェアの多様化により、管理情報(ソフトウェアメトリクス)を統計的に扱う事が難しくなった
      • Rubyのような動的言語の普及により、逐次開発が必須になってきた

このようにアジャイル開発の導入が必要な状況になってきています。しかし、以下のような理由からアナログのアジャイル開発への移行ではなく、チケット駆動開発が注目されています。

      • 作業スペースが狭く、タスクボードやミーティングスペースの確保が紺案であること
      • ノウハウ不足による大規模開発屁への不安
      • 決裁権者や関連チームが別拠点に存在するなど体制上の問題
      • 管理情報の継続性を失う事への不安

チケット駆動開発の利用シーン

チケット駆動開発には以下のような特徴的な利用法があります。

1) 電子化・自動化されたアジャイル開発

制約が少なく、効率化されたアジャイル開発としてチケット駆動開発が行われています。テスト的にチケット駆動開発を用いてアジャイル開発の実績を示して、BTS/ITSを障害管理に利用しながらアナログなタスクカードに移行する場合も存在します。

2) 変更に機敏に対応できるアダプタブル・ウォーターフォール開発

仕様変更に関連するコミュニケーションや開発作業の効率化を目的としてチケット駆動開発が用いられます。プロセスが軽量化されることで、変更に機敏に対応できます。また、BTS/ITSのマイルストーンを用いて複数リリースに対応し、適応容易なプロセスを実現します。

3) 複数拠点での分散開発

分散開発での作業指示としてのチケット利用もチケット駆動開発と呼ばれる事があります。この場合は、必ずしも構成管理とチケットを連携ません。

4) ワークフローとファイルの関連付けを利用した業務システムへの応用

開発から保守に至るまでの課題(issue)をチケットで管理するDevOps的な利用のほか、IT全般統制や一般業務への利用が広がっています。

まとめ

「チケット駆動開発」のブームは日本固有の事情から生まれました。しかし、その利用シーンは特に日本に限ったものではなく、一般的なソフトウェア/システム開発でも利用可能なものです。多くの事例によって効果的な利用方法が整理されれば、より広く使われる様になると考えています。

Part 1 は以上です。Part 2 は「チケット駆動開発」のもう一人の著者である akipii 様からご寄稿頂く予定です。お楽しみに!