開発の経緯

弊社では、小規模事業者様向けのアプリ開発を承ることがあります。今回は個人経営のサロン様からのご要望で、LINEの公式アカウントから予約アプリを使ってお客様に簡単に予約していただき、運営側もITに詳しくないので簡単に情報管理したいが、せっかくなので顧客管理などにも情報を活用していきたいとのことでした。

開発費用とランニングコストを抑えたいとのことだったため、予約アプリはモダンなフルスタックフレームワークであるT3 Stack (Next.js) を利用して構築し、予約データ管理はNotionを利用することで管理機能をアプリとして別途構築するのではなく、Notionの機能をフル活用して実現しました。それにより、開発費用の削減にもつながりました。

予約データや別途構築した顧客管理情報は全てNotionで一元管理されているため、それらを組み合わせて活用することでCRM(顧客管理)ツールとしても十分に活用可能です。
Notionの使い方に慣れれば、今回の予約管理以外にもいろいろな情報の管理に利用でき、活用の幅が広がります。

1. システム構成

最近は、ローコード・ノーコードツールを活用した開発を模索していますが、条件に合うツールがなかなか見つからず、今回はT3 Stackを使ってみることにしました。Next.jsの開発経験もほぼないため、新しい知見をたくさん得られました。
ローコードツールは諦めましたが、コード作成には生成AIのperplexity.aiをフル活用しながら開発を進めました。

1.1. アプリ・サーバー構築

T3 Stack

T3 Stackは、Theo氏によって提唱されたWeb開発技術スタックで、simplicity(シンプルさ), modularity(モジュール性), full-stack typesafety(フルスタックな型安全)の思想に焦点を当てています。
次の6つの技術を組み合わせており、TypeScriptを前提として型安全なWebアプリ開発を実現し、Next.jsを使用してWebアプリを構築することが特徴です。

1.2. 認証

NextAuth.js

1.3. UIコンポーネント

shadcn/ui

1.4. データベース

Supabse

1.5. ホスティング

vercel

1.6. デザイン

Figmav0.dev

私のように全くshadcn/uiに触れたことがない人にとっては、とても有用なツールだと感じました。

1.7. 情報管理(管理機能)

Notion

1.8. LINE機能

LINEログイン、Messaging API

2. アプリの動作

shadcn/uiで構築したままの状態ですので、とてもシンプルなデザインのままです。
逆に、このようなデザインであれば、特に何も設定しなくてもすぐに構築できます。

2.1. アプリ起動

LINE公式アカウントのリッチメニューをタップすると、メッセージ「自動予約申込」が送信され、Messaging APIのWebフック機能によりサーバーから予約アプリを案内するメッセージが返信されます。

2.2. ログイン

LINEログインによりアプリにログインします。

2.3. プロフィール設定

2.4. 店舗選択

予約店舗を選択します。

2.5. 予約日選択

予約可能日に「予約」ボタンが表示されるため、選択していただきます。
予約情報はNottionのデータベースと連動しています。

2.6. 予約内容登録

氏名、電話番号、性別、年代などプロフィール情報に登録のある情報はデフォルト値として入力されています。
2回目以降のお客様は時刻とメニューのみ選択すれば予約可能です。

2.7. 同伴者登録

同伴の方がご一緒の場合には、最大4名様まで氏名・年代・メニューを追加登録していただけます。

2.8. 予約完了

2.9. アカウントメニュー

アカウント設定やログアウトができます。

2.10. アカウント削除

2.11. リマインダー機能

予約日前日の19時に、お客様にリマインダーメッセージをLINEにて自動送信します。
これで、お客様の予約忘れを防止できます。
送信メッセージの定型文は、Notionにて変更可能です。

自動送信にはvercelのcron機能を使っています。

3. Notionでの操作

予約情報を管理する部分は、全てNotionの機能を使って構築しています。そのため、管理部分の新規開発は不要となり短期間で構築することが可能です。また、Notionであるため事業主様ごとにカスタマイズすることが容易です。

information

Notionは便利
たとえば、部門ごとに必要な情報は異なると思います。情報は1つのデータベースで一元管理し、それを部門ごとにことなる「ビュー」を作成することで、営業部門用、販売管理用、配送部門用、経理部門用など、それぞれに異なる専用のビューとページを作成して情報を管理することが可能になります。
必要な情報のみを表示することで、作業漏れ、確認漏れなどを防ぐとこも可能です。

Notionは工夫すれば、とても便利に使えます。

3.1. 予約受付

3.2. 予約内容確認

3.3. 予約一覧(今日と明日の予約)

3.4.

カレンダー表示

3.5.

今月の予約一覧

以上のように、Notionの様々な機能を活用することで、予約管理業務を効率化できます。
特にデータベースのビュー機能により、同じデータを複数の視点や形式で柔軟に閲覧できるのがポイントです。
必要な情報を必要な形で過不足なく把握することで、予約の確認漏れや対応漏れを防げます。さらに、Notionなら予約情報以外の様々な情報も一元管理できるので、情報の連携も容易です。
例えば顧客情報データベースと予約情報データベースをリレーションで結べば、予約から顧客情報への素早いアクセスが可能になります。(今回はご紹介できていませんが、盛り込んでおります。)

4. まとめ

T3 Stackは、TypeScript、Next.js、tRPC、Prisma、NextAuth.jsなどの技術を組み合わせた、シンプルでモジュール性が高く、型安全なフルスタック開発のためのフレームワークです。これを利用することで、少ない工数でWebアプリケーションを構築できます。
一方、Notionは、メモやタスク管理、Wiki、データベースなど様々な機能を一元的に使えるオールインワンのツールです

今回のシステムでは、予約情報の管理にNotionのデータベース機能を活用しました。これにより、管理機能をアプリとして別途開発する必要がなくなり、開発コストを抑えることができました。
さらに、NotionのデータベースはCSV形式でエクスポートが可能です。これにより、予約情報を他のツールと連携させることもできます。ただし、本システムは大量の予約を管理するような用途には向いていません。あくまでも、小規模事業者向けのシステムとして活用するのが適しています。それでも、予約管理だけでなく、顧客管理などの他の情報もNotionで一元管理するようにすれば、業務のデジタルトランスフォーメーション(DX)を進めることができるでしょう。情報を一カ所に集約することで、データの活用がしやすくなり、業務の効率化や付加価値の創出につながります。

このように、T3 StackとNotionを適材適所で活用することで、低コストで予約管理システムを構築でき、さらには業務全体のDX推進にもつなげられると考えられます。