Skip to content

LiGA DiVeRTiDA リニューアル — 技術方針

2026-04-15 作成

1. プロジェクト概要

プロジェクト名LiGA DiVeRTiDA リニューアル
現行サイトhttps://www.ligad-genius.jp/
概要フットサル・ソサイチ大会マッチングプラットフォームのフルリプレイス
MVPリリース目標2026/6/14
Ver.22026年秋以降

現行サイトの課題

課題影響誰が困るか
スマホ非対応ユーザーの大半がスマホ利用。申込完了率の低下に直結ユーザー
決済エラー多発申込途中で離脱 → 売上機会損失・問い合わせ対応コストユーザー / 運営
大会が探しにくいフィルタ・検索が貧弱。日程・エリア・レベルで絞れないユーザー
スプレッドシートで手動管理受注・スケジュール・収支を全て手作業で転記。ミスと工数の温床運営
データのリアルタイム把握不可売上・申込状況の把握にタイムラグ。経営判断が遅れる経営

2. 技術スタック

アプリケーション
フロントエンド
Next.js 15
SSR/SSG/ISRの柔軟性、SEO対応、Turbopackによる開発速度向上
バックエンド
NestJS
TypeScript統一、構造化されたAPI設計、決済・枠ロック等の複雑なロジックに適する
ORM
Drizzle
型安全、SQLに近いクエリ記述、オーバーヘッドほぼゼロ
認証
BetterAuth
Google / LINE等のOAuthビルトイン、ロール管理プラグイン内蔵
フロントエンド周辺
UIコンポーネント
shadcn/ui + Tailwind v4
依存最小化、管理画面の高速実装
フォーム
React Hook Form + Zod
型安全なバリデーション、フロント/バック共通スキーマ
状態管理
Zustand
軽量、申込フォームの状態管理
リッチテキスト
Tiptap
お知らせ等のエディタ
外部サービス
決済
Stripe
カード/コンビニ/PayPay/銀行振込に一括対応(後述)
メール
Resend + React Email
高い到達率、Reactでテンプレート記述可能
開発基盤
モノレポ
Turborepo
型・スキーマ共有、CI高速化
テスト
Vitest + Playwright
ユニット/統合 + E2E
CI/CD
GitHub Actions
プッシュ・PR単位で自動テスト・デプロイ

LINE連携ログインとLINE通知は別物

LINE連携ログイン(OAuth)LINE通知(Messaging API)
仕組みLINEアカウントでログインする機能。ユーザーのプロフィール情報を取得するだけLINE公式アカウントからメッセージを送信する機能。友だち追加が必要
ユーザーの操作ログイン画面で「LINEでログイン」を選択LINE公式アカウントを友だち追加
通知は送れるか送れない送れる
認証基盤との関係Google OAuth / LINE OAuthは選択肢の一つ認証方式に依存しない。Google OAuthでログインしていても後から追加可能

MVPではGoogle OAuthでログイン + メールで通知。LINE通知が必要になった場合は、認証方式を変えずにLINE公式アカウント連携(友だち追加フロー + Messaging API)を追加するだけで対応可能。

3. 決済(Stripe)

Stripeひとつで以下の決済手段を全てカバー。別サービスの契約や個別実装は不要。

クレジットカード
Visa / Master / Amex / JCB
手数料 3.6%
コンビニ決済
ファミマ / ローソン 等
手数料 3.6%
PayPay
QRコード決済
手数料 3.6%
銀行振込
仮想口座で自動照合
手数料 1.5%
Apple Pay
iPhone / Safari
手数料 3.6%
Google Pay
Android / Chrome
手数料 3.6%

初期費用・月額固定費なし。決済が発生した分だけ手数料がかかる従量課金。

4. インフラ構成

  ユーザー ──→ Vercel (Next.js) ──→ Cloud Run (NestJS) ──→ Cloud SQL (PostgreSQL)
                   │                       │
                   │                       ├──→ Stripe(決済)
                   │                       ├──→ Resend(メール送信)
                   │                       └──→ Cloudflare R2(画像等)
                   │
                   └──→ Sentry(エラー監視)
レイヤーサービス選定理由
フロントVercelNext.js開発元。プレビューデプロイ自動
バックエンドCloud Runコンテナ置くだけ。ゼロスケール対応、自動SSL
DBCloud SQL (PostgreSQL)マネージド、自動バックアップ
ストレージCloudflare R2S3互換、転送料無料
監視Sentry + Vercel Analyticsエラー監視 + パフォーマンス

なぜこの構成でシンプルに済むのか

AWS自前構築で必要になるインフラ要件の大半が、マネージドサービスに組み込み済み。

