先日Zennの記事にて、Backlog が公式で提供している MCPサーバーを使って日報作成の為のタスク実績収集を自動化する方法を紹介しました。Claude Desktopとの対話で「今日のレポート作って」と指示するだけで、その日のアクティビティから日報を生成できるようになりました。
新しい挑戦として、定時になればタスク実績を自動的に報告してくれる仕組みを AWS 上に構築し、テスト的に社内運用を行いました。この記事では、その結果と開発したシステムのソースコードを紹介します。
チームメンバーのタスク状況や請求根拠となる稼働状況を把握するためなど、今回紹介するシステムが Backlog をチームワークの情報ポータルとして活用する取り組みの助けになれば幸いです。
自動レポート方式に挑戦した背景
デジタルキューブでは、 Claude を利用して Backlog スペースの情報を収集し、それに基づいた日報作成などが可能です。これによって差し込みで対応した小さなタスクの報告漏れなど、作業者の記憶に依存しがちなレポート作業を効率化しています。
ネクストステップとして「定時をすぎると、アクティビティをレポートしてくれる秘書のような存在」の作成に挑戦しました。ここで目指したものは定時報告による更なる作業の効率化だけでなく、「期日を変更しただけの変更」や「日報プロジェクトを収集対象外にする」などのフィルタリングについても追加しています。
アーキテクチャ
アプリケーションは、弊社が社内システムやサービスの基盤に活用している AWS 上に構築しました。

EventBridge を利用してタスクをスケジュール実行し、Lambda にて各種処理を実施します。Backlog API にアクセスするための API キーは Systems Manager の Parameter Store で Secure String として管理し、収集データのレポート化は Amazon Bedrock を利用します。
また、これらの構成を簡単に管理・変更・配布できるようにするため、AWS CDK にて構成管理を実施しています。全てのアプリケーションコードは、以下の GitHub リポジトリで参照できます。
https://github.com/digitalcube/aws-cdk-backlog-daily-report-generator
Backlogのアクティビティを収集、整理するモジュール
daily-report-generator というモジュールを用意しています。これはBacklog から収集したデータを複数の条件でフィルターし、日報でノイズになり得る情報を除外するために活用しています。
複数条件でのフィルター
このモジュールでは幾つかのフィルターを実装しました。
- CommentFilter: コメント付きアクティビティを抽出
- MeaningfulChangeFilter: 期限日・担当者のみの変更を除外
- ExcludeProjectFilter: 特定プロジェクトを除外
- OrFilter/AndFilter/NotFilter: 複合条件の構築
デフォルト設定は「コメントがある、または意味のある変更がある」かつ「除外プロジェクトではない」という条件にしています。
const service = new BacklogActivityService(backlog, {
filter: new AndFilter([
new OrFilter([
new CommentFilter(),
new MeaningfulChangeFilter()
]),
new ExcludeProjectFilter()
])
});
これにより、コンテキストウィンドウの節約だけでなく、単純な課題整理(特に対応不要と判断されたチケットのクローズ処理)等を日報に含めないようにしています。
Bedrock によるレポート生成
AWS 上で完結するシンプルなシステムにするため、Bedrock を採用しました。モデルアクセスや上限緩和等の手続きが比較的シンプルな Amazon Nova モデルを採用していますが、Anthropic 社が提供するモデルなどでも十分稼働します。
プロンプトは、システムプロンプトで日報生成の役割と出力形式を明確に定義しました。
system: [{
text: `あなたは各メンバーの秘書です。Backlogチケット管理ツールのデータをもとに、
実践的で改善につながる日報を作成するのが業務です。
### プロジェクトごとの状態・ステータス
${JSON.stringify(statuses, null, 2)}
## 生成する内容
・業務内容 (Fact)を整理して列挙します
・必ずBacklogのチケットキーを先頭に付与します(例: EST-1234)
・${member.name}さん以外のメンバーによる作業やコメントなどは記載しません`
}]
Backlogのステータスは数値IDで管理されているため、プロジェクトごとのステータス定義をJSON形式でプロンプトに含め、AIがステータス名を適切に表示できるようにしています。
設定のカスタマイズ
Backlog に参加しているユーザーは社内のメンバーだけとは限りません。そのため、日報を生成するユーザーやレポートを作成するプロジェクトの設定については lambda/config.ts に持たせるようにしました。レポートに必要なユーザー ID や除外したいプロジェクトなどはここで設定します。
export const APP_CONFIG = {
dailyReports: {
projectId: 12345,
members: [
{
name: "山田太郎",
id: 100001,
parentIssueId: 99999, // 親チケット配下に作成(Optional)
issueTypeId: 88888,
}
]
},
excludedProjectKeys: ['DAILY_REPORT']
}
親チケットIDを設定することで、特定のチケット配下に日報を作成できます。除外プロジェクトの指定により、日報生成プロジェクト自体のアクティビティなどを除外できます。
運用してみて感じた課題
2ヶ月ほど稼働させましたが、特にトラブルが起きることもなくタスクのレポートを行ってくれていました。

運用してみて感じた課題として、「自動生成されたレポートはスルーされやすい」点が挙げられます。もしかすると、この点については、課題を作成する際に通知を送信する設定を追加するだけでも変わったかもしれません。しかし実施したタスクの列挙が一通り完了している状態だと、それでも内容をあまりチェックせずに上長にチケットを回してしまいそうだなと感じましたし、実際に業務が立て込んでいる時期などはあまりチェックしないまま提出していました。
日報を作成する目的にも寄りますが、1日のタスクを振り返って明日以降の計画を立てることを目的としている場合には、自動化は逆効果である可能性があります。自動化するならば、明日の計画についてもこのシステムで提案する必要があるかもしれません。この点については、会社とメンバー・チームそれぞれが生成 AI をどのような形で活用していくのかという立ち位置によっても変わると思います。
まとめ
ただレポートが右から左に流れるだけの状態になりかねなかったため、今回構築したシステムについてはすでに稼働を停止しています。しかし自動化に挑戦したことで、日報やメンバーのタスク管理について、「誰が、なんのために行うのか」を再確認する機会にもなりました。
Serverless Days 2025 のセッションで紹介があったように、「 AI を使う、から AI に任せる」というパラダイムシフトがこれから起こるかもしれません。その時には、このような Backlog を監視して作業指示や状況報告を AI が行うことになる可能性があります。作業者はより作業に、管理者は状況把握と計画立案や修正に、それぞれやるべきことにフォーカスできる理想的な環境にも感じますが、そこまでシフトを行うロードマップについては、これから各社で考える必要がありそうです。
今回挑戦したリソースは GitHub にて公開しています。とてもシンプルなアプリですので、ぜひ「初手 AI を Backlog で実現する」チャレンジのショートカットなどにお使いください。
https://github.com/digitalcube/aws-cdk-backlog-daily-report-generator
もちろん、この記事をご覧になって「自社でも Backlog を使ってみたい」と思われた場合には、ぜひデジタルキューブにご相談ください。
10 年以上運用してきたノウハウを活用して、導入や使い方などをサポートさせていただきます。