DeepL APIを利用した翻訳ハンズオン

#　はじめに
前回に引き続き『APIって、どんな動きをしているの？』と構築を交えながらAPIについて学習していきたいと思いたち自分自身の2番煎じ投稿です。下記参考資料を読みながら手を動かしてAPIを構築しました

#　参考資料
参考リンクにはAPIのHTTPリクエスト・レスポンスなどの記述の方法などの説明があり、API分からなかったコチラを読めばOKかと
どちらもハンズオンを進める中で大変理解が捗りました

[__APIの仕組みが分かる・使いこなせる人材になれる記事（Pythonコード付き）__](https://qiita.com/Saku731/items/6ae290f72e98723f165d)
[__HTTPとPOSTとGET__](https://qiita.com/Sekky0905/items/dff3d0da059d6f5bfabf)
[__YahooAPIを利用した天気予報ハンズオン__](
https://qiita.com/i3no29/items/304328c641ab0dc8f041)


#　構成図
![スクリーンショット 2021-11-27 16.21.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694365/ae7476f8-aba8-cf32-4965-e111cacc9b97.png)


#　ハンズオン
## 0：「[DeepL](https://www.deepl.com/pro-api?cta=header-pro-api)」でアプリケーションIDを発行する
無料で登録するを押下する
![スクリーンショット 2021-11-27 15.01.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694365/e1e53aa1-60c1-e150-fc63-c1841603fdd0.png)

今回はAPIの学習なので無料版を選択する
![スクリーンショット 2021-11-27 16.27.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694365/059536ea-666b-ff8b-7d12-34f77fa212c1.png)

アカウント情報の入力
![スクリーンショット 2021-11-27 15.03.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694365/eeedb8fb-98f5-1a61-94cd-f9281d0fbebc.png)

丁寧に[Simulator](https://www.deepl.com/docs-api/simulator/)もあるので挙動を確認することができます
こちらでAPIでGETする際のURLが簡単に確認できます

![スクリーンショット 2021-11-27 15.44.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694365/5006d5f0-331f-f863-3921-0f2992a4629d.png)

ターミナルに直打ちでも確認することができます

```
tetutetu214@mbp 20211127_lang_change % curl "https://api-free.deepl.com/v2/translate?auth_key=XXXXXXXXXX&target_lang=ja&tag_handling=0"

{"translations":[{"detected_source_language":"EN","text":"このフォームを使って、DeepL APIのサンプルGETおよびPOSTリクエストを生成することができます。翻訳したいテキストを入力して、言語を選択するだけです。サンプルリクエストは、変更するたびに自動的に再生成されます。対応するAPIコールの結果を見るには、「Send」をクリックします。"}]}%          
```


## 1：上記の内容を踏まえてコードを記述していく(最後に、まとめたコードの記述あり)

今回はSimulatorで作成した英語から日本語ではなくて、日本語を英語に翻訳させるものなので、```Lang = "&target_lang=en-US"```としています。
こちらもSimulatorを確認すれば、自分の設定したい言語に変更すうることが可能です

```
# ライブラリのインポート
import json
import requests

# ターミナルに出力する文章
print("英文にしたい日本語を記述ください")
Line = input()

# エンドポイント送付内容
Deepl_Endpoint = "https://api-free.deepl.com/v2/translate?"
Key = "auth_key=XXXXXXXXXX&"
Text = "text="
Lang = "&target_lang=en-US"

url = Deepl_Endpoint + Key + Text + Line + Lang
```
取得できるjsonの必要な部分を取得していきます

```
# 取得した情報の整形
url_info = requests.get(url)
obj = json.loads(url_info.text)

# 最終的に出力する内容
print(obj["translations"][0]["text"])
```

先ほどSimulatorで出力された内容が下記の画像のように返されてくるので、必要部である["translations"]の1つ目[0]の内容の["text"]をターミナルに出力するように記述

__json図解__
![スクリーンショット 2021-11-27 16.06.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694365/14fc22ab-b93c-f79c-dad5-4c14c7fea1b0.png)


### まとめたコードの記述（情報を取得表示を優先しています）

```
# ライブラリのインポート
import json
import requests

# ターミナルに出力する文章
print("英文にしたい日本語を記述ください")
Line = input()

# エンドポイント送付内容
Deepl_Endpoint = "https://api-free.deepl.com/v2/translate?"
Key = "auth_key=XXXXXXXXXX&"
Text = "text="
Lang = "&target_lang=en-US"

url = Deepl_Endpoint + Key + Text + Line + Lang

# 取得した情報の整形
url_info = requests.get(url)
obj = json.loads(url_info.text)

# 最終的に出力する内容
print(obj["translations"][0]["text"])
```

ターミナルでの画面表示

```
tetutetu214@mbp 20211127_lang_change % python lang_change.py
英文にしたい日本語を記述ください
コーヒをおかわりしたいです
I'd like a refill on my coffee.
```
## 2：「[DeepL](https://www.deepl.com/ja/pro-account/usage)」での確認画面

自分のアカウントの『ご利用状況』を確認すると、現在使用している文字数を確認することが可能です
![スクリーンショット 2021-11-27 16.32.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694365/620cb819-51d9-1eda-7850-6981f79855ae.png)


#　さいごに
前回記事と品を変えただけ感がものすごいですが、とりあえずLet'sハンズオン！
こうして学んでいくと、次は画像認識APIから文章を読み取ってDeepL翻訳してみたりなど身の丈にあわせた学習アウトプットを粛々と続けていきたいと思います。