◉RORK LABEN
●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Expo SDK 58 が 10/15 に正式リリースされました(Beta は 09/15 から)。上げる前に依存の対応状況を確認しましょう●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Expo SDK 58 が 10/15 に正式リリースされました(Beta は 09/15 から)。上げる前に依存の対応状況を確認しましょう●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…
記事一覧/アプリ開発
◇ アプリ開発/2026-06-04中級

Google Play のスクショを16言語にローカライズした実装メモ — PSDのテキストを差し替え、フォントはNotoで統一

Android壁紙アプリのストアスクリーンショットを16言語へローカライズした作業の実装メモ。PSDのテキストレイヤーをPythonで言語別に差し替え、はみ出しを自動縮小し、言語別にフォントを当てる手順を、実際に使ったコードと早見表つきで残します。

ASO27ローカライズ7Google Play39PSDフォント個人開発219

✦ プレミアム記事

ストアのスクリーンショットを16言語ぶん作る、と言葉にすると一行ですが、実際にやると「翻訳文をデザインに流し込んだ瞬間にレイアウトが崩れる」という地味な壁に何度もぶつかります。ドイツ語は日本語の1.8倍に伸びてボタンからはみ出し、アラビア語は右から左に流れて全部反転し、韓国語とタイ語に至っては手元のフォントに字形すら入っていない。私は2014年から個人でiOS/Androidの壁紙アプリを作っていて、累計5,000万ダウンロードまで育ったいまも、こうした「最後の見た目を整える工程」が一番時間を食います。

先日、Android版「綺麗な壁紙」(Beautiful Wallpapers — Google Play)のストアスクショを、英語・スペイン語・フランス語・ドイツ語など16言語に作り直しました。このとき、Photoshopで16言語×5枚を手で打ち直すのをやめて、PSDのテキストレイヤーをPythonで言語別に差し替えるやり方に切り替えたら、作業がだいぶ楽になりました。この記事は、そのときの実装メモです。きれいな理論ではなく、実際に動かしたコードと、つまずいた箇所、そして言語別にどのフォントを当てたかの早見表を残します。

なぜ「画像に焼く」のではなく「テキストのまま差し替える」のか

最初に方針の話をさせてください。多言語スクショの自動化というと、各言語の文字を画像として描いて背景に重ねる(オーバーレイPNGを合成する)方法がまず思いつきます。実際それも作りました。ただ、この方法には弱点があります。フォントを後から変えられないのです。

オーバーレイ方式だと、文字は生成した時点でピクセルに固定されます。あとで「やっぱり韓国語の見出しをもう少し太く」と思っても、スクリプトを回し直すしかありません。デザインの微調整は最後まで手元のPhotoshopでやりたい、というのが個人開発の現実です。

そこで本命にしたのが、テキストレイヤーをラスタライズせずに、文字列だけ各言語へ差し替える方法でした。原本PSDの日本語タイプレイヤーを複製し、中の文字列を翻訳に入れ替えた「編集可能なテキスト版PSD」を生成します。各言語グループを原本にドラッグすれば元の位置にそのまま乗り、フォントもサイズもPhotoshop側で自由に触れる。この一点が、運用してみて一番効きました。

補足として、作品そのもの(壁紙画像)にこうした自動化は一切使っていません。自動化しているのはあくまでストア掲載という運用・プロモーション側の工程です。この線引きは自分の中で固定しています。

元データの構造を把握する

対象の原本PSDは、1440 × 13333px に5枚のアートボードが縦に並んだ構成でした。1枚あたり 1440 × 2560px(9:16)です。テキストレイヤーは全部で約40枚。タイトル、サブタイトル、特徴の箇条書き、数字バッジといった要素が、アートボードごとに分かれて配置されています。

最初にやるのは、このテキストレイヤーを機械的に拾えるようにすることです。psd-toolsを使うと、グループを再帰的に降りていって kind == 'type' のレイヤーだけ抜き出せます。

from psd_tools import PSDImage
 
def find_types(layers):
    """グループを再帰的にたどり、テキストレイヤーだけを列挙する"""
    for layer in layers:
        if layer.kind == 'type':
            yield layer
        if layer.is_group():
            yield from find_types(layer)
 
src = PSDImage.open("screenshot.psd")
for t in find_types(src):
    # layer.text に表示文字列、layer.bbox に座標が入っている
    print(repr(t.text), t.bbox)

layer.text で表示中の文字列、layer.bbox で (left, top, right, bottom) の座標が取れます。この top の値がどのアートボードの範囲に入るかを見て、「この文は5枚目のスクショの見出しだ」と機械的に振り分けられます。原本の日本語文字列をキーにした翻訳辞書(TR[日本語] = {"en": "...", "de": "...", ...})を用意しておけば、レイヤーと翻訳が layer.text で素直に突き合わせられます。

✦

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

この記事の続きを読む

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

この記事で得られること
✦ストアスクショの多言語化で『翻訳はできたがレイアウトが毎回崩れる』に詰まっていた人が、PSDのテキストを言語別に差し替えてはみ出しを自動縮小する、再現可能な手順を手に入れられる
✦psd-toolsでテキストレイヤーをラスタライズせずに編集する実コードと、キリル・ハングル・タイ・アラビアでどのNotoフォントを当てるかの言語別早見表を習得できる
✦16言語ぶんのスクショを手作業ではなくスクリプトで量産する流れを、自分のアプリのストア運用にそのまま応用できる
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

◇ アプリ開発2026-09-07
アプリから外部の AI にユーザーの文章を送るとき、Play の「データの安全性」に何を書くか
外部の AI にユーザーの入力を渡すアプリで、Play のデータ安全性フォームの収集・共有・一時処理をどう区分するか。送信を一箇所に集める実装と、順序を誤ると消し漏れるマスキングの実測を添えて整理します。
◇ アプリ開発2026-03-22
Figma でアプリのストアスクリーンショットを作成する方法 — App Store / Google Play 対応
App Store と Google Play の最新のスクリーンショット仕様(2026年10月時点の公式ページ)を確認したうえで、Figma に多言語対応のテンプレートを組む手順を書き残します。サイズの考え方、文字長の余白、エクスポート、更新の運用までを扱います。
◇ アプリ開発2026-09-10
Rork のリポジトリに置く最初の EAS Workflow と、失敗した回にだけ届かない通知
Rork から書き出したリポジトリに .eas/workflows を二本置くまでの手順と、needs でつないだ通知が失敗した回にだけ届かなくなる理由を、手元で走る検査スクリプトの実行結果つきで書き残します。