店舗担当者の判断業務がなくなる世界がくる？？？

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/5f13eadb-6ba3-eb5a-113d-6c28825e3261.png
">

AIの技術が進化すると、そんな世界が来るかもしれません！
AIをチェックする仕事しかなくなる世界、、、あるかもしれませんね:sweat:

***
どーもこんにちは！
某小売店で働いてます！ネットスーパー戦略担当者です！

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/0c3c4659-7bb3-d3be-43f6-b415db50aa4b.png">

私の会社では、現在ネットスーパー業務のデジタル化を推進しています！
特に必死に推進しているプロジェクトが
"紙ピッキング"から"**デジタル端末ピッキング**"に変えていこう！！
というものです！


詳細はこちらの記事をcheck！:grinning:

https://note.com/fair_knot733/n/n7e9382dc3d5a?sub_rt=share_pw

それでもデジタル化出来ない業務があるんです
それは、、、"**判断業務**"

商品をピッキングする際に、よりより商品を判断する機能がないんです、、
何故ならば、商品が情報を持っていないのです
商品がデータ化されていないので、デジタル端末ではその判断ができません。

人の能力レベルにさゆうされてしまう"**判断業務**"
パートさんからするととてもストレスなんですよね、、、
私も店舗マネージャーの時代に
「どれがいいかはマネージャーが判断してください！」とよく言われたものです:disappointed_relieved:

ということで
今回はネットスーパーで発生する"判断業務"を解決すべく

[Teachabel Machine](https://teachablemachine.withgoogle.com/)
[LINE messaging API](https://developers.line.biz/ja/)
[enabular](https://www.enebular.com/ja/)

を用いて
"**AIで判断をするLNE Bot**"のプロトタイプを作成してみました！:clap:


# お野菜の鮮度が判断できる！鮮度チェッカーBot

まずは、ネットスーパーでの判断業務を洗い出してみました！

## ネットスーパー業務内の判断業務一覧

・生鮮品鮮度チェック
・賞味期限チェック
・不定貫商品のg/単価チェック
※不定貫商品➢g/単価が変わる品のこと
etc...

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/22203e4e-3f73-0be1-01bb-8086e5d8c895.png">


そりゃ人がやらなきゃ無理だろとお思いでしょう
生鮮品の鮮度チェック、賞味期限のチェックなど
"**目視でする**"しかないじゃないか！！！
そうお思いでしょう、、、

そんな作業がAIの力でなくせるかもしれないんです！！

今回は1項目目の
"**生鮮品の鮮度チェック**"をなくす仕組みを実装してみました！
## 実装イメージ
:::note
商品をピッキング
　　:arrow_down:
携帯(LINE)で写真を撮影
　　:arrow_down:
LINE Botからピッキング可/不可の返答
　　:arrow_down:
ピッキング判断
　　:arrow_down:
ピッキング
:::

ピッキングは売場で実施するので、その場で即時判断してほしい、、、
:bulb:携帯でLINEに写真を送ればいいじゃん！！
そんな発想デス。

## 試してみたらこうなった！！！
まずはアボカド単体で実装してみました！


https://x.com/tomo361352/status/1727271580257169577?s=20

意外といけんじゃねーか？？？？？
会社の鮮度マニュアルを参考に鮮度のいいもの悪いものを仕分けて、
それぞれ1000枚ずつTeachable Machineに学習させました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/ada27018-4ce4-51cb-60e9-9b5ef1b4bf4a.png)



## 元売場担当者に実際に使ってみてもらった！！！
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/0ff51d6f-7529-0191-88c7-b67f913040e7.png">


いける！と思ったのも束の間、
「元売場担当者の方から、これはあまりお勧めできない商品ですね、、」

なんと、、、
鮮度が良くない商品に対して"鮮度バッチリ"と案内してしまいました。。

元担当者曰く鮮度の判断基準が複数あるとのこと
・表面が削れている
・色が悪い
・表面がツルツル
・ヘタが取れている
etc...

判断基準が単調すぎました(・_・;)

AIに判断してもらうために写真を1000枚ずつ取ったのではダメだったみたい、、
まだまだ勉強不足でした、、、

今後は、鮮度判断をパターン化して複数パターンの中からジャッジする仕様に変えてみてまた実験してみたいと思います！

今度こそ「これはいいですね！！」をいただきたいですね！

## Node-RED 作成フローはこちら 

### 全体フロー
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/92aeda58-1f38-4c98-29a1-8e5915263edf.png">

### ①LINEからデータを受け取る
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/0e0de883-ac01-55c9-9eeb-7ecf01fe0717.png)
こちらのノードを使います！

ノードをダブルクリック↓
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/8560225e-019f-631e-11e5-6a1da48720c7.png">

### ②LINEメッセージ解析
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/fada30e5-1d44-0f52-9208-1c323d8577e1.png)

こちらのノードを使います！

ノードをダブルクリック↓
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/18d36419-c5a7-b38d-3b1a-3118b07dadc2.png
">
コピペコードはこちら★
```ruby:qiita.js
const messageID = msg.payload.events[0].message.id;
const replyToken = msg.payload.events[0].replyToken;

msg.messageID = messageID;
msg.replyToken = replyToken;

return msg;
```
### ③解析データリクエスト
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/55059563-9983-3b42-d2f9-f18f3952f53d.png)

こちらのノードを使います！

ノードをダブルクリック↓

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/2019310b-cc91-c412-a6a6-c8573dd620cd.png
">
### ④Teachable machineからデータを受け取る
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/6a17e342-1786-d0ae-c32f-14e0192a1885.png)

こちらのノードを使います！

ノードをダブルクリック↓
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/72cf492b-7ca6-3252-4f90-f0eee93e14d0.png">

### ⑤結果を取得
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/3490e9bc-372c-f5ae-b8ac-1762928d187b.png)

こちらのノードを使います！

ノードをダブルクリック↓
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/9ee54072-6406-6a1e-5be4-b2efdfdd4490.png">

コピペコードはこちら★
```ruby:qiita.js
{{payload.0.class}}
```

### ⑥分岐
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/bb92c063-1a30-7269-d99c-26e4e7577e71.png)

こちらのノードを使います！

ノードをダブルクリック↓

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/5e427eed-e68d-bf0d-e041-302d169dd54b.png">

### ⑦分岐データを解析
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/86d928a0-3435-d3ee-ddfe-0e5454c472e3.png)

こちらのノードを使います！

ノードをダブルクリック↓

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/a5ce310f-7364-476e-ac4b-00c78f53ab6b.png">

コピペコードはこちら★
```ruby:qiita.js
const className = msg.payload[0].class;
msg.payload = {};
msg.payload.events = [
    {
        "type": "message",
        "replyToken": msg.replyToken,
        "message": {
            "type": "text",
            "text": `鮮度バッチリ！ピッキングしてください！`
        }
    }
];
return msg;
```

### ⑧LINEに送信
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/946870d4-9cc9-96b8-3d0a-9ce31ddddb3a.png)

こちらのノードを使います！

ノードをダブルクリック↓
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3580778/3537db02-68fd-5b6f-6757-a1cc563a5009.png">


以上で完成！！！
8つのノードで簡単に作成することが出来ました！！


※LINE Bot　Teachable Machineについては、
以下記事がとても参考になりました！

【LINE Bot】

https://qiita.com/kuma_ssss/items/71ed5ffb3596abffbb29

【Teachable Machine】

https://qiita.com/PoodleMaster/items/f08805bcf4e7596ba25b



ここまで読んでいただき、ありがとうございました！！
ではまた！