概要
- MicrosoftはAzureというプラットフォームの中で翻訳APIを提供している(制限付き無料)
- Azureのアカウントを作成し、Translator Text APIを有効化する。
- APIキーをゲットし、以下のリクエストを打つ。
(コマンドプロンプト) curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&to=de" -H "Ocp-Apim-Subscription-Key: (APIキーをここに貼り付け)" -H "Ocp-Apim-Subscription-Region: australiaeast" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}]" (PowerShell) Invoke-WebRequest ` -Method POST ` -Headers @{ "Ocp-Apim-Subscription-Key" = "(APIキーをここに貼り付け)" ; "Ocp-Apim-Subscription-Region" = "australiaeast"} ` -ContentType: "application/json; charset=UTF-8" ` -Body '[{"Text":"Hello, what is your name?"}]' ` -Uri "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&to=de" | Select-Object -Expand Content
返ってくるデータはこちら。
[{"detectedLanguage":{"language":"en","score":1.0},"translations":[{"text":"Hallo, wie heißt du?","to":"de"}]}]
Googleより数倍分かりやすい。
解説
アカウント作成
Microsoftアカウントを作った後にAzureのアカウントを作る。Microsoftアカウント作成はここでは割愛。
「Azure」で検索してそれっぽいLPにたどり着けば「無料で始める」というボタンがあるはずなのでそれをクリック。(LPなのでデザインはコロコロ変わるだろうし画像は省略)
個人情報登録。名前・メールアドレス・電話番号。クレジットカード情報。規約同意。数ステップでできた。
ログインしてからTranslator Text APIを有効にするまで
以下画像で説明。
初回ログイン時はどうもクイックスタートセンターとか言うところに飛ばされるみたいなので、Homeに移動。

「リソース作成」をクリック。

検索ボックスに「Translator Text」と入力すると目的の翻訳APIが出てくる。

Createをクリック。

次に詳細を入力。
- リソースグループとは、他のAPIとかとまとめて、一括で設定したり一括で請求されたり。
- 地域は自動で選択されてる(日本からだったらAustralia East)けど、ここでGlobal以外を選択したら、HTTPリクエストに地域指定を含めないといけない。ま、含めればいいんだけど。
- 名前は適当に。
- 料金体系もここでセットできる。2百万文字までなら無料。
入力が終わったらReview + createをクリック。

ちょっと待ったら認証されるので、改めてCreateをクリック。

またちょっと待つと「できたよ」みたいなことを言われるので、Go to resourceをクリック。

できてからすぐ行くと反映されてないっぽいけど、しばらく待つとTranslator Text APIのリソースが作られる。

後はAPIキーの取り方とか、クイックスタート的なものが表示されるのでそれに従う。APIキーは丸で囲んだページで取得できるみたい。APIキーは30文字程度。

リクエストについての詳細
Googleと違ってAzureではGETメソッドは受け付けてないみたい。無理矢理クエリパラメーター作ってGETで投げたら「そのメソッドは受け付けてません」って言われた。
なのでこれ↓がおそらく最低限のリクエストだと思われる。
(コマンドプロンプト) curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&to=de" -H "Ocp-Apim-Subscription-Key: (APIキーをここに貼り付け)" -H "Ocp-Apim-Subscription-Region: australiaeast" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}]" (PowerShell) Invoke-WebRequest ` -Method POST ` -Headers @{ "Ocp-Apim-Subscription-Key" = "(APIキーをここに貼り付け)" ; "Ocp-Apim-Subscription-Region" = "australiaeast"} ` -ContentType: "application/json; charset=UTF-8" ` -Body '[{"Text":"Hello, what is your name?"}]' ` -Uri "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&to=de" | Select-Object -Expand Content
必要そうなクエリパラメーター
to
・・・ (必須)何語に翻訳するのかfrom
・・・ 何語から翻訳するのか
必要なヘッダー
Ocp-Apim-Subscription-Key
・・・ (必須)APIキーOcp-Apim-Subscription-Region
・・・ Translator Text APIを有効化するときの地域を選んだ場合は必須Content-Type
・・・ (必須)application/json; charset=UTF-8
のみ受け付けContent-Length
・・・ ドキュメントには必須って書いてあるけどいらんのちゃう?
リクエストボディについて(JSON形式)
[ { "Text" : "Hello, what is your name?" } ]
配列の中のオブジェクトは100個まで含められるけど、全体の文字数は1度にスペースを含めて5000文字までにする。
まあ複数の翻訳が欲しけりゃ複数回リクエスト投げればいいんだけど。
参考
Translator Text API V3.0 Reference – Azure Cognitive Services | Microsoft Docs
Translator Text API Translate Method – Azure Cognitive Services | Microsoft Docs
おまけ
調べるついでに分かったPowerShellの基本的なこと。
HtTPリクエストのヘッダーの複数指定
ハッシュテーブルを作って設定してやる。形式は以下。
@{ "キー名" = "値" "キー名" = "値" "キー名" = "値" }
または
@{ "キー名" = "値"; "キー名" = "値"; "キー名" = "値" }