売場のパン情報をスマホで簡単に見れるように！

こんにちは、
地方のスーパーで製造部門の教育や指導をしているkuwaharaです。

前回のGWの報告はなんとか終わり落ち着いたのでまた記事を書きました！

![茶色　パンの写真　新商品発売のお知らせ　チラシ（横） (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3763115/445e2ab5-e8ed-e73f-57ae-0f3fe12c0ed7.png)


## 現状の課題

私は週3回から4回、店舗を回り、パンの出来栄えの指導や売場レイアウト、計画の確認などをしています。
最近デジタルを少しずつ学びつつ思うことが...この仕事って資料作り以外、紙やパソコン持ち歩かなくてもスマートフォンやタブレットでどうにかなるのでは！？
というのもパソコンが軽ければ全然良いですが、私の持ち歩いているパソコンは前任の方から引き継いだものでとっっても重いです。

そこで試しにスマートフォンで売場にあるパンを撮って、情報やレシピなど確認出来れば？と思い作成してみました。

参考資料

https://qiita.com/Ryo947/items/a1dc963c01bde088ce21

https://qiita.com/mmmrym/items/a05eaeda0d4861ab0cb3

https://qiita.com/azukipapa/items/796f3cd57a43d51665ba

## 使用ツール

今回は以下を使用します。
Node-RED

:::note info
Node-REDは、ビジュアルなフロープログラミングツールで、IoTや自動化などのアプリケーションを開発するためのオープンソースのプロジェクトです。ノードと呼ばれる構成要素をつなぎ合わせてフローを作成し、データの処理や統合、制御を行います。Webブラウザ上でGUIで操作でき、JavaScriptやJSON、REST APIなどの技術と組み合わせて柔軟な機能拡張が可能です。
:::

Teachable Machine

:::note info
Teachable Machineは、Googleが提供するウェブベースの機械学習ツールで、ユーザーに機械学習の基礎を教えることを目的としています。ユーザーは、Webカメラやマイクを使って画像や音声を入力し、それらをカテゴリに分類するモデルをトレーニングできます。その後、トレーニングされたモデルを使って、リアルタイムで画像や音声を分類することが可能です。このツールは、教育やデモンストレーションのために広く利用されており、機械学習の概念を身近に感じさせることで、多くの人々が興味を持つきっかけとなっています。また、非常に使いやすいインターフェースを提供し、プログラミングの知識がなくても手軽に利用できます。
:::
LINE bot　以前の記事で少し使用しました。

https://qiita.com/kuwaharada/items/61933b1956f7615edd64

:::note info
LINE Botは、LINEメッセージングプラットフォーム上で動作する自動チャットボットです。ユーザーとの対話を通じて、情報の提供、サービスの提供、タスクの自動化などを行います。開発者は、JavaScriptやPythonなどのプログラミング言語を使用してボットを開発し、LINE Messaging APIを介してLINEプラットフォームと連携させます。LINE Botは多くの用途に適用可能で、顧客サポート、情報提供、予約管理、ゲーム、エンターテイメントなど、さまざまな領域で活用されています。
:::

## 作成してみます！！

①Teachable Machineを開き、画像プロジェクト、標準の画像を選択。
クラスは商品名を入力、ウェブカメラまたは100枚以上写真をアップロードします。
写真では指や背景などが映っていますが、前や後など沢山写真があれば良いと思います。

![課題用26.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3763115/e868bb8a-5281-b1d8-e21d-c2d3692cddfb.jpeg)

②アップロードが終了したら、トレーニングさせモデルをエクスポートします。
この画面は後ほど使用するので、残しておきます。
![課題用27.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3763115/26458a83-281d-f806-5698-a7e9df0180e2.jpeg)

③NODEREDを開きます。お持ちの環境によって開き方が変わりますが、私はcodespaceで開いています。

![課題用36.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3763115/f00eaa51-64dd-0ab2-0215-be13dc6924ec.jpeg)
全ての設置と方法を付けると長くなるのでポイントを書きます。
1　http in　ノード　URLは/を忘れないように
2　function ノード　以下のコードを記入

```
const messageID = msg.payload.events[0].message.id;
const replyToken = msg.payload.events[0].replyToken;
msg.messageID = messageID;
msg.replyToken = replyToken;
return msg;
```
3　http request　ノード　
URLには　https://api-data.line.me/v2/bot/message/{{{messageID}}}/content
トークンはLINE Developersでログインし自分のチャンネルトークンを入力。
![課題用37.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3763115/97ef80af-5247-cc97-3032-4bd9be1f640c.jpeg)

4　Teachable Machine　ノード
URLにはTeachable MachineでエクスポートしたURLを入力。

5　function ノード
こちらにはTeachable Machineで選択されたものを表示させるコードを、選ばれた項目の栄養成分とアレルゲンを表示するコードを書き加えました。
分かりにくい所はchatGPTに聞くと良いと思います。こうしたいからコードお願い！って言えばちゃんと返してくれます。

```
// Teachable Machineからの出力
const className = msg.payload[0].class;

// アレルゲンと添加物の情報を手動で定義
let additives, allergens;

switch(className) {
    case "ツインクル":
        additives = ["熱量467kCal" ];
        allergens = ["小麦", "卵", "乳成分", "大豆"];
        break;
    case "カレーパン":
        additives = ["熱量275kCal"];
        allergens = ["卵", "乳成分", "小麦", "牛肉", "大豆", "豚肉", "ゼラチン"];
        break;
    case "メロンクロワッサン":
        additives = ["熱量341kCal"];
        allergens = ["小麦", "卵", "乳成分", "大豆"];
        break;
    default:
        additives = ["情報なし"];
        allergens = ["情報なし"];
        break;
}

msg.payload = {};
msg.payload.events = [
    {
        "type": "message",
        "replyToken": msg.replyToken,
        "message": {
            "type": "text",
            "text": `この商品は「${className}」\r\nになります。\r\n\n添加物: ${additives.join(', ')}\r\nアレルゲン: ${allergens.join(', ')}`
        }
    }
];
return msg;
```

6　reply　ノード　LINE Developersにログインし、シークレットキーとアクセストークンをコピーして貼ってください。

## 出来たもの！！


https://x.com/216JLYNEUf3696/status/1793902578440532034

LINE botに写真を送り、画像を認識し商品名と熱量、アレルゲンを表示することが出来ました！急いでパパッと出来たものにしては上出来？かなと思います。

●やりたいこと

別枠でリッチメニューからJAN検索や実績確認、レシピも確認出来ると良いなと思いました！
最近、リッチメニューの作り方を教えてもらったので、メニューだけ作成！

https://qiita.com/mmmrym/items/a05eaeda0d4861ab0cb3

![課題用38.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3763115/7ac2fb98-b4ae-3e53-91b2-bee1ce48d484.jpeg)

自分たちが使うことの出来る万能なLINEbotが作成出来ると良いですね。

※もちろん、情報の取り扱いには十分しなければなりませんが。

今回は以上になります。
ご覧いただきありがとうございました。