NOT A HOTEL の 運営システムをゼロから作るハナシ【予約機能編】
こんにちは。中尾(@nakaohiroshi) です。
NOT A HOTEL (以降、NAH)でバックエンドの開発をしています。
前回の投稿から1ヶ月以上立ってしまいました。
もう少し早めに投稿するつもりだったのですが、大きなリリースと予定が重なってしまったため、このタイミングになってしまいました。
イベント告知(終了しました)
直前のご案内になってしまいましたが、2023/7/13(木) に NOT A HOTEL のオンラインイベントを実施いたします。
その中で
"NOT A HOTEL"のひみつ道具: 0から1へのホテル運営システム開発背景"
というタイトルで PMS の開発と今後の展開に関してハナシをさせていただきますので、興味がある方はぜひお気軽にエントリーください。
宿泊予約機能をゼロから作ったハナシ
NAH PMS の重要な機能の一つに宿泊の予約管理機能があります。
外部が提供している PMS でも予約は当然のことながらできるのですが、NAH の要件を満たすことはできずゼロから作ることにしました。
PMSとは?
前回にも説明しましたがおさらい。
PMSとはというのは Property Management System と呼ばれるホテルや旅館などが宿泊管理をするソフトウェアの事です。
前回は NAH の PMS の概要をさらっとお伝えしましたが、今回は NOT A HOTEL の宿泊予約機能にフォーカスを当てて説明したいと思います。
様々な予約種別
一般的なホテルでは、お客様は現金やクレカなどで宿泊費を支払って滞在するというのが通常だと思います。
NAH は他のホテルとは異なり、様々な利用の形態が存在します。
【NAHの利用形態】
一般のお客様の利用
宿泊費を支払う(クレカ決済、ApplePay)
NFT 所有者の利用
所有している NFT の権利を使う
オーナーの利用
利用可能泊数を消費する
現金やクレカなどで費用を支払うことで宿泊するのが一般的だと思うのすが、オーナー利用は契約内容に所有する利用可能泊数を使って宿泊予約を行います。
更にオーナー利用には以下の種別が存在します
「自己利用」…自身の所有ハウスに宿泊する
「相互利用」…泊数を消費して、所有していないハウスに宿泊する
「ギフト利用」…自身の所有泊数を消費して、他の人に宿泊をプレゼントする
また、上記以外にもオーナーのみが利用できる「EXCLUSIVE」という施設の予約なども存在します。
さらにユーザーによって利用対価が異なるだけではなく、在庫の開放タイミングが利用形態によって微妙に異なります。
オーナーが自己所有のハウスを優先的に予約できるようにするためです。
自己利用
最大で10ヶ月から1年先まで予約可能(ご契約の内容によって最大時期が異なる)
相互利用
最大で4ヶ月先まで予約可能
ゲスト利用
最大で90日先まで予約可能
SaaS じゃ無理ゲーだった
その他、オーナーの収入に影響する部屋の割り振り機能、キャンセルポリシー、ハウスの売止機能など、宿泊予約に関してのルールだけでもNAH特有者もがもりだくさんなわけで。
結論。
「もう自分らで作るしかないじゃん」
ってことで、フルスクラッチをせざるを得なかったわけです。
ちなみに方針決定からサービス開始までの期間も数ヶ月しかなく、なかなか痺れる開発スケジュールでした。
アプリの技術構成
少しだけ技術に関して。
この部分を一番知りたい方も多いと思いますが、深掘りはまた別の機会に。
もしくはこちらのイベントとかでも質問いただければ。
ぜひご参加ください!
NAH のバックエンドは すべて Go 言語で実装、GCP で運用しています。
添付の画像は PMS ではなく、宿泊者が利用するアプリの技術構成ですが、 PMS サーバサイドはほぼ同じ構成です。
ログイン認証に関しては、 FirebaseAuth に加えて PMS のユーザーごとに操作できる機能に制限を持たせるために内部的にホワイトリストをもたせています。
フロントは WEB のみです。
現在のところ、 PMS のバックエンドはほぼ私一人で開発しています。
主な使用技術
言語: Go
インフラ: Google Cloud Platform
Cloud Run
Cloud Build
Cloud Spanner
BigQuery
Dialogflow CX
Cloud Logging
Terraform
通信プロトコル: Protocol Buffers, gRPC
その他: GitHub, Notion, Slack
開発手法: Kanban
終わりに
現在、 NAH ではエンジニアを募集しています。
バックエンド以外でも iOS, Android, WEB アプリのフロントエンドエンジニアも絶賛募集中です。
興味がある方はカジュアル面談も可能ですので、ぜひともお気軽にエントリーをお願いたします
この記事が気に入ったらサポートをしてみませんか?