連載
» 2017年05月16日 05時00分 公開

Dev Basics/Keyword:Google Translate API

Translate APIは、グーグルが提供するREST形式の翻訳API。APIに渡した文字列がどの言語で記述されたものかを検出したり、翻訳したりできる。

[かわさきしんじ,Insider.NET編集部]
「Dev Basics/Keyword」のインデックス

連載目次

 Google Translate API(Google翻訳APIとも。以下、Translate API)は、グーグルが提供するREST形式の翻訳API。APIに渡した文字列がどの言語で記述されたものかを検出したり、翻訳したりできる。なお、ドキュメントでは「Google Translate API」「Google Cloud Translation API」など、さまざまな表記が見られるが本稿では単に「Translate API」と表記する。

Translate APIの特徴

 Translate APIはプレーンテキストあるいはHTMLドキュメントを渡すことで、そこに含まれているテキスト列の言語を検出したり、ターゲットに指定した言語に翻訳したりできる。APIとしては次の3つが提供されている。

  • language.detections.list: 与えたテキストの言語を検出
  • language.languages.list: Translate APIがサポートしている言語の一覧を取得
  • language.translations.list: 与えたテキストを、指定された言語に翻訳

 Translate APIではこうしたサービスを比較的安価に利用できる。料金についてはTranslate APIページの「GOOGLE TRANSLATE API の料金」を参照されたい。「100万文字で20ドル」とあるが、本フォーラムの長めの記事の場合、(本文のみの)テキスト量でおおよそ数千文字から2万文字程度であることを考えると、これはかなりの低価格だといえる。

 Google Cloud Vision APIと同様に、このAPIを試してみるにはグーグルのAPIs Explorerを使用するのが簡単だ。

APIs ExplorerでTranslate APIが提供するAPIを一覧したところ APIs ExplorerでTranslate APIが提供するAPIを一覧したところ

 一番下にある[language.translations.list]をクリックすると、次のような画面が表示される。この画面で赤い文字で表示されている2つのフィールド(「q」と「target」)に入力をして、[Execute]ボタンをクリックすれば、翻訳が行われ、その結果が表示される。

APIs ExplorerでTranslate APIを使って翻訳する APIs ExplorerでTranslate APIを使って翻訳する

 [q]ボックスにある[add more]をクリックすると、テキストボックスが増えて、さらにテキストを入力できるようになる。以下の画面では、翻訳対象の文字列として、本稿の上の段落にある「Translate APIはプレーンテキストあるいはHTMLドキュメントを渡すことで、そこに含まれているテキスト列の言語を検出したり、ターゲットに指定した言語に翻訳したりできる」という一文を入力して、英語(en)に翻訳をするように指定をしている。

翻訳対象の文字列と、ターゲット言語を指定 翻訳対象の文字列と、ターゲット言語を指定

 [Execute]ボタンをクリックして表示された翻訳結果を以下に示す。

翻訳結果 翻訳結果

 [Request]欄には、翻訳を行う際に発行されたリクエスト(URI)が表示されている。[Response]欄には翻訳結果が表示されている。翻訳結果は「By passing the plain text or HTML document, the Translate API can detect the language of the text string contained in it or translate it into the language specified as the target」となっていて、自然な英語に翻訳できているようだ(筆者の主観)。翻訳元の言語は特に指定しなかったが、ここでは日本語であることが自動的に検出されたことが分かる(翻訳結果のdetectedSourceLanguageプロパティを参照)。

 ちなみに翻訳元の言語を指定するには、[source]ボックスで言語を指定する。HTMLドキュメントを渡す場合には、上の[format]ボックスで[html]を指定する。[fields]ボックスでは返送される結果から必要なフィールドを選択できる。[cid]ボックスには「翻訳のカスタマイズID」を指定することになるが、このAPIのリファレンスには特に記述がないので、本稿では取り上げない。

 次にこれをプログラムから利用してみよう。ただし、プログラムからTranslate APIを使用するには、プロジェクトの作成、課金設定、認証情報の構成などを「クイックスタート」ページを参考に行っておく必要がある。以下ではこれらの設定を行ったものとして話を進める。また、以下ではJavaScript(Node.js)を例とする。

Node.jsでREST API呼び出しを行う

 前掲の画像を見ると分かるが、Translate APIを使用するには以下の要素が必要となる。

  • URI: Translate APIが提供するURI
  • q: 翻訳するテキスト
  • target: 翻訳先の言語
  • key: Translate APIを使用するためのAPIキー

 以下のJavaScriptコードはこれらの情報をまとめて、Translate APIを呼び出すものだ。

var request = require('request');

