目の前にある「名前のわからないもの」を教えてくれるLINE Botを作ってみた

## 目の前にある この道具の名前なんだろう？
私は、出張多めの会社員です
会社にいる時間よりも、在宅での仕事の時間よりも、出張・外出の時間が多い生活です
全国各地の営業所で、新入社員が働いている姿を見ると
自分も数年前は同じように働いていたなぁと、懐かしく感じています

入社してすぐに苦労したのは、**「専門用語がわからない」** でした
すぐに検索して確認し、検索して確認を繰り返していました

言葉がわかれば、検索できる。
しかし、 **目の前にあるこの道具の名前なんだろう？** 
（工事関係の職種のため、普段の生活では見たことないような道具が目の前に。。）
<img width=300　alt=23818376_s.jpg src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2669823/4abae617-40eb-4802-d9b6-f1a062ced904.jpeg>
そこで **『目の前にある「名前のわからないもの」を教えてくれるLINE Bot』** を作成しました
（なんでも教えてくれたらいいのですが、正しくは、教えてくれるのは、名前のわからない工具の名称と保管場所です）
## 完成形
Node-REDとMakeのフローと、最後のスプレッドシートの動作状況です
<img width=950　alt=video1119048816.gif src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2669823/e02e7eda-d0cd-d2fb-a682-dc5886ec98d0.gif>


## 全体のフロー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2669823/97e1775c-90d1-a012-0b53-aa39f52e3189.png)

　①：Aさん（新入社員を想定）が、名前がわからないものの画像を送付（Node-REDでのカメラボタン）
　②：Teachable Machineが画像を判別して、該当の名前をNode-RED上のフローで送付
　③：Makeのフローにて、該当の名前に関する情報（保管場所、在庫数）を台帳管理用のスプレッドシート内より抽出
　④：名前の回答と、関連する情報（保管場所、在庫数）、Google検索結果をAさんにLINEで送付
　⑤：④と同時に、履歴管理用のスプレッドシートに、画像判別結果とその日時を記入
　　※Teachable Machineによる画像判別を機械学習としています。

## 活用したツール
[Node-RED](https://nodered.org/)
[TeachableMachine](https://teachablemachine.withgoogle.com/)
[Stein](https://steinhq.com/)
LINE Developer
[Make](https://www.make.com/en/login) （旧integromat）
[SSSAPI](https://sssapi.app/)
GoogleSheets （Googleスプレッドシート）※以下、GS
## 作成方法
作成方法については、参考記事やURLを参照ください。
先人の方々の記事は、わかりやすくとても勉強になります。
### Node-REDのフロー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2669823/8fc6073e-abe5-4f84-aed8-b08d336b6a0f.png)

※スプレッドシートへの書き込みも試みましたが、できずMAKEに託しました。

### Makeのフロー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2669823/3cb21e30-16e2-84e3-1fab-5ce039bf7970.png)
※参考までに。筆者の前回記事です。

https://qiita.com/tp_hama/items/89fecbdeb07c926412d8

## 苦戦した点
### 画像の判別結果だけでなく、台帳情報も追加して返答
「この道具片付けておいて」と頼まれた時、どこに片付ければ？などに役立つと考え台帳データを紐づけて回答します。
おまけに、私がよくやっていた、Google検索へのリンクを追加しました。
（正しい使い方など、検索しやすいように、検索リンクのみです）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2669823/3dfe4eba-a9a5-8fda-7219-4153b496f095.png)

### Google Sheetsへ履歴の書き込み
この道具はなんだろうと確認した履歴をどこか記録したかった。
ユーザーに道具の名前を教えるだけでなく、その履歴から今後の教育材料のひとつできると考えた
　例）違うユーザから一部の道具の確認に偏りがあれば、それに対する教育が不足していることがわかる
　例）同じユーザから短時間に同じ道具の確認を実施していれば、画像判別の結果が違う可能性がある
など、履歴は違う使い方ができることや、このLINE Botの改善にも役立つと感じた。

しかし、SSSAPIを使用していたが、調べていくうちに書き込みができないということが分かった
参考：https://zenn.dev/sssapi/articles/22aaf266a1dd5f

そこで、Steinを使用することにしました。
必要事項をSteinに登録の上、Makeのモジュール設定は、以下の内容になります。
いつ検索されたのか？のタイムスタンプと、検索結果を書き込むようにしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2669823/37aa4684-1219-0f17-218a-6a9b589a98e6.png)

## 反省
スタートが、Node-REDのカメラボタンとなっています。
この点を、ユーザがLINEで画像を送付したら、フローが始まるようにしたかったのですが、
どこかのサーバーを介する必要がある（？）ようで、時間内に実装できませんでした。
LINE以外にも、メールでの送信、ブラウザでの使用、Googleフォームの活用など、
いろいろと入口がある中で、ユーザが使用しやすい環境に応じて実装が必要だなと感じました。



数年前工事現場での出来事、後輩に「ドラム」持ってきてって頼んだ数分後、
「重くて持って行けません」って電話がきました。
よくよく聞くと必死にドラム缶を動かそうとしていました。
[ドラムコードリール](https://www.google.com/search?q=%E3%83%89%E3%83%A9%E3%83%A0%E3%82%B3%E3%83%BC%E3%83%89%E3%83%AA%E3%83%BC%E3%83%AB)が欲しかったんですが。。。専門用語って難しいですよね。

最後まで読んでいただきありがとうございました。

## 参考記事
https://qiita.com/shoito66/items/2f67e4de549dd844c0f4

https://qiita.com/masuraoProg/items/efaa6397d2d5409c968b

https://qiita.com/naokiuc/items/6d000d573fa0dc70097d

https://qiita.com/shoito66/items/afe62d2b1b2fe454c391