はじめに
こんにちは! Web系転職を目指して学習中のYuyaです。
Google Cloud Translation APIを使用して英文を翻訳する方法について解説します。
Google Cloud Translation APIは数種類のアーキテクチャや言語をサポートしていますが、今回はその中でもREST APIを使用した方法について解説します。
エディションを選択する
Google Cloud Translationには2つのエディションが用意されています。
Cloud Translation - Basic(v2)
シンプルなモデル。料金は低め。
Cloud Translation - Advanced (v3)
特定の業界やドメイン向けに翻訳モデルをカスタマイズしたりできる。料金は高め。
本記事はCloud Translation - Basic(v2)を使用します。
Google Cloud Translation APIを有効にする
セットアップを行います。詳細は公式ドキュメントを参考にしてください。
- Google Cloud のコンソールからプロジェクトを作成します
- プロジェクトのコンソール画面から左側のナビゲーションメニューを表示させ、「APIとサービス」をクリックします
- 左側の「有効なAPIとサービス」をクリックし、「APIとサービスを有効にする」をクリックします
- 検索欄に「Cloud Translation API」と入力し検索します。表示された「Cloud Translation API」をクリックし、「有効にする」をクリックします
- 有効なサービスとAPIに「Cloud Translation API」が表示されていればOKです
APIキーを生成する
- プロジェクトのコンソール画面から左側のナビゲーションメニューを表示させ、「APIとサービス」をクリックします
- 左側の「認証情報」をクリックし、「認証情報を作成する」をクリックし、さらに「APIキー」をクリックします
- APIの作成が完了したら、表示された文字列をコピーしておきます
APIキーは絶対に外部に公開しないようにしてください。
Githubなどを通してうっかり外部に公開してしまい、悪用されてしまう事例があります。
必要に応じて、APIキーに制限をかけておくことをお勧めします。
APIを呼び出す
リクエストデータ用のJSONファイルを作成し、適当なディレクトリに保存します。
{
"q": "test phrase",
"source": "en",
"target": "ja",
"format": "text"
}
"q": 翻訳したい文章
"source": 翻訳元の言語
"target": 翻訳先の言語
"format": 翻訳元のテキストの形式。他にもhtmlなどを指定できます
カレントディレクトリを保存先のディレクトリに移動し、APIを呼び出します。
curlでAPIを叩く
curl -X POST \
-H "X-goog-api-key: [API_KEY]" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://translation.googleapis.com/language/translate/v2"
[API_KEY]の箇所に先ほど保存したAPIキーを入力してください。
次のようにレスポンスがあれば成功です。
{
"data": {
"translations": [
{
"translatedText": "テストフレーズ"
}
]
}
}
JavaScriptのfetchでAPIを叩く
try {
const response = await fetch('https://translation.googleapis.com/language/translate/v2', {
method: 'POST',
headers: {
'Content-Type': 'application/json; charset=utf-8',
'X-goog-api-key': '[API_KEY]'
},
body: JSON.stringify(requestData)
});
const responseData = await response.json();
return responseData.data.translations[0].translatedText;
} catch (error) {
console.error("Error", error);
return "";
}
最後に
記事について間違いや質問があれば教えてください!
最後まで読んでいただき、ありがとうございました。