芽が出ない！と、ならないように！ にんじんの発芽適温botで失敗知らず！

# 家庭菜園の悲しみ…




私は小売業店舗で農産物の担当をしています。

野菜好きが高じて、今年の春から🍅家庭菜園🍆を初めました。
夏野菜は程よく収穫でき、大満足！

次は**秋植え**だっ！
と先日、意気揚々と**ニンジンの種**を植えました。



<img width="200" alt="22815835.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/a1a53312-836e-dd6c-30a2-e9d894a35b3f.jpeg">





<font>$\huge{ッが…}$</font>

<br><br>


<font>$\huge{全然芽が出てこない…}$</font>
<br>


どうやら、気温が高すぎた様です。


<font color="#FF0000">**にんじんは35℃以上だと発芽を全くしなくなる**</font>そう。
もし事前に知っていればッ…!!
そんな思いで、都道府県を入力すれば
今の気温が発芽適温か教えてくれるLINE Botを作りました。
<br>
<font>$\huge{届け、私の無念！}$</font>
# 完成品

https://x.com/naokisu379274/status/1842373485961863599


# 使用ツール
・Make
・天気予報 API（livedoor 天気互換）
・Googleスプレッドシート
・LINE Developers



# 最終構造
![スクリーンショット (16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/4fabd3f9-1ad3-deee-351c-7c16a482cbfd.png)


# 作成開始

### 天気予報のAPIを選択

天気情報は私には愛着のある[天気予報 API（livedoor 天気互換）](https://weather.tsukumijima.net/)を使用しました。
日本語で分かり易い為、安心感があります。

https://weather.tsukumijima.net/

:::note info
以前、好評を得ていたlivedoor天気がサービス終了となりましたが、
個人の方が互換性APIを作られた様です。
:::
:::note warn
データの関係上、最低気温は取得出来ないそうです。
:::
今回は最高気温（高温）が判断出来れば良い為、問題ありません。


### 天気情報から選択地点の最高気温を抽出

今回はノーコードでプロトタイプできる[Make](https://www.make.com/en)を用いて作成していきます。

https://www.make.com/en

<br>

<details><summary>こちらが天気予報APIです。</summary>


```
https://weather.tsukumijima.net/api/forecast
```
</details>

<br>

まず、`Watch Events` の LINEモジュールと
`Send a Reply Message` の LINEモジュールを繋げ、

その間に天気予報のAPIを入れたHTTPモジュールと
JSON解読用のJSONモジュールを配置します。


![スクリーンショット (22).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/014af943-cc07-82d2-6450-918db446a54b.png)





### 地点IDを都道府県名に変更

天気予報APIには**地点ID**が必要ですが、調べるのが手間です。
なので、Googleスプレッドシートを用いて
都道府県名を入れれば県庁所在地の天気情報が出てくる様にしたいと思います。

:::note info
都市名の方がより正確な情報を取得出来ますが、地名を打ち込む際に、
その地点のデータの有無が判断しにくい為、今回は割愛します
:::

まずは、都道府県名とその県庁所在地の地点IDのGoogleスプレッドシートを作成します。



<img width="300" alt="スクリーンショット (17).png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/9034effa-53d8-8468-dcfd-6b357f1c8bb7.png">


これを使って
都道府県名（A）を　地点ID（B）に変換します。


しかし、打ち込みをしていくと、
「**県**」や「**都**」などを打ち込むのも**邪魔**だなと感じたので、

![スクリーンショット (18).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/1a0455dd-aa09-3922-5953-b9d9b0ed0ecf.png)



`Filter` の `Text operators` を `Contains(case insensitive)` に設定し、
「静岡」でも「静岡**県**」でも使える様にしました。


<img width="400" alt="IMG_0356.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/2cdbc272-c9fb-a6f4-881f-193f08be4484.jpeg">



また、誤字や勘違い等の対応として、
`Router` で分岐させ、`Does not exist` の `Filter` を付けて、
![スクリーンショット (19).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/4b0aa8b5-a442-5a51-7b05-67b7a6357d55.png)

存在しない都道府県を入力した場合は
「**正しい都道府県名を漢字で入力してください。**」と表示するようにしました。



<img width="400" alt="IMG_0354.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/71ffe1cc-3cd5-602f-1052-7be469f67a0e.jpeg">

### 発芽適温

**本元の発芽ジャッジ部分**ですが、
JSONモジュール と 
`Send a Reply Message` の LINEモジュールの間に `Router` を配置し、
`Filter` の `Condition` に `4.Forecasts[` `].temperature.max.celsius` を入れ、
`Numeric operators` に `Less than or equal to` を設定し、「29」を入力します。


※幅を持たせる為に、30℃を設定温度としました。



![スクリーンショット (20).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/33ca0bd0-6c4d-6f0b-c9ae-ff7362b9b5b6.png)

**これにより最高気温が29℃以下の時には
以下のメッセージが送られるようになります。**
メッセージと共に今日の最高気温も表示する形にしました。

<img width="400" alt="IMG_0355.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/f3f6f192-298a-599d-b208-def4d181e50c.jpeg">





次に`Send a Reply Message` の LINEモジュールを `Clone` して `Router` と繋げ、
`Filter` を `fallback` にします。


![スクリーンショット (21).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/ed3549ed-7939-5c3a-0def-2746e3033acc.png)




**これにより30℃以上の場合は以下のメッセージが送られる様になりました。**


<img width="500" alt="IMG_0357.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/7c44475a-9a03-5ed1-6141-81243a736aa1.jpeg">


# 最後に



今回は当日の最高気温のみでしたが、本来なら当日30℃以上だったら、
「**じゃあ、いつ蒔けるのよっ！**」
と思うはずですので、週間天気予報で先の気温を調べ、
「**この日なら蒔けそうですよ**」
と提案できる形にまで持っていければと考えています。

更に言えば、
<br>
<font>$\huge{なぜ🥕ニンジン🥕限定…}$</font>


<br>

今回はLINE Botを使用してみましたが、
基本的には入力が一度のみという制約がありました。
（私が調べた限りです。間違えていたらスイマセン）
その為、「どこの」・「何」という複数の選択肢が出来ませんでした。

つまりは複数の入力に対応できる物を使用すれば、
更に実用性の高いものが出来ると思います。

まだまだ**改善の余地**はありそうです。

こんな機能があったら良いかもという提案ありましたら教えてください。
最後まで読んでいただきありがとうございます！
<br>
<br>
※2024/10/13㈰追記
上記の改良案に必要な、長期の天気予報情報を取得出来るAPIを調べてみました。

私が調べた限りではこちらのAPIが良いかなと思いました。

[Visual Crossing Weather API](https://www.visualcrossing.com/weather-api)

https://www.visualcrossing.com/weather-api

アカウントを作成すれば、
**無料**プランで**15日先**までの予報データを提供してくれます。

![スクリーンショット (24).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/d32d165f-5613-3dd1-598f-4bb07e625bf8.png)
一日に1000レコードまで使用出来るという事で十分かと思います。

:::note warn
こちらとは別の[AccuWeather API](https://developer.accuweather.com/)というAPIも15日先までの予報データを提供してるので候補に入れてましたが、無料プランだと5日先までの提供のようです。
:::