プログラマブログ

by wacul

menu
  • プログラマ
  • TrelloとGitHubで課題管理を行うたった一つの冴えたやり方

2014.08.01TrelloとGitHubで課題管理を行うたった一つの冴えたやり方

こんにちわ、kyohです。

昨日会社のそばに引っ越して、今日から自転車通勤に切り替えましたが、さすがに暑いですね。 気づけば8月ですものね、ジーンズが張り付いてエラいコトです。

課題管理に限界を感じて

さて、Waculではみんなだいすき GitHub で開発作業の管理をしています。 しかし、GitHub の issues は、問題を簡潔に管理することに特化しており、進捗管理や状態管理には向いていません。 こと問題を俯瞰する立場の人から「わかりづらい」と苦情が度々ありました。

Google Docs での管理も考えましたが、GitHub と Docsの二重管理になってしまうこと、Docs では自由度が高すぎてやりたいことがぼやけてしまうことなどもあって、限界を感じていました。 そこで、流行りのかんばん方式でもやってみるか、と Trello に手を出すに至ります。

管理ツールの有名ドコロでは Redmine や JIRA もありましたが、如何せん導入・撤退のコストが大きく、 少人数でさほど管理工数に余裕の無い状態では導入に踏み切れませんでした。

Trello

Trello は、よくあるカンバン方式のボード・リスト・カード管理のできるサービスです。 GitHubのAPIと連携して、コミットログなんかもカードに流してくれます。

適切に Trello を設定すれば、GitHubに追加された issue を自動的にTrelloに追加できるようになります。

GitHub の issue が次々 Trello の card になっていく・・・!

これの実現に結構苦労したので、実現方法について載せてみようと思います。

Zapier

GitHub と Trello の連携における一つの弱点として

  • GitHub との連携は Post・Pull Requestのみであること

があります。いくら GitHub で日頃管理しているとはいえ、非プログラマの人たちには GitHub の pull request をマージしてもらうわけにもいかないため、Pull Requestのみで運用するのには少し難があります。

そこで、Trello と GitHub を連携させるため、 Zapier も併用することにしました。

Zapier は、いわゆるハブサービスです。 ハブサービスというと、IFTTT や、一昔まえだと Yahoo! Pipes などもありましたが、 中でもかなり幅広い開発者向けツールとの連携に特化したハブサービスになっています。

ちょっとした難点

シルバー・ブレットは存在しないのです(言いたいだけ)。

この連携ではいくつか難点があります。

  • Zapier の制限として、5分に一度だけ連携するという処理になるため、GitHub >> Trello の反映がやや遅い。
  • Zapier も Trello も、既存の Issue を取り込むすべが無いため、初期時点で GitHub に大量の Issue や Pull Request があると、Trello に初期セットアップする Card が多くて大変。
  • Zapier も Trello も追加時にはトリガされるものの、その後の編集などの追跡は行われないため、完全に同期することはできない。

メリットと難点を踏まえて

Wacul では、次のように Trello を使っていこうと考えています。

  1. 問題発見者は GitHub に Issue を追加する。
    • Issue は Trello の TODO: リストに自動的に追加される。
  2. 途中の状態管理やスケジュール管理は基本的に Trello で完結させる。
    • GitHub は issue – ソース間の管理だけ。
  3. Trello 上で Done リストに入ったものについて、リリースする。
    • GitHub の Issue を close する。

まだまだ実験段階ではありますが、おおよそ悪くない管理方法に落ち着いたかな、という感がありますね。 場合によっては、最終的なDone → リリースの間にPull Requestによるやりとりを追加してもいいかもしれません。

実践編

実際に Trello、GitHub、Zapier の連携方法について掲載しておこうと思います。

Trello と GitHub を連携させる(GitHub編)

Push と Pull Request を連携させたい人は、 Trello を GitHub を直接連携させます。 Issue だけでいい!という人たちは飛ばして次の節から挑戦してください。