要件AWS自前構築の場合今回の構成
ロードバランサALB設定・ターゲットグループ管理Cloud Run / Vercel が自動で負荷分散
オートスケールECS Service Auto Scaling設定Cloud Run がリクエスト単位で自動スケール(ゼロスケール対応)
CDNCloudFront設定・キャッシュポリシーVercel Edge Network が標準搭載(全世界エッジ配信)
SSL証明書ACM発行 + ALB紐付け + 更新管理Vercel / Cloud Run が自動発行・自動更新
マルチリージョン複数リージョンに手動で構築Vercelは自動エッジ配信。Cloud Runは東京リージョン単一で十分(MVP規模)
DDoS防御AWS Shield / WAF設定Vercel自動保護 + Cloud Armor(必要時に有効化)
DB高可用性RDS Multi-AZ設定Cloud SQL HA構成(フェイルオーバーレプリカ、必要時に有効化)

④シートではAWS(ECS/Fargate/RDS/ALB/WAF等)前提でインフラ構築に13人日を見積もっている。マネージドサービス採用により、同等以上の信頼性を1人日で実現。

インフラコスト(MVP初期)

サービス月額目安
Vercel (Pro)約 ¥3,000〜
Cloud Run約 ¥500〜2,000
Cloud SQL (db-g1-small, SSD 20GB)約 ¥4,500
Cloudflare R2約 ¥200〜500
Resend¥0〜3,000
Sentry¥0〜
合計月 ¥8,000〜10,000 程度

ステージング環境

本番とは完全に分離されたステージング環境を開発初期から用意する。

サービス分離方法追加コスト
VercelGit連携で自動。PRごとにプレビューURLが発行される。追加設定不要¥0
Cloud Runサービスを2つ作成(api-staging / api-prod)¥0(ゼロスケール)
Cloud SQLステージング用に小インスタンスを追加約 ¥2,000/月
Cloudflare R2バケットを2つ作成(staging / prod)¥0
Stripe標準でテストモード / 本番モードが分離済み。APIキー切替のみ¥0
Resend環境変数でAPIキー切替。テスト時はサンドボックスドメイン¥0

コードは同一で、環境変数のセットだけでステージング/本番を切り替える構成。

なぜ開発初期からステージングが必要か

場面ステージングなしの場合ステージングありの場合
Stripe決済テストローカルではWebhookが受け取れず、「決済→DB反映→メール送信」の一連フローが検証できない。リリース直前に初めて結合して問題発覚 → 手戻りWeek 3からテストモードで実際のフローを通せる。問題を早期に潰せる
クライアント確認「画面できました」→ スクショやデモ動画で共有 → 実機で触れない → 認識ズレが後半で発覚URLを渡すだけでスマホ実機で触ってもらえる。「ここ違う」を即修正
本番リリース時リリース直前にステージング構築 → 環境差異でバグ → 本番に持ち込むか、リリース延期か本番と同じ構成で数週間動かしているため、環境起因の問題はゼロ
本番データ保護本番DBで開発中のコードを動かすと、決済・ポイントデータを壊すリスクがある。壊したら取り返しがつかないステージングDBは壊しても本番に影響なし。安全に試行錯誤できる

追加コストは月 ¥2,000 程度(Cloud SQLステージング用インスタンスのみ)。「リリース直前に作る」と手戻りコストの方が遥かに大きい。

5. 開発方針

基本方針

  • 速度重視 — モノができることを最優先
  • 開発効率の最大化 — コード生成にAIツールを一部活用し、開発速度を向上
  • モバイルファースト — ユーザー向けはシングルカラム・モバイルファーストで設計し、PCでも自然に見えるようブレイクポイントで調整。管理画面はデスクトップ前提

進め方

  • 設計書・仕様書は作らない — 動くコードとGitHub上のIssue / PRをソースオブトゥルースとする
  • やりとりはGitHub Issueで行う — 要望・質問・仕様確認はすべてIssueに起票。議論がそのまま開発タスクになり、経緯もコードと同じ場所に残る
  • 会話→実装→確認の短サイクル — Issueで要件を固め、すぐ実装してフィードバックを得る
  • 認識合わせは実画面で行う — ステージング環境にデプロイした実画面を見ながら確認。ワイヤーフレームやモックアップのやり取りは最小限にする
  • 進捗はGitHub Projectsで共有 — Issueをカンバン(Todo → In Progress → Done)で可視化。クライアントがリアルタイムで進捗を確認でき、進捗報告ミーティングが不要になる(無料)
  • PRごとにプレビューURLが自動生成 — Vercelが各PRに対して確認用URLを自動発行。画面確認のたびにデプロイ待ちやミーティングを挟む必要がなく、IssueにURLを貼るだけでフィードバックを受けられる