var uri = 'https://www.googleapis.com/language/translate/v2';
var target = 'ja';
var q = 'By passing the plain text or HTML document, ' +
        'the Translate API can detect the language of the text string ' +
        'contained in it or translate it into the language specified ' +
        'as the target';
var key='取得したAPIキー';

var options = {
  uri: `${uri}?q=${q}&target=${target}&key=${key}`
}

request.get(options, (err, res, body) => {
  if (err)
    console.log(`error: ${err}`);
  else
    console.log(body);
});

Translate APIを呼び出すJavaScriptコード

 このコードでは、Node.jsのrequestパッケージを使用して、Translate APIを呼び出しているだけなので、特に説明の必要はないだろう。ここでは、先ほどの例で英訳したテキストを今度は翻訳元のテキストとしている(変数q)。また、URIにはTranslate APIのURIを(変数uri)、ターゲット言語には日本語(ja)を指定している(変数target)。APIキー(変数key)については、Google Cloud Consoleで作成したものを利用している。

 なお、APIキーを使用する場合には、「API キーを安全に使用するためのベスト プラクティス」ページなどを参考にして、安全にこれを利用する必要がある。APIキーが漏れると、他者がこれを利用することで自分の課金アカウントに多額の課金されることになるかもしれない(APIキーに制約を与える、APIキーをコード内に保存しないなどが原則となる。つまり、上のコードはあまりよろしくない例となる)。

APIキーにIPアドレスによる制約を与えたところ APIキーにIPアドレスによる制約を与えたところ

 実行結果を以下に示す。

> node translatetest.js
{
  "data": {
    "translations": [
      {
        "translatedText": "プレーンテキストまたはHTMLドキュメントを渡すことによ
り、Translate APIは、それに含まれるテキスト文字列の言語を検出したり、ターゲット
として指定された言語に翻訳したりすることができます",
        "detectedSourceLanguage": "en"
      }
    ]
  }
}


実行結果

 英語のテキストがきれいな日本語に翻訳できていることと、翻訳元のテキストが英語であることが返送されていることが分かる。

Translate API用のパッケージを使用した呼び出し

 上の例ではREST APIをそのまま呼び出していたが、これをラップするフレームワーク/ライブラリもさまざまな言語に向けて用意されている。以下ではNPMパッケージの「@google-cloud/translate」を利用して、上と同様の処理を行う。ただし、認証については、JSON形式のサービスアカウントキーを生成し、これをGOOGLE_APPLICATION_CREDENTIALS環境変数から参照するようにしている。この詳細については「クイックスタート」ページおよび「Cloud API サービスに対する認証」などを参照されたい。

 実際のコードは次のようになる。

var Translate = require('@google-cloud/translate');
var projectId = 'Translate APIを使用するプロジェクトのプロジェクトID';

var translateClient = Translate({
  projectId: projectId
});

var q = 'By passing the plain text or HTML document, ' +
        'the Translate API can detect the language of the text string ' +
        'contained in it or translate it into the language specified ' +
        'as the target';
var target = 'ja';

translateClient.translate(q, target)
  .then(result => console.log(result[0]))
  .catch(err => console.log(err));

@google-cloud/translateパッケージを利用したコードの例

 変数projectIdに渡している「Translate APIを使用するプロジェクトのプロジェクトID」というのは、Google Cloud Console上で作成し、Translate APIを利用するように設定を行ったプロジェクトのIDのことで、これはGoogle Cloud Consoleの[リソースの管理]画面などから知ることができる。

[リソースの管理]画面 [リソースの管理]画面

 後は翻訳元のテキストと、ターゲット言語を設定し、Translate APIが提供するtranslateメソッドを呼び出すだけである。以下に実行結果を示す。

> node translatetest2.js
プレーンテキストまたはHTMLドキュメントを渡すことにより、Translate APIは、それに
含まれるテキスト文字列の言語を検出したり、ターゲットとして指定された言語に翻訳し
たりすることができます


実行結果

 このように、Translate APIでは翻訳元のテキストとターゲット言語を指定するだけで、とても簡単にテキストの翻訳を行える。単体のAPIでも十分に便利だが、複数のAPIを組み合わせることで、さらに高度な処理が行える。例えば、音声認識を行うGoogle Cloud Speech APIと連携させることで、人が発話した音声をテキストに変換し、それを任意の言語に翻訳するといったことが可能になる。こうした高度な処理をクラウドベースで行えるのが、Google Cloud Platformに限らず、多くのクラウドベースのAIサービスのメリットといえるだろう。


 Translate APIは、グーグルが提供するREST形式の翻訳API。APIに渡した文字列がどの言語で記述されたものかを検出したり、翻訳したりできる。他のAPIと組み合わせることで、より高度で本格的な処理を実現できる。

参考資料


「Dev Basics/Keyword」のインデックス

Dev Basics/Keyword

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。