RORK LABEN
MAX — Rork MaxはReact NativeでなくネイティブSwiftを生成、iPhone/iPad/Watch/TV/Vision Pro/iMessage対応(5月)NATIVE — AR/LiDAR・Metal 3D・Dynamic Island・HealthKit・NFC・Core MLなどネイティブApple機能を解放(5月)SIM — ブラウザのクラウドiOSシミュレータでXcodeやMacなしに実機環境テストが可能(5月)PUBLISH — ワンクリック/ツークリックのApp Store公開、ビルド・証明書・申請を自動化(5月)FUNDING — Rorkはa16zらから資金を調達、月間訪問は74万超で成長を継続(5月)EXPO — 標準のRorkはExpo(React Native)でiOS/Androidをクロスプラットフォーム生成(5月)MAX — Rork MaxはReact NativeでなくネイティブSwiftを生成、iPhone/iPad/Watch/TV/Vision Pro/iMessage対応(5月)NATIVE — AR/LiDAR・Metal 3D・Dynamic Island・HealthKit・NFC・Core MLなどネイティブApple機能を解放(5月)SIM — ブラウザのクラウドiOSシミュレータでXcodeやMacなしに実機環境テストが可能(5月)PUBLISH — ワンクリック/ツークリックのApp Store公開、ビルド・証明書・申請を自動化(5月)FUNDING — Rorkはa16zらから資金を調達、月間訪問は74万超で成長を継続(5月)EXPO — 標準のRorkはExpo(React Native)でiOS/Androidをクロスプラットフォーム生成(5月)
記事一覧/アプリ開発
アプリ開発/2026-06-04中級

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

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

ASO34ローカライズ2Google Play25PSDフォント個人開発156

プレミアム記事

ストアのスクリーンショットを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-03-22
Google Playフィーチャーグラフィック&アセットをAIで自動生成する方法
Google PlayのフィーチャーグラフィックとストアアセットをAIで自動生成。DALL-E、Midjourneyなどのツール活用法とRorkプロジェクトからの書き出しまで完全ガイド。
アプリ開発2026-03-22
アプリストア素材の完全戦略 — アイコン・スクリーンショット・プレビュー動画の作り方
App Store / Google Play 公開に必要な全ビジュアル素材を網羅。アイコン・スクリーンショット・フィーチャーグラフィック・プレビュー動画の制作方法と最適化戦略を完全解説。
アプリ開発2026-03-22
Figma でアプリのストアスクリーンショットを作成する方法 — App Store / Google Play 対応
App Store と Google Play のスクリーンショット仕様を完全解説。Figma での効率的な制作方法、デバイスモックアップ配置、エクスポート設定まで、実例付きで詳しく説明します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →