LoginSignup
10
7

More than 3 years have passed since last update.

ZenHubを使ったIssueベースの開発

Last updated at Posted at 2019-03-26

ZenHubについて

ZenHubについて

ZenHubはアジャイル開発を行うための、GitHubの拡張機能です。
GitHubのリポジトリをベースにしており、GitHubのIssueをタスク、チケットとして扱うことができます。

image.png

具体的には下記のような機能があります。

  • かんばん(タスクボード)
  • ストーリーポイントの割り振り
  • マイルストーンの終了日
  • ベロシティの計測

ZenHubの登録とOrganizationへのライセンス依頼

チームでZenHubで始める際の、チームメンバー追加の手順についてです。
メンバー側がZenHubのアカウントを登録し、ライセンス割当を要請します。

  1. https://app.zenhub.com を開きます
  2. GitHub で認証(Sign Up)します
  3. 利用規約に同意します
  4. Organizationを選択します

Screen Shot 2019-10-01 at 16.23.48.png

  1. 左側に出てきているワークスペース一覧から、どれかのワークスペースを選択します
  2. 「Request Lisence」をクリックします
    Screen Shot 2019-10-01 at 16.25.54.png

  3. 管理者にSlackで「リクエストの承認をお願いします」という依頼をしてください。

ZenHubとGitHubプロジェクト

GitHubにはかんばん機能として「プロジェクト」という機能があります。
ZenHubの方が先にかんばん機能を提供しており、GitHub本家でも遅れてかんばん機能をリリースした、という経緯のようです。

ワークスペースとリポジトリ

ZenHubにはワークスペースという概念があります。
複数のリポジトリを一つのワークスペースにまとめて扱います。

1つのプロジェクトでサーバサイド、フロント、アプリなどのリポジトリが分かれている場合でも、それを一つのまとまりとして扱うためにワークスペースという単位で扱います。

注意点として、1つのリポジトリは1つのワークスペースにしか属することができません。
1つのリポジトリを複数のワークスペースに属させることはできません。

Issueとタスクボード

GitHubのIssue(とPullRequest)をチケット(札)として扱います。
このチケットにタスクを書き、タスクボードに配置します。

デフォルトのタスクボードは下記の通りです。

名前 意味
New Issue 振り分け前タスク
Icebox 手を付けないタスク(凍ったタスク)
Backlog 手を付けるタスク
In Progress 着手中
Review/QA 検証中
Done 終了
Closed 終了(IssueとしてClosed)

タスクボードは変更することもできますが、チーム内でZenHub運用に慣れるまではデフォルトのもので運用すると良いです。

特になれるまでの間、デフォルトのタスクボードのうち「New Issue」「In Progress」「Closed」の三つで運用するとみんながわかりやすいためおすすめです。

Issueの作成

Issueの作成についてです。

タイトルは簡潔かつわかりやすく書きます。言い切り型で書くと良いです。

修正での良い例)
1. ○○を○○する
2. ○○を○○に変更すると○○が発生するので、○○では○○のバリデーションを入れる

バグの場合には不具合を簡潔に述べます
1. ○○が表示されない
2. ○○で○○するとエラーになる

議論をIssueに書くと閉じるタイミングが不明になることがあるため注意が必要です
1. ○○の仕様について
2. ○○は○○なので○○ですか?

議論、質問をIssueで行う場合には question タグを利用するなどのルールを作りましょう。

Issueの本文について

マークダウンを利用して書くことがおすすめです。
仕様であれば期待する結果、背景、行うことをリストにすると良いです。

image.png

表記上の修正リストの場合にはチェックボックスを使うと良いです。

image.png

Estimate

タスクに対する作業量の見積もりです。

image.png

アジャイルでは「ストーリーポイント」という名称で呼ばれています。
このストーリーポイントは、スクラム開発では相対見積もりで行います。
ストーリーポイントに関する15個のよくある質問と答え

基準となるタスクを元に作業の重さを見積もります。

ただスクラムに慣れていないチームの場合、「○時間」という絶対見積もりでの運用も良いです。
その上でいくつかスクラムのプロジェクトをこなしてストリーポイントによる相対見積もりに移行すると良いでしょう。

IssueとPRの紐付けについて

ZenHubのタスクボードではIssue(Epicを含む)とPullRequstの両方が一覧で表示されます。

image.png

この状態だとPRとIssueが増えてくるため、ボードの見通しが悪くなります。

IssueとPRの紐付け

見やすくするためにPRとIssueを紐付けします。
PRの下の方にある「Connect this pull request with an existing issue」から、関連するIssueを選択します。

image.png

そうすることでZenHubのボードでIssueとRPがセットで見えるようになります。スイムレーンの移動も一緒に行われるようになり、見通しがかなりよくなります。

またIssue本文に「Fixes #123」や「Refs #123」といった、PRと関連するIssue番号を記載しておくと良いです。
Fixesの場合にはPRがマージされるとIssueが自動的にクローズされます。1
またPRからIssue、IssueからPRへの関連を見ることができるようになります。
他にも閉じる下記のキーワードを利用することができます。こちらはZenHub固有の機能ではなくGitHubの機能なので積極的に使っていきましょう。

  • close
  • closes
  • closed
  • fix
  • fixes
  • fixed
  • resolve
  • resolves
  • resolved

余談ですがこのIssueを閉じる予約後はGitHub登場前から使われていました。2
ですのでGitHubに限らず他のGitサービス、今後他のVCSなどでも採用されていくのではないか思います。


  1. ただしIssueがCloseされるとZenHubの関連は解除されるため注意が必要です。 

  2. https://trac-hacks.org/wiki/TracTicketReferencePlugin 

10
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7