参考になった記事はこちら

  1. Trello / GitHub にログインしておく。
    途中で GitHub – Trello 間を行き来するため、両サービスにログインした状態で作業したほうがわかりやすいです。

  2. GitHub のリポジトリの設定画面へ
    foo のリポジトリ bar なら、URLはこんな感じ。 https://github.com/foo/bar/settings

  3. Web Hooks & Services > Add Service Hooks > Trello を選択
    設定ページの左上にある「Web Hooks & Services」を選択する
    下段の「Services」から、「Add service」を選択して"Trello"を選択する

  4. リストID取得のためのURL(A)をコピーしておく。
    説明文中段のURLをコピーしておきます。 URLをコピーしておく

  5. Create a Customer token から、Trello へのアクセストークンを取得する
    説明文上段の中にあるリンク「Create a customer token」を選択する
    「Allow」を選択する
    トークン情報が表示される
    表示されたトークン(B)をコピーしておきます。

  6. Trello を開いて、Dashboard から「GitHub と連携させたい Board」を選択します。
    今回は例としてWelcome boardを選択します

  7. 表示された Board のURLを確認して、Board ID(C)を特定します。
    Board の URL は、 https://trello.com/b/BoardのID/(Board 名) という形式になっています。

  8. A, B, Cの3つを組み合わせたURLにアクセスします。
    JSON形式で、Board内に含まれるリストの

    • リスト名
    • リストID

    が取得されるので、それぞれ Push を管理するリストPull Request を管理するリスト の2つのIDを取得しておきます。 リストIDとリスト名が表示されるので、必要なリスト名から対応するリストIDを取得する

  9. それぞれ Push List, Pull Request List に先のIDを入力し、Consumer Token 欄にも取得したトークンを入力して「Add service」を選択します。

  10. お疲れ様です。 お疲れ様です

Trello と GitHub を連携させる(Zapier編)

  1. Zapier の Dashboard で、「Make a New Zap」を選択します。

  2. 左側の Choose a Trigger app… で GitHub を選択、右側の Choose an Action app… で Trello を選択します。

  3. 下に追加された Choose a Trigger… で New Issue を選択、右側の Choose an Action… で Create Card を選択します。

  4. Continue を選択します。

  5. Select a Github account と表示されるので、Connect a GitHub を選択します。

  6. Zapier に登録するアカウント名を入力するダイアログが表示されますが、デフォルトのままで「Continue」を選択して大丈夫です。

  7. GitHub の承認ページが開くので、Authorize Application としてZapierを承認しましょう。

  8. GitHub で承認に成功すると、Zapierのページに戻って「Continue」が選択できるようになります。

  9. Select a Trello account と表示されるので、Connect a Trello を選択します。

  10. GitHub と同じ流れなので中略…

  11. GitHub のリポジトリを選択する画面が表示されるので、1.リポジトリのオーナー と 2.リポジトリ名 を選択して Continue を選択します。

  12. Trello に作成する Card の中身を指定できる画面が表示されるので、適当に内容を入力します。
    内容に GitHub の値を連携したい場合は、各入力欄の右側に置かれた「Insert Fields」を選択し、適当なフィールドを選択して Continue を選択します。

  13. Test this appという項目が追加されるので、Test Github trigger を選択します。

  14. 次の図のようなダイアログが表示されるので、ダイアログを閉じずに 指定したリポジトリに issue を追加します。

  15. issue が追加できたら、ダイアログ内の「OK, I did this」「Get Issues」「All done!」を順に選択します。

  16. ダイアログが自動的に閉じるので、Continue を選択します。

  17. Zap (こういう Trigger と Action の組み合わせを Zapier では「Zap」と呼びます。)に名前をつけて、Turn Zap On を選択すれば、出来上がりです。

この記事を書いた人kyoh

kyohです。蕎麦と鳥をこよなく愛するおでぶです。C#使いでした。

waculでは、プログラマを募集しています。

現在はプロダクトとして、課題発見から改善提案まで自動で行うWeb改善プラットフォーム「AIアナリスト」を開発中です。

waculの採用情報へ

ページトップへ