様々な英語の名言を配信するLINE Botを制作してみた！

## 英語の学習で、毎日名言に触れる！
英語を勉強されたことがある皆さんにお聞きしますが、**英語はどのように学習されていましたか？**　十人十色と思いますが、私のオススメは**英語の名言**に触れることです！

それでは、Twitterであげた今回制作した名言Botを早速ご覧ください！

https://twitter.com/NORI30363592/status/1509110987001335821


### 人生があなたにレモンを投げてきたら、レモネードを作ろう！
私が大好きな英語の名言の1つです。米国に住んで間もない時、英語が聞き取れず苦労していた時にこの言葉に出会い、せっかくだから辛酸を舐める経験すら楽しんじゃえばいいんだって前向きな気持ちになったことを思い出します。**英語の名言**に触れて、英語独特の言い回しを学びながら**シャドーイング**すると、**記憶も定着しやすくなります**:sunny: 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2554652/e1767a69-2bdb-e585-84f2-21e67d849d91.png)

### 定期配信の効果
毎日名言を声に出して読み、反復することで英語力は格段に上達します。しかし自ら進んで、情報をとりにいくのは、億劫になってしまい続かないので、**毎日定期配信**出来ればと思ったきっかけです。今回制作した名言Botは、毎日異なる名言をお届けし、**英語の勉強にお役立ていただくサービスです**。

![23109442_s.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2554652/88e8b687-48fd-ea01-a481-384bb001a4af.jpeg)



## LINE Botのプッシュメッセージ X Zenquotes APIを使って、毎日名言を定期配信する！

### LINE Botのプッシュメッセージの活用
先日ご紹介しました記事、[「気になった飲食店を探すシンプルなLINE Botを作ってみた」](https://qiita.com/Nori777/items/4c3193e138c2baba66ce)では、LINE Botの**リプライメッセージ**を活用して、メッセージを受信したら自動応答する仕組みを設計しました。

![23196434_s.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2554652/470dbee1-4576-ecc9-df27-5c337ca35012.jpeg)


今回は、LINE上で友達追加してくれた**全てのユーザーに一斉配信する**、**プッシュメッセージ**を活用しています。不特定多数の人に、定期的に情報を送りたい時、**LINE Botのプッシュメッセージを、様々なAPIと連携させて、定期配信を自動化することが出来ます**。

[前回の記事](https://qiita.com/Nori777/items/4c3193e138c2baba66ce)に、LINE公式アカウントの登録方法と必要な事前準備を書いていますので、ご興味がありましたらご参照ください。

### Zenquotes APIを活用する

世界中の様々な偉人の名言を提供してくれる、Zenquotes APIです。なかには、かの有名なダーウィンや、アインシュタインの名前もありますねー。

ちなみに、私が好きな**ダーウィンの言葉**は、

**最も強い者が生き残るのではなく、最も賢い者が生き延びるのでもない。
唯一生き残ることが出来るのは、変化できる者である。**

コロナ禍でめまぐるしく社会環境が変化する時代を生き抜くための羅針盤になるのではないでしょうか？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2554652/615fd204-c81e-9bbd-38de-883060ae4b76.png)


[Zenquotes API](https://zenquotes.io/)

### 実行環境
VScode (v1.65.2)
node.js(v17.6.0)
npm(v8.5.1)


### コード
```js
//LINE Botでプッシュメッセージを送ることを定義する
'use strict';
const axios = require('axios');
const line = require('@line/bot-sdk');

const config = {
    channelSecret: 'ここにチャネルシークレットを入力する',
    channelAccessToken: 'ここにチャネルトークンを入力する'
};
const client = new line.Client(config);

//参照するAPIのURLをここに入れて情報をとることを指示。
const main = async () => {
    const url = "https://zenquotes.io/api/today"

    const response = await axios.get(url);
//1つ目の必要な情報を定義。qは著者をとることを指示。
    const messages = [{
        type: 'text',
        text: response.data[0].q
    },
//2つ目の必要な情報を定義。aは名言をとることを指示。{
        type: 'text',
        text: response.data[0].a
    }];
    try {
        const res = await client.broadcast(messages);
        console.log(res);        
    } catch (error) {
        console.log(`エラー: ${error.statusMessage}`);
        console.log(error.originalError.response.data);
    }
}

main();
```

### 参考記事

[世界の偉人たちが残した名言と戯れる](https://qiita.com/tishiyama/items/44d548205b7eb1644d7d)

## 課題

今回LINE Botを実装しましたが、出来なかったことが**２つ**あります。

**1．定期配信の設定が最後まで完了できなかった**
GitHub Actionsで必要な設定を完了することで、毎日決まった時間に配信出来るようになるのですが、最後まで設定できませんでした。

**2. ネイティブが英文を読み上げる**
記事の英文をネイティブが読み上げてくれる機能を追加出来れば、ネイティブの発音が自然に身に着けられていいんじゃない？というフィードバックをいただきました。確かに発音矯正も出来たらいいですね！

## 最後に

**最後までお読みいただき、ありがとうございました！！**

LINE Botは、色々な分野でものづくりの幅が広がる強力なツールだなと実感しました。シンプルな内容ではありますが、LINE Botのプッシュメッセージを使った、名言Botを実装出来て楽しかったです！