気仙沼で開催される星空観望会の予約システムです。参加者が簡単に予約できるWebアプリケーションを提供し、地域の天体観測活動を支援します。
公開URL: https://flint8777.github.io/TEST_KesenNuma-StarryNight/
- マルチステップフォーム: 直感的な予約体験
- レスポンシブデザイン: PC・スマートフォン対応
- リアルタイム検証: 入力時の即座フィードバック
- アクセシビリティ: キーボードナビゲーション・スクリーンリーダー対応
- セキュリティ機能: 入力検証・XSS対策のデモ
注意: デモサイトでは予約送信機能は無効です。完全な機能を利用するにはセットアップが必要です。
- マルチステップフォームによる直感的な予約プロセス
- 出席者数選択(1-100名)
- ワークショップ参加選択(はい/いいえ)
- プラネタリウム鑑賞予約(はい/いいえ)
- 時間帯別予約(残席あり/残席なし表示)
- 交通手段選択(条件付き車台数入力)
- 自動確認メール送信
- 全選択肢表示(無効選択肢はグレーアウト)
- 環境変数化: 設定の外部化・機密情報保護
- リファラーチェック: 不正サイトからのアクセス防止
- レート制限: DoS攻撃・スパム対策
- 入力検証: XSS・SQLインジェクション対策
- レスポンシブデザイン(モバイル・タブレット・PC対応)
- アクセシビリティ対応(WCAG準拠)
- ローディング状態表示
- リアルタイムバリデーション
- 統一された選択肢(はい/いいえ形式)
- 全時間帯表示(残席あり/残席なし/残席不足)
- グレーアウト表示(選択不可選択肢の明確化)
- SEO最適化: メタタグ・キーワード設定
- OGP対応: SNSシェア時の最適化表示
- Twitter Card: Twitter専用シェア設定
- PWA対応: Progressive Web App機能実装
- ホーム画面追加: アプリライクな体験
- マニフェスト設定: アプリ情報・アイコン設定
- カスタム404ページ: 星空テーマのエラーページ
- Googleアカウント
- Google Apps Scriptの基本知識
- Gitの基本操作(オプション)
git clone https://github.com/flint8777/TEST_KesenNuma-StarryNight.git
cd TEST_KesenNuma-StarryNight# 設定テンプレートをコピー
cp config.example.js config.js
# config.js を編集してAPIエンドポイントを設定
# API_URL: 'YOUR_GAS_DEPLOYMENT_URL_HERE' を実際のURLに変更- Google Apps Scriptでプロジェクトを作成
Code.gsの内容をコピー&ペースト- ウェブアプリとしてデプロイ
- 実行ユーザー: 自分
- アクセス権: 全員
- デプロイURLを
config.jsのAPI_URLに設定
- Googleスプレッドシートを作成
- 予約データ用のシートを準備
- Apps Scriptからのアクセス権限を設定
// config.js での設定例
const CONFIG = {
API_URL: 'https://script.google.com/macros/s/YOUR_DEPLOYMENT_ID/exec',
MAX_PARTICIPANTS: 6,
TIMEOUT_MS: 30000
};注意: 現在のシステムはGoogle Analyticsを使用しません。シンプルで軽量な構成になっています。
分析ツールが必要な場合は、以下を検討してください:
- Google Search Console(SEO分析)
- サーバーログ分析(GitHub Pagesのアクセス解析)
- 軽量な分析ツール(Umami、Plausibleなど)
├── index.html # メインページ(SEO・OGP対応)
├── styles.css # スタイルシート(グレーアウト対応含む)
├── script.js # フロントエンド機能(統一UI・残席表示)
├── iframe-embed-codes.html # 埋め込みコード
├── config.example.js # 設定テンプレート
├── config.js # 実際の設定(Git非公開)
├── manifest.json # PWA設定
├── README.md # このファイル
├── SECURITY.md # セキュリティガイド
├── LICENSE # MITライセンス
├── .gitignore # Git除外設定
├── 404.html # カスタム404ページ(星空テーマ)
├── Images/ # 画像ファイル格納フォルダー
│ ├── 観望会ロゴタイプ_黒.png # メインロゴ
│ ├── シンボルマーク.png # ファビコン・アプリアイコン
│ └── OGP-image.png # SNSシェア用画像
├── Google Apps Script/ # バックエンド(別途配置)
│ ├── Code.gs # メインAPI
│ └── setup-environment.gs # 環境変数設定
└── .github/ # GitHub設定
└── ISSUE_TEMPLATE/ # Issue テンプレート
styles.cssを編集してデザインをカスタマイズできます:
- カラーテーマの変更
- フォントの調整
- レイアウトの修正
- グレーアウト表示のスタイル調整
script.jsで以下の機能を追加・修正できます:
- 新しい入力項目
- カスタムバリデーション
- 追加のUIエフェクト
manifest.jsonを編集してPWAの設定を変更できます:
- アプリ名・説明の変更
- アイコンサイズの追加
- 表示モードの調整
Images/フォルダーで画像を管理:
シンボルマーク.png: ファビコン・アプリアイコン用OGP-image.png: SNSシェア用専用画像観望会ロゴタイプ_黒.png: メインロゴ・404ページ用
このプロジェクトはエンタープライズレベルのセキュリティ対策を実装しています:
- XSS攻撃防止: HTMLエンティティエンコーディング
- SQLインジェクション対策: 危険パターンの検出・ブロック
- CSRF攻撃防止: リファラーチェック
- DoS攻撃対策: レート制限機能
- 機密情報保護: 環境変数管理
- APIエンドポイントの機密性確保
- 入力データの適切なサニタイゼーション
- レート制限の正常動作確認
- アクセスログの監視
詳細は SECURITY.md をご覧ください。
公開サイト: https://flint8777.github.io/TEST_KesenNuma-StarryNight/
このリポジトリは、気仙沼で実施する星空観望会の参加予約システムです。フロントエンドは静的サイト(GitHub Pages)でホストし、バックエンドは Google Apps Script を使用してスプレッドシートへ予約を記録します。
- マルチステップの予約フォーム
- 出席者数の選択
- ワークショップ(はい/いいえ)の選択
- プラネタリウム(はい/いいえ)の選択
- 時間帯ごとの予約(残席あり/残席なしの表示)
- 残席不足や満席の時間帯は選択肢としてグレーアウト表示
- 入力検証と基本的なセキュリティ対策(XSS、レート制限など)
-
リポジトリをクローン
git clone https://github.com/flint8777/TEST_KesenNuma-StarryNight.git cd TEST_KesenNuma-StarryNight
-
設定ファイルの準備
config.example.jsをコピーしてconfig.jsを作成し、API_URLをデプロイ済みの Google Apps Script の URL に変更してください。
-
Google Apps Script のデプロイ
- Google Apps Script に
Code.gsとsetup-environment.gsをアップロードし、ウェブアプリとしてデプロイします。実行ユーザーは適宜設定してください。
- Google Apps Script に
-
スプレッドシートの準備
- 予約データ用のスプレッドシートを作成し、Apps Script からの書き込み権限を確認してください。
config.js の基本例:
const CONFIG = {
API_URL: 'https://script.google.com/macros/s/YOUR_DEPLOYMENT_ID/exec',
MAX_PARTICIPANTS: 6,
TIMEOUT_MS: 30000
}- index.html
- styles.css
- script.js
- iframe-embed-codes.html
- config.example.js
- config.js (運用時は Git 管理外にすること)
- manifest.json
- SECURITY.md
- Images/
- Google Apps Script ファイル (Code.gs, setup-environment.gs)
- デモ環境では一部機能(メール送信など)を無効化している場合があります。運用時は
setup-environment.gsで環境変数を適切に設定してください。 - 本番では
ALLOW_DIRECT_ACCESSやENABLE_REFERRER_CHECK等のセキュリティ設定を見直してください。
- v2.1.0 (2025-08-20): UI/表示改善(選択肢統一、残席表示の簡略化、Analytics 削除)
- v2.0.0 (2025-08-20): SEO/OGP、PWA 準備、画像整理
- v1.0.0 (2025-08-19): 初回リリース
MIT License