1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

毎週のCrashlytics週報をやめたくて、Claude Desktopの「Cowork」にPowerPoint生成までやらせた

1
Last updated at Posted at 2026-04-06

Gemini_Generated_Image_hz92e7hz92e7hz92.png

毎週のCrashlytics週報づくりが地味につらかったので、Claude Desktop にまとめてやらせるようにしました。Firebase Crashlytics MCP でデータを取り、ビジネス担当向けの内容に要約し、そのまま PowerPoint まで生成します。この記事では、Claude Desktop の local scheduled task を使って、週次レポート作成を自動化した手順をまとめます。

やっていることは、次の3つです。

  1. Claude Desktop から Firebase MCP を使えるようにする
  2. Crashlytics のデータを取得して要約する
  3. Claude に python-pptx のコードを書かせて実行し、.pptx を自動生成する

レポートは ビジネス担当とエンジニアが一緒に見る ことを想定しています。前半のスライドはビジネスインパクト中心、後半は同じ FATAL issue をエンジニア向けの技術詳細で見せる構成です。1つのファイルを共有するだけで、それぞれが必要な情報を得られます。

今回の構成では、Python スクリプトや JSON スキーマを事前に用意しません。Claude Code がその場で python-pptx のコードを書いて実行するので、事前準備は pip install だけで済みます。毎回レイアウトが微妙に変わる可能性はありますが、週次レポートとしては十分実用的です。

参考リンク

先に結論

この構成は実現できます。ただし、前提条件があります。

Claude Desktop の local scheduled task は、アプリが起動していて、PCが起きている間だけ実行 されます。予定時刻ぴったりではなく、最大10分の固定遅延 が入り、アプリ終了中やスリープ中はその回は走りません。再起動や復帰時には、過去7日以内の取り逃しのうち直近1回だけ catch-up 実行 されます。なので、厳密な時刻実行が必要なジョブより、週次レポート のような用途に向いています。

また、Crashlytics の MCP 機能は 試験運用版 です。今後の仕様変更や下位互換性のない変更がありえます。運用に入れる前に、まずは手動実行で一度通すのが安全です。

想定する構成

今回の構成はこうです。

Claude Desktop local scheduled task
→ Firebase MCP server で Crashlytics データ取得
→ Claude が python-pptx のコードを書いて実行
→ crashlytics_weekly_report.pptx を保存

Firebase MCP server は Claude Desktop と Claude Code の両方で使えます。Claude Desktop では claude_desktop_config.json に MCP サーバーを設定します。

前提条件

以下を満たしている前提で進めます。

  • iOSアプリで Firebase Crashlytics をすでに使っている
  • macOS 上で Claude Desktop が動く
  • Node.js と npm が入っている
  • Python 3 が入っている
  • 週次レポートの出力先フォルダをローカルに作成できる

Firebase の公式ドキュメントでも、Crashlytics MCP を使う前提として、Firebase MCP server のセットアップNode.js / npmMCP対応ツール を挙げています。Claude Desktop も公式の設定先として案内されています。

Step 1. Claude Desktop で Firebase MCP を使えるようにする

Claude Desktop で Firebase MCP server を使うには、claude_desktop_config.jsonmcpServers を設定します。Firebase の公式ドキュメントに、Claude Desktop 用の設定例が載っています。

設定例はこれです。

{
  "mcpServers": {
    "firebase": {
      "command": "npx",
      "args": ["-y", "firebase-tools@latest", "mcp"]
    }
  }
}

設定後に Claude Desktop を開き直して、Code タブから Firebase MCP が見えるか確認します。Claude Desktop の Code タブは、ターミナルではなく GUI で Claude Code を使うための画面です。

最初の確認は、Code でこう聞けば十分です。

Firebase MCP がこのセッションで使えるか確認してください。
使えるなら、利用可能な tool を列挙してください。
Crashlytics に関係する tool があれば、それだけ抜き出して表示してください。

ここで大事なのは、Firebase MCP に接続できていることCrashlytics 関連ツールが本当に見えていること を分けて確認することです。Firebase MCP server 自体は多機能なので、Firebase に接続できていても Crashlytics 用のツールが見えていないケースはありえます。

Step 2. 作業フォルダと python-pptx を用意する

今回は、次のフォルダ構成を使います。

# 作業フォルダと出力先を作る
mkdir -p ~/Documents/crashlytics-weekly-report/output/latest
mkdir -p ~/Documents/crashlytics-weekly-report/output/archive

作業フォルダは ~/Documents/crashlytics-weekly-report にします。出力先は2つあります。

  • output/latest/ — 常に最新のファイルが入る(毎回上書き)
  • output/archive/ — 日付入りファイル名で過去の週報を蓄積する

次に、python-pptx をインストールします。

# 作業フォルダに移動する
cd ~/Documents/crashlytics-weekly-report

# このフォルダ専用の Python 仮想環境を作る(.venv というフォルダができる)
python3 -m venv .venv

# 仮想環境を有効にする(以降の pip install はこの環境内だけに入る)
source .venv/bin/activate

# python-pptx をインストールする
pip install python-pptx

python3 -m venv .venv は、このフォルダの中だけで使える Python 環境を作るコマンドです。こうしておくと、ほかのプロジェクトに入れたライブラリとぶつかりません。source .venv/bin/activate で仮想環境に入ると、ターミナルの先頭に (.venv) と表示されます。この状態で pip install すれば、.venv の中だけにインストールされます。

local scheduled task はローカルマシン上で新しいセッションを作って実行されるので、working folder を明示しておく と事故が減ります。タスク実行時には、Claude がそのフォルダ内でファイル編集やコマンド実行を行えます。

今回の構成では、Python スクリプトを事前に用意する必要はありません。Claude Code がデータ取得後にその場でコードを書いて実行します。

Step 3. Claude Desktop の Code で手動テストする

いきなり scheduled task を作る前に、まずは Code で 1 回手動実行します。Crashlytics MCP は試験運用版なので、ここを飛ばさない方が安全です。

今回のスライド構成は 6 枚〜です。前半 5 枚がビジネス担当向け、後半がエンジニア向けです。同じ FATAL issue を、スライド 4 ではユーザー視点で、スライド 6〜 では技術視点で見せます。件数は Claude がデータの状況に応じて判断します(目安は5〜10件)。

スライド 対象 内容
1 共通 表紙(アプリ名・対象期間・生成日時)
2 ビジネス エグゼクティブサマリー(クラッシュフリー率・影響ユーザー数・前週比)
3 ビジネス 安定性トレンド(クラッシュフリー率の折れ線グラフ)
4 ビジネス FATAL ユーザー影響(影響ユーザー数の多い FATAL issue を平易な言葉で)
5 ビジネス バージョン別・OS別の安定性比較
6〜 エンジニア FATAL 技術詳細(スライド4と同じ issue について、スタックトレース要約・該当クラス・再現条件・調査メモ。1枚あたり2〜3件で複数枚に分ける)

テストには、次の Step 4 で scheduled task に設定するのと 同じ prompt を使います。Code の working folder を ~/Documents/crashlytics-weekly-report に設定してから、Step 4 の prompt を貼り付けて実行してください。

ここで .pptx ファイルが生成されれば、MCP 連携と PPTX 生成の2点が通ったことになります。

Step 4. local scheduled task を作る

Claude Desktop には local scheduled tasks があり、Schedule 画面から定期タスクを作れます。local task はローカルマシン上で動き、due になると新しいセッションが作られます。

おすすめの設定はこれです。

  • 名前: iOS 週次 Crashlytics PPTレポート
  • 頻度: 毎週月曜 10:00
  • working folder: ~/Documents/crashlytics-weekly-report

Step 3 の手動テストと同じ、以下の prompt を設定します。

Firebase MCP を使って、Crashlytics の週次レポートを PowerPoint で作成してください。
対象期間は実行時点から過去7日間です。
タイムゾーンは Asia/Tokyo を使ってください。

このレポートはビジネス担当とエンジニアが一緒に見る資料です。
前半はビジネスインパクト中心、後半はエンジニア向けの技術詳細です。
ビジネスインパクトが伝わるビジュアル重視の資料にしつつ、
エンジニアがそのまま調査に入れる情報も含めてください。

前提:
- 対象は iOS アプリ(Swift)
- 最小サポート iOS は 16.7
- python-pptx は .venv にインストール済み(.venv/bin/python3 で実行する)
- PowerPoint 出力先は ~/Documents/crashlytics-weekly-report/output/latest/crashlytics_weekly_report.pptx

スライド構成(6枚〜):
1. 表紙(アプリ名・対象期間・生成日時)
2. エグゼクティブサマリー(クラッシュフリー率・影響ユーザー数・前週比をKPIカードで表示)
3. 安定性トレンド(クラッシュフリー率の推移を折れ線グラフで描画)
4. FATAL ユーザー影響(影響ユーザー数の多い FATAL issue を表形式で)
5. バージョン別・OS別の安定性比較(横棒グラフを左右に並べる)
6〜. FATAL 技術詳細(スライド4と同じ issue について技術情報を表形式で)

スライド4のルール:
- FATAL クラッシュのみ対象とする
- 件数はデータの状況に応じて判断する(目安は5〜10件)
- issue の説明にスタックトレースやクラス名を含めない
- 「○○画面で△△すると落ちる」のようなユーザー視点の表現にする
- 列: #、概要、影響ユーザー数、傾向、ステータス

スライド6〜のルール:
- スライド4と同じ FATAL issue を技術視点で記載する
- 1枚あたり2〜3件にとどめ、文字が詰まらないよう余裕を持たせる
- issue 数に応じてスライド枚数を増やす
- 列: #、該当クラス/メソッド、スタックトレース要約、再現条件、調査メモ
- スタックトレース要約はクラッシュの原因箇所がわかる程度に簡潔にする
- 再現条件は Crashlytics のメタデータから推測できる範囲で記載する
- 調査メモは「次にどこを見るべきか」のヒントを書く

やること:
1. Firebase MCP を使って、Crashlytics の対象期間データを取得する
2. 取得したデータをもとに、上記スライドを生成する python-pptx コードを書く
3. .venv/bin/python3 でそのコードを実行し、PowerPoint を生成する
4. 生成された PowerPoint を ~/Documents/crashlytics-weekly-report/output/archive/ に日付入りファイル名でコピーする
   - 形式: crashlytics_weekly_report_YYYYMMDD.pptx
   - YYYYMMDD は対象期間の終了日を使う
5. 最後に生成結果を簡潔に報告する

表現ルール:
- 出力は日本語
- スライド4では issue の説明にスタックトレースやクラス名を含めない
- スライド4では「○○画面で△△すると落ちる」のようなユーザー視点の表現にする
- クラッシュフリー率・影響ユーザー数・前週比を必ず含める
- risk_level は「低」「中」「高」のいずれかで表す

ビジュアルルール:
- スライドは 16:9 で作成する
- 表紙は背景色付きのフル背景デザインにする
- エグゼクティブサマリーは KPI カードを横に並べる
- テーブルはヘッダー行を色付き、偶数行をストライプ表示にする
- グラフには系列の色を明示的に指定する
- スライド6〜はスライド4と視覚的に区別できるよう、ヘッダー色を変える
- データが取得できない項目は「データなし」と表示する

データルール:
- データが空でもスライドは作成する
- 保存先フォルダが無ければ作成する
- ~/Documents/crashlytics-weekly-report/output/archive/ に同名ファイルが既にある場合は上書きする
- 処理失敗時は ~/Documents/crashlytics-weekly-report/output/latest/error.txt に理由を書いて保存する
- PowerPoint 生成に失敗した場合も error.txt に理由を書いて保存する

local scheduled task は due になるたびに新しいセッションを開始し、アプリが開いている間だけ動きます。なので、最初は Run now で 1 回テストして、MCP・ファイル書き込み・Python 実行の許可まわりを確認しておくのが安全です。

Step 5. 運用上の注意点

この構成で一番大事なのは、Claude Desktop を終了すると local scheduled task は走らない ことです。PC がスリープした場合もその回はスキップされます。再起動や復帰時には、直近 1 回分だけ catch-up 実行される可能性があります。たとえば月曜 09:00 のタスクでも、PC を一日閉じていたら夜に動くことがあります。

そのため、prompt 側にガードを入れるのもありです。たとえば、月曜の午後になってから catch-up 実行された場合は、Slack 送信をスキップする、といった条件です。

もう1つの注意点は、Crashlytics MCP が試験運用版なので、使える tool や prompt が将来変わる可能性がある ことです。特定のツール名に強く依存しすぎず、まずは「利用可能な tool 一覧を出して」と確認できる状態にしておく方が運用しやすいです。

3つ目は、Claude に毎回コードを書かせる方式なので、スライドのレイアウトが毎週少しずつ変わる可能性がある ことです。ビジュアルルールを prompt で細かく指定していますが、完全に固定したい場合は Python スクリプトを事前に用意する方式に切り替えてください。週次レポートとして「だいたい同じ見た目」で十分なら、この方式で問題ありません。

Step 6. レイアウトを固定したくなったら

運用していて「毎回同じレイアウトにしたい」と感じたら、Claude が生成した Python コードをそのままスクリプトとして保存すればいいです。

手順はこうです。

  1. Step 3 の手動テストで、納得のいく .pptx が出るまで何回か試す
  2. そのとき Claude が書いた Python コードを ./scripts/build_crashlytics_report_ppt.py として保存する
  3. scheduled task の prompt を「このスクリプトを実行してください」に書き換える

最初はスクリプトなしで始めて、固定したくなったタイミングで移行するのが楽です。

まとめ

Claude Desktop の local scheduled task と Firebase Crashlytics MCP を組み合わせると、Crashlytics の週次確認を半自動化 できます。Claude に python-pptx のコードごと書かせることで、事前にスクリプトを用意しなくても週報を自動で作れます。

スライド 4 と 6〜 で同じ FATAL issue をユーザー視点と技術視点の両面で見せることで、ビジネス担当は影響範囲を、エンジニアは調査の起点を、1つのファイルから得られます

ポイントは次の3つです。

  • Claude には データ取得・要約・PPTX 生成 をまとめてやらせる
  • 事前準備は pip install python-pptx だけ
  • レイアウトを固定したくなったら、Claude が書いたコードをスクリプトとして保存する

「毎週 Crashlytics を見て、口頭で共有して終わり」から一歩進めたいなら、この構成はかなり実用的です。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?