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月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられています
記事一覧/API & SDK
API & SDK/2026-06-01上級

ユーザーレビューやクラッシュログをClaude APIに渡す前に — 個人情報を可逆マスキングする前処理の設計メモ

App StoreのレビューやCrashlyticsのログをClaude APIで分析するとき、本文に紛れ込む個人情報をどう扱うかは避けて通れません。出力から実データへ辿り直せる可逆マスキングの設計と、本番で踏んだ落とし穴を実装コード付きでまとめました。

Claude API115個人情報保護データ前処理2プライバシー2運用11

プレミアム記事

毎週、複数のアプリに届くレビューとクラッシュレポートをまとめて読み、優先度を付ける作業をしています。個人開発でいくつものアプリを長く運用してきて、届くレビューの量が増えるにつれ、手作業で全部に目を通すのが現実的でなくなりました。そこで App Store Connect と Google Play、それに Firebase Crashlytics から本文を引き出し、Claude API に渡して「不具合報告か、要望か、ただの感想か」を仕分けし、深刻そうなものだけを自分の手元に残す仕組みを組みました。

回し始めて最初に気づいたのは、レビュー本文に思った以上に個人情報が混ざっているという事実でした。「返金してほしいので ○○@gmail.com に連絡ください」と書く方がいます。クラッシュのカスタムキーに、デバッグ目的で入れていたユーザーの識別子がそのまま乗っていることもありました。これらを無加工で外部 API に送り続けるのは、たとえ正規の事業者であっても、私の感覚では気持ちのいいものではありません。預かったものを丁寧に扱うという姿勢は、ユーザーが残してくれた言葉に対しても同じだと考えています。

この記事は、その前処理パイプラインをどう設計したかの記録です。単に伏せるだけでなく、Claude の出力から元のレビューへ正確に辿り直せる「可逆マスキング」をどう作るか。そして本番で実際に踏んだ落とし穴を、実装コードと合わせてまとめます。

どの情報を「個人情報」として扱うか — 検出対象の線引き

最初に決めるべきは、何をマスクするかの範囲です。広げすぎると本文が穴だらけになってモデルの判断精度が落ち、狭めると肝心の情報が漏れます。私は「外部 API に送りたくないか」「単体で個人を特定しうるか」の二軸で優先度を付けました。

高優先で必ず伏せるのは、メールアドレス、電話番号、本文中に書かれた氏名、そして自分のアプリが内部で振っているユーザー識別子やデバイス識別子です。これらは正規表現か内部 ID の形式で機械的に拾えます。中優先は、住所の断片や、まれに貼られるカード番号らしき数字列です。低優先、というより基本的に伏せないのが、アプリ名・OS バージョン・端末名といった、分析にむしろ必要なメタ情報です。

ここで大事なのは、伏せる対象を「ブロックリスト」ではなく、可能な範囲で「アローリスト」で考えることでした。特に Crashlytics のカスタムキーのような構造化データは、送ってよいキーをこちらで列挙し、それ以外は丸ごと落とす方針にしています。自由記述のレビュー本文は列挙ができないので検出器に頼りますが、構造化された部分はアローリストの方が事故が起きにくいです。

なぜ単純な [REDACTED] 置換では足りないのか

最初に書いたのは、検出したものを片端から [REDACTED] に置き換える素朴なコードでした。送信前のデータは確かに綺麗になります。ところが、いざ Claude の仕分け結果を受け取って「では、このメールアドレスを書いた人に個別対応しよう」と思った瞬間に手が止まりました。出力には [REDACTED] としか残っておらず、どのレビューの誰だったのかを辿る手段がありません。

import re
 
EMAIL = re.compile(r"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}")
 
def naive_redact(text: str) -> str:
    # 検出したものを一律 [REDACTED] へ。送信は安全だが復元不能
    text = EMAIL.sub("[REDACTED]", text)
    return text
 
masked = naive_redact("返金希望です user@example.com まで連絡を")
# => "返金希望です [REDACTED] まで連絡を"
# この出力をモデルが返してきても、誰のことか二度と分からない

もう一つの問題は、同じ値が複数箇所に出てきたときに区別が消えることです。一通のレビューに同じメールアドレスが二度出てきても、別々のレビューに別人のアドレスが出てきても、すべてが同じ [REDACTED] に潰れます。モデルに「同じ人物が二度言及されている」と読ませたい場面で、その手がかりを自分の前処理で消してしまっていました。

つまり必要なのは、伏せると同時に、後から安全に戻せる「鍵」を残す仕組みでした。

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

この記事の続きを読む

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

この記事で得られること
[REDACTED] 置換が壊す「出力から元レビューへ辿り直す」導線を、可逆トークンで取り戻す設計
モデルが翻訳・正規化してもトークンが壊れない区切り文字の選び方(Before/After のコード付き)
誤検知を0.5%未満に抑えつつ、ログ出力からの情報漏れを防ぐ本番運用の勘所
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

API & SDK2026-07-01
新モデルが増えてもコスト集計をズラさない Claude API 単価レジストリと fail-closed 設計
Opus 4.8 と Haiku 4.5 が Messages API に加わったとき、コード中に散らばった単価がコスト集計を静かに狂わせます。単価を1か所に集約し、未知モデルを fail-closed で弾く実装を、実コード付きで紹介します。
API & SDK2026-06-22
Claude API のコスト計算が請求と合わないとき — usage の4トークンバケットを正しく会計する
プロンプトキャッシュを有効にすると、自前のコスト集計とコンソールの請求額がずれます。usage が返す4つのトークンバケットを重み付きで会計し、突合できる台帳を組む方法をまとめました。
API & SDK2026-07-13
画像を原寸で送るか縮小するか — Opus 4.7 の高解像度ビジョンで1枚ごとに解像度を決めるコスト設計
Opus 4.7 の高解像度ビジョンで壁紙の細部分類は上がったのに、全部を原寸で送ったら週のトークンが跳ねました。1枚ごとに解像度と使うモデルを決める preflight を設計し、精度を保ったままコストを下げた実測を残します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →