ABAP SDK for Google Cloud での Translation API の使用

1. はじめに

この Codelab では、ABAP SDK for Google Cloud を使用して Translation API V3(Advanced)のメソッドを呼び出す手順について説明します。この Codelab では、Translation API V3 を使用してテキストを翻訳し、テキストの言語を検出し、サポートされている言語のリストを表示する方法について説明します。

この Codelab では、次の Google Cloud サービスを使用します。

  • Compute Engine
  • ネットワーク サービス
  • Cloud Shell
  • Cloud Translation API V3

前提条件

作成するアプリの概要

ABAP SDK for Google Cloud を使用して、SAP システムに次のプログラムを作成します。

  • Google の Cloud Translation API V3 を使用してテキストを複数の言語に翻訳する
  • Google Cloud Translation API V3 を使用してソーステキストの言語を検出する
  • Google Cloud Translation API V3 でサポートされている言語を一覧表示する

2. 要件

  • ブラウザ(ChromeFirefox など)
  • 課金が有効になっている Google Cloud プロジェクト、または Google Cloud Platform の90 日間の無料トライアル アカウントを作成します。
  • システムにインストールされている SAP GUI(Windows または Java)。SAP GUI がマシンにすでにインストールされている場合は、VM の外部 IP アドレスをアプリケーション サーバー IP として使用して SAP に接続します。Mac を使用している場合は、こちらのリンクから SAP GUI for Java をインストールすることもできます。

3. 始める前に

6757b2fb50ddcc2d.png

  • 次のコマンドを実行してアカウントの認証を行い、デフォルトのプロジェクトを abap-sdk-poc に設定します。ゾーン us-west4-b は例として使用されています。必要に応じて、次のコマンドのプロジェクトとゾーンを必要に応じて変更してください。
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
  • ABAP SDK for Google Cloud がインストールされた SAP システムにアクセスできる必要があります。
  • この Codelab に進む前に、Codelab 1(Google Cloud Platform に ABAP Platform Trial 1909 をインストールして、ABAP SDK for Google Cloud をインストールする)と Codelab 2(Compute Engine VM でホストされている SAP のトークンを使用して ABAP SDK 認証を構成する)を完了する必要があります。
  • Codelab 1 と Codelab 2 を完了すると、Google Cloud に ABAP Platform Trial 1909 System がプロビジョニングされ、認証と接続に必要な設定が完了します。
  • Codelab 1 と Codelab 2 を完了していない場合、この Codelab の手順を実行するために必要なインフラストラクチャと接続がすべて揃っていません。そのため、この Codelab を進める前に、Codelab 1 と Codelab 2 を完了する必要があります。

4. Google Cloud プロジェクトで Cloud Translation API V3 を有効にする

  1. Cloud Shell で次のコマンドを実行すると、Google Cloud プロジェクトで Cloud Translation API が有効になります。
gcloud services enable translate.googleapis.com

実行が成功すると、次のようなメッセージが表示されます。

b5f52859df2c2f56.png

Google Cloud プロジェクトで Cloud Translation API が有効になっているはずです。

5. Cloud Translation ユーザーのロールを付与したサービス アカウントを作成する

必要なロールを持つサービス アカウントを作成するには、次の操作を行います。

  1. Cloud Shell ターミナルで次のコマンドを実行します。
gcloud iam service-accounts create abap-sdk-translation-tester \
--display-name="Service Account for Translation"
  1. 上記の手順で作成したサービス アカウントに必要なロールを追加します。
gcloud projects add-iam-policy-binding abap-sdk-poc\
--member='serviceAccount:abap-sdk-translation-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/cloudtranslate.user'

上のコマンドでは、Google Cloud プロジェクトのテンプレート名として abap-sdk-poc を使用しています。プロジェクト ID に置き換えます。

  1. ロールが追加されたことを確認するには、[IAM] ページに移動します。作成したサービス アカウントが、割り当てられたロールとともに以下のように表示されます。

6af77a519ed3e357.png

6. クライアント キー構成を作成する

Google Cloud 側の前提条件が設定されたので、SAP 側の構成に進みます。

認証と接続関連の構成では、ABAP SDK for Google Cloud はテーブル /GOOG/CLIENT_KEY を使用します。

テーブル /GOOG/CLIENT_KEY の構成を維持するには、次の操作を行います。

  1. SAP GUI で、トランザクション コード SPRO を入力します。
  2. [SAP 参照 IMG] をクリックします。
  3. [ABAP SDK for Google Cloud] > [Basic Settings] > [Configure Client Key] をクリックします。
  4. フィールドに対して次の値を維持します。

フィールド

Google Cloud キー名

TEST_TRANSLATION

Google Cloud サービス アカウント名

abap-sdk-translation-tester@abap-sdk-poc.iam.gserviceaccount.com

Google Cloud のスコープ

https://www.googleapis.com/auth/cloud-platform

プロジェクト ID

abap-sdk-poc

認可クラス

/GOOG/CL_AUTH_GOOGLE

その他のフィールドは空白のままにします。

7. Z レポートを作成して Cloud Translation API V3 を呼び出し、テキストを翻訳する

  1. SAP システムにログインします。
  2. トランザクション コード SE38 に移動し、ZDEMO_TRANSLATE_TEXT. という名前のレポート プログラムを作成します。
  3. 表示されたポップアップで、次のように詳細を入力し、[保存] をクリックします。

6ba124f9187d1fc0.png

次のポップアップで、[ローカル オブジェクト] を選択するか、必要に応じてパッケージ名を指定します。

  1. ABAP エディタで、次のコードを追加します。
DATA lo_translate TYPE REF TO /goog/cl_translation_v3.
DATA ls_input TYPE /goog/cl_translation_v3=>ty_050.

TRY.
    lo_translate = NEW #( iv_key_name = 'TEST_TRANSLATION').

    ls_input = VALUE #(  mime_type = 'text/plain'
                         source_language_code = 'en-US'
                         target_language_code = 'es-ES'
                         contents =  VALUE #( ( |Sun is our nearest star| ) ) ).

    lo_translate->translate_text_projects(
      EXPORTING
        iv_p_projects_id = CONV #( lo_translate->gv_project_id )
        is_input         = ls_input
      IMPORTING
        es_output        =  DATA(ls_output)
        ev_ret_code      =  DATA(lv_ret_code)
        ev_err_text      =  DATA(lv_err_text)
        es_err_resp      =  DATA(lv_err_resp)
    ).
    IF lo_translate->is_success( lv_ret_code ) = abap_true.
      cl_demo_output=>new(
      )->begin_section( 'API Call Successful:'
      )->write_text( 'Translated Text:'
      )->write_data( ls_output-translations[ 1 ]-translated_text
      )->display( ).
    ELSE.
      cl_demo_output=>new(
      )->begin_section( 'API Call Unsuccessful:'
      )->write_text( 'Error Message:'
      )->write_text( lv_err_text
      )->display( ).
    ENDIF.
  CATCH /goog/cx_sdk INTO DATA(lo_sdk_excp).
    DATA(lv_error) = lo_sdk_excp->get_text( ).
    cl_demo_output=>new(
     )->begin_section( 'Exception Occured:'
     )->write_text( lv_error
     )->display( ).
ENDTRY.
  1. レポートを保存して有効にします。
  2. レポートを実行します(F8)。

実行が成功すると、次のようなレポート出力が表示されます。

2dd3bf270d2b1477.png

8. Z レポートを作成して Cloud Translation API V3 を呼び出し、言語を検出します。

  1. SAP システムにログインします。
  2. トランザクション コード SE38 に移動し、ZDEMO_DETECT_LANGUAGE. という名前のレポート プログラムを作成します。
  3. 表示されたポップアップで、次のように詳細を入力し、[保存] をクリックします。

64c2eb0e0173ae51.png

次のポップアップで、[ローカル オブジェクト] を選択するか、必要に応じてパッケージ名を指定します。

  1. ABAP エディタで、次のコードを追加します。
DATA lo_translate TYPE REF TO /goog/cl_translation_v3.
DATA ls_input TYPE /goog/cl_translation_v3=>ty_009.

TRY.
    lo_translate = NEW #( iv_key_name = 'TEST_TRANSLATION').

    ls_input = VALUE #(  mime_type = |text/plain|
                         content =  |La luce viaggia più veloce del suono| ).

    lo_translate->detect_language_projects(
      EXPORTING
        iv_p_projects_id = CONV #( lo_translate->gv_project_id )
        is_input         = ls_input
      IMPORTING
        es_output        =  DATA(ls_output)
        ev_ret_code      =  DATA(lv_ret_code)
        ev_err_text      =  DATA(lv_err_text)
        es_err_resp      =  DATA(lv_err_resp)
    ).
    IF lo_translate->is_success( lv_ret_code ) = abap_true.
      cl_demo_output=>new(
      )->begin_section( 'API Call Successful:'
      )->write_text( 'Detected Language:'
      )->write_data( ls_output-languages[ 1 ]-language_code
      )->display( ).
    ELSE.
      cl_demo_output=>new(
      )->begin_section( 'API Call Unsuccessful:'
      )->write_text( 'Error Message:'
      )->write_text( lv_err_text
      )->display( ).
    ENDIF.
  CATCH /goog/cx_sdk INTO DATA(lo_sdk_excp).
    DATA(lv_error) = lo_sdk_excp->get_text( ).
    cl_demo_output=>new(
     )->begin_section( 'Exception Occured:'
     )->write_text( lv_error
     )->display( ).
ENDTRY.
  1. レポートを保存して有効にします。
  2. レポートを実行します(F8)。

実行が成功すると、次のようなレポート出力が表示されます。

a36e48bded53e62d.png

9. Z レポートを作成して GET_SUPPORTED_LANGUAGES メソッドを呼び出す

  1. SAP システムにログインします。
  2. トランザクション コード SE38 に移動し、ZDEMO_GET_LANGUAGES. という名前のレポート プログラムを作成します。
  3. 表示されたポップアップで、次のように詳細を入力し、[保存] をクリックします。

3819fc355cf2cd4d.png

次のポップアップで、[ローカル オブジェクト] を選択するか、必要に応じてパッケージ名を指定します。

  1. ABAP エディタで、次のコードを追加します。
DATA lo_translate TYPE REF TO /goog/cl_translation_v3.

TRY.
    lo_translate = NEW #( iv_key_name = 'TEST_TRANSLATION').

    lo_translate->get_supported_languages_pro(
      EXPORTING
        iv_q_displaylanguagecode = 'en-US'
        iv_p_projects_id         =  CONV #( lo_translate->gv_project_id )
      IMPORTING
        es_output        =  DATA(ls_output)
        ev_ret_code      =  DATA(lv_ret_code)
        ev_err_text      =  DATA(lv_err_text)
        es_err_resp      =  DATA(lv_err_resp)
    ).

    IF lo_translate->is_success( lv_ret_code ) = abap_true.
      cl_demo_output=>new(
      )->begin_section( 'API Call Successful:'
      )->write_text( 'Supported Languages:'
      )->write_data( ls_output-languages
      )->display( ).
    ELSE.
      cl_demo_output=>new(
      )->begin_section( 'API Call Unsuccessful:'
      )->write_text( 'Error Message:'
      )->write_text( lv_err_text
      )->display( ).
    ENDIF.
  CATCH /goog/cx_sdk INTO DATA(lo_sdk_excp).
    DATA(lv_error) = lo_sdk_excp->get_text( ).
    cl_demo_output=>new(
     )->begin_section( 'Exception Occured:'
     )->write_text( lv_error
     )->display( ).
ENDTRY.
  1. レポートを保存して有効にします。
  2. レポートを実行します(F8)。

実行が成功すると、次のようなレポート出力が表示されます。

78199926919e7801.png

10.完了

これで、これで、「ABAP SDK for Google Cloud で Translation API を使用する」Codelab は終了です。

Cloud Translation API V3(Cloud Translation API Advanced)には、次のような多くの機能があります。

  • カスタムモデルを使用した翻訳
  • 用語集を使用して翻訳する
  • 文字変換のサポート
  • Document Translation

次の Codelab に進んで、ABAP SDK for Google Cloud を使用してさまざまな Google Cloud サービスにアクセスする方法の学習を続けましょう。

  • Pub/Sub にイベントを送信する
  • Cloud Pub/Sub からイベントを受信する
  • チャンキングを使用して大きなオブジェクトを Cloud Storage バケットにアップロードする
  • DLP API を使用して PII を除去する
  • ABAP から BigQuery ML を呼び出す

11. クリーンアップ

ABAP SDK for Google Cloud に関連する追加の Codelabs を続行しない場合は、クリーンアップに進んでください。

プロジェクトの削除

  • Google Cloud プロジェクトを削除します。
gcloud projects delete abap-sdk-poc

個々のリソースを削除する

  1. コンピューティング インスタンスを削除します。
gcloud compute instances delete abap-trial-docker
  1. ファイアウォール ルールを削除します。
gcloud compute firewall-rules delete sapmachine
  1. サービス アカウントを削除します。
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com