Googleが提供しているCloud Translation APIをJavaで使ってみました。
APIには、BasicとAdvancedがありますが、こちらの記事はBasicの方を扱います。
Cloud Translation APIとは
テキストを翻訳するAPIです。
翻訳には、Googleの事前トレーニング済みカスタムモデル、
または翻訳に特化した大規模言語モデル(LLM)が使用されます。
APIには、「Basic」と「Advanced」の2つのエディションがあります。
Basicでも翻訳は可能ですが、Advancedではさらに機能の追加がされています。
機能の違いは公式ドキュメントの⧉Basic と Advanced の比較をご覧ください。
APIの利用料金は、どちらも 500,000文字/月まで無料です。
料金の詳細は公式ドキュメントの
⧉Google AI でドキュメント、音声、動画をリアルタイムで翻訳できます
をご覧ください。
1. Cloud Translation APIを使用するための準備
設定は下記から行います。
⧉Google クラウド プラットフォーム
やることは大きく分けて下記の3つです。
1.GCPプロジェクトの作成
2.Cloud Translation APIの有効化
3.プログラムで使用するキーの取得
3.は、サービスアカウントかOAuth2.0かAPIキーを利用する3つの方法があります。
1.1. プロジェクトの作成
まずはGCPでプロジェクトを作成します。
詳細はこちらの記事を参照ください
⧉[Google Sheets API] Google Sheets API v4をJavaで操作する(1.1. プロジェクトの作成)
1.2. Cloud Translation APIの設定
Cloud Translation APIを使えるようにします。
1. メニューの 「APIとサービス」 -> 「ライブラリ」 を選択します。
2. translationと入力して「Cloud Translation API」を検索します。
3. 「有効にする」ボタンを押して「Cloud Translation API」を使用可能にします。
1.3. APIを使用するためのキー取得
プログラムからAPIを実行するための準備を行います。
サービスアカウント、OAuth2.0、APIキーを利用する3つの方法があります。
1.3.1. サービス アカウント
同じ内容を下記の記事に掲載してますので、下記の記事を参照ください。
⧉[Google Sheets API] Google Sheets API v4をJavaで操作する(1.3. Googleサービスアカウントの作成)
1.3.2. OAuth2.0 クライアントID
同じ内容を下記の記事に掲載してますので、下記の記事を参照ください。
⧉[Google Drive API v3] JavaでDrive APIを使う(1.3.2. OAuth2.0 クライアントID)
1.3.3. APIキー
APIを操作するためにAPIキーを取得します。
「APIとサービス」 -> 「認証情報」 を選択すると以下の画面が表示されます。
APIキーが作成されますので、「自分のAPIキー」の値を保持してください。
この値をプログラムで指定します。
2. Cloud Translation APIを使ってみる
2.1. googleライブラリの読み込み
Cloud Translation APIを使用するためにライブラリのパスを設定します。
私の環境はpom.xmlで下記を指定しています。
Javaのバージョンは21を使用しています。
<dependencies>
<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client</artifactId>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-translate</artifactId>
</dependency>
<!-- OAuth2.0で認証を行う場合のみ使用します -->
<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client-jetty</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>libraries-bom</artifactId>
<version>26.34.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.2. Translateインスタンスを取得
2.2.1. サービスアカウントを利用する場合
コード中の「JSONファイルのパス」は、
⧉[Google Sheets API] Google Sheets API v4をJavaで操作する(1.3. Googleサービスアカウントの作成)
で取得したJSONファイルのパスを指定してください。
コード中の「スコープ」は、
実行するAPIによって異なるので適時に変更してください。
private static Translate getTranslate() throws Exception {
HttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
GsonFactory jsonFactory = GsonFactory.getDefaultInstance();
try(InputStream input = new FileInputStream("JSONファイルのパス")){
GoogleCredentials credentials = GoogleCredentials
.fromStream(input)
.createScoped(Arrays.asList("スコープ"));
return new Translate(transport, jsonFactory, new HttpCredentialsAdapter(credentials));
}
}
2.2.2. OAuth 2.0 クライアントIDを利用する場合
コード中の「JSONファイルのパス」は、
⧉[Google Drive API v3] JavaでDrive APIを使う(1.3.2.1 認証情報の作成)
で取得したJSONファイルのパスを指定してください。
コード中の「認証情報を保存するフォルダパス」は、
認証情報が保存されるフォルダのパスを指定してください。
このコードを実行するとOAuth同意画面が表示されます。
ユーザーが同意をすると認証情報を保存するフォルダにファイルが生成されます。
このファイルが存在した場合は、再度実行してもOAuth同意画面は表示されません。
コード中の「スコープ」は、
実行するAPIによって異なるので適時に変更してください。
途中でスコープを変更した場合は再度のOAuth同意が必要になるので
「認証情報を保存するフォルダパス」にあるファイルを削除するか、パスを変えてください。
private static Translate getTranslate() throws Exception {
HttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
GsonFactory jsonFactory = GsonFactory.getDefaultInstance();
try(Reader reader = new InputStreamReader(new FileInputStream("JSONファイルのパス"))){
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(jsonFactory,reader);
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
transport, jsonFactory, clientSecrets,
Arrays.asList("スコープ"))
.setDataStoreFactory(new FileDataStoreFactory(new java.io.File("認証情報を保存するフォルダパス")))
.build();
LocalServerReceiver receiver = new LocalServerReceiver.Builder().build();
Credential credential = new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");
return new Translate.Builder(transport, GsonFactory.getDefaultInstance(), credential).build();
}
}
2.2.3. APIキーを利用する場合
コード中の「APIキー」は、
1.3. APIを使用するためのキー取得(1.3.3. APIキー)
で取得したAPIキーを指定してください。
private static Translate getTranslate() throws Exception {
HttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
GsonFactory jsonFactory = GsonFactory.getDefaultInstance();
TranslateRequestInitializer key = new TranslateRequestInitializer("APIキー");
return new Translate.Builder(transport, jsonFactory, null)
.setGoogleClientRequestInitializer(key).build();
}
2.3. プログラムの実行
プログラムを動かします。
サンプルでは、翻訳がサポートされている言語のリストを取得しています。
public static void main(String[] args) throws Exception{
Translate translate = getTranslate();
Translate.Languages languages = translate.languages();
Translate.Languages.List list = languages.list();
LanguagesListResponse res = list.execute();
System.out.println(res);
}
3. いろいろとAPIを叩いてみる
いろいろなAPIを叩いてみます。
3.1. v2.detect
メソッド | 概要 | 記事 |
---|---|---|
list | テキストを翻訳 | ⧉[Cloud Translation Basic API(V2)] Javaでテキストを翻訳する |
detect | テキストに使われている言語を取得 | ⧉[Cloud Translation Basic API(V2)] Javaでテキストに使用されている言語を検出する |
3.2. v2.languages
メソッド | 概要 | 記事 |
---|---|---|
list | 翻訳がサポートされている言語のリストを取得 | ⧉[Cloud Translation Basic API(V2)] Javaで翻訳がサポートされている言語のリストを取得する |
おしまい。。