
第3章 — 実例1
美容室・飲食店向け。「月間500件の予約を月数十円で回す」技術構成を、設計から実装まで解説します。
飲食店や美容室の予約といえば、電話か対面が主流でした。しかし、「電話がつながりにくい」「営業時間外に予約したい」「予約確認の電話を取りたくない」といった課題は、店舗側・顧客側の双方に存在します。
一方、最近はホットペッパーグルメやRettyといった外部予約サイトも普及しましたが、これらには月額1〜3万円のランニングコストが発生し、顧客データもプラットフォーム側に蓄積されます。自社の顧客との接点を「借りた土地」に置くリスクは、長期的に見ると小さくありません。
LINEミニアプリ上の自社予約システムなら、顧客データも予約履歴も自社管理。コストは月数十円。ユーザーにとってはLINEのトーク画面から「予約する」ボタンを押すだけで、外部アプリを一切開く必要がありません。
💡 ポイント: ホットペッパーの月額プラン最低ランク(約13,000円/月)と比較して、LINEミニアプリ予約の月間コストは500円以下。年間で約15万円のコスト削減になります。
構成はシンプルです。フロントエンドはLINEミニアプリ(LIFF)で、バックエンドはAWSのサーバーレスコンポーネントで構成します。サーバー管理は不要、トラフィックに応じて自動スケール、使った分だけ課金されます。


予約システムで最も重要なのは「誰が予約したか」を正確に把握することです。LIFFアプリではliff.getIDToken()で取得できるIDトークンをバックエンドに送信し、LINEの公式検証エンドポイントで本人確認を行います。
ポイントは、フロントから送られるuserIdをそのまま信頼しないことです。必ずサーバー側でIDトークンを検証し、LINE公式のuserIdを取得してから予約を紐づけます。
予約システムのアクセスパターンを洗い出すと、以下の4つが主要です。
| 操作 | 条件 | 頻度 |
|---|---|---|
| 空き枠一覧取得 | 日付指定 | 高(ユーザーが毎回実行) |
| 予約作成 | 日付+時間+ユーザーID | 中 |
| 自分の予約一覧 | ユーザーID | 中 |
| 予約キャンセル | 予約ID+本人確認 | 低 |
DynamoDBのキー設計例は以下の通りです。パーティションキーに日付、ソートキーに時間帯とユーザーIDを組み合わせることで、すべての操作が単一のテーブルで完結します。
最も気をつけたいのはダブルブッキングです。2人の顧客が同時に同じ時間枠を予約した場合、DynamoDBの条件付き書き込み(ConditionExpression)で対策します。
条件付き書き込みが失敗した場合、その時間枠は既に埋まっていると判断し、ユーザーに別の時間帯を選んでもらうUIを表示します。データベースレベルで排他制御が行われるため、アプリケーション側のロック機構は不要です。
Lambda関数は2つ作ります。1つはAPI Gatewayからの予約操作(GET/POST/DELETE)を受け付けるハンドラ、もう1つは予約後のLINE通知を担当するハンドラです。

LIFFアプリからのリクエストはLINEドメインからのクロスオリジンリクエストになるため、API GatewayにCORS設定が必要です。HeadersにAccess-Control-Allow-Originを設定し、OPTIONSメソッドのプリフライトリクエストにも200を返すよう忘れずに行います。また、API Gatewayにはスロットリング(レート制限)を設定して、悪意あるリクエストから守ります。
| リソース | 仕様 | 月間コスト |
|---|---|---|
| LINE公式アカウント | 無料プラン | ¥0 |
| API Gateway | 月間1,000リクエスト(500予約 × 2) | ¥0(無料枠内) |
| Lambda | 月間1,000回実行、平均200ms | ¥0(無料枠内) |
| DynamoDB | オンデマンド、月間5,000リクエスト | ¥10〜50 |
| S3 + CloudFront | ミニアプリの静的ファイル配信 | ¥0〜100 |
| 合計 | ¥10〜150/月 | |
ホットペッパーグルメの最低プラン(約13,000円/月)と比較すると、年間約15万円の差。予約数が増えても数百円程度にしかならないため、店舗規模を問わず導入しやすい構成です。
| 比較項目 | 電話予約 | LINEミニアプリ予約 |
|---|---|---|
| 受付時間 | 営業時間のみ | 24時間365日 |
| スタッフの対応 | 電話1件約3〜5分 | 自動(不要) |
| 予約確認の手間 | 手動で確認・記録 | LINE通知で自動送信 |
| キャンセル率 | 高い(忘れるため) | 低い(リマインド通知で削減) |
| 顧客データ | 手書きノート or なし | 全件DynamoDBに蓄積 |
| 月間コスト | 人件費(時間給×受付時間) | ¥0〜150 |
📊 実績データの参考: 予約リマインド通知を入れた飲食店では、平均キャンセル率が 12% → 4% に低下(Holiday Otter社の調査)。LINE通知によるリマインドの効果は大きく、来店率の向上にも直結します。
いいえ。LINEミニアプリはLINEアプリ内ブラウザ(LIFF)でしか開けません。ただし、S3+CloudFrontで同じWebアプリを別URLでも公開すれば、ブラウザからもアクセス可能にできます。「LINE内」と「通常のブラウザ」の両方で動く構成は容易です。
ミニアプリ内の「予約一覧」画面から変更・キャンセルが可能です。変更はDynamoDBの条件付き書き換え、キャンセルはstatusを「cancelled」に更新するだけ。ユーザー側にもLINEメッセージでキャンセル通知が届きます。
Lambda + EventBridge(CloudWatch Events)で予約日前日に自動送信を設定できます。前日18:00に「明日14:00から2名のご予約です」というLINEメッセージが自動で送られます。
ユーザー数と世代別利用率
LIFFの仕組みと開発の流れ
来店率向上のための仕組み
LINEでAIを届ける最重要章
Bedrock連携のセキュアな構成
ビジネス視点のコスト比較
貴社の業態・規模に合わせた最適な構成をご提案いたします。
まずはお気軽にご相談ください。