ClaudeCode: 「昨日なにしてたっけ」を振り返る仕組みから仕事の基盤へ

会議に出て、Slackで相談を受けて、メールを返して、PRをレビューして、稟議を書いて……。夕方になると午前中のことがもう遠い。1日にやったことを翌日にはほとんど覚えていない。

「あれ、今週なにしてたんだっけ」となるのが嫌で、Claude Code を使って毎朝の振り返りレポートを自動で作る仕組みをつくった。最初は「日報の自動化」くらいのつもりだったが、気づいたら案件管理やTODO抽出まで含む仕事の基盤になっていた。

いま自分がどう運用しているかを記録しておく。

やっていることの全体像

毎朝、自分が寝ている間に以下が自動で動く。

  1. 前日の活動データを10箇所から集める
  2. それらを突き合わせて、1日の振り返りレポートを生成する
  3. 朝6:30にSlack DMでダイジェストが届く

起きたらSlackを見て「ああ、昨日こういう1日だったな」と確認する。それだけ。

技術的にはClaude Codeのスキル機能を使っていて、macOSのlaunchdで毎朝3:10に実行している。

集めているデータ

振り返りの材料として、以下の10箇所からデータを取っている。

データソースなにがわかるか
Google Calendarどの会議に出たか、議事録の内容
Gmail誰からどんなメールが来たか、どんなメールを返したか
Google Driveどのファイルを編集したか
Slackどのチャンネルでなにを話したか
Notionどのページを更新したか
GitHub EnterpriseどのPRをレビューしたか、Issueにコメントしたか
Claude CodeClaude Codeでなにを作業したか
Google Chatグループチャットでのやり取り
GeminiAIとのブレスト内容(手動でエクスポート)
ボイスレコーダー会議の文字起こし

最初は上の4つだけだった。使っていくうちに「この情報も入れたほうが正確になるな」と思って少しずつ増えた。

取得にはMCP(Model Context Protocol)という仕組みを使っている。SlackやGoogleカレンダーに直接つながるので、ブラウザを開かなくてもデータが取れる。GHEのデータだけはCLIコマンドで取得している。

振り返りレポートのつくり方

データを集めた後、Claude Codeに「この10個のソースを読んで、1日の振り返りを書いて」と指示している。ただの箇条書きではなく、いくつか工夫がある。

タイムラインをつくる

まず時系列で「何時に何をしていたか」をまとめる。カレンダーだけだと会議しか出ないが、SlackやGHEを組み合わせると「10時の会議の直後にSlackでフォローアップして、午後にPRをレビューした」という流れが見える。

複数ソースを突き合わせる

これが一番助かっている部分。たとえば、カレンダーに「KPI整備会議」と書いてあって、Slackで「BQクエリ修正しました」という発言があって、GHEでKPI関連のIssueにコメントしている。これらがバラバラだと意味がわからないが、突き合わせると「会議でKPIの数値がおかしいと指摘して、その場でBQを修正して、Issueに記録した」という一連の流れが見える。

物語として書く

8〜12個のトピックに分けて、それぞれ文章で書く。箇条書きだと後で読み返したときに文脈がわからなくなるので、「なにが起きて、どう判断して、どうなったか」を文章にしている。

案件管理がついてきた

振り返りを毎日つくっていると、自然と「この案件、今週は進んだのか?」が気になってくる。

いざまとめてみると、大小さまざまだが60〜70件くらいの話題(案件)が並行して動いていた。プロダクト開発、パートナー企業との提携、社内ツールの整備、組織の話……。これを全部頭で覚えておくのは無理だった。

そこで、日次の振り返りから案件の進捗を自動で拾うようにした。

仕組みはシンプルで、案件一覧のデータ(Pythonファイルで管理している)と振り返りレポートを照合して、「この案件について今日こういう動きがあった」を検出する。新しい案件が出てきたら「新規候補」として提案もしてくれる。

今日この記事を書いている時点で、累計178件の案件を記録している。うち66件がアクティブ、112件が完了済み。週に1回くらいの頻度で振り返りデータをもとに一覧を更新している。

TODO管理もつながった

もうひとつ、振り返りから自然に生まれた機能がTODOの自動抽出。

SlackのDMや振り返りレポートの中には「来週までに確認する」「〇〇さんに連絡する」といったタスクが埋もれている。これを拾い出して「TODO.mdに未登録のタスクがありそうです」と提案してくれる。

ただし自動でTODOに追加はしない。あくまで「候補」として出して、自分が「これは入れる、これはいらない」と判断する。完全に任せるのではなく、判断は自分で持つようにしている。

人名の辞書をつくった理由

地味だけど大事な工夫として、社内の人物辞書をつくっている。

AIに振り返りを書かせると、Slackの表示名と本名を間違えたり、同じ苗字の別人を混同したりすることがある。うちの会社だと社長とCTOが同じ「健太郎」さんなので、これを取り違えると大変なことになるのだった。

辞書をつくって「この表示名はこの人」と明示し、辞書にない名前は推測で補完しないというルールにした。一度AIが存在しない人名を生成したことがあり、それ以降は徹底している。

運用して変わったこと

「思い出す」コストがなくなった

週次の報告や月次の振り返りを書くとき、以前は1時間くらいカレンダーとSlackを遡っていた。今は日次のレポートを読み返すだけで書ける。

案件の抜け漏れが減った

大量の案件があると、1週間触っていないものは完全に忘れる。案件一覧に「最終言及日」が入っているので、しばらく動いていない案件がすぐわかる。

自分の時間の使い方が見える

タイムラインを見ると「今日は会議が多すぎて手を動かす時間がなかった」とか「この案件に思ったより時間を使っている」といったことがわかる。自覚がなかった偏りに気づける。

やってみてわかったこと

最初から完成形を目指さないほうがいい

最初はカレンダーとSlackだけで始めた。データソースは必要に応じて足していった。最初から10個全部を取ろうとしていたら、セットアップが面倒で挫折していたと思う。

自動化と判断は分けたほうがいい

データの収集とレポートの生成は自動でいい。でもTODOの追加や案件ステータスの変更は、自分が見て判断したい。全部自動にすると、逆に信頼できなくなる。

辞書やルールは運用しながら育てる

人物辞書も、文字起こしの修正辞書も、最初から全部つくったわけではない。「この名前がおかしい」と気づいたら辞書に足す、その繰り返しで精度が上がっていった。

スキル一覧(コマンドでできること)

Claude Codeには「スキル」という仕組みがあり、/コマンド名 で定型的な処理を呼び出せる。このプロジェクトでは以下のスキルを使っている。

/ops(日次振り返り生成)

メインのスキル。日付を指定して実行すると、その日の振り返りレポートを生成する。

/furikaeri           → 昨日の振り返りを生成
/furikaeri 2026-03-10 → 指定日の振り返りを生成

処理の流れ:

  1. 設定ファイル(config.yaml)を読む
  2. 10個のデータソースのうち、未取得のものを取得
  3. 全ソースを読み込み、クロスリファレンス分析
  4. タイムライン+8〜12トピックのレポートを生成
  5. Slack DMでダイジェストを予約送信
  6. 案件一覧と照合し、進捗・新規候補を自動検出
  7. 案件コンテキストファイルに活動ログを追記

毎朝のlaunchd自動実行でもこのスキルを呼んでいる。

/find-todo(TODO候補の抽出)

Slack DMと過去の振り返りレポートから、TODO.mdに未登録のタスクを探し出す。

/find-todo     → 直近3営業日分を探索
/find-todo 2w  → 2週間分を探索

「来週までに確認する」「〇〇さんに連絡する」といった、流れてしまいがちなタスクを拾い上げてくれる。見つかった候補は緊急度で分類して提示される。

  • 最優先(今日〜明日中に確認)
  • 今週中に確認
  • 来週以降だが忘れると危険
  • 終わっているかもしれないが確認が取れていないもの

