はじめに
独学でアプリ開発を始めて、これまで10個以上のサービスをリリースしてきました。そのなかでずっと苦痛だったのが、App Storeのローカライズ作業です。
- 言語ごとにスクリーンショットを作り直す
- キーワードを国ごとに調べて100文字に収める
- アップデートのたびにリリースノートを全言語分翻訳する
- それをApp Store Connectに1ロケールずつポチポチ反映する
アプリ本体の開発より、この「届ける作業」のほうが重い。外注すればスクショ1セットで数万円、自分でやれば数日。結果、多くの個人開発者(過去の自分含む)は海外展開を後回しにします。
これを自動化するために Slothy というツールを作ってリリースしたので、開発の過程でハマった技術的なポイントを共有します。
作ったもの
Slothy — AIでApp Storeスクリーンショットを生成し、39言語・地域にローカライズして、メタデータ・リリースノートごとApp Store Connectに直接提出できるASOツールです。
やることは3ステップです。
- App Store Connect APIキーを登録(アプリとロケールを自動取得)
- プロンプトからスクショをAI生成 → 39言語版を自動展開
- レビューして、全ロケール一括でASCにpush → そのまま審査提出
「Be lazy. Go global.」- 怠けたまま世界へ、がコンセプトです。
ハマりポイント1: App Store Connect APIのスクリーンショットアップロードが素直じゃない
ASC APIでスクショを上げるのは、単純なファイルPOSTではありません。
-
appScreenshotSetsをdisplay type(6.9インチ、6.5インチ、iPad 13インチ...)ごとに作成 -
appScreenshotsでアセット予約(ファイル名とサイズを先に申告) - 返ってきた
uploadOperationsに従ってバイナリをチャンク分割アップロード - checksumを添えてcommit
という4段階で、しかもロケール × display type × 枚数の組み合わせ分これを回す必要があります。39ロケール × 3 display type × 10枚だと1,000リクエスト超えになるので、並列化とリトライ設計(ASC APIは429を普通に返してくる)が必須でした。
ハマりポイント2: キーワードの「翻訳」は罠
最初は素直にキーワードを機械翻訳していたのですが、2つの問題にぶつかりました。
(1) 100文字制限を溢れる。 例えば英語の short video editor, clips, reels... (98文字)を日本語に直訳すると118文字になり制限オーバー。CJK圏は1文字の情報量が違うので、直訳では絶対に収まりません。
(2) そもそも現地で検索されている語と違う。 日本のユーザーは「ショートビデオ」ではなく「動画編集」「テロップ」「加工」で検索します。直訳キーワードは文字数を食うだけで検索流入に貢献しない。
なのでSlothyでは「翻訳」ではなく、各地域の検索語彙に置き換えた上で100文字以内に再構成するプロンプト設計にしました。
ハマりポイント3: そもそも「全く同じデザイン」にはできない
これが一番プロンプトエンジニアリングに時間を使った部分です。
当初は「デザインは固定、中の文字だけ差し替える」という発想で作っていました。翻訳ツールとして考えれば自然な発想です。しかしこれは、やってみると根本的に間違っているとわかりました。
理由は3つあります。
(1) 文字数が変わる。 ドイツ語は英語の1.2〜1.3倍に膨らみ、逆に日本語や中国語は短くなります。同じフォントサイズの同じボックスに収まるわけがありません。
(2) 文字数が変わると、高さが変わる。 1行で収まっていたキャッチコピーが2行に折り返せば、その下にあるスマホのモックも、説明文も、全部押し下げられます。「テキストボックスだけ差し替える」で済む話ではなく、レイアウト全体が連動して崩れる。
(3) 文法が違うので、同じ配置が不自然になる。 これが一番厄介でした。英語は結論を先に言う言語なので「Create original songs / with AI」のように前半に強いワードが来ます。日本語で同じ構造にすると「オリジナル曲を / AIで作ろう」となり、視線が最初に当たる位置に一番弱い語が来る。文字としては正しく翻訳できていても、デザインとしては死んでいる状態です。強調したい単語の位置が言語によって変わる以上、色を変える箇所も改行位置も、言語ごとに変わって当然でした。
つまり「同じレイアウトを維持する」という目標設定そのものが誤りで、正しくは「同じ印象・同じ訴求力を、その言語にとって自然な形で再現する」でした。
そこでアプローチを変え、生成AIに対して「翻訳してテキストを埋めろ」ではなく、「この訴求内容を、この言語のネイティブがゼロから作るならどう組むか」を考えさせる方向にプロンプトを組み直しました。
料金設計の話
個人開発者向けツールなので、「使わない月は0円」を最優先にしました。
- スクショ生成はAPI実費ベースの従量課金で、1枚あたり数円
- Freeプランは無期限・カード登録不要(1ワークスペース・5ロケールまで)
- 無制限に使いたい人向けにProが月額680円
自分が個人開発者としてサブスク疲れしているので、「安すぎるくらいでいい、まず使ってもらう」に振り切っています。
まとめ
- App Storeのローカライズは個人開発者の海外展開を止めている最大のボトルネック(だと思っている)
- ASC APIは強力だが、スクショ周りはアセット予約→チャンクアップロード→commitの多段構造でレート制限との戦いになる
- キーワードは翻訳ではなく「現地の検索語彙への再構成」が必要
- スクショは「同じレイアウトを維持する」のではなく「同じ訴求力をその言語らしく再現する」のが正解。文字数も高さも文法も違う以上、同一デザインを目指すこと自体が間違いだった
- Slothyはそれを全部まとめて自動化するツールです → https://slothy.pro (Freeプランあり・カード不要)
同じ痛みを持っている個人開発者の方、ぜひ触ってみてください。フィードバックはアプリ内のFeedbackボタンか、X(@modelai_ryuto)まで。
