この記事はJira, Confluenceを用いてタスク管理をし,さらにGitでのプルリクエスト,マージの連携まで記す.
また,初めて共同開発する人に向けてどのようにプロジェクトの進捗状況を管理,共有したり,タスクの分担の方法の一例を紹介しよう.
gitの基本的な使い方は以下の記事から
プロジェクト管理において以下の動作を自動で行ってくれると便利ではないだろうか.
1.ブランチ作成後,タスクのステータスを進行中(in progress)
にする
2.プルリクエスト(PR)作成後,タスクのステータスをPR済(PullRequest)
にする
3.マージ後,タスクのステータスを完了(complete)/マージ済(merged)
する
4.PRクローズ後,タスクのステータスをクローズ済(closed)
にする
このサイクルをする際にチームメンバーが都度ステータスを変更することは非常に非効率である...し,ちゃんと変更してくれるか不安だろう.
連携後のイメージ
gitでタスク番号に応じたリモートブランチが作成されると以下のようになる
このようにタスクのステータスが更新が自動で更新されるようにすることが本記事の目標である.
そもそもどのようにプロジェクト管理するべきか
プロジェクト管理といってもやったことない人はあまりしっくりこないだろう.まず,プロジェクトに求められる3要素は以下の通りである.
Quality Assurance
品質保証
Cost
費用
Deliverry
納期
PMBOKによるとプロジェクトマネジメントを以下の10の知識エリアに分類できるようだ.
PMBOK(Project Management Body of Knowledge)
プロジェクトマネジメントのベストプラクティス,標準,ガイドラインを提供するための文書
またソフトウェア開発手法に1つであるウォーターフォールモデルにおけるSLCPは以下のように多くの工程が連なっている
ウォーターフォールモデル
その名の通り「滝」のようにソフトウェア開発の工程が一方向へと段階的に進行する特徴を持っている開発手法.
SLCP(Software Life Cycle Process)
ソフトウェアアプリケーションの企画,作成,テスト,デプロイメントを包括的に管理する方法論
個人開発では上記のことはあまり気にしないと思うが,共同開発で下記のこととなるとどうだろうか.例えば,ハッカソンで以下のようにプロダクトを開発するとしよう.Unityでプレイヤーの位置座標を常にAndroidで表示するシステムを開発するとする.APIはJavaで開発するとしよう.どのように開発すると良いだろうか.
初めて共同開発をした際はプロジェクトの進捗状況の管理やタスクを分担する作業は大変だろう.
以下にどのようにタスクを分割すべきかを記す.
1.大まかなタスクに分ける
それぞれの開発プラットフォームごとで大まかなタスクに分割してみる.環境構築から各機能の開発まで大きく分けると良い.
2.タスクの細分化
先ほど大まかに分けたタスクに対して各開発プラットフォームごとに小さいタスクに細分化する.また,各プラットフォームごとにプロジェクト名をつける.
Unityでは
DEVUNITY
とする.
3.タスク番号をふる
細分化したタスクに対してタスク番号を振っていく.これにより各タスクごとに番号で識別できるのでチームメンバー内でタスク名称や内容を共有できる.
4.タスク単位でブランチを作成
細分化したタスク単位でブランチを作成し,ブランチ名はfeature/<タスク番号>
とする.このブランチでタスクの作業をする.
基本的にはgitではこのように管理をすると良い.
各種ツールの説明
gitのみではタスクを管理することは難しい.git管理,プロジェクトの進捗状況の管理,タスクの概要(仕様)や分担には以下のツールを使うとよい.
以下の3つのツールは全てAtlassian社製品であり,ソフトウェア間の連携に優れている.
Sourcetree
Gitクライアントソフトウェアの一つ.Gitリポジトリの視覚的な管理や操作を行うためのGUIツールとして機能し,ブランチの作成,マージ,コミットの管理などが視覚的に行える.Gitの操作に不慣れな人でも使いやすいインターフェースを提供している.
Jira
プロジェクト管理やタスク追跡のためのツール.チケット(課題)の作成,担当者の割り当て,進捗管理などを行うことができ,プロジェクトの進捗状況を可視化し,チーム内のコラボレーションを促進する.また,アジャイル開発のためのスクラム・カンバンボードの機能も備えているため,開発チームの効率的な作業に役立つ.
今まで説明してきたタスク
のことをJiraではチケット(課題)
という.
Confluence
チーム内の情報共有やコラボレーションのためのwikiツール.ドキュメントの作成,編集,共有を行うことができ,ページの階層構造や検索機能により,情報を整理して必要な情報にアクセスしやすくなる.また,画像,表,添付ファイルなどを使ってコンテンツを作成できるため,チームメンバー間の知識共有に効果的である.
実際に使ってみる
Sourcetreeのセットアップ,Jiraでのプロジェクトの作成方法,ConfluenceでのWiki作成は次の見出しで説明する.この見出しではセットアップ済みだと仮定する.
もしAtlassianアカウントを持っていないのであれば作成すること
https://www.atlassian.com
アクセスするためのURLはプロジェクトマネージャーに聞くこと.自分で作成するには次の見出しで
はじめにConfluenceのプロジェクト全体のページにアクセスする.
ConfluenceのURLはエンドポイントが/wiki
となっている.
https://projectName.atlassian.net/wiki/spaces/KEY
projectName
は管理者が決めた名前
KEY
はプロジェクトごとに識別するためのキーで管理者によって設定される
私用のプロジェクトの写真を使う
Confluenceではショートカット
という欄に各種リンクを貼ることができる.例えば全体プロジェクトのJiraのリンクやGitのリモートリポジトリのリンクを貼るなど様々なサイトにアクセスできるようにすると便利である.
また,コンテンツ
という欄には様々なWikiページを作成できる.例えばプロジェクトの仕様や,ReadMeの下書き,プロジェクト管理の概要,仕様した技術やソースコードの説明などを文字だけではなく画像や図表を使って文書化することができる.
このようにConfluenceはチームメンバー間の知識共有に便利なツールとなる.
次にJiraのプロジェクトページにアクセスする.
JiraのURLはエンドポイントが/jira
となっている.
https://projectName.atlassian.net/jira/core/projects/KEY
projectName
は管理者が決めた名前
KEY
はプロジェクトごとに識別するためのキーで管理者によって設定される
このようにタスク(チケット)ごとに未着手,進行中,PR済,マージ済のようにタスクの進行ステータスを分けることができる.
好きなようにステータスの名前はつけられる
各タスクの優先度,担当者,期限,Confluenceのページを添付することも可能である.さらにタスク(チケット,課題)ごとに子課題を振ることができたり,他の課題をリンクさせることも可能だ.課題に関してチームメンバーがコメントを残すことも可能である.
冒頭でも述べた通り,このチケットのステータスをgit操作(git branch, pullrequest, merge, close)をトリガーとして変更させることも可能である.本記事では最後の見出しで紹介する.
またJiraの各々のアカウントページでは全てのプロジェクトにおける自分の担当チケットを確認することも可能だ.
次にSourceTreeでGit管理をする.
Gitリポジトリはリモートで作成済みであると仮定する.
gitの基本がわからない方はこちらの記事を見ること
https://qiita.com/tarakokko3233/items/ad7e1a1a14d3e2f10da3
Sourcetreeをインストールしていない人は以下からインストールすること.
https://www.sourcetreeapp.com
Sourcetreeを開いたらローカルとリモートの欄があるのでリモートを選択したら,ログインしているGitリポジトリの一覧が出てくる.
githubへのログイン方法はSourcetreeの設定からアカウントを選択して,githubなどでログインをするとリモート欄にリモートリポジトリが出てくる.
リモート欄にあるリモートリポジトリの右側についているクローンを押すとクローンできる.
ローカルブランチを作成するには,上部のブランチボタンから作成することができる.Jiraではこのローカルブランチをプッシュすることでタスクステータスを未着手
から進行中
に自動で変えることができる設定がある.
git add, git commitの仕方は以下の通りである.
PRとマージはgithub上で行う.JiraではこのPR作成やマージ時にタスクステータスを進行中
からPR済
やPR済
からマージ済
に自動で変えることができる設定がある.
Jiraの設定方法
Jiraでプロジェクトを作成するには,プロジェクト
を押してプロジェクトを作成
を押す.
プロジェクト名とキーの設定とメンバーの設定ができる.
キーはJiraのエンドポイントにつくプロジェクトを一意に識別するためのコード.英語大文字で管理する.
作成したプロジェクトページのショートカットボタンを押して,ConfluenceのリンクやGitHubのリポジトリのリンクを貼っても良い.
Confluenceの設定方法
プロジェクト名とキーの設定ができる.キーはJiraと同じにすると良い.
この後+作成
ボタンからページを追加できる.
また+作成
ボタンでページした,コンテンツにページが追加されていく.
ショートカット欄には各種リンクを貼ることができる.+
ボタンを押してJiraやGithubのリポジトリのリンクを貼っても良い.
gitとJiraを連携する
Configure
を押してgithubアカウントでログインする.
テンプレート
を押して,GitのPRやマージをするとタスクステータスが変わるようにするものがあるので値を任意の形に変えて自動化を作成する.
例えばブランチを作成すると未着手
から進行中
に変える方法のルールは以下の通りに作成する.
これでgit Jira confluenceが連携された.
このようにすればgitの使い方から,タスク管理まで一元管理することができる.
Unity,Java,Androidで別々のJiraプロジェクト,Confluenceの1つのスペース,Gitの1つのリポジトリで管理すれば良いだろう.あくまで一例として考えてほしい.