Cloud Translation コネクタを使用して一括翻訳を実行する

このチュートリアルでは、Cloud Translation API コネクタを使用して、非同期バッチモードでファイルを他の言語に翻訳するワークフローを作成する方法について説明します。これにより、入力の処理中にリアルタイムで出力が提供されます。

目標

このチュートリアルの内容は次のとおりです。

  1. 入力 Cloud Storage バケットを作成します。
  2. 英語で 2 つのファイルを作成し、入力バケットにアップロードします。
  3. Cloud Translation API コネクタを使用して 2 つのファイルをフランス語とスペイン語に翻訳し、結果を出力バケットに保存するワークフローを作成します。
  4. ワークフローをデプロイして実行し、プロセス全体をオーケストレートします。

費用

このドキュメントでは、課金対象である次の Google Cloudコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。

新規の Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

始める前に

組織で定義されているセキュリティの制約により、次の手順を完了できない場合があります。トラブルシューティング情報については、制約のある Google Cloud 環境でアプリケーションを開発するをご覧ください。

  1. Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud CLI をインストールします。

  3. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  4. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  5. Google Cloud プロジェクトを作成または選択します

    プロジェクトの選択または作成に必要なロール

    • プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、resourcemanager.projects.create 権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。ロールを付与する方法を確認する
    • Google Cloud プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Google Cloud プロジェクトの名前に置き換えます。

  6. Google Cloud プロジェクトに対して課金が有効になっていることを確認します

  7. Cloud Storage、Translation、Workflows の各 API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。ロールを付与する方法を確認する

    gcloud services enable storage.googleapis.com translate.googleapis.com workflows.googleapis.com
  8. Google Cloud CLI をインストールします。

  9. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  10. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  11. Google Cloud プロジェクトを作成または選択します

    プロジェクトの選択または作成に必要なロール

    • プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、resourcemanager.projects.create 権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。ロールを付与する方法を確認する
    • Google Cloud プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Google Cloud プロジェクトの名前に置き換えます。

  12. Google Cloud プロジェクトに対して課金が有効になっていることを確認します

  13. Cloud Storage、Translation、Workflows の各 API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。ロールを付与する方法を確認する

    gcloud services enable storage.googleapis.com translate.googleapis.com workflows.googleapis.com
  14. gcloud コンポーネントを更新します。
    gcloud components update
  15. 自分のアカウントでログインします。
    gcloud auth login
  16. このチュートリアルで使用するデフォルトのロケーションを設定します。
    gcloud config set workflows/location us-central1

    このチュートリアルでは、us-central1 に存在するデフォルトの AutoML Translation モデルを使用するため、ロケーションを us-central1 に設定する必要があります。

    デフォルト以外の AutoML Translation モデルまたは用語集を使用する場合は、コネクタの呼び出しと同じ場所に存在することを確認してください。それ以外の場合は、INVALID_ARGUMENT (400) エラーが返されます。詳細については、batchTranslateText メソッドをご覧ください。

入力用の Cloud Storage バケットとファイルを作成する

Cloud Storage を使用してオブジェクトを保存できます。オブジェクトは、任意の形式のファイルで構成される不変のデータであり、バケットと呼ばれるコンテナに保存されます。

  1. 翻訳するファイルを保持する Cloud Storage バケットを作成します。

    BUCKET_INPUT=${GOOGLE_CLOUD_PROJECT}-input-files
    gcloud storage buckets create gs://${BUCKET_INPUT}
  2. 英語で 2 つのファイルを作成し、入力バケットにアップロードします。

    echo "Hello World!" > file1.txt
    gcloud storage cp file1.txt gs://${BUCKET_INPUT}
    echo "Workflows connectors simplify calling services." > file2.txt
    gcloud storage cp file2.txt gs://${BUCKET_INPUT}

ワークフローをデプロイして実行する

ワークフローは、ワークフロー構文で記述された一連のステップで構成され、YAML 形式または JSON 形式のいずれでも記述できます。これがワークフローの定義です。ワークフローを作成したら、デプロイして実行できるようにします。

  1. 次の内容のテキスト ファイルを workflow.yaml という名前で作成します。

    main:
      steps:
      - init:
          assign:
          - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
          - location: ${sys.get_env("GOOGLE_CLOUD_LOCATION")}
          - inputBucketName: ${projectId + "-input-files"}
          - outputBucketName: ${projectId + "-output-files-" + string(int(sys.now()))}
      - createOutputBucket:
            call: googleapis.storage.v1.buckets.insert
            args:
              project: ${projectId}
              body:
                name: ${outputBucketName}
      - batchTranslateText:
          call: googleapis.translate.v3beta1.projects.locations.batchTranslateText
          args:
              parent: ${"projects/" + projectId + "/locations/" + location}
              body:
                  inputConfigs:
                    gcsSource:
                      inputUri: ${"gs://" + inputBucketName + "/*"}
                  outputConfig:
                      gcsDestination:
                        outputUriPrefix: ${"gs://" + outputBucketName + "/"}
                  sourceLanguageCode: "en"
                  targetLanguageCodes: ["es", "fr"]
          result: batchTranslateTextResult

    このワークフローは、変数を割り当て、出力バケットを作成してファイルの翻訳を開始し、結果を出力バケットに保存します。

  2. ワークフローを作成したら、デプロイします。

    gcloud workflows deploy batch-translation --source=workflow.yaml
  3. ワークフローを実行します。

    gcloud workflows execute batch-translation
  4. ワークフローのステータスを表示するには、返されたコマンドを実行します。次に例を示します。

    gcloud workflows executions describe eb4a6239-cffa-4672-81d8-d4caef7d8424 /
      --workflow batch-translation /
      --location us-central1

    ワークフローは ACTIVE である必要があります。数分後、翻訳されたファイル(フランス語とスペイン語)が出力バケットにアップロードされます。

出力バケット内のオブジェクトを一覧表示する

出力バケット内のオブジェクトを一覧表示することで、ワークフローが想定どおりに動作していることを確認できます。

  1. 出力バケット名を取得します。

    gcloud storage ls

    出力は次のようになります。

    gs://PROJECT_ID-input-files/
    gs://PROJECT_ID-output-files-TIMESTAMP/

  2. バケット内のオブジェクトを一覧表示する。

    gcloud storage ls gs://PROJECT_ID-output-files-TIMESTAMP/** --recursive

    数分後、翻訳されたファイル(フランス語とスペイン語の 2 つのファイル)が一覧表示されます。

クリーンアップ

このチュートリアル用に新規プロジェクトを作成した場合は、そのプロジェクトを削除します。既存のプロジェクトを使用し、このチュートリアルで変更を加えずに残す場合は、チュートリアル用に作成したリソースを削除します。

プロジェクトの削除

課金されないようにする最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。

プロジェクトを削除するには:

  1. Google Cloud コンソールで [リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

チュートリアル リソースの削除

  1. チュートリアルを設定したときに追加した gcloud のデフォルト構成を削除します。

    gcloud config unset workflows/location
  2. このチュートリアルで作成したワークフローを削除します。

    gcloud workflows delete WORKFLOW_NAME
  3. このチュートリアルで作成したバケットとそのオブジェクトを削除します。

    gcloud storage rm gs://BUCKET_NAME --recursive

    ここで、BUCKET_NAME は削除するバケットの名前です。たとえば、my-bucket です。

    レスポンスは次の例のようになります。

    Removing gs://my-bucket/...

次のステップ