Power Automate (クラウド フロー) からの DeepL API 使用方法

#はじめに
翻訳処理を自動化したいケースがいくつかあると思いますが、この時に、DeepL のサイトや Google 翻訳のサイトを介した GUI 操作で実行するより、API を利用する方が安定性や速度の面でメリットがあります。

この記事では、Power Automate のクラウド フローから、DeepL API を使用して翻訳の自動化を行う方法を記載しています。

#DeepL API の利用方法
ここでは、DeepL API の概要と DeepL API の利用方法を記載します。

##DeepL について
DeepL は、ニューラルネットワークを用いた高品質の訳文を作り出す機械翻訳システムです。

https://www.deepl.com/translator

##DeepL API について
DeepL では、開発者向けに API を使用した翻訳機能を提供しています。
今回の記事では、この DeepL API を使用するために、無料の DeepL API Free のアカウントを作成し、Power Automate から使用します。

DeepL API Free は、開発者向けプランで、1 か月に 50 万文字まで無料で翻訳できます。
DeepL API Free は、DeepL の REST API を自身の製品やプラットフォームに統合したいと考える方や開発者のためのプランです。

API が使用可能な開発者プランには、他に有償の DeepL API Pro があり、以下の特徴やメリットがあります。
・万全のセキュリティ対策（テキストは翻訳後すぐに削除）
・1か月に翻訳できる文字数に制限なし
・翻訳リクエストを優先的に処理
・1か月の基本料金630円 + 利用文字数分の料金（1文字あたり0.0025円）

DeepL API Free と 詳細については、下記公開情報をご確認ください。

https://support.deepl.com/hc/ja/articles/360021183620-DeepL-API-Free%E3%81%A8DeepL-API-Pro



###DeepL API Free のアカウントの取得方法について

[DeepL のサイト](https://www.deepl.com/pro#developer) にアクセスし、開発者向けタブから [無料で登録する] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/9a5d0927-aa16-fcdd-687a-bd934a00ab13.png)

[メールアドレス] と [パスワード] を入力し、[続行] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/cd6fd5fe-5d64-1106-0a28-2fca5c8769b2.png)


[氏名] と [住所] と [本人確認用のクレジットカード情報] を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/5f3e3d91-547d-32c1-5307-9cfafdbb532a.png)
※クレジットカードの情報の入力が必要となるのは、不正利用防止のためで、任意操作で Pro にアップグレードしない限りは課金は発生しないとのことです。

アカウントが作成されると、アカウントページにアクセス可能となり、API 利用の認証キーが利用可能となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/e4b00e39-38a7-a8be-f343-e8bd99c85c38.png)

以上で事前準備が完了しました。

この記事で使用する DeepL API Free のリファレンスは、以下から確認することができます。

https://www.deepl.com/docs-api

#Power Automate (クラウド フロー) からの DeepL API の利用方法

Web ブラウザーから、コネクタを使ってクラウドサービスなど API を使用してを連携するのが、Power Automate のクラウド フローです。
ここでは、クラウド フローから、DeepL API を利用する方法を記載します。

今回作成するフローの全体像は以下の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/302b650a-2ec4-f21a-c949-98e9478ad062.png)


それぞれの設定を確認していきます。
##1. トリガー (翻訳するキーワードの入力)

このクラウド フローの起点となるアクションです。

[+ 作成] から、[インスタント クラウド フロー] を選択します。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/3f0224a0-809d-cf08-ab40-86a9f3c590c3.png)

作成画面が表示されたら [手動でフローをトリガーします] を選択し、[作成] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/20af2247-2467-1656-7d62-565e0b344247.png)

[手動でフローをトリガーします] をクリックし、[入力の追加] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/074fbb39-8e50-02a0-a5b6-47dabf5c5bbc.png)

入力の種類で [テキスト] を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/46361a0c-8ccd-c3da-508a-76992a04dc7d.png)

入力のタイトルを "翻訳(英語)" と入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/c2332935-8e8f-f970-e672-6e1d322bdd45.png)

以上で、トリガーとなるアクションの設定は完了です。


##2. DeepL API の利用

DeepL API を利用するには、HTTP アクションから REST API を呼び出します。

[HTTP コネクタ] を検索します。(HTTP コネクタは、Premium コネクタです)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/4419f70d-bcf2-ce4d-073d-0d7b773d7e16.png)

[HTTP アクション] を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/41c8e220-09c3-a808-32df-914bb3ca89a9.png)

[HTTP アクション] が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/da3450dd-7b02-34ed-7616-eef833695daf.png)
各パラメータを以下の通り設定します

HTTP アクションには以下のパラメータが設定します。
auth_key には、DeepL のAPI 認証キーを設定します。


| プロパティ| パラメータ | パラメータ2 |
|:-----------|------------|------------|
| 方法     | POST        | |
| URI| https://api-free.deepl.com/v2/translate      | |
| ヘッダー| Content-type| application/x-www-form-urlencoded|
| 本文| auth_key="DeepL の API キー"&text=[翻訳英語]&target_lang=JA| |
| 認証| なし       | |

設定後のイメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/7815dc11-6f01-7225-84b6-5dd59f69cc32.png)


##3. JSON の解析
DeepL API による翻訳の結果 (API のレスポンス) は、以下のような JSON 形式で返ってきます。

```JSON
{
	"translations": [
		{
			"detected_source_language": "EN",
			"text": "Hallo, Welt!"
		}
	]
}
```

シンプルな JSON だと思うのですが、ここでは "JSON の解析" アクションを使用し、あとのアクションで少し使いやすくします

[JSON の解析] アクションを検索します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/84db2c28-5b16-a609-9222-89303db9023c.png)

[サンプルから生成] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/ae451b03-e0c6-dfbb-5882-6d4a7dbd1bf2.png)


[サンプル JSON ペイロードの挿入] で、上記のサンプルの JSON を貼り付けて、完了をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/ba776f82-9ed6-a52b-d024-b1eb86ed0193.png)

[スキーマ] が設定されたことを確認したら、[コンテンツ] に [HTTP アクション] で取得した [本文] を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/be9a020f-1096-2c8c-e637-bae669a8cea5.png)



##4. モバイルアプリへの通知アクション
翻訳処理を行った結果は、通知アクションで、モバイルアプリに結果を通知します。

[Send me a mobile notification] アクションを検索します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/9e1ee389-cbda-e25d-4199-0977ffefc152.png)

通知するテキストとして、[JSON の解析] の [text] を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/a2cb7d67-5655-8f63-42e4-bce0336e3a88.png)

選択すると [Apply to each] アクションの中に、本アクションが設定されますが、これで完了となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/3eecb220-d586-770f-57f8-3df58e4ecd1b.png)


スマートフォンの Power Automate アプリから、このクラウド フローを実行した結果です。
"Power Automate Desktop August 2021 update" という文章を、翻訳した結果 ("Power Automate Desktop 2021年8月のアップデート") が表示されます。
![DeepL通知.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/43b460b6-9d92-6039-9076-ac193f8d21b3.gif)


#まとめ
DeepL API は、開発者用の Free プランもあり、とても試しやすいです。
また、リクエストも応答もシンプルで、私のような API 初心者でも簡単に使用することができました。
今回は、文字入力したもの翻訳する処理を行いましたが、メールや、他のクラウド サービスから取得した文章の翻訳にも使用できると思いますので、翻訳の自動化に役立つのではないかと思います。