miive プロダクトブログ

miiveのプロダクトチームのブログです。

GitHubのProjectsが素晴らしかった...

こんにちは。せーじと申します。現在は株式会社miiveで、Webやバックエンド、アプリの開発をしております。私は業務や私生活で日常的にRaycastを使っています。

現職に入社後5本ぐらいRaycastについての記事を書いてきましたが、今日はGitHubのProjectsについて書こうと思います。

きっかけ

弊社には「よもやま会」という文化があります。

週次で開催され「なんだかな〜」と思ったことを記載しておき、それについて話す会です。

ある日

タスク管理ツールを解約したい

- 背景
    - コストが高い。1アカウント1000円/月以上する
    - フル活用できていない。ただのKanbanとしての運用しかできていない。
    - ベロシティを図るとかも今はできていない
    - (GitHubとの)ワークフローもっと組みたい

のような意見が寄せられました。

要約すると「開発メンバーのタスク管理には専用のサービスを利用しているが、うまく使いこなせてないし他のツールでいいのでは?」

という意見でした。たしかに。

賛同が多かったため、有志を集って活動することになりました。

移行先はGitHubのProjectsに

移行先として色々と検討しましたが、「GitHubとの連携が強い(というかGitHubそもそも)」という理由から最終的にはProjectsを採用しました。

Projectsはこんなやつです。

出典:ビューのレイアウトを変更する

1つのProjectsに複数リポジトリのissueを紐付けられ、Kanbanなどでタスク管理ができます。

Projectsってこんなに色々できるのか!

個人で過去にProjectsを利用してはいましたが、7年も前です。「Kanbanが出せるツール」ぐらいの認識で移行を試しましたが、想像以上に多くのことができました。

今回は個人的に「いいな〜」と思った機能をざっくり紹介していきたいと思います。

CLIで完結できる

まず「いいな〜」と思ったのはtokenなどの面倒な設定をしなくてもCLIでしたい操作のほとんどができることでした。

多くのタスク管理サービスの場合、APIを提供していますが、利用するのにAPI Token等の発行が必要になります。 また、CLIから利用しようとするともう一手間かかります。

Projectsの場合、ghコマンドを利用することでissueの作成からprojectsの紐付け、カスタムフィールドの設定、issueの情報の取得までできます。

# issue の作成例
gh issue create --title "My new issue" --body "Here are more details."
# Projects へ追加例
gh issue edit 42 --add-project "Sprint Board"

人間が見ると若干とっつきにくいですが、AIに聞けば使い方を知っておりサクッと簡単に利用できます。

GitHubには公式のMCPもあるのでそちらを使うとより効率的です。

データの移行時も元のデータをAPIで引っこ抜き、ghコマンドでissueを作るshell scriptを作成しました。

この際、適切なsleepを入れないとRate Limitに引っかかるので注意です!

Table / List / Roadmap などViewが豊富

Projectsには3つのViewが用意されています。弊社のユースケースとしては必要十分なViewが用意されていました。

以下の画像は公式サイトから拝借しました。

Table

いわゆるKanbanです。それぞれのissue上に表示する情報もカスタムできて(後述)大変使い勝手がいいと感じています。

List

この表示で「すごい!」と思った点はスプレッドシートExcelみたいに値をコピー&ペーストできることです。一括で情報を更新したい際などとても便利です。若干スタイルは崩れますが、一覧をコピーし、別のツールにペーストすることもできます。

Roadmap

カスタムフィールド(後述)に設定した値のうち、日付のフィールドを使ってロードマップ表示ができます。

KanbanでPRの状態まで一覧できる

こんな感じで表示されます。画像はPRがOpenな状態です。Merged、ClosedやDraftなどによって表示が変わります。

PRのように一覧に表示する情報は View > Fields > Visible fieldsを設定することでカスタマイズできます。

LabelsをVisible fieldsに追加すると以下のような見た目になります。

リリース物の管理もできる

ProjectsではProjectごとにカスタムフィールドを設定できます。以下の画像はProduct KANBANというProjectのカスタムフィールドです。

ここにリリース日を追加します。

次にListで リリース日ごとにリストを分割する 設定を入れるとどのissueがリリースに含まれるか?が一目でわかるようになります。

GitHub Copilotにissueをお願いする

GitHub Copilotは「GitHub Copilot は、コードをより迅速かつ少ない労力で記述するのに役立つ AI コーディング アシスタント」です。

いわゆるAIエージェントです。人間の代わりにコーディングや調べ物をしてくれます。

github.com

GitHub CopilotもProjects(というかissue)もGitHubが提供しているため、今では簡単にタスクを依頼することができます。

issue > Assigners > Assign to Copilot から簡単にissueをタスクとして渡せます。

Assign to Copilotをクリックすると以下のようなモーダルが出てきます。リポジトリを選択し、Assignを押すとそのまま作業を始め、PRの作成までしてくれます。

「やり方はわかるけど作業するのが面倒」なタスクを任せるには最高です。

GitHub連携

もちろんGitHubとの連携もバッチりでした。ProjectsにはWorkflowという機能があります。 デフォルトで様々な設定が入っており、ポチポチGUI上で設定するだけで動作をカスタムできます。

弊社も今後もっと活用していきたい。

ベロシティを計測する

現状はあまり活用できていませんが、ProjectsにはInsightsという機能も提供されています。

これはissueのステータスやopen / closed、カスタムフィールドの値などを集計しグラフにできるものです。

今後ベロシティの計測などに利用できそうだなと感じています。

最後に

以上「GitHubのProjectsってこんなに色々できるのか...!」という驚きの共有でした!

今回ご紹介したようにフットワーク軽く新しいことを試せる環境です!

弊社にご興味を持っていただけましたら、カジュアル面談や、miive bar(ゆるく雑談とボードゲームをする会)なども実施しています。

ぜひご参加ください!お待ちしております!

hrmos.co

miive.notion.site

XでDMでも大歓迎です!