こんにちは。クラウド&ネットワークサービス部で SDPF のベアメタルサーバの開発をしている山中です。
先日、Google Workspace で利用できる Gemini API を活用して、日々の業務ログから日報を自動生成し、Slackに自動投稿する仕組みを構築しました。
その具体的な方法と、実際に導入してわかった想像以上の効果をご紹介します。
デイリースクラムの悩み、AIで解決しませんか?
「昨日はこれをやって、今日はこれをやる予定です」
スクラムで開発している皆さん、毎朝のデイリースクラムどうしていますか?
短い時間で、やったことや今後の予定を口頭でサクッと共有する。
アジャイル開発におけるデイリースクラムは、チームの情報共有に欠かせません。
しかし、この短いミーティング、意外と悩みがつきものじゃないでしょうか。
- マルチタスクに追われていると「昨日何やってたっけ?」と混乱する
- 口頭だと伝え漏れや解釈のずれが起きやすい
- 日報をちゃんと書いている人もいるけど、正直面倒くさそう…
GitHub や Jira、Slack に記録は残っているものの、複数のツールを横断して情報を整理するのは意外と労力がかかります。
でもこの課題、Gemini を使って解決できました。
今回は、社内の Google Workspace で利用できる Gemini API(Vertex AI1)を使って日報を自動生成し、Slack に自動投稿する仕組みを構築したので、その具体的な方法と効果をご紹介します。
やったこと:情報を集めて Gemini に日報を書かせる
今回作ったのは、チームメンバーの日々の活動ログを自動で収集し、それを元に Gemini が日報を作成してくれるツールです。
1. 各種ツールから活動ログを収集
まずは、GitHub や Jira といった業務ツールから、各メンバーの活動ログを収集します。
この部分は、APIを叩くだけの定型的な作業なので、AI や MCP(Model Context Protocol2) サーバは使いません。
欲しい情報だけを素早く確実に取得するために、各種サービスで提供されている API 経由で情報を取得します。
収集するイベント情報は以下の通りです。
昨日から今日までという期間に絞って各種イベント情報を取得することで、日報生成の材料を集めます。
- Slack の投稿:メッセージ内容とチャンネル名
- Jira チケットコメント:コメント本文、チケット ID とタイトル
- Confluence ページの編集:ページタイトルと編集時刻
- 作成した GitHub PR:PR タイトルと本文、リポジトリ名
- Google Calendar の予定:予定の件名と時刻
API は直接リクエストを送ってもよいですし、手に馴染みのある言語のライブラリを使って取得するのも良いです。
2. イベント情報を時系列で整理
集めたイベント情報を JSON 形式に変換し、時系列でソートします。
これにより、AI が異なるイベント同士を関連付けて解釈しやすくなる効果が期待できます。
以下は、収集したイベントデータの JSON 例です。
[
{
"type": "slack_message",
"timestamp": "2025-09-03T09:30:00Z",
"channel": "example-dev",
"text": "PR #123 のレビューお願いします!"
},
{
"type": "github_pr",
"timestamp": "2025-09-03T11:45:00Z",
"repo": "example-tool",
"title": "ログイン機能のバグ改修",
"body": "ログイン時の処理に XXX の考慮漏れがあったため、YYY の対処を導入"
},
// 他のイベントが続く
]
3. プロンプトを作成し Gemini API を実行
ここが一番重要なポイントです。時系列で整理したイベント情報を元に、日報を生成するためのプロンプトを作成し、Gemini API に投げ込みます。
プロンプトの内容は以下の通りです。
## 指示(Instruction) 与えられたイベントログから [メンバー名] の日報を作成してください。 この日報は、チームメンバーが [メンバー名] の業務状況を正確かつ簡潔に把握できるようにすることを目的とします。 ## 役割(Role) あなたは「チームの情報共有を円滑にし、連携を促進するサポーター」です。 読み手が内容をすぐ理解でき、行動につなげられるように整理・要約してください。 ## 目的 (Goal) - チーム全員が [メンバー名] の業務内容・進捗・課題を把握できること - 必要な連携やフォローを即座に行える状態にすること - 業務の透明性を高め、チーム全体で成果を称賛し合える文化を育むこと ## ルール(Rules) - 全体を通して「親しみやすさ+ビジネス的な明確さ」を両立させること - 文体は「体言止め」「短文中心」で、冗長な表現を避けること - ノイズ(挨拶・雑談・無意味な作業ログなど)は含めないこと - 細かすぎる作業は省略し、業務の本質や意義が伝わる粒度でまとめること - 適度に絵文字を使用し、視覚的に読みやすくすること - 最後に「成果や頑張りを具体的に労う一文」を必ず入れること ### イベントログ(Event Log) [ここに時系列でソートした JSON データを挿入] ## 出力形式(Output Format) 以下のフォーマットに従って出力してください。 ``` [メンバー名] の日報(XX月XX日) *業務1* 1. 内容1 * 詳細1 * 詳細2 2. 内容2 * 詳細1 3. ... *業務2* 1. 内容1 * 詳細1 * 詳細2 2. 内容2 * 詳細1 3. ... <メンバーの士気が上がるよう、頑張りや成果などを具体的な内容とともに元気よく労う> ```
4. Slack への自動投稿
Gemini が生成した日報を、デイリースクラムの時間に合わせて Slack の専用チャンネルに自動投稿します。以下のスクリーンショットは実際に投稿された日報の例です。
作成したシステムはローカル端末上で動かしており、イベント情報の収集や Gemini API の呼び出し、Slack への投稿など、全て自動化しています。
実装は Ruby で行いましたが、同じような仕組みはどんな言語でも構築できるはずです。
想像以上の効果!情報共有が劇的に改善
この仕組みを導入して、チームの情報共有は劇的に改善しました。
シンプルに楽!「昨日何してたっけ?」からの解放
日報が自動で生成されることで、朝イチから「昨日何してたっけ…?」と頭を悩ませる時間が非常に少なくなりました。
ゼロから考えるのではなく、自動生成された内容をベースに口頭で補足するだけで済むので、デイリースクラムにおける情報共有が本当に楽になりました。
口頭の問題点を解決
日報がテキストで残ることで、情報共有の精度とアクセス性が大幅に向上しました。
- 伝え漏れや解釈のずれがなくなる
- デイリースクラムに参加できないメンバーも、日報を読めば何があったかすぐにわかる
- マネージャーはチーム全体の動きを把握しやすくなる
完璧を求めない柔軟な運用
AI が生成する日報は100%完璧ではありません。しかし、デイリースクラムの目的は情報共有を円滑にすることであり、内容が少し違っていても、その場で口頭で修正すれば十分です。
「完璧な情報」ではなく「とっかかりの情報」の提供ツールとして AI を使うことで、デイリースクラムにおいて非常に効果的に機能しました。
ちなみに、日報生成にかかる費用は、メンバー1人あたり1日わずか2.5円程度。コストを気にせず利用できるのも大きなメリットです。
(モデルは gemini-2.5-flash を使用しています。)
完璧じゃないからこそ面白いAIの活用法
今回の取り組みを通して、改めてAIの活用について考えさせられました。
テキスト文化との親和性
リモートワークが普及し、日々のやり取りが Slack などのテキストに置き換わった現代において、
AI がテキスト情報を自動で集約し、可視化するこの仕組みは非常に理にかなっていると感じます。
AIは人間をアシストする存在
人間が自らの意思で AI に何かを聞くのではなく、スケジュール実行やイベントをトリガーに AI が動き、人間の作業を先回りしてアシストする。
これこそが、AIを最大限に活かす方法の1つかもしれません。
また、現状の AI は完璧に指示通りのロジックで処理をすることは苦手です。完璧なタスク処理を AI に任せるのではなく、「完璧じゃなくてもいいから、良い感じに手伝ってほしい」という領域にこそ、積極的に生成 AI を組み込んでいくことが良いと思います。
システムに AI を組み込むときは、
- 「どの部分を、決定的なロジック(必ず同じ結果になるような決まったプログラム)で作るか?」
- 「どの部分を、非決定的な処理(柔軟で予測できないAI)で任せるか?」
この線引きを意識して設計することが大切です。
これは既存のプログラミングとは少し違う、新しい発想力や設計の仕方が求められる、非常に面白い領域だと感じています。
今回の仕組みは、デイリースクラムに限らず、あらゆるミーティングや朝会で役立つはずです。皆さんのチームでも、ぜひ試してみてください。
コメント