GitHub Issue — やりとりの場
liga-divertida / liga
Open
大会詳細ページに「参加の流れ」セクションを追加したい
#42 opened 2 hours ago by client-tanaka
C
初めて参加する人が「何を持っていけばいいか」「当日どう動けばいいか」分からないという声があります。

大会詳細ページの下部に、ステップ形式で流れを表示してほしいです。
enhancementユーザー向け
T
対応しました。プレビューで確認お願いします。
PR #58 Preview
PR #58 feat: 大会詳細に参加の流れセクション追加Merged

要望 → 議論 → PR → プレビュー確認がIssue内で完結

GitHub Projects — 進捗の可視化
LiGA MVPBoard
Todo 5
キャンセル・返金ロジック
決済
マイページ(履歴・予定)
ユーザー向け
メール送信(完了・リマインド)
In Progress 2
Stripe決済(テストモード結合)
P0T
枠ロック・排他制御
P0T
Done 8
認証基盤(Google OAuth)
大会検索・一覧(フィルタ全種)
大会詳細ページ
DBスキーマ設計

カンバン形式で進捗がリアルタイムに見える(無料)

モノレポ構成

フロント(Next.js)・バック(NestJS)・DB定義・共通型を1つのリポジトリで管理。型やバリデーションの二重実装をなくす。

liga/
├── packages/
│   ├── shared/     ← 型・バリデーションスキーマ・定数(フロント/バック共通)
│   ├── web/        ← Next.js 15(ユーザー向け + 管理画面)
│   ├── api/        ← NestJS(決済・定員管理・スケジュール等のAPI)
│   └── db/         ← Drizzle スキーマ・マイグレーション・seedデータ
├── .github/workflows/  ← CI/CD
└── docker-compose.yml  ← ローカル開発環境

シングルカラムレイアウト

ユーザー向け画面はモバイルファーストのシングルカラムで設計。PCではコンテンツ幅を広げ、余白やカードサイズを調整して自然な見た目にする。

UIトーン: カジュアル × ワクワク × シンプルでかっこいい。直感的に操作できるUI。

スマホ(基本設計)
9:41
LiGA
T
PICK UP
今週末の注目大会
タイムセール3,000pt還元
すべてフットサルソサイチ
日程 ▼エリア ▼Lv ▼
残り3枠
フットサルLv3
ドイツ代表レプリカユニカップ
4/25(金)9:45| 吉祥寺
¥25,500¥22,500
+3,000pt
ソサイチLv2
スペインリーグカップ
4/26(土)10:00| 有明
¥25,500
残り1枠
フットサルLv4
プレミアカップ
4/27(日)13:00| 錦糸町
¥28,000
ホーム
さがす
結果
マイページ

シングルカラム / 全幅

PC(ブレイクポイントで調整)
liga-new.jp
LiGA
ホームさがす結果マイページT
PICK UP
今週末の注目大会
タイムセール3,000pt還元
すべてフットサルソサイチサッカー
日程 ▼エリア ▼Lv ▼
残り3枠
フットサルLv3
ドイツ代表レプリカユニカップ
4/25(金) 吉祥寺
¥25,500 ¥22,500
+3,000pt
ソサイチLv2
スペインリーグカップ
4/26(土) 有明
¥25,500
残り1枠
フットサルLv4
プレミアカップ
4/27(日) 錦糸町
¥28,000

max-width: 768px / ナビ横並び・フィルタ展開・カード3列化

スマホを最優先で設計し、PCではブレイクポイント(768px〜)で余白・カード配置等を調整する最小限のレスポンシブ対応。管理画面はデスクトップ前提(shadcn/uiのData Table等をそのまま使用)。

テスト方針

全てにテストを書くのではなく、金銭・安全に直結する箇所に集中する。

P0
決済フロー(Stripe連携)
バグ=金銭事故
P0
枠ロック・排他制御
バグ=オーバーブッキング
P1
認証・認可
セキュリティ直結
P1
キャンセル・返金ロジック
金銭に関わる
P2
スケジュール自動生成
ロジック複雑

6. 開発体制

役割担当範囲人数
テックリード / PM技術選定・アーキテクチャ設計・進捗管理・クライアント窓口1名
フロントエンドエンジニアユーザー向けUI(トップ・検索・詳細・申込フォーム)・レスポンシブ対応・デザインシステム構築1名
バックエンドエンジニアAPI設計・Stripe決済・枠ロック・ポイント管理・スケジュール自動生成・管理画面1名
QA / インフラテスト設計・E2E / 統合テスト・CI/CD構築・ステージング / 本番環境管理・セキュリティ対応1名
合計4名

コード生成にAIツールを一部活用し、定型的な実装(CRUD・テストコード・設定ファイル等)を効率化。人間はレビュー・動作確認・ビジネス判断に集中する。

7. MVP開発スケジュール

