こんな経験、ありませんか?
- 途中から参加した案件で、過去のチケットが数十〜数百件。全部読まないと経緯が分からない
- 「あの仕様、どのチケットで決まったっけ?」を探して延々スクロール
- 引き継ぎのたびに、コメント欄を上から下まで読み込む消耗戦
- 添付された要件定義書や議事録まで開いて、やっと全体像が見えてくる
Backlog はチームの記録がすべて残る素晴らしいツールですが、
その記録が増えるほど「全部確認する」コストが跳ね上がるというジレンマがあります。
そこで作ったのが、Backlog API と Claude Code を組み合わせて、チケットを丸ごと読み込ませて要約させる仕組みです。
「プロジェクト◯◯のチケットを読み込んで要約して」とお願いするだけで、あとは全部やってくれます。
何ができるようになったか
Claude Code にこう頼むだけです。
プロジェクト◯◯にある今までのチケットを読み込んで、要約してファイルに出力して
すると裏側で、
- Backlog API からそのプロジェクトの全チケットを取得(API の100件上限もページングで自動処理)
- Claude が内容を読んで要約を Markdown で出力
さらに踏み込んで、こんなことまでできました。
- コメントのやり取りまで含めた要約(「誰と何を合意したか」の経緯が追える)
- 添付ファイル(要件定義書・議事録など)まで読み込んで、要求を体系的に整理
- 整理した要求をもとに、システムの設計・構成案の提案書まで作成
「チケットを読む」から始まって、「要約 → 要求整理 → 設計提案」まで一気通貫でつながりました。
本記事では一度に全部を説明すると長くなるので、まず出発点であり効果の大きい「チケットの取得 → 要約」までを、実際のコードと Claude Code への渡し方を交えて紹介します。要求整理・設計提案は、「頼み方」を変えるだけなので、最後に触れる程度にとどめます。
仕組みはシンプル
大げさな基盤は不要です。構成はこれだけ(以下はあくまでサンプルの構成です)。
│
├─▶ node fetch-issues.js "◯◯" ← CLIツールがAPIを叩く
│ │
│ └─▶ [Backlog API] ──▶ output/◯◯-issues.json(全チケット)
│
└─▶ JSONを読んで要約 ──▶ output/◯◯-summary.md
ポイントは、Backlog API を叩く薄い CLI ツールを1つ用意しておくだけということ。
あとは Claude Code がそのツールを呼び出し、出てきた JSON を読んで要約します。
CLI ツールは Node.js の標準機能だけで書けるので、外部ライブラリのインストールも不要です(npm install すらいりません。
※ .env の読み込みに Node 標準の process.loadEnvFile() を使うため、Node.js 20.12 以上が必要です)。
// CLI 起動時にまず .env を読み込む(Node 標準機能・ライブラリ不要)
try { process.loadEnvFile(); } catch { /* .env が無ければ既存の環境変数を使う */ }
// --- ここから Backlog API v2 を叩くクライアント
const spaceUrl = (process.env.BACKLOG_SPACE_URL ?? '').replace(/\/+$/, '');
const apiKey = process.env.BACKLOG_API_KEY;
// 課題一覧は100件ずつ。返却が100件未満になるまでページングして全件取得
async function fetchAllIssues(projectId) {
const all = [];
let offset = 0;
for (;;) {
const url = new URL(`${spaceUrl}/api/v2/issues`);
url.searchParams.append('projectId[]', projectId);
url.searchParams.append('count', 100);
url.searchParams.append('offset', offset);
url.searchParams.append('apiKey', apiKey); // 認証はクエリパラメータ
const page = await (await fetch(url)).json();
all.push(...page);
if (page.length < 100) break;
offset += 100;
}
return all;
}
※ 紙面のため割愛していますが、実際のクライアントには通信タイムアウト、レート超過(HTTP 429)や一時エラー時の自動リトライ、ログ出力時の APIキーマスクを入れています。
使い方もこれだけ。
# プロジェクトの全チケットを取得
node fetch-issues.js "PROJECT_KEY"
# コメントのやり取りも含めて取得
node fetch-issues.js "PROJECT_KEY" --comments
# 未完了のチケットだけに絞る
node fetch-issues.js "PROJECT_KEY" --status open
Claude Code に「このツールを使って」と教える
ここが Backlog API 単体の話と違うところです。
CLI ツールを置いただけでは、Claude Code はその存在を知りません。
プロジェクト直下の CLAUDE.md(Claude Code が起動時に自動で読み込む指示書)に、ツールの使い方を書いておくことで、「要約して」の一言から Claude Code が適切なコマンドを自分で選んで実行してくれるようになります。
<!-- CLAUDE.md(抜粋)-->
## チケットの取得・要約を依頼されたとき
1. `node fetch-issues.js "<プロジェクト名またはキー>"` を実行して取得する
- コメントも含める場合は `--comments`
2. 出力された JSON を読む
3. 内容を要約し、`output/<キー>-summary.md` に Markdown で書き出す
これだけで「プロジェクト◯◯を要約して」→ ツール実行 → JSON 読込 → 要約出力、という一連の流れを Claude Code が自分でつなぎます。
プロンプトに毎回手順を書く必要はありません(もちろん、その場で手順を指示する頼み方でも動きます)。
そして冒頭で挙げた「要求整理」「設計提案」との違いは、渡すツールではなく「頼み方」の違いです。
同じ JSON を渡したうえで、
・「要約して」→ 状況の一覧
・「この要件から要求を整理して」→ 要求の体系化
・「整理した要求をもとに構成案を作って」→ 設計提案
とプロンプトを変えるだけでよいです。
Backlog の APIキーを取得する
このツールを動かすには、Backlog の APIキーとスペース URL が必要です。
APIキーは個人設定から発行します。
- Backlog にログインし、画面右上のユーザーアイコンから 個人設定 を開く
- 左メニューの API を選ぶ
- メモ(用途がわかる名前)を入力して 登録 をクリックする
- 発行された APIキーをコピーし、.env のBACKLOG_API_KEY に設定する
スペース URL は、普段ブラウザで開いている Backlog の URL(https://xxxxx.backlog.com など)です。これを BACKLOG_SPACE_URL に設定します。
💡 スペースの管理者設定で API 連携が無効になっていると、個人設定に API メニューが表示されないことがあります。その場合はスペース管理者に有効化を依頼してください。
セキュリティ:APIキーは「外」に出さない
「APIキーを AI に渡して大丈夫なの?」という不安は当然あります。ここは設計で明確に線を引いています。
- APIキーとスペース URL は .env(環境変数)で保持し、Git 管理からも除外
- キーは Backlog への認証にのみ使用。取得した JSON・要約結果・ログには一切含めない
# .env(このファイルはコミットしない)
BACKLOG_SPACE_URL=https://your-space.backlog.com
BACKLOG_API_KEY=xxxxxxxxxxxxxxxx
ポイントは .env に入れた APIキー・スペース URL そのものは Claude(AI)に渡さないような設定を行うことです。
Claude が受け取るのは、CLI ツールが出力した JSON ファイルの中身だけです。
認証情報とデータの経路をはっきり分けています。
🔒 .env に切り出す=安全、ではない点に注意してください。
.env をClaude Codeから読ませないようにするには、
.claude/settings.json の permissions.deny に Read(./.env) を加えて、
Claude Code からの .env の読み取りそのものを明示的に禁止しておくことが必要になります。⚠️ ただし、Backlog から取得したチケットの中身は Claude(AI)に渡ります。
要約するという仕組み上、これは避けられません。チケット本文・コメント・添付ファイルに含まれる情報(顧客名・個人情報・契約金額・未公開の仕様など)が AI の処理対象になる点を理解した上で、取得対象のプロジェクトと、AI 利用に関する社内規定・顧客との取り決めを必ず確認してください。
💡 Backlog API にはレート制限があります(リクエスト種別やプランによって上限が異なり、制限はユーザー単位)。大量のコメント取得などで上限に達し得るため、このツールはページングと、レート超過(HTTP 429)時の自動リトライで処理しています。
実際に使ってみた(イメージ)
ある案件で、20件ほどのチケットに数十件のコメントがぶら下がっている状態を要約させてみました。出力される要約はこんなイメージです(内容は汎用化しています)。
# プロジェクト要約
- 総チケット数: 20件(完了12 / 処理中6 / 未対応2)
- 期間: 2026-04-01 〜 2026-04-30
## フェーズ別の状況
### 1. ヒアリング(完了)
検索機能・登録機能・権限まわりの確認が完了。
### 2. 設計中(進行中)
ヒアリング内容に基づいて設計を行う
## 現在オープンで要フォローの課題
1. 個別契約の締結(実装着手の前提)
2. データベースの仕様確認
...
「まず何を見ればいいか」「今ブロッカーになっているのはどれか」が、スクロールせずに一目で分かります。コメントまで取り込めば、意思決定の経緯まで要約に反映でき、過去案件のキャッチアップが速くなります。
まとめ
- Backlog API を叩く 薄い CLI ツール1つ + Claude Code で、チケットの山を要約できる
- コメント・添付ファイルまで読み込めば、要約 → 要求整理 → 設計提案まで地続きにつながる
- APIキーは環境変数で保持し、認証情報は AI に渡さない設計で安全に
- 外部ライブラリ不要(Node.js の標準機能だけ)で始められる
「チケットを全部読む」という作業は、もう AI に任せていい時代です。
人間は、要約された結論を見て判断することに集中する。
そんな働き方に、一歩近づけた気がします。
※ 本記事のツールは Backlog API v2 を利用しています。APIキーの取り扱いは各社のセキュリティポリシーに従ってください。要約対象のチケットに機密情報が含まれる場合、AI の利用範囲についても社内規定をご確認ください。