自動でTODOに追加はしない。候補を見て、自分で「入れる・入れない」を判断する。

/review-todo(TODOレビュー)

TODO.mdの棚卸しをするスキル。

チェック観点:

  • 期限超過・期限が近いタスク(3日以内)
  • 追加から3日以上進捗がないタスク
  • 重複・関連しているタスク
  • 今日やるべき上位3件の提案

週の頭や金曜日に実行して、タスクの滞留を防いでいる。

ディレクトリ構成

ops/
├── config.yaml                 # 個人設定
├── config.example.yaml         # 設定テンプレート(他の人向け)
├── run_ops.sh                  # launchd自動実行スクリプト
├── com.pepabo.ops.plist        # macOS定期実行設定
├── CLAUDE.md                   # プロジェクトのルール定義
├── TODO.md / done.md           # タスク管理
├── people.md                   # 社内人物辞書
├── gemini_dictionary.yaml      # Gemini議事録の文字起こし修正辞書
│
├── .claude/commands/           # スキル定義
│   ├── ops.md                  #   /ops(日次振り返り)
│   ├── find-todo.md            #   /find-todo(TODO候補抽出)
│   ├── review-todo.md          #   /review-todo(TODOレビュー)
│   └── setup.md                #   /setup(初期セットアップ)
│
├── source-calendar/            # データソース(入力)
├── source-gmail/
├── source-drive/
├── source-slack/
├── source-notion/
├── source-ghe/
├── source-claude/daily/
├── source-google-chat/
├── source-anker-soundwork/
├── source-manual-gemini/
│
├── output-daily/               # 日次レポート(出力)
├── output-weekly/              # 週次レポート
├── output-monthly/             # 月次分析レポート
│
├── output-analysis/            # 案件管理
│   ├── anken_active.py         #   アクティブ案件データ
│   ├── anken_completed.py      #   完了済み案件データ
│   └── update_sheets.py        #   Google Sheetsへの自動反映
│
├── anken/                      # 案件コンテキストファイル
├── tools-scripts/              # データ取得スクリプト
├── tools-gemini-exporter/      # Gemini会話エクスポートChrome拡張
├── docs/                       # 運用ドキュメント
└── logs/                       # 自動実行ログ

データの流れとしては、source-*/ に生データが入り、output-daily/ に振り返りレポートが出て、output-analysis/ に案件データが蓄積される。入力と出力が明確に分かれているので、「このレポートはどのデータから作られたか」が追える。

技術的な構成(興味がある人向け)

  • データ取得: MCP(Slack, Google Workspace, Notion)+ CLI(GHE)+ Pythonスクリプト
  • 自動実行: macOS launchd(毎朝3:10)
  • データ管理: ローカルのMarkdownファイル + Pythonスクリプト
  • 案件データ: Pythonファイルで定義 → Google Sheets APIで共有用スプレッドシートに反映
  • 通知: Slack MCPで自分宛DMに予約送信

コードやスキル定義はGitで管理している。設定ファイル(config.yaml)を分離しているので、仕組み自体は他の人でも使える形にはなっている。

おわりに

「振り返りの自動化」という小さな課題から始めて、案件管理やTODO抽出まで育ってきた。大層なシステムをつくろうとしたわけではなく、日々の「困った」を一つずつ潰していったらこうなった。

まだ完成形ではなく、先週も「アウトプットをどこに書き出したか忘れる」という課題が出てきたので、書き出し先の記録を自動でつける仕組みを足したところ。たぶんこれからも少しずつ変わっていく。

日々の業務が多岐にわたる人にとって「昨日なにしてたっけ」は共通の悩みだと思う。全く同じ仕組みでなくても、自分の活動データを集めて振り返る習慣は、やってみる価値があると思う。