CLAUDE LABEN
TEACHERS — AnthropicがClaude for Teachersを公開。米国K-12の認証済み教員に、プレミアム機能と授業向けスキル、全50州の学習指導基準に沿ったカリキュラム連携を無償提供しますADMIN — Claude Enterprise全組織でAdmin APIがベータ提供に。メンバーと招待の操作はベータヘッダー不要、グループとカスタムロールは専用ヘッダーが必要ですM365 — Microsoft 365コネクタに書き込みツールが追加。メールの下書き・送信・整理、カレンダー操作、OneDriveとSharePointのファイル作成・更新まで任せられますMCP — --mcp-configや.mcp.jsonのサーバ単位request_timeout_msが無視され、新規セッションで60秒既定のままタイムアウトする不具合が修正されましたSUBAGENT — --forward-subagent-textとCLAUDE_CODE_FORWARD_SUBAGENT_TEXTが追加。サブエージェントのテキストと思考をstream-json出力に含められますDEADLINE — 7月24日にOpus 4.7のfastモードが削除されます。残り7日、speed: "fast" はエラーになるためOpus 4.8への移行をご確認くださいTEACHERS — AnthropicがClaude for Teachersを公開。米国K-12の認証済み教員に、プレミアム機能と授業向けスキル、全50州の学習指導基準に沿ったカリキュラム連携を無償提供しますADMIN — Claude Enterprise全組織でAdmin APIがベータ提供に。メンバーと招待の操作はベータヘッダー不要、グループとカスタムロールは専用ヘッダーが必要ですM365 — Microsoft 365コネクタに書き込みツールが追加。メールの下書き・送信・整理、カレンダー操作、OneDriveとSharePointのファイル作成・更新まで任せられますMCP — --mcp-configや.mcp.jsonのサーバ単位request_timeout_msが無視され、新規セッションで60秒既定のままタイムアウトする不具合が修正されましたSUBAGENT — --forward-subagent-textとCLAUDE_CODE_FORWARD_SUBAGENT_TEXTが追加。サブエージェントのテキストと思考をstream-json出力に含められますDEADLINE — 7月24日にOpus 4.7のfastモードが削除されます。残り7日、speed: "fast" はエラーになるためOpus 4.8への移行をご確認ください
記事一覧/Claude Code
Claude Code/2026-05-12中級

iOS アプリの Localizable.strings を Claude Code で管理する — 個人で複数アプリを運営するときのローカライズフロー

壁紙アプリを複数運営している個人開発者が、Localizable.stringsの管理をClaude Codeで省力化した実際のワークフロー。新しいキーの追加から翻訳品質チェックまで、一人で回すときの現実的なアプローチを書きます。

claude-code129iOS24ローカライズ2Localizable.strings個人開発110多言語対応2

2014年から個人でアプリ開発を続けてきて、累計のダウンロード数が5,000万を超えた今も、一番地味に困っていた作業がローカライズです。

壁紙アプリや癒し系アプリを複数抱えていると、新しい言語への対応が後回しになりがちです。機能追加のたびに新しいキーが増えるのに、英語版の Localizable.strings しか更新されていない状態が続く。気づいたときには抜け漏れのキーが数十個になっていて、対応言語ごとにファイルを開いて照らし合わせる作業が週末を半日つぶすような重さになっていました。

Claude Code をこの作業に組み込んでから、状況は大きく変わりました。完全に自動化できたわけではありませんが、作業の「重さ」が変わった感覚があります。

なぜ個人開発でローカライズが積み残しになるのか

複数のアプリを一人で回していると、優先順位が常に「動く機能を作ること」に向きます。新しいUIコンポーネントを追加したとき、まず日本語と英語だけで動作確認して、他の言語は「あとで」とファイルに TODO コメントを入れておく。

この「あとで」が積み重なります。

私の場合、壁紙アプリで対応している言語は日本語・英語・中国語(繁体字)・韓国語の4つです。コア機能の追加ごとに4ファイルを同期しなければならないのですが、現実的には英語版のみ先行して、他の言語はリリース後に修正する対応が続いていました。

App Store のレビューに「翻訳が途中で英語になる」という指摘が来るたびに修正していましたが、その都度時間を取られるのは非効率でした。

Claude Code に Localizable.strings を渡す基本アプローチ

最初に試したのは、単純に Claude Code のセッションに strings ファイルを読み込ませて、足りないキーを補完してもらうことでした。

# プロジェクトのルートで実行
claude "以下のファイルを読み込んで、
en.lproj/Localizable.strings に存在するキーのうち
zh-Hant.lproj/Localizable.strings に存在しないキーの
翻訳候補を生成してください。
翻訳は自然な繁体字中国語で、他のキーのトーンと合わせてください。"

ただし、このアプローチにはすぐに限界が見えました。キーの数が多いとコンテキストウィンドウに収まらず、途中で切れることがあります。特に数百キーを超えると、後半の翻訳精度が不安定になりました。

そこで作業を分割する方法に切り替えました。

実際のワークフロー:差分を取り出してから渡す

今使っているフローはこうです。まず差分を取り出すシェルスクリプトを用意して、必要な量だけ Claude Code に渡します。

#!/bin/bash
# diff_strings.sh — en.lproj の未翻訳キーを抽出する
 
SOURCE="en.lproj/Localizable.strings"
TARGET="$1"  # 例: zh-Hant.lproj/Localizable.strings
 
# ソースから全キーを取得
grep -oE '"[^"]+"\s*=' "$SOURCE" | sed 's/\s*=//' | tr -d '"' > /tmp/source_keys.txt
 
# ターゲットから全キーを取得
grep -oE '"[^"]+"\s*=' "$TARGET" | sed 's/\s*=//' | tr -d '"' > /tmp/target_keys.txt
 
# 差分(ソースにあってターゲットにないキー)
diff /tmp/source_keys.txt /tmp/target_keys.txt | grep '^<' | sed 's/^< //' > /tmp/missing_keys.txt
 
# 差分キーの数を確認
MISSING_COUNT=$(wc -l < /tmp/missing_keys.txt)
echo "未翻訳キー数: $MISSING_COUNT"
 
# 差分キーに対応するソース値を抽出
while IFS= read -r key; do
    grep "\"$key\"" "$SOURCE"
done < /tmp/missing_keys.txt

このスクリプトで差分を取り出してから、Claude Code に渡します。

# 差分を取り出す
./diff_strings.sh zh-Hant.lproj/Localizable.strings > /tmp/missing_zh.txt
 
# Claude Code で翻訳生成
claude "以下はiOSアプリ(壁紙アプリ)のLocalizable.stringsの英語版キーです。
繁体字中国語への翻訳を、Localizable.strings形式で生成してください。
アプリは壁紙閲覧・ダウンロードがメインの機能です。翻訳は簡潔で親しみやすいトーンで。
 
$(cat /tmp/missing_zh.txt)"

Claude Code が生成した翻訳を直接ファイルに追記する前に、必ず目視確認を挟みます。機械翻訳っぽい硬さが出ることがあり、特にボタンラベルやエラーメッセージは人間が確認した方が品質が安定します。

気づいたこと:思っていたより「コンテキスト依存」だった

実際に使って気づいたのは、Claude Code への渡し方よりも「アプリのコンテキスト説明」の方が翻訳品質に大きく影響するという点です。

最初は strings ファイルだけを渡していましたが、翻訳が画面の文脈と噛み合わないケースが出ました。例えば "save_button_title" = "Save" という単純なキーでも、何を保存するボタンなのかによって適切な翻訳が変わります。壁紙アプリなら「保存」か「ダウンロード」か、中国語圏のユーザーにどちらが自然に見えるか。

解決策として、プロジェクトルートの CLAUDE.md にアプリの概要を書き足しました。

# アプリ概要
このアプリは壁紙の閲覧とダウンロードが主な機能です。
- メインユーザー: 10代〜30代のスマートフォンユーザー
- トーン: フレンドリー・カジュアル(丁寧語は使わない)
- 主な機能: 壁紙ブラウズ、カテゴリ絞り込み、画像保存、お気に入り管理

この数行を CLAUDE.md に追加してから、翻訳の文脈精度が上がりました。Claude Code がセッション開始時にプロジェクトのコンテキストを読み込むため、追加の説明なしに適切なトーンで翻訳を出してくれるようになりました。

翻訳品質を確認するプロセス

Claude Code が生成した翻訳を確認するために、もう一段階の自動チェックを入れています。

# 翻訳後のファイルで空のバリューがないか確認
grep '= ""' zh-Hant.lproj/Localizable.strings && echo "空バリューあり" || echo "空バリューなし"
 
# キーの件数一致確認
SOURCE_COUNT=$(grep -c '"' en.lproj/Localizable.strings)
TARGET_COUNT=$(grep -c '"' zh-Hant.lproj/Localizable.strings)
echo "EN: $SOURCE_COUNT lines, ZH-HANT: $TARGET_COUNT lines"

件数確認だけでは内容の品質は担保できませんが、明らかな抜け漏れはここで検出できます。

最終的な確認は、アプリをビルドして実機または Simulator で各言語を切り替えて目視します。Claude Code が生成した翻訳をそのまま出荷するのではなく、自分の目で通すワンステップを省略しないことにしています。両家の祖父が宮大工だったことを近くで見て育ったので、丁寧に仕上げるという感覚は、コードの世界でも引き継いでいきたいと思っています。

積み残しゼロを維持するために

このワークフローを定着させてから、「リリース前に翻訳が間に合わなかった」という状況がほぼなくなりました。

大切なのは、翻訳作業を機能追加と分けて考えないことです。新しいキーを英語版に追加したタイミングで diff_strings.sh を走らせて差分を確認し、翻訳が必要ならその場で Claude Code に渡す。作業を週末にまとめてやろうとすると、また積み残しになります。

次にやりたいのは、この差分チェックを Xcode のビルドスクリプトに組み込むことです。ビルド時に未翻訳キーがあれば警告を出す仕組みにすれば、積み残しの存在に早く気づけます。

まず diff_strings.sh を試してみたい方は、対応言語が最も遅れているファイルを一つ選んで差分を取り出すところから始めてみてください。キー数が多くても、50件程度のバッチに分けて Claude Code に渡せば精度が安定します。

同じように一人で複数アプリを回している方の同じ課題に取り組んでいる方の参考になれば幸いです。

シェア

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

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

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

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

Claude Code2026-07-08
自コードの Required Reason API 申告漏れを Claude Code で棚卸しする
PrivacyInfo.xcprivacy の理由コードは、依存ライブラリだけでなく自分のコードにも必要です。個人開発の壁紙アプリで申告漏れを見つけた経験から、Swift ソースを走査して該当 API と理由コードを突き合わせる Claude Code ワークフローをまとめます。
Claude Code2026-07-06
同意ダイアログより先に広告SDKを初期化していた — Claude Code で ATT と AdMob の順序を直す
起動と同時に広告SDKを開始すると、ATT の同意が取れる前に IDFA が空のまま初期化され、フィルレートは正常なのに計測だけが薄くなります。散らばった初期化順序を Claude Code で洗い出し、ATT の解決を待ってから広告を開始する形へ直した実装を共有します。
Claude Code2026-06-30
新型 iPhone で壁紙がぼやける問題を Claude Code で直す — 端末別解像度の振り分けを安全に増やす
新しい iPhone が出るたびに壁紙アプリで画像がぼやけたり余白が出たりする原因と、散らばった端末分岐を一枚のテーブルに集約して安全に拡張する方法を、Claude Code を使った実際のリファクタリング工程として共有します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →