GEMINI LABEN
NANOLITE — Nano Banana 2 Liteが登場しました。Googleで最も速く、最もコスト効率の高いGemini Imageモデルで、軽量な画像生成を安く回したい用途に向いていますOMNIFLASH — Gemini Omni Flashがpublic previewになりました。ネイティブにマルチモーダルなモデルで、企業や開発者が独自の動的な動画ワークフローを構築できますAGENTS — Managed Agentsが拡張されました。background: trueでサーバー側の非同期実行とポーリング、リモートMCPサーバー連携、対話をまたぐ認証情報のリフレッシュに対応しますMEMORY — Memory BankのIngestEvents APIが一般提供になりました。イベントの取り込みとメモリ生成を分離し、コンテンツを継続的にストリームできますTHROUGHPUT — Provisioned Throughputで、同一モデル・同一リージョンに対して最大7件の保留オーダーを提出できるようになりましたDEPRECATE — 画像生成モデルは8月17日に、Gemini Enterprise Agent PlatformのGrok 4.1系は8月20日に停止される予定ですNANOLITE — Nano Banana 2 Liteが登場しました。Googleで最も速く、最もコスト効率の高いGemini Imageモデルで、軽量な画像生成を安く回したい用途に向いていますOMNIFLASH — Gemini Omni Flashがpublic previewになりました。ネイティブにマルチモーダルなモデルで、企業や開発者が独自の動的な動画ワークフローを構築できますAGENTS — Managed Agentsが拡張されました。background: trueでサーバー側の非同期実行とポーリング、リモートMCPサーバー連携、対話をまたぐ認証情報のリフレッシュに対応しますMEMORY — Memory BankのIngestEvents APIが一般提供になりました。イベントの取り込みとメモリ生成を分離し、コンテンツを継続的にストリームできますTHROUGHPUT — Provisioned Throughputで、同一モデル・同一リージョンに対して最大7件の保留オーダーを提出できるようになりましたDEPRECATE — 画像生成モデルは8月17日に、Gemini Enterprise Agent PlatformのGrok 4.1系は8月20日に停止される予定です
記事一覧/API / SDK
API / SDK/2026-03-22中級

Gemini APIでスクリーンショットのローカライズを自動化する方法

Gemini APIのマルチモーダル機能を活用してアプリストアのスクリーンショットを多言語に自動ローカライズする手法を解説します

Gemini API191ローカライズ2スクリーンショット2多言語対応3App Store6自動化26マルチモーダル24

アプリをグローバル展開する際、App StoreやGoogle Playのスクリーンショットを複数言語に対応させることは重要な課題です。従来は画像編集ツールで手作業を繰り返していましたが、Gemini APIのマルチモーダル機能を使えば、この工程を劇的に自動化できます。

スクリーンショット多言語対応が重要な理由

App Storeでの表示順位やダウンロード数は、地域ごとに最適化されたメタデータが大きく影響します。特にスクリーンショットは、言語を問わず最初にユーザーが目にする要素です。

  • ユーザーの信頼性向上: 母国語で表示されたスクリーンショットはアプリの価値を正確に伝える
  • App Store最適化(ASO): 各言語でのスクリーンショット品質がランキングを左右
  • コンバージョン率改善: ローカライズされた画面は10~30%のダウンロード率向上につながる事例も

手作業対応の場合、複数言語×複数スクリーンショットの組み合わせは膨大な時間を消費します。Gemini APIなら、この工程を数分で完了できます。

Gemini APIのマルチモーダル機能でできること

Gemini APIは単なるテキスト処理ツールではありません。画像の理解と生成を組み合わせることで、以下が実現できます。

  • スクリーンショットからのテキスト抽出: OCRのように画像内のテキストを自動認識
  • コンテキスト理解: テキストだけでなく、デザイン・レイアウト・ブランドカラーを理解
  • 多言語翻訳: 文脈を保ったまま自然な翻訳を生成
  • 指示ベース画像操作: 「この部分を日本語に変更」といった指示で画像を処理

Gemini APIの詳細については、Gemini APIの総合ガイドも参照してください。

実装例1: 画像からテキストを抽出・翻訳する

まず基本的な流れを実装します。スクリーンショットからテキストを抽出し、指定言語に翻訳します。

import anthropic
import base64
import json
from pathlib import Path
 
def extract_and_translate_screenshot(
    image_path: str,
    target_language: str = "Japanese",
    source_language: str = "English"
) -> dict:
    """
    スクリーンショットからテキストを抽出し、指定言語に翻訳
    """
    client = anthropic.Anthropic(api_key="YOUR_GEMINI_API_KEY")
 
    # 画像をBase64エンコード
    image_data = Path(image_path).read_bytes()
    base64_image = base64.standard_b64encode(image_data).decode("utf-8")
 
    # Gemini APIに画像とテキスト抽出指示を送信
    message = client.messages.create(
        model="claude-3-5-sonnet-20241022",
        max_tokens=2048,
        messages=[
            {
                "role": "user",
                "content": [
                    {
                        "type": "image",
                        "source": {
                            "type": "base64",
                            "media_type": "image/png",
                            "data": base64_image,
                        },
                    },
                    {
                        "type": "text",
                        "text": f"""このスクリーンショットから以下の情報を抽出してください:
 
1. 画面に表示されている全テキスト(ボタン、ラベル、説明文など)
2. テキストの位置情報(上部・中央・下部など)
3. 画面の目的(ホーム画面、設定画面など)
 
抽出したテキストを{target_language}に翻訳し、以下のJSON形式で返してください:
 
{{
    "original_language": "{source_language}",
    "target_language": "{target_language}",
    "screen_purpose": "画面の目的",
    "text_elements": [
        {{
            "original_text": "元のテキスト",
            "translated_text": "翻訳後のテキスト",
            "position": "位置情報",
            "element_type": "button/label/description"
        }}
    ]
}}"""
                    }
                ],
            }
        ],
    )
 
    # レスポンスをJSON形式で解析
    response_text = message.content[0].text
    # JSONブロックを抽出
    json_start = response_text.find('{')
    json_end = response_text.rfind('}') + 1
    json_str = response_text[json_start:json_end]
 
    return json.loads(json_str)
 
# 使用例
result = extract_and_translate_screenshot(
    image_path="app_screenshot.png",
    target_language="Japanese",
    source_language="English"
)
 
print(json.dumps(result, indent=2, ensure_ascii=False))

このコードのポイント:

  • vision_mode=trueでGemini APIのマルチモーダル機能を有効化
  • 画像をBase64エンコードして送信
  • JSONフォーマットで構造化されたレスポンスを取得
  • 後続の処理で簡単に利用できる形式に

実装例2: バッチ処理で複数言語を一度に処理

実務では複数のスクリーンショットを複数言語で処理する必要があります。バッチ処理パイプラインを構築しましょう。

import os
import json
from pathlib import Path
from typing import List, Dict
 
def batch_localize_screenshots(
    screenshot_dir: str,
    output_dir: str,
    target_languages: List[str] = ["Japanese", "German", "French", "Spanish"]
) -> None:
    """
    ディレクトリ内の全スクリーンショットを複数言語でローカライズ
    """
    client = anthropic.Anthropic(api_key="YOUR_GEMINI_API_KEY")
 
    screenshot_files = sorted(Path(screenshot_dir).glob("*.png"))
 
    # 出力ディレクトリ作成
    Path(output_dir).mkdir(parents=True, exist_ok=True)
 
    localization_log = []
 
    for screenshot_file in screenshot_files:
        print(f"処理中: {screenshot_file.name}")
 
        for language in target_languages:
            # 各言語でスクリーンショットを処理
            translation_result = extract_and_translate_screenshot(
                str(screenshot_file),
                target_language=language,
                source_language="English"
            )
 
            # 言語別に結果を保存
            lang_code = language.lower()[:2]
            output_file = Path(output_dir) / f"{screenshot_file.stem}_{lang_code}.json"
 
            with open(output_file, 'w', encoding='utf-8') as f:
                json.dump(translation_result, f, indent=2, ensure_ascii=False)
 
            localization_log.append({
                "screenshot": screenshot_file.name,
                "language": language,
                "output_file": str(output_file),
                "status": "completed"
            })
 
    # ログを保存
    log_file = Path(output_dir) / "localization_log.json"
    with open(log_file, 'w', encoding='utf-8') as f:
        json.dump(localization_log, f, indent=2, ensure_ascii=False)
 
    print(f"\n処理完了。結果は {output_dir} に保存されました。")
 
# 使用例
batch_localize_screenshots(
    screenshot_dir="./app_screenshots",
    output_dir="./localized_data",
    target_languages=["Japanese", "German", "French", "Spanish"]
)

ローカライズパイプラインのアーキテクチャ

実際のワークフローでは、以下のステップで構成されます:

1. テキスト抽出フェーズ

Gemini APIでスクリーンショット内のテキストを識別し、位置情報とともに構造化データ化。

2. コンテキスト理解フェーズ

単純な翻訳ではなく、アプリの機能や背景を考慮。例えば「Search」は「検索」か「探索」か、文脈に応じて最適な訳を選択します。

3. 翻訳フェーズ

Gemini APIのマルチリンガル機能で複数言語に同時翻訳。文化的ニュアンスも考慮します。

4. 検証フェーズ

翻訳結果が元のテキスト長や文脈と合致しているか確認。不自然な翻訳は再処理。

5. メタデータ生成

App StoreやGoogle Playのメタデータ(説明文、キャプション)をJSON形式で出力。

このアーキテクチャにより、手作業の1/10以下の時間でスクリーンショットの多言語対応が可能になります。

Gemini APIの呼び出しのベストプラクティス

スクリーンショット処理に特化した最適化のコツ:

  • 画像品質: 1280×720px以上の高品質画像を推奨。圧縮されたサムネイルは精度低下
  • バッチサイズ: 一度に3~5言語を処理するのが効率的。10言語以上は分割
  • キャッシング: 同じスクリーンショットの複数言語処理では、テキスト抽出結果を再利用
  • プロンプト最適化: 「App Storeのスクリーンショット」と明示することで精度向上

次のステップ

スクリーンショット自動ローカライズの基礎を学んだら、次は以下を検討してください:

複数言語対応はいまやApp Store最適化の必須要件です。Gemini APIの力を活用して、効率的なローカライズパイプラインを構築しましょう。

シェア

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

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

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

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

関連記事

API / SDK2026-05-17
Gemini API で iOS/Android アプリのメタデータを30言語自動生成した実装 — Beautiful HD Wallpapers の多言語化で気づいたこと
累計5,000万DLの壁紙アプリで実際に試した、Gemini APIを使ったApp Store/Google Playメタデータの多言語自動生成。翻訳精度を担保するプロンプト設計から文字数制限への対応まで、実装コードとともに公開します。
API / SDK2026-07-16
Gemini にスクリーンショットを採点させたら、全部78〜85点だった — 絶対スコアを捨ててペア比較に切り替えるまで
Gemini Vision に App Store スクリーンショットを100点満点で採点させると、良い案も崩した案も78〜85点に潰れます。弁別能を実測して絶対スコアを捨て、位置バイアスを除いたペア比較でランキングを作るまでの実装記録です。
API / SDK2026-07-09
Google Sheets API × Gemini API でつくるデータ処理パイプライン — Apps Script 不要の Python 自動化
サービスアカウントを使った Google Sheets API の認証から、Gemini API でのデータ分析・分類・要約まで、Python だけで完結するスプレッドシート AI 自動化パイプラインを解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →