◉CLAUDE LABEN
●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました
記事一覧/Claude Code
⟐ Claude Code/2026-05-23上級

Claude Code で App Store Connect と AdMob の売上を毎朝集計するパイプライン — 壁紙アプリ 4 本で 8 週運用した実装ノート

App Store Connect API と AdMob Reporting API のレスポンス揺れを Claude Code で吸収しながら、4 本の iOS 壁紙アプリの売上・AdMob 収益・サブスク継続率を毎朝 7:00 JST に統合集計する運用を 8 週間続けた、設計と実装と落とし穴の記録です。

Claude Code265App Store Connect APIAdMob13個人開発130収益分析iOS26

✦ プレミアム記事

朝の 7:00 に Slack を開くと、4 本の壁紙アプリの前日の売上・AdMob 収益・サブスク継続率が 1 枚のサマリで届いている — そんな状態にようやくたどり着くまでに、約 8 週間を費やしました。

2014 年から個人で iOS アプリを開発し、累計 5,000 万ダウンロードを超えた今でも、毎朝のように App Store Connect と AdMob と Firebase の管理画面を順番に開いて、数字を Google スプレッドシートに転記する作業を続けていました。地味で間違えやすい仕事です。土日も忘れずに開かないと月曜の朝に 3 日分の作業が積み上がります。

このルーチンを完全に手放すために、Claude Code に「毎朝 7:00 JST に App Store Connect API と AdMob Reporting API を叩いて、4 アプリ分を JST 基準で結合してダッシュボードに書き戻す Python パイプライン」を組んでもらうことにしました。書き上げるだけなら 1 日でいけますが、本番運用で安定するまでに 8 週間かかりました。途中で詰まった具体的な落とし穴と、Claude Code がどこで効いたかを残しておきます。同じように複数アプリを個人で運営している方に届けば嬉しいです。

なぜ「公式ダッシュボードを見ればいい」では駄目だったのか

App Store Connect も AdMob も Firebase も、立派なダッシュボードを提供しています。それでも自前パイプラインを組んだ理由は 3 つあります。

1 つ目は タイムゾーンの不一致 です。App Store Connect のレポートは US Pacific 基準 (UTC-8) で日次集計され、AdMob はアカウント設定によりますが私の場合は Pacific Time (UTC-8) のまま運用されており、Firebase Analytics はプロジェクト設定で JST にしているものとそうでないものが混在していました。「2026 年 5 月 22 日の売上」を比較しようとすると、3 つのダッシュボードでカバーする時間帯が微妙にずれます。個人で 4 本のアプリを並行運用していると、このズレを頭の中で補正し続けるのは現実的ではありませんでした。

2 つ目は 過去 90 日しか自由に遡れない ことです。AdMob のレポートは GUI 上で過去 2 年分まで取れますが、毎週同じ集計を取り直すなら自前で蓄積したほうが圧倒的に早いです。8 週間運用したいま、180 日分の日次データが手元の SQLite に溜まっており、新しい施策を打ったときに「過去 6 ヶ月の同曜日比」をその場で出せるようになりました。

3 つ目は 複数アプリを横断した「気づき」の遅延 です。4 本のアプリの売上・eCPM・継続率を別々に眺めていると、「壁紙アプリ A だけ AdMob 単価が金曜から急落している」のような小さなシグナルを見落とします。1 枚に統合したダッシュボードがあれば、土日のうちに Slack 通知で気づけます。実際にこの 8 週間で、AdMob のリワード広告ユニットの 1 つで eCPM が水曜から木曜にかけて 38% 下がっていたことを朝の Slack 通知で発見し、別のメディエーション設定に切り替えて回復させた経験があります。

全体構成 — 何を取って、どこに置くか

最初に Claude Code と決めたのは、保存先と粒度です。個人開発の規模感を考えると、Cloud SQL や BigQuery を即採用するのは過剰だと判断しました。

[毎朝 06:30 JST]                              [毎朝 07:00 JST]
  asc_fetcher.py  ──┐                          ┌──> dashboard_sync.py
  admob_fetcher.py ─┤  ──> raw_*.csv (S3) ──>  │     (Google Sheets書き込み)
  fbase_fetcher.py ─┘                          ├──> slack_digest.py
                                               │     (前日比 + 異常検知)
                          merger.py             └──> revenue.db (SQLite)
                            │
                            └──>  daily_summary テーブル

S3 を中間置き場にしているのは、API 呼び出しと集計を完全に分離するためです。API 側のレート制限や認証エラーで失敗しても、生 CSV さえ残っていれば集計層は何度でも再実行できます。Claude Code に「失敗ポイントを後で原因切り分けしやすいように、API 取得・整形・配信を 3 段階に分けたい」と最初に伝えたのが、後から効いてきました。

集計は SQLite で十分でした。8 週分でも 200 KB 程度です。手元のターミナルから sqlite3 で気軽に叩けるのが、データの粒度を見直したいときに便利です。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦App Store Connect API の JWT 認証と Sales/Trends Report 取得を Claude Code で安定化させる Python スクリプトと、レート制限・タイムゾーン・空レポート日の落とし穴の具体的な吸収方法
✦AdMob Reporting API v1beta の eCPM・インプレッション・推定収益を国別/フォーマット別に取得し、ASC 売上と JST 7:00 で結合する SQL とジョブ設計
✦8 週間運用して見えた『売上が前日比で 25% 以上動いたら Slack 通知』『新規施策の eCPM 改善 14.3%』など実数値ベースの判断ルール 6 つ
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

⟐ Claude Code2026-10-12
SPM に移したら、起動した瞬間にアプリが落ちるようになりました — dyld の一行を Claude Code と読み解いた記録
CocoaPods から Swift Package Manager へ移した直後、ビルドは通るのに起動した瞬間に落ちました。dyld の一行から原因を切り分け、直し方と確認コマンドまでをまとめます。
⟐ Claude Code2026-09-04
Claude Code に project.pbxproj だけは直接触らせていません
Xcode のプロジェクトファイルは、開けなくなる壊れ方より開けてしまう壊れ方のほうが高くつきました。直接編集をやめてスクリプト経由に寄せるまでに測ったことと、いま引いている線を書き残します。
⟐ Claude Code2026-04-21
Claude Code で『モバイルアプリ収益ダッシュボード』を作る — AdMob・App Store Connect・Google Play Console の API 統合から日次レポート自動配信まで
AdMob・App Store Connect・Google Play Console の売上を1つのダッシュボードに統合し、日次レポートの自動配信までを Claude Code と実装した記録です。掲載パーサーを実測して見つけた集計欠陥3件と修正版も収録しています。