前提

  • 体制: 4名
  • 期間: 約7週間
  • リリース目標: 2026/6/14(土)
  • 開発開始: 2026/4/28(月)
W1
4/28
W2
5/5
W3
5/12
W4
5/19
W5
5/26
W6
6/2
W7
6/9
基盤構築
スキーマ・認証・CI
ユーザー向けUI
検索・詳細・会場・タイムセール
申込・決済
Stripe・枠ロック・返金・ポイント
管理
CRUD・受注・スケジュール・スタッフ
テスト・仕上げ
E2E・本番構築・バグ修正
期間日付内容
Week 14/28 〜 5/2モノレポ初期化 / DBスキーマ全テーブル設計 / 認証基盤(Google OAuth)/ CI/CD / ステージング環境構築 / デザインシステム
Week 25/5 〜 5/9トップページ / 大会検索・一覧(フィルタ全種) / 大会詳細ページ / 会場一覧・詳細 / お知らせ / タイムセール表示
Week 35/12 〜 5/16申込フォーム / Stripe決済(テストモード結合) / 枠ロック / ポイント・クーポン適用 / ポイント有効期限
Week 45/19 〜 5/23メール送信 / マイページ / キャンセル・返金 / 事前払い・当日払い分岐 / 問い合わせ・法的ページ
Week 55/26 〜 5/30管理(施設・大会CRUD / 受注管理 / スケジュール自動生成 / キャンペーン・クーポン / ユーザー・ポイント管理)
Week 66/2 〜 6/6管理(収支管理・レポート / 現場スタッフ5画面 / 試合結果管理) / E2Eテスト(決済・申込フロー)/ 統合テスト(枠ロック)
Week 76/9 〜 6/13本番環境構築・DNS設定 / 負荷テスト / SEO対策 / バグ修正・最終調整 / クライアント最終確認
6/14(土)MVPリリース
GW(5/3〜5/6)に注意。Week 1の後半がGWにかかる。クライアント側のアカウント準備(Stripe本番申請・GCP OAuth同意画面設定・GCP請求設定)はGW前の4/28週中に依頼しておくこと。

8. 要件シート未記載だがMVPに組み込み済みの機能

ユースケース検証・現行サイト調査により発見し、全てMVP工数表に計上済み:

競技種別フィルタ
現行サイトの主要フィルタ
タイムセール機能(ポイントバック表示含む)
現行サイトの主要機能
事前払い / 当日払い料金分岐
現行の料金体系(22,500円 vs 24,500円)
大会参加の流れページ
初回ユーザー離脱防止(現行はNotionで代用)
雨天中止・開催変更の一斉通知
現行は開催2時間前にメール通知
ポイント有効期限・失効処理
現行は30日期限あり
賞品選択機能
申込時に3択から選ぶ(申込フォームに統合)
SNSシェア・OGP設定
集客導線
404・エラーページ
基本的なUX
問い合わせフォーム
現行サイトに存在
法的ページ(特商法・プライバシーポリシー)
法的要件
インドア / 屋外フィルタ
現行サイトの施設属性
大会ルール・レギュレーション表示 + 管理入力UI
大会詳細ページ + 大会・企画CRUDに統合
旧サイト(ligad.jp)リダイレクト
SEO・ユーザー導線維持

PayPay・銀行振込・コンビニ決済はStripe標準機能で対応可能(設定のみ)。

9. Ver.2(秋以降)スコープ

以下はMVPには含めず、Ver.2以降で対応する。

ユーザー向け
レコメンド機能(過去参加履歴ベース)
割り勘決済(メンバー間で参加費分割)
過去参加試合結果・スコア確認
ランキング表示(個人・チーム)
チーム登録・メンバー招待・離脱
チーム内チャット
助っ人参加・募集機能
管理
詳細分析ダッシュボード(KPI可視化)
スタッフ登録・シフト表・評価
給与計算(GMOあおぞらネット銀行連携)
外部連携
LaBOLA連携(試合結果・ランキング)
ラボーラ自動連携bot(コート予約自動取得)
LINE公式アカウント連携(友だち追加 → Messaging API)
メルマガ配信機能

10. クライアント確認事項

1
ドメインは既存(ligad-genius.jp)を継続か、新規取得か
現行ドメインの検索順位は低く、SEO資産は限定的。新規ドメインの方がリダイレクト対応が少なくシンプル
2
ログイン方式の選定 — LINE連携ログインでも対応可能だが、Google OAuthなど他の選択肢もある。どの方式をメインにするか
どの方式を選んでも実装工数はほぼ同じ(BetterAuthがビルトイン対応)。なお、LINE通知(リマインド・中止連絡等)はログイン方式とは無関係で、別途LINE公式アカウント連携が必要(前述)。通知が必要な場合のタイミング(MVPかVer.2か)も要確認