見出し画像

非エンジニアの副業本屋店主が無人営業システムを開発した話


はじめに

会社員の店主が、本好きの趣味が高じて副業で本屋を始めました。(詳細は以下の「当店について」を参照)
そして、副業故に、週に1回程度しかOpenできないため、「無人営業」を行うことにしました。

サービス名は「だれかの書斎」。

家ではない、から、落ち着く



このnoteでは構想から実現までのお話を書きます。

★当店について:https://note.com/shoshishosai/n/nfeaae5d5d979
または:https://www.shoshishosai.com/about

★実際の利用はHPから予約してください : https://www.shoshishosai.com/s/appointments

★実装内容は、githubを見てください :

なぜ無人営業をするのか

書肆書斎の無人営業形態を「だれかの書斎」と名付ける。 「書斎」には、「本を読む空間」「ゆっくりと思考を巡らす空間」「仕事をする空間」などの多義性がある。 店主の書斎として始まった空間だが思ったよりもうまくできたので、これを第三者に提供する。

https://github.com/shoshishosaiyusuke/denforsomeone_public

閉店の間の機会損失
企業活動としての機会損失ではなく、書肆書斎自体の収支の正常性が店主の家庭と、書肆書斎の両立すなわち、書肆書斎自体の持続可能性に直結するという点で、最小限の労力で売上を最大化させる必要性がある。

https://github.com/shoshishosaiyusuke/denforsomeone_public

どうやって実現したの?

店主は、タイトルの通り、非エンジニア。一応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.見た目を調整


という感じ。

プロンプトの例。(ちゃんと書いてる部分)

初手


API参照
見た目を調整
みためを調整2

利用方法


その他

  • 店内購入は「ECサイト(Square)の店頭受取機能」で当初はやってみる。

  • 監視カメラをYouTubeでライブ配信。


いいなと思ったら応援しよう!