注: 現在は構想決定 + 立ち上げ準備の段階で、本番ドメインはまだ取得していません。 AWS 構成図と実行計画は ChatGPT 共同レビューを経て確定済み(Yes, with Caution 判定)。

サマリ

プロジェクトグランピング × キャンプ場マップ(仮)
ステータス構想決定、立ち上げ準備中(ドメイン未取得)
ドメイン候補glamping-map.jp / glamp-camp.com / glamping-japan.com / camp-map.jp / glcamp.jp
月額運用費1,000 〜 10,000 円(無風時はもっと低め、施設データ更新頻度で変動)
構成方針Next.js (Static Export) + S3 + CloudFront + DynamoDB + Lambda + Maptiler API
共通化子育てマップと Terraform モジュールを共有、同一 AWS アカウント、タグでプロジェクト分離

全体アーキテクチャ

構成図は drawio (AWS 公式アイコン v2026 系) で作成しています。下のビューアは .drawio ファイルを 直接レンダリングしています。zoom / pan / 編集ボタンが使えます。

ソース: /diagrams/glamping-map/architecture.drawio (drawio で開けば編集可能)

A. 全体アーキテクチャ(計画)

  • 配信レイヤー: Route53 (Hosted Zone) + ACM (us-east-1) + CloudFront (HTTP/3、価格クラス:日本+一部アジア) + S3 (静的サイト + 画像オリジン、Public Access Block + OAC)
  • データレイヤー: DynamoDB (オンデマンド、PK: 施設タイプ#都道府県 / SK: 施設ID / GSI1: 緯度経度クラスタ、PITR 有効)
  • データ取込: EventBridge (月 1 cron) + Lambda (楽天トラベル API 取込 / URL 死活監視) + Secrets Manager (API キー保管)
  • 地図 UI: Maptiler API(外部・無料枠から開始)+ Next.js コンポーネント (Leaflet or MapLibre GL JS)
  • 問い合わせ: API Gateway + Lambda (problem-form 受付) + SES (管理者通知)
  • 監視: CloudWatch Logs / Alarms + SNS (コスト・エラー通知)
  • セキュリティ (Phase 2): AWS WAF Managed Rules(アクセス急増時に追加)

B. データ取込パイプライン

  1. EventBridge が月 1 回 cron で発火
  2. Lambda (ingest) が楽天トラベル API を叩いて施設マスタを取得 → DynamoDB に upsert
  3. Lambda (monitor) が各施設の URL 死活を HTTP HEAD で確認、404/500 検知時は SES でアラート
  4. GitHub Actions が新規施設追加時に DDB を読み出し → next build で SSG 再生成 → S3 同期

手動メンテはレッドフラグ。月 1 回の Lambda 実行で完結する設計を厳格に守る。

採用判断のポイント

項目採用理由
静的化Next.js Static ExportSSR / ISR は使わない。CloudFront キャッシュで応答完結、コスト最小化
地図Maptiler API(外部)Mapbox より安い、無料枠あり、自前タイル運用は維持コスト過大
データDynamoDB オンデマンド初期はオンデマンドで様子見、安定したらプロビジョン課金へ切替検討
共通化子育てマップと Terraform モジュール共有同一 AWS アカウントでタグ分離、運用負荷集約
監視段階導入Phase 0〜1 は最小、Phase 2 で WAF + 監視拡張

これからやる予定

  • ドメイン取得(候補比較で 1 つに絞り込み)
  • Phase 0: 構想固め + ChatGPT 検証(実施済)
  • Phase 1: MVP 構築(地図 UI + 主要 50 施設のデータ)
  • Phase 2: 全国カバー + WAF / 監視拡張 + SEO 育成