GASとApp Inventorの翻訳比較アプリ

このチュートリアルでは、Google Apps Script (GAS) とApp Inventorを連携させた翻訳アプリを作成します。

このアプリは、入力した英語のテキストをGASのLanguageAppを利用して複数の言語(スペイン語、フランス語、ドイツ語、日本語、中国語)に翻訳します。さらに、その翻訳結果をApp Inventor標準の翻訳コンポーネントによる結果と共に表示し、精度を比較することができます。

GASのスクリプトはGoogle Gemini 2.5 Proで書いています。

GASによる翻訳は基本無料ですが、一般のGoogleアカウント(@gmail.comなど)の場合、APIの呼び出し回数に1日5,000回という上限が設けられています。個人での利用や開発のテストには十分な回数と言えるでしょう。

Google Apps Scriptの設定

翻訳処理を行うサーバー側のプログラムをGoogleの環境に設定します。

Gemini 2.5 Pro を使って Google Apps Script を書く

プロンプト

ソース言語からターゲット言語へテキストを翻訳するAPIとして機能するGoogle Apps Scriptのウェブアプリを作成してください。

このウェブアプリは、以下の要件を満たす必要があります。

名前: 「Translation API」とします。
翻訳サービス: LanguageAppサービスを使用します。
リクエスト処理: doPost(e)関数を介してHTTP POSTリクエストを処理します。
パラメータ: 以下の3つのパラメータを受け付けます。
text: 翻訳するテキスト。
source: ソース言語の言語コード(例: 英語の場合は 'en')。
target: ターゲット言語の言語コード(例: スペイン語の場合は 'es')。
エラー処理: 必須パラメータが欠けている場合のエラー処理を実装します。いずれかのパラメータが不足している場合は、JSON形式のエラーメッセージを返します。
レスポンス: 翻訳されたテキストを、キーが「translatedText」のJSONオブジェクトとして返します。
コンテンツタイプ: レスポンスはContentService.MimeType.JSONとして提供します。

返答

/**
 * HTTP POSTリクエストを処理してテキストを翻訳するウェブアプリ
 * @param {Object} e - Apps Scriptのイベントオブジェクト
 * @return {ContentService.TextOutput} - JSON形式のレスポンス
 */
function doPost(e) {
  let response;
  try {
    // POSTされたリクエストボディをJSONとしてパース
    const params = JSON.parse(e.postData.contents);
    const text = params.text;
    const sourceLang = params.source;
    const targetLang = params.target;

    // 必須パラメータ(text, source, target)が存在するかチェック
    if (!text || !sourceLang || !targetLang) {
      // パラメータが不足している場合のエラーレスポンス
      response = {
        'error': "リクエストに必須パラメータ(text, source, target)がありません。"
      };
      // エラーレスポンスをJSON形式で返す
      return ContentService.createTextOutput(JSON.stringify(response))
                         .setMimeType(ContentService.MimeType.JSON);
    }

    // LanguageAppサービスを使用して翻訳を実行
    const translatedText = LanguageApp.translate(text, sourceLang, targetLang);

    // 成功レスポンスを作成
    response = {
      'translatedText': translatedText
    };

  } catch (err) {
    // JSONのパースエラーやその他の予期せぬエラーを処理
    response = {
      'error': 'リクエストの処理中にエラーが発生しました: ' + err.message
    };
  }

  // 最終的なレスポンスをJSON形式で返す
  return ContentService.createTextOutput(JSON.stringify(response))
                     .setMimeType(ContentService.MimeType.JSON);
}

Google スクリプトを開く

https://script.google.com/ にアクセスし、Googleアカウントでログインします。「+ 新しいプロジェクト」をクリックしてください。

スクリプトの貼り付け

エディタに表示されている初期コード (function myFunction() { ... }) をすべて削除し、上記コードを貼り付けます。

プロジェクトの保存

上部のフロッピーディスクアイコンをクリックし保存します。プロジェクトに名前(例:「Translation API)を付けてください。

ウェブアプリとしてデプロイ

このスクリプトをApp Inventorから呼び出せるように、ウェブ上に公開します。

  • 右上の青い「デプロイ」ボタンをクリックし、「新しいデプロイ」を選択します。
  • 「種類の選択」の横にある歯車アイコン⚙をクリックし、「ウェブアプリ」を選択します。
  • 以下の通りに設定します。

    • 説明: (任意)翻訳アプリAPIなど
    • 次のユーザーとして実行: 自分 (あなたのGoogleアカウント)
    • アクセスできるユーザー:全員 この設定を「全員」にしないと、App Inventorからアクセスできずエラーになります。
    • デプロイ」をクリックします。

新しいデプロイが下のように表示されます。

ウェブアプリのURLはApp Inventorで使いますので、必ず「コピー」ボタンを押して控えておいてください。

App Inventorアプリ

日本語化プロジェクトのApp Inventorサーバーでは翻訳コンポーネントが使えないため、MIT本家のApp Inventorサーバー(https://ai2.appinventor.mit.edu/)を使用します。MITのサーバーでも日本語表示は可能ですが、翻訳の品質に難があるため、このチュートリアルは英語環境で作成しています。

MIT本家のApp Inventorサーバー(https://ai2.appinventor.mit.edu/)にアクセスしてGoogleカウントでログインします。言語はEnglishです。

[Projects]メニューから[Start new project]を選択し、"TranslateBenchmark"と名前を付けます。

残りのコンテンツを表示するにはログインする必要がありますどうぞ . 会員ではないですか ? 入会のご案内