はじめに
地方の卸売業で働く50代の現役営業マンです。社内にはMicrosoftの環境しかなく、社内システムを現場のスピード感に合わせて改修するにはコストも時間もかかる状態でした。
そこで、「現場の課題は自分で解決する」と決意し、生成AIを開発パートナー(メンター)に迎え、完全無料の範囲(Google無料アカウントのGASとHTML)で、展示会用の爆速・堅牢な受注システムを構築しました。
その結果、2日間で2,500万円の売上が動く戦場で、トラブルなく注文を捌き切ることに成功しました。同じくPower Appsで構築した店頭アプリと合わせ、半期で紙コスト50%削減も達成しています。
社内のプロ(システム部)からも「すごい」と驚かれ、彼らが自主的にアプリ開発を始めるキッカケにもなりました。現場の熱量とAIがあれば、ここまでできるという事例を共有します。
現場を生き抜くためのシステム設計(UI/UX)
ITの専門家が作ったシステムにありがちな「現場のバタバタで使い物にならない」を排除するため、以下の実戦的ロジックをすべてHTML/CSS/JavaScriptで自作しました。
-
「顧客スキャン必須」の動線制御
顧客QRコードを先に読み込まない限り、商品バーコードのスキャンに進めない制限を実装。誤入力を物理的に防ぎます。 -
端末(ローカルストレージ)一時保存による爆速レスポンス
電波が不安定になりがちな展示会場の特性を考慮し、スキャンデータは一度端末側に保存。通信待ちによる「お客様を待たせる時間」をゼロにしました。 -
ポップアップテンキー ➔ 即カートイン
バーコード読み取り後、自動で数量入力テンキーがポップアップ。数量入力と同時にカートへ入り、カート内からは「+/ー」ボタンで直感的に数量変更が可能です。 -
無制限の「保留」機能
「ちょっと他のブースも見てくるわ」という展示会あるあるに対応。何社でもカート状態を保持したまま保留でき、カート画面に顧客名付きで「保留中」と表示され、いつでもワンタップでマルチタスク復帰できます。
GASの制限と同時入力の「混線」を完全論破する技術的工夫
2,500万円のトランザクションが走る現場において、GASの「同時実行の衝突(コンフリクト)」と「1日の実行時間制限」は最大のボトルトネックです。ここを以下のアーキテクチャで解決しています。
① 1アイテム1行記録を維持したまま、一括書き込み
「1アイテムにつき1行」という集計しやすいデータ構造を維持しつつ、端末側(JS)からは1社分のカートデータを配列としてGASへ1回だけ送信。GAS側ではループで何度も書き込むのではなく、2次元配列に整形して一発でスプレッドシートに流し込みます。これによりGASの処理時間を1/10以下に短縮しました。
② LockService による排他制御(順番待ち)
複数スタッフの「確定ボタン」が完全に同時重複した際の上書き・混線を防ぐため、GAS側にスクリプトロック(LockService)を実装。最大30秒の順番待ち行列を裏で作ることで、データの混線を物理的にゼロにしました。
③ 役割の分離(Teams通知の非同期化)
GASの処理内でTeamsのWebhookを叩くと、Teams側の応答を待つ数秒間、GASが走り続けてロックを引き延ばしてしまいます。
そこで、Teamsへのリアルタイムな売上通知は、GASの書き込み完了の返気(レスポンス)を受け取った「フロント(HTML/JavaScript)側」から直接送信する設計に変更。GASの負荷を極限まで削りました。
結び:現場の営業マンこそ、AIを最高の相棒にできる
ほか自作アプリも含めこの取り組みを通じて、半期で50%の紙代削減という目に見えるコストカットはもちろんですが、一番の成果は「プロのシステム部が刺激を受けて変わり始めた」という社内カルチャーの変革です。
上層部はまだこの凄さに気づいていませんが(笑)、現場の人間がAIという武器を手に入れた時、企業のDXは内側から爆発的に進みます。
同じように「現場をデジタル化したいけれど予算がない」「何から始めればいいか分からない」と悩むビジネスパーソンや営業マンの希望になれば幸いです。