BASEプロダクトチームブログ

ネットショップ作成サービス「BASE ( https://thebase.in )」、ショッピングアプリ「BASE ( https://thebase.in/sp )」のプロダクトチームによるブログです。

GitHub ActionsでGitHub Project運用でのIssue作成作業をカイゼンする

こんにちは。BASE BANK 株式会社 Dev Division にて、 Software Developer をしている東口(@hgsgtk)です。

TL;DR

  • GitHub Project でカンバン運用する際に、Issue 作成が少し面倒で、対応する GitHub Project を手動で指定しないといけない
  • GitHub Actions の alex-page/github-project-automation-plus を用いて、Issue作成時に自動で GitHub Project に登録されるようにする
  • ISSUE_TEMPLATE の作成・更新など、ささいなカイゼンを積極的にやる

背景

BASE BANK Dev Division での開発プロジェクトでは、GitHub Project でカンバン運用しています。

少人数でのアジャイル開発への取り組み実例 (一歩目の踏みだし方) | 詳説 | July Tech Festa 2020 登壇レポート」にて、そのカンバンをちょっとだけチラ見せしておりました。

このカンバンには、Issueを作成して登録していくのですが、Issue を作成する際の ISSUE_TEMPLATE には、 GitHub Project は指定できません。そのため、Issue 作成時に対応するプロジェクトを指定していました。

これは、積もり積もると結構面倒な作業で、流れでポンポンIssueを作っていく際のリズムも途切れてしまいます。

ささいなカイゼンの重要性

最近、「香川編集長 トヨタ生産方式 取材フル (生産量を「100倍」にしたトヨタ生産方式の秘密) | トヨタイムズ」という YouTube の動画を見ました。老舗合羽メーカー「船橋」の医療用防護ガウンの生産をトヨタ社員がカイゼンして生産性を100倍にするという話です。

www.youtube.com

そこで行われていたのは、「最新機器を導入しましょう」みたいな話ではなく、「ここにハサミをおいておいたら1秒早くなる」といった愚直なアイデアでした。

また、クレディセゾン常務取締役CTOの小野和俊さんの著書『その仕事、全部やめてみよう――1%の本質をつかむ「シンプルな考え方」』でも、毎日の「繰り返し」を、プログラマー的発想法で効率化することの重要性を説いています。

ちょっとしたことでも日常で行われる「繰り返し処理」をカイゼンしていくことは、チームの生産性・スループットを上げるために重要である、と学びました。

GitHub Actions で自動で登録する

GitHub Actions で issue作成をフックに、指定した GitHub Project へ追加する、というものが、 Marketplace で公開されています。それが、 alex-page/github-project-automation-plus です。

github.com

設定方法はかんたんで、次のような yaml ファイルを .github/workflows/ 配下に入れるだけです。

name: 'Automatically add issue to basebankdev project'

on:
  issues:
    types: [opened]

jobs:
  automate-project-columns:
    runs-on: ubuntu-latest
    steps:
      - name: Move issues into pj column
        uses: alex-page/github-project-automation-plus@v0.2.4
        with:
          project: githubprojet
          column: Backlog
          repo-token: ${{ secrets.AUTOMATION_TOKEN }}

どのイベントをトリガーにするかはプロジェクトによりますが、本プロジェクトでは、 issues の opened のみをイベントトリガーに指定することで、作成時の issue を GitHub Project に登録するようにしています。

docs.github.com

注意点としては、レポジトリではなく、Organization 内プロジェクトボードにしている場合は、 secrets.GITHUB_TOKEN ではそのプロジェクトにアクセスできる権限を持っていません。

docs.github.com

そのため、専用に admin:org を scope に含めた Personal Access Token を設定する必要があります。

f:id:khigashigashi:20200907114204p:plain

これにより、Issue作成時の GitHub Project の手動指定と、作成したIssueを実際にプロジェクトのカラム(column)に追加する作業が不要になります。GitHub Project で Issue をトラッキングする運用における作業のリズムが改善されました。

ISSUE_TEMPLATEの使い分け

その他にも、スプリント計画やレトロスペクティブの記録・アジェンダも、 GitHub Issue で行なっているため、複数の ISSUE_TEMPLATE を用意しています。

$ tree -L 1 .github/ISSUE_TEMPLATE
.github/ISSUE_TEMPLATE
├── backlog_template.md
├── config.yml
├── retrospective_template.md
└── sprint_planning_template.md

ISSUE作成時は、下図のように複数のテンプレートから選択するようになります。

f:id:khigashigashi:20200907113647p:plain

副次的な効果として、テンプレート化されたことで、それぞれのイベントの司会をローテーションできるようになっています。以前、「朝会の司会はローテーションがオススメ」というブログエントリーがありました。

www.agile-studio.jp

その習慣イベントの継続性や当事者意識の高まりなどが期待されると言う話です。

実際に最近チームで、レトロスペクティブの司会・ファシリテーターをローテーションしていますが、それぞれの視点で様々なカイゼン点が見つかり、チーム運営が効率化される効果を感じています。

(例)

  • Miro の振り返りテンプレートを自作して用意する
  • ISSUE_TEMPLATE に毎回話しに上がる点を追加する

おわりに

ちょっとした GitHub Project 運用のカイゼン話でした。すぐにでも取り組める内容なので、似たような運用をされていたら、参考にいただければ幸いです。