Cursor を用いた Issue 発行の効率化。PdM も Cursor を使うと楽しいよ。
はじめに
こんにちは、えびですぷりぷり〜です。普段は PdM や PM として活動しています。今回は、AI 活用による業務効率化の実践例として、ユーザーストーリーから GitHub Issue を作成する工程を半自動化してみました。Cursor に興味がある人の参考になれば幸いです。
多くの開発者や PdM が抱える課題
ユーザーストーリーから GitHub の Issue を作成するのが面倒だなと思ったことはないでしょうか? 私はあります。ユーザーストーリーとして表現されているものを Issue(受け入れ条件)に変換する工程は以下のような点で面倒となっています。
- ユーザーストーリーを機能単位で分割して考え直す必要がある
- ユーザーストーリーの内容からシステム的な側面での受け入れ条件を考える必要がある
これらの内容が個人的には機械的な変換に感じる側面があり、苦手だな・・・と思っていました。
AI による Issue 作成の半自動化
この記事で紹介する方法を使うと、次のような作業フローが実現できます。
- AI が Notion からユーザーストーリーを自動取得
- AI がユーザーストーリーを基に適切な粒度で Issue を分割・作成
- 人間がレビュー
- AI が GitHub に Issue を発行
多くの PdM 業務の中で、こうした定型作業の効率化は大きな時間節約につながります。
実現のための環境構成
この仕組みを実現するために活用したのは以下3つのサービスです。
- Cursor - AI 機能を搭載したコードエディタ
- Notion - ユーザーストーリーなどを管理するドキュメントツール
- GitHub - 開発プロジェクト管理ツール
特に重要なのは、Cursor の「MCP(Model Context Protocol)」という機能です。これを利用することで、AI が Notion、GitHub など様々なサービスと連携できるようになります。
実際の使用例:チーム参加機能
具体例として「チーム参加機能」の Issue を発行することを考えてみましょう。前提として、チーム参加機能のユーザーストーリーは以下の内容で Notion に保存されているとします。
# チーム参加機能
## 提供価値
- 新しいメンバーがチームに加入できるようになる
## 前提条件
- チーム詳細ページは存在している。
- チーム管理ページは存在している。
- システム内メッセージ機能は存在している。
## ユーザーストーリー
- 参加希望者がチーム詳細ページにアクセスする
- 参加希望者はチームの説明文を読むことができる
- 参加希望者は参加申請ボタンから参加申請を送ることができる
- チーム管理者はチーム管理ページで参加申請を確認する
- チーム管理者は参加申請を許諾もしくは拒否できる
- 参加希望者はシステム内メッセージ機能で許諾もしくは拒否の結果を確認できる
では、Cursor 上で AI に指示を出してみましょう。
まずは、Notion のページからユーザーストーリー情報を取得します。実際には、Notion のデータベース機能を使ってユーザーストーリーが構築されていますが、難なく取得してくれます。
次に取得したユーザーストーリーを元に Issue の作成案を作ってもらいます。以下の通り1つのユーザーストーリーを4つの issue に分割することを提案してくれました。素晴らしい。
そして、各 Issue の具体的な内容についても提案してくれます。例えば、参加希望者向けの申請機能は以下の通りです。ユーザーストーリーから行間を読み取っていい感じの受け入れ条件を作ってくれていますね。直したいところがあれば、AI に直して欲しいといば修正してもらえます。
最後に、完成した Issue を GitHub に登録してもらいましょう。
GitHub を確認すると以下のようにちゃんと作成されていることが確認できました。Notion へのバックリンクもついてるのが偉いですね。
一連の作業を AI に覚えておいてもらう。
以上のように Notion から情報を取得し GitHub に Issue を登録することができました。しかし、毎回 AI に同じ様な指示を出すのは大変ですよね。そこで Cursor の AI Rules を活用してこの仕事を覚えてもらうことができます。例えば、以下の様な内容を登録しておくことで細かい指示を出さずとも一連の作業を AI が進めてくれます。
# Notion からの GitHub Issue 作成
## パラメータ
- notion_page_id
- github_repo_name
- github_repo_owner
## ワークフロー
- Notion から notion_page_id に紐づくページの内容を取得する
- MCP を利用すること
- 子ブロックやデータベースが含まれる場合にはその内容も取得すること
- 取得した内容から何個の Issue に分けるのが妥当か考える
- 1つの issue は5日以内に終わるぐらいの大きさとしたい
- 複数に分割する場合には epic 相当の Issue も作成する
- 実際に Issue の内容を1つずつ作成し私にレビューを求める
- 取得した内容には目的、前提条件、ユーザーストーリーが含まれている
- ユーザーストーリーを元に受け入れ条件を考えること
- issue の内容には以下を含めること
- 目的
- 受け入れ条件
- チェックボックスにすること
- 作成元となった Notion ページの URL
- epic 相当の issue には label として epic をつけること
- レビューが完了したら、MCP を利用して GitHub に Issue を作成する
- 作成した Issue の URL を返すこと
Cursor での MCP 設定方法
Cursor で実際に MCP を使うための設定方法を簡単にご紹介します。基本的な使い方は他記事にお任せしたいと思います。私が伝えたいのは環境変数を反映するために envコマンドを使用する必要があることです。自分は軽くハマったので。
例として Notion の設定例です。
# Notionとの連携設定例
Name : 任意の名前(例:Notion連携)
Type : Command
Command : env NOTION_API_TOKEN={あなたのトークン} npx -y @suekou/mcp-notion-server
おわりに
今回は PdM の業務における AI 活用の実践例として、Notion から情報を取得し GitHub Issue を作成する方法をご紹介しました。「Issue 作成の手間」という日常的な課題を、AI の力で効率化できることが伝わったかと思います。今後も業務効率化のための様々な AI 活用事例を共有していければと思います。
Discussion