非エンジニアの副業本屋店主が無人営業システムを開発した話
はじめに
会社員の店主が、本好きの趣味が高じて副業で本屋を始めました。(詳細は以下の「当店について」を参照)
そして、副業故に、週に1回程度しかOpenできないため、「無人営業」を行うことにしました。
サービス名は「だれかの書斎」。
このnoteでは構想から実現までのお話を書きます。
★当店について:https://note.com/shoshishosai/n/nfeaae5d5d979
または:https://www.shoshishosai.com/about
★実際の利用はHPから予約してください : https://www.shoshishosai.com/s/appointments
★実装内容は、githubを見てください :
なぜ無人営業をするのか
どうやって実現したの?
店主は、タイトルの通り、非エンジニア。一応IT企業勤務ですが、営業部門で実装に関わったことはありません。強いて言えば、自分の会社の仕様書とシーケンスを営業レベルの知識で会話したことがある程度。
その強いて言えば、がAI時代には効いたかな?とは思います。
最初にオチを言ってしまうと、とんでもないシステムを開発したわけではなくて、既存のサービスを組み合わせたハブみたいなところを手作りしました。なので、エンジニア目線だとちょっとつまらないかも。
DIYにたとえて言えば、キッチンそのものや、机や椅子の家具を作ったわけでもなく、ちょっとカバンをかけておくフックを(既製品ではなく)木を削って作ってみました、程度かしら。
大筋の流れは以下の図のとおり。
0.要件定義
自分ひとりのプロジェクトなので、ビジネスもシステムも一緒くたなので、githubに前提と、価格設定と、運用上のルールも含めた広義の要件定義を全部書きました。これがすべての始まり。その中で実装のそもそもフィージビリティ(使用するAPIのエンドポイントとマッピングをみてやりたいことがそもそもできるのか?くらいまでは細かく)とシステム構成とシーケンスを書いた。(当初は友人に実装は任せるつもりだったので細かめ)
1.SquareAPI
無人営業はスペースへの入場を「有料」にしました。変な人避け。
なので、事前決済+事前予約をしてもらうことに。
→これは、決済にも商品管理にもECサイトにも使っている「Square」の「予約」機能を使いました。
SquareのAPIは日本語のリファレンスや実装例があんまり転がってないのだけど、内容はだいたい直感的。今回は電話番号が予約時間
2.スマートロック
鍵はもともと同居人と共同運用のために、スマートロックにしてました。運良く、スマートロックのブランドがWebAPIとアンテナを出していたので、それを使ってWebサイトから開けれるようにしました。
3.解錠フォーム
サーバーと環境は、Node.jsとGAEを使いました。なんか固定費もかからないしSquareもGAEもSDKがあるし便利でした。(よくわかってないのであんまり聞かないでください)
(それがすごいことかわからないけど)Node.jsはフロント↔バックの会話と外部のAPI(Square,SESAMI)との会話が同じ水準なので、理解はしやすかった。フロントから一回バック(Server.js)に引き渡して〜、API叩いて〜っていう。
4.ChatGPT
0.にある通りエンジニアの友人に実装してつもりだったけど、忙しく、自分でもいろいろ調べたりして雰囲気がつかめていたので、ChatGPTにコードを書かせればできるのでは?ということで。
プロンプトは結構うまくかけたのではなかろうか?やはり、嘘を返してくることもあって、デバッグがかなり難しい。自分で何を書いてるかわからないしエラーの意味もわからない。とにかくそこはエラーをChatGPTに食わせてコンソールに吐き出させて(コンソールログを出す記述もGPTにやらせる)仕様書を食わせて、実装例を食わせて、と根気よくやる必要がある。
少し細かく書くとステップ的には
1.index.html 電話番号を入力する画面を作らせる
2.SquareAPIを参照させる
3.SESAMI APIを動作させる
4.見た目を調整
という感じ。
プロンプトの例。(ちゃんと書いてる部分)
利用方法
その他
店内購入は「ECサイト(Square)の店頭受取機能」で当初はやってみる。
監視カメラをYouTubeでライブ配信。