楽しくお出かけしよう！～事前の天気チェックと忘れ物防止をLINEbotで簡潔に～

## 準備って大事！
**目的地の天気、調べるのわすれた！**
**ちょっとした忘れ物をよくしてしまう！**

そんなことはありませんか？
**私はしょっちゅうです。**
出かける準備をギリギリにしてしまうという悪癖があり、よく忘れてしまうんです。
そんな私でも、簡単にチェックできるものがあればなあ…
なんて思ったのがきっかけで、
天気チェックと持ち物チェックを両方簡単にすることができるLINE Botを自分で作ってみようと思い、作成に至りました。

## 使用ツール ##
・[Make](https://www.make.com/en/ "Make")
・[天気予報API](https://weather.tsukumijima.net/ "天気予報API")
・Googleスプレッドシート
・[LINE Developers](https://developers.line.biz/ja/?status=success)


## 完成！試しに動かしてみた！ ##

https://x.com/vr4texxyUQ72071/status/1842924877105508439

## 最終構造 ##

![スクリーンショット (15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3888131/5b8c48fd-cda0-6d9c-e128-abc8551c55d9.png)
## 手順 ##
#### 1\. まずは天気を調べられるようにしよう！ ####
まずはMakeでLINEとHTTP、JSONのモジュールを使って、基本の形を作ります。
天気予報APIを使用し、欲しい情報だけが届くように設定しました。

![スクリーンショット (21).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3888131/a88b7e96-bcfc-27c5-42e9-749e2429dafe.png)


#### 2\.googleスプレッドシートで県名→地点IDに変換 ####
このAPIを使用するには地点IDが必要なのですが、こんなの毎回毎回調べてはいられません。
とにかく楽に天気が知りたい！
ということで、ここでGoogleスプレッドシートのモジュールを使用し、自動で変換しました。

![スクリーンショット (29).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3888131/d6893179-254a-1d72-dfc4-04530f597cf4.png)



使用したGoogleスプレッドシートのA列に県名、B列に地点IDを入れます。

![スクリーンショット (20).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3888131/db0a19e2-9171-dd01-d78d-08e1b20c4945.png)

これで県名を地点IDに変換できるようになりました。

#### 3\.忘れ物防止の場合はどうする？

ここから、忘れ物防止するためのもうひと手間です。
先ほどのGoogleスプレッドシートに、忘れ物をしがちなイベントとアイテムを入力します。

![スクリーンショット (30).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3888131/390587b6-b2ab-f10c-7f03-eda8fe60b85a.png)




A列にイベント名、D列に忘れやすいものを羅列します。
**そしてここがポイント！**
C列に数字が入っているのがわかるでしょうか。
これは、分岐点で使用するために決めた数字を入力しています。
**県名＝1、イベント名＝0**

ここが一番苦労しました。
どうしたらいいんだろう、と色々調べてみたり…。

:::note info
こちら、参考にさせていただきました。
ありがとうございました.
:::

https://qiita.com/hoshieee/items/e499ecbdf2f79c0cd5d6

このアイデアを使わせてもらい、やっと先が見えてきました。
![スクリーンショット (23).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3888131/3f1f4912-d4f1-e993-9b17-643b3313cfa1.png)
これが県名を入れた場合のフィルターです。
C列が1のものがその先に進みます。


![スクリーンショット (24).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3888131/991240eb-ae34-0328-b3d9-b50541190a80.png)
そしてこれが忘れ物のルート。
C列が0の場合はこちらです。

![スクリーンショット (26).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3888131/c5704016-b6a4-c30c-25b9-f46e7464684c.png)

これで、D列の情報が送られてくるようになります。

#### 4\.エラーの場合 ####
県名やイベント名以外の文章が送られてきた場合は、正しい言葉を入れてもらえるようにルーターを設定。

![スクリーンショット (27).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3888131/9f90e227-b159-116a-bb94-03e618d05efa.png)

これでA列に当てはまらない文章がおくられてきたらエラーメッセージが届くようになります。
やっとのことで完成しました！


## 最後に ##
今回、初めてMakeを使いLINE Botを作成しました。
なかなか苦戦しながらも、全体を通して楽しくできたのはよかったです。
しかし、まだまだ課題はいっぱい…。

:::note warn
・都道府県のみでは細かい情報が得られないので、もう少し検索できるようにすべき
・比較的早い時間に調べることを前提に、最高気温・最低気温は昼の時間帯の結果を送るようにしているため、遅い時間に見ようとすると結果が表示されない
・同様に、降水確率も時間によって反映されない
・忘れ物はD列に入力されているものをそのまま送るので、単語の羅列のみが送られてしまい読みづらい
:::

など、まだまだ改善の余地ありです。

今回は覚えたばかりのLINE Botというツールを使って作成しましたが、LINE Botである必要性はあったのか、自分で検索するというのであれば、天気予報のアプリを入れるだけで済むのでは？
という疑問も生まれてしまい…。

この疑問に対し、今回作成したものに機能を追加して、

:::note info
・思い出したときに忘れたものをメモできる機能
・予定（日付、時間、場所、お出かけの内容）を事前に入力しておくと、当日、メッセージでおしらせしてくれる、またはメールと連携してお知らせメールが届く
:::
なんていうことができたらこのツールを使う意味が生まれるのでよりよいのかなと思いました。

もっと勉強して、より使いやすいLINE Botを作成できるように頑張ります！