CLAUDE LABEN
FORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられていますFORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられています
記事一覧/Claude.ai
Claude.ai/2026-03-21上級

Claude の artifact でダッシュボードを作る — CSV を貼る前に集計する理由と、実運用で落ち着いた構成

Claude の artifact は React コンポーネントとして描かれます。その前提を踏まえて、生CSVを貼るのをやめ、前処理・データ契約・更新経路を分けた構成に落ち着くまでの実装メモです。

Claude45artifactビジュアライゼーションダッシュボードデータ前処理2個人開発110

プレミアム記事

月末になると、AdMob と App Store Connect と Firebase の管理画面を順番に開いて、CSV を書き出しております。個人開発で壁紙アプリを複数抱えていると、次の更新をどれに投じるかは勘ではなく数字で決めたくなります。

以前は、書き出した CSV をそのまま Claude に貼り付けていました。数秒でそれらしい折れ線が描かれます。手応えのある体験でした。

つまずいたのは、描かれた週次の山が、手元の表計算で確認した山と一日ずれていたときです。

原因を追いかけた結果は、拍子抜けするほど単純でした。貼ったデータが、最後まで読まれていなかったのです。

artifact は React コンポーネントとして描かれます。渡したデータは、どこかの時点でコード内の配列リテラルに書き写されます。4,300 行の CSV を貼るということは、4,300 個のオブジェクトを一つずつ書き写してもらう依頼に等しい。実際には、そこまで書き写されません。

以下は、この前提を受け入れた上で、個人開発の数値を意思決定に使える形にするまでの構成です。実際に手元で回しているコードを添えて整理します。

貼ったCSVは、そのままの姿では届いていない

まず起きていたことを、数字で確かめました。

AdMob から書き出した 90 日分の日次レポートは、4,312 行・178 KB でした。これを貼って生成された artifact のソースを開き、データ配列の要素数を数えたところ、117 件でした。

明示的な断りはありませんでした。「代表的な値を抜粋しました」といった注記もなく、素直に折れ線が描かれていました。週次の山が一日ずれていたのは、間引かれた結果として、たまたま隣の日がピークに見えていたからです。

これは不具合ではなく、当然の帰結だと考えています。出力トークンには上限があり、4,312 行を書き写せば、それだけで応答の大半を使い果たします。書ける範囲に収める判断は、むしろ妥当です。

問題は、こちらがその判断を依頼していないことでした。

検証のしかた

同じことを疑ったときは、artifact のコードを開いて数えるのが最短です。

  1. artifact のコードビューを開きます
  2. データ配列の宣言(const data = [...] に相当する箇所)を探します
  3. 要素数を数え、元データの行数と突き合わせます
  4. 差があれば、そのチャートは意思決定には使いません

3 行の差なら丸め、4,000 行の差なら別物です。この確認を挟むようになってから、グラフを疑う時間がなくなりました。

集計は手元で終わらせる — 178 KB を 3.1 KB にする前処理

結論として私が採ったのは、集計を Claude に渡さない、という方針でした。

日次 4,312 行のうち、意思決定に効くのは「アプリ別・週次の推移」だけです。であれば、その形まで手元で畳んでから渡せばよい。以下は実際に使っているスクリプトです。AdMob の日次エクスポートを読み、週次に畳んで JSON を吐きます。

# aggregate_admob.py — AdMob 日次CSVを週次サマリJSONへ畳む
# 使い方: python3 aggregate_admob.py admob_daily.csv > weekly.json
import sys
import json
import pandas as pd
 
REVENUE = "Estimated earnings (USD)"
IMPRESSIONS = "Impressions"
 
def main(path: str) -> None:
    df = pd.read_csv(path)
    df["Date"] = pd.to_datetime(df["Date"])
 
    # 週の区切りを月曜始まりに固定する。ここを揃えないと
    # 表計算側の集計と一日ずれる(実際にずれました)
    df["week"] = df["Date"].dt.to_period("W-SUN").dt.start_time
 
    grouped = (
        df.groupby(["App", "week"])
        .agg(revenue=(REVENUE, "sum"), impressions=(IMPRESSIONS, "sum"))
        .reset_index()
    )
 
    # eCPM は「合計収益 ÷ 合計表示回数 × 1000」で出します。
    # 日次eCPMの平均を取ると表示回数の少ない日に引きずられて過大になります
    grouped["ecpm"] = (grouped["revenue"] / grouped["impressions"] * 1000).round(2)
    grouped["revenue"] = grouped["revenue"].round(2)
    grouped["week"] = grouped["week"].dt.strftime("%Y-%m-%d")
 
    records = grouped.to_dict(orient="records")
    print(json.dumps(records, ensure_ascii=False, separators=(",", ":")))
 
if __name__ == "__main__":
    main(sys.argv[1])

手元での実測は次のとおりです。

項目生CSVをそのまま貼る週次に畳んでから貼る
データ量178 KB / 4,312 行3.1 KB / 26 行
入力トークン(概算)約 47,000約 900
artifact に載った要素数117 件(間引かれた)26 件(全件)
数値の一致週次の山が1日ずれる表計算と一致
作り直しの所要都度、長い貼り付けからJSON を差し替えるだけ

トークンにして約 98% の削減ですが、効いたのは費用ではありません。全件が載るようになったこと、そして作り直しが軽くなったことです。

W-SUN の指定は、つまずいた箇所そのものです。pandas の週次は既定で日曜終わりに寄り、管理画面側の週の区切りと一日ずれます。ここを固定するだけで、最初に気づいた「一日のずれ」は消えました。

集計そのものを Claude 側で完結させたい場合は、Claude API の Code Execution ツールに月次の売上CSV集計を任せる の構成が近いです。手元に Python を持ちたくないときは、そちらが素直です。

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

この記事の続きを読む

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

この記事で得られること
生CSV 178 KB を 3.1 KB に落とす前処理スクリプト(pandas・そのまま動く形)と、トークン約 98% 削減の実測値
artifact が外部 fetch も localStorage も使えない前提で、日次更新ダッシュボードを成立させた cron + 静的JSON の構成
データ契約を先に宣言して、再生成のたびに軸とキーが揺れる問題を止めた4手順
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

Claude.ai2026-07-12
Claude の Reflect 月次ふりかえりを個人開発のリズム調整に使う
Claude の Settings に加わった Reflect の月次ふりかえりを、反省材料ではなく次の一ヶ月の設計材料として読み解く方法を、個人開発の実際のリズム調整に沿って紹介します。
Claude.ai2026-07-04
Claude in Chrome が一般提供になって、画面を見張る時間が減りました — 背景通知と引き継ぎの使いどころ
Claude in Chrome の一般提供で、背景通知・ドラフト引き継ぎ・フェイルオーバーが加わりました。個人開発で毎日ブラウザ作業を任せている立場から、どこを通知にしてどこを任せきるか、実際に見直した設定とともに整理します。
Claude.ai2026-05-18
AdMob メディエーション 3 社追加を Claude と進めた実録 — 4 アプリ同時対応で分かった W-8BEN と eCPM の落とし穴
Unity Ads・Liftoff・InMobi の3社を iOS 4 アプリへ同時に追加したときの実記録。W-8BEN 提出フロー・ATT プロンプト順序・AppLovin MAX ウォーターフォール設定まで、Claude に伴走してもらいながら分かった落とし穴を共有します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →