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 システムにアクセスできることを確認します。
- 新しいシステムをセットアップするには、Codelab「Google Cloud Platform に ABAP Platform Trial をインストールして ABAP SDK をインストールする」をご覧ください。
作成するアプリの概要
ABAP SDK for Google Cloud を使用して、SAP システムに次のプログラムを作成します。
- Google の Cloud Translation API V3 を使用してテキストを複数の言語に翻訳する
- Google Cloud Translation API V3 を使用してソーステキストの言語を検出する
- Google Cloud Translation API V3 でサポートされている言語を一覧表示する
2. 要件
- ブラウザ(Chrome、Firefox など)
- 課金が有効になっている Google Cloud プロジェクト、または Google Cloud Platform の90 日間の無料トライアル アカウントを作成します。
- システムにインストールされている SAP GUI(Windows または Java)。SAP GUI がマシンにすでにインストールされている場合は、VM の外部 IP アドレスをアプリケーション サーバー IP として使用して SAP に接続します。Mac を使用している場合は、こちらのリンクから SAP GUI for Java をインストールすることもできます。
3. 始める前に
- ABAP SDK for Google Cloud がインストールされた SAP システムにアクセスできることを確認します。
- 新しいシステムをセットアップするには、Codelab「Google Cloud Platform に ABAP Platform Trial をインストールして ABAP SDK をインストールする」をご覧ください。
- Google Cloud コンソールのプロジェクト セレクタページで、Google Cloud プロジェクトを選択または作成します(例:
abap-sdk-poc).
- Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。90 日間の無料試用アカウントを使用している場合は、この手順をスキップしてください。
- Google Cloud 上で動作するコマンドライン環境の Cloud Shell を使用します。Cloud コンソールで、右上にある [Cloud Shell をアクティブにする] をクリックします。
- 次のコマンドを実行してアカウントの認証を行い、デフォルトのプロジェクトを
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 を有効にする
- Cloud Shell で次のコマンドを実行すると、Google Cloud プロジェクトで Cloud Translation API が有効になります。
gcloud services enable translate.googleapis.com
実行が成功すると、次のようなメッセージが表示されます。
Google Cloud プロジェクトで Cloud Translation API が有効になっているはずです。
5. Cloud Translation ユーザーのロールを付与したサービス アカウントを作成する
必要なロールを持つサービス アカウントを作成するには、次の操作を行います。
- Cloud Shell ターミナルで次のコマンドを実行します。
gcloud iam service-accounts create abap-sdk-translation-tester \
--display-name="Service Account for Translation"
- 上記の手順で作成したサービス アカウントに必要なロールを追加します。
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 に置き換えます。
- ロールが追加されたことを確認するには、[IAM] ページに移動します。作成したサービス アカウントが、割り当てられたロールとともに以下のように表示されます。
6. クライアント キー構成を作成する
Google Cloud 側の前提条件が設定されたので、SAP 側の構成に進みます。
認証と接続関連の構成では、ABAP SDK for Google Cloud はテーブル /GOOG/CLIENT_KEY
を使用します。
テーブル /GOOG/CLIENT_KEY
の構成を維持するには、次の操作を行います。
- SAP GUI で、トランザクション コード
SPRO
を入力します。 - [SAP 参照 IMG] をクリックします。
- [ABAP SDK for Google Cloud] > [Basic Settings] > [Configure Client Key] をクリックします。
- フィールドに対して次の値を維持します。
フィールド | 値 |
Google Cloud キー名 | TEST_TRANSLATION |
Google Cloud サービス アカウント名 |
|
Google Cloud のスコープ |
|
プロジェクト ID | abap-sdk-poc |
認可クラス |
|
その他のフィールドは空白のままにします。
7. Z レポートを作成して Cloud Translation API V3 を呼び出し、テキストを翻訳する
- SAP システムにログインします。
- トランザクション コード
SE38
に移動し、ZDEMO_TRANSLATE_TEXT.
という名前のレポート プログラムを作成します。 - 表示されたポップアップで、次のように詳細を入力し、[保存] をクリックします。
次のポップアップで、[ローカル オブジェクト] を選択するか、必要に応じてパッケージ名を指定します。
- 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.
- レポートを保存して有効にします。
- レポートを実行します(F8)。
実行が成功すると、次のようなレポート出力が表示されます。
8. Z レポートを作成して Cloud Translation API V3 を呼び出し、言語を検出します。
- SAP システムにログインします。
- トランザクション コード
SE38
に移動し、ZDEMO_DETECT_LANGUAGE.
という名前のレポート プログラムを作成します。 - 表示されたポップアップで、次のように詳細を入力し、[保存] をクリックします。
次のポップアップで、[ローカル オブジェクト] を選択するか、必要に応じてパッケージ名を指定します。
- 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.
- レポートを保存して有効にします。
- レポートを実行します(F8)。
実行が成功すると、次のようなレポート出力が表示されます。
9. Z レポートを作成して GET_SUPPORTED_LANGUAGES メソッドを呼び出す
- SAP システムにログインします。
- トランザクション コード
SE38
に移動し、ZDEMO_GET_LANGUAGES.
という名前のレポート プログラムを作成します。 - 表示されたポップアップで、次のように詳細を入力し、[保存] をクリックします。
次のポップアップで、[ローカル オブジェクト] を選択するか、必要に応じてパッケージ名を指定します。
- 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.
- レポートを保存して有効にします。
- レポートを実行します(F8)。
実行が成功すると、次のようなレポート出力が表示されます。
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
個々のリソースを削除する
- コンピューティング インスタンスを削除します。
gcloud compute instances delete abap-trial-docker
- ファイアウォール ルールを削除します。
gcloud compute firewall-rules delete sapmachine
- サービス アカウントを削除します。
gcloud iam service-accounts delete \
abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com