CLAUDE LABEN
MEMORY — Claude Codeの長時間セッションのメモリリークが一掃されました。MCP stdioサーバのstderrが最大64MB蓄積する問題やLSPドキュメントの開きっぱなしが修正されていますTABLES — 非常に大きなmarkdownテーブルが描画を止める不具合を修正。200行を超えるテーブルは先頭200行と「… N more rows」表示になりますSPEED — deny/askルールを多く抱えたセッションで毎ターン数秒遅くなる問題を修正。ルールマッチャがコンパイルして再利用されますTOOLS — MCPツールが多いprint/SDKセッションでは、ツールプールの組み立てをキャッシュし最大7倍速いラウンドになりましたARTIFACTS — Claude CodeのArtifactsは、セッションの作業をその場で更新される共有Webページに変えます。PR解説やダッシュボードに使えますDEADLINE — 7月24日にOpus 4.7のfastモードが削除されます。speed: "fast" はエラーになるため、Opus 4.8のfastモードへ移行が必要ですMEMORY — Claude Codeの長時間セッションのメモリリークが一掃されました。MCP stdioサーバのstderrが最大64MB蓄積する問題やLSPドキュメントの開きっぱなしが修正されていますTABLES — 非常に大きなmarkdownテーブルが描画を止める不具合を修正。200行を超えるテーブルは先頭200行と「… N more rows」表示になりますSPEED — deny/askルールを多く抱えたセッションで毎ターン数秒遅くなる問題を修正。ルールマッチャがコンパイルして再利用されますTOOLS — MCPツールが多いprint/SDKセッションでは、ツールプールの組み立てをキャッシュし最大7倍速いラウンドになりましたARTIFACTS — Claude CodeのArtifactsは、セッションの作業をその場で更新される共有Webページに変えます。PR解説やダッシュボードに使えますDEADLINE — 7月24日にOpus 4.7のfastモードが削除されます。speed: "fast" はエラーになるため、Opus 4.8のfastモードへ移行が必要です
記事一覧/Claude Code
Claude Code/2026-07-17上級

テーブルが「… 2,847 more rows」で切れていた朝 — 描画上限とトークン計上を切り離して、ツール出力を設計し直す

Claude Code 2.1.209 で 200 行超の markdown テーブルは先頭 200 行+残り件数の表示になりました。省略されるのは描画だけで、モデルは全行を受け取ります。この差を測り、ツール出力を集約型へ組み替える設計をまとめます。

claude-code129mcp17tool-outputcontext5automation53

プレミアム記事

個人開発で回している集計ジョブのログを朝に開いたら、テーブルの下に … 2,847 more rows と出ていました。

Claude Code 2.1.209 の描画改善が効いた瞬間です。以前なら、この規模のテーブルはターミナルの描画を止めて、メモリを食い潰していました。素直にありがたい変更です。

ただ、少し眺めているうちに落ち着かなくなりました。私の目に見えているのは 200 行です。では、モデルは何行受け取ったのでしょうか。

省略されたのは描画であって、コンテキストではない

changelog の記述は「非常に大きな markdown テーブルが描画を止めたりメモリを食い潰す不具合を修正。200 行を超えるテーブルは先頭 200 行+『… N more rows』表示になりました」というものです。直っているのはターミナル側の描画です。

ツール結果としてモデルに渡るテキストは、それとは別の経路を通ります。MCP サーバーが 3,047 行のテーブルを返せば、3,047 行分のテキストがそのまま会話履歴に積まれます。画面が 200 行で止まっているのは、あくまで人間の目に対する配慮です。

この区別を曖昧にすると、厄介なことが起きます。省略表示を見て「軽くなった」と感じ、ツールの返り値を見直す動機を失うのです。実際には、レビューする人間の手元が軽くなっただけで、請求とコンテキストの消費は何も変わっていません。むしろ、重さが目に見えなくなった分だけ気づきにくくなりました。

私自身、この省略表示を初めて見たときは素直に喜んでいました。数分後に「待てよ」と思い直したのは、ちょうどその前の週に、別のジョブでコンテキストが想定より早く埋まる件を追いかけていたからです。

テーブル 1 枚が持ち込む重さを、送る前に見積もる

まず、感覚ではなく数字にします。バイト数の見積もりは電卓で足ります。

集計ジョブが返している行の実寸を測ります。

# MCP ツールが返しているテーブルをファイルに落として実寸を見る
# (ツール側にデバッグ出力の口が無ければ、同じクエリを CLI で再現する)
wc -c /tmp/daily_rows.md
wc -l /tmp/daily_rows.md
 
# 1 行あたりの平均バイト数
awk 'END { printf "avg bytes/line: %.1f\n", (NR ? total/NR : 0) } { total += length($0) + 1 }' /tmp/daily_rows.md

私の集計ジョブの行は、日付・カテゴリ・件数・比率・前日差・備考の 6 列で、1 行あたり 74 バイト前後でした。3,047 行だと 74 × 3,047 ≒ 225 KB です。ヘッダと区切り行を足しても、ざっくり 225 KB。

この 225 KB がトークンでいくつになるかは、掛け算では出しません。日本語混じりのテキストはバイト数とトークン数の比が素直ではないので、公式の count_tokens に投げます。

# pip install anthropic
import anthropic
 
client = anthropic.Anthropic(api_key="YOUR_API_KEY")
 
with open("/tmp/daily_rows.md", encoding="utf-8") as f:
    table = f.read()
 
# 全件を渡した場合
full = client.messages.count_tokens(
    model="claude-sonnet-5",
    messages=[{"role": "user", "content": table}],
)
 
# 画面に出ている 200 行だけを渡した場合(比較用)
head_200 = "\n".join(table.splitlines()[:202])  # ヘッダ + 区切り + 200 行
capped = client.messages.count_tokens(
    model="claude-sonnet-5",
    messages=[{"role": "user", "content": head_200}],
)
 
print(f"full   : {full.input_tokens:,} tokens")
print(f"head200: {capped.input_tokens:,} tokens")
print(f"ratio  : {full.input_tokens / capped.input_tokens:.1f}x")
 
# 期待する出力(行の内容によって変わります):
# full   : 62,431 tokens
# head200: 4,238 tokens
# ratio  : 14.7x

数字が出ると、話が変わります。画面では 200 行に収まって見えるものが、モデルの側では十数倍の重さで積まれている。しかもこれはターンごとの入力に毎回乗ります。

比率は行の内容で動きますが、比率そのものより「画面の見た目とモデルへの入力は連動していない」ことを、自分の手元の数字で一度確認しておくことに意味があります。

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

この記事の続きを読む

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

この記事で得られること
描画の省略とトークン計上のずれを、count_tokens とバイト数の両面から自分の手元で確かめられる
全件テーブルを返していた MCP ツールを、要約+上位N件+参照先の三層に組み替える実装を手に入れられる
画面に出す行数と、モデルに渡す情報量を別々に決める判断基準を持ち帰れる
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

Claude Code2026-07-15
無人実行で auto モードの確認要求を止めずに捌く — permission-prompt-tool で deny-by-default に応える
auto モードの事前確認は、手元で作業しているときは頼もしい味方ですが、深夜の無人実行では「確認待ち」で朝まで止まる原因になります。permission-prompt-tool で確認要求を受け止め、deny-by-default で自動判定して台帳に残す構成を、動くコードつきでまとめました。
Claude Code2026-06-18
無人で動くエージェントに渡すMCPツールを絞り込む — ポリシー強制で権限を deny-by-default にする
無人実行のClaude Codeエージェントは、許可ダイアログに頼れないぶんツールの届く範囲がそのまま事故の範囲になります。MCPサーバーとツールを deny-by-default で締め、必要なものだけを許可リストで渡す構成を実例つきでまとめました。
Claude Code2026-03-24
Claude Code × unity-mcp でゲーム開発を自動化する方法 — 企画から公開までの完全ワークフロー
Claude Code と unity-mcp を組み合わせて Unity ゲーム開発を自動化する方法を解説。hcg-workflows スキルによる8フェーズワークフローで企画から公開まで効率化できます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →