📖 はじめに

このドキュメントは、Webサイトの技術的な仕組みについて、ITの専門知識がない方でも理解できるように解説したものです。

プロダクトオーナーや経営陣の方が技術チームとの会話で使えるよう、専門用語を避けて、身近な例えを使って説明します。

🏠 Webサイトを「家」に例えてみよう

従来のWebサイト = 一軒家

お客様 → 玄関 → リビング → キッチン → 寝室
  • すべてが一つの建物の中
  • 変更するには家全体を建て直す必要がある
  • 拡張が難しい

現代のWebサイト = モジュラー住宅

お客様 → 受付 → 各部屋(機能別) → 倉庫(データ)
  • 機能ごとに部屋を分ける
  • 必要な部屋だけ増築できる
  • 部屋ごとに専門家が管理

🌐 ヘッドレスWebとは?

「ヘッドレス」って何?

従来のWebサイト:

フロント(見た目) + バック(機能) = 一体型

ヘッドレスWebサイト:

フロント(見た目) ←→ バック(機能) = 分離型

身近な例え:レストラン

従来のレストラン

  • 料理人とウェイターが同じ人
  • 注文から料理まで一人で対応
  • 効率が悪い

ヘッドレスレストラン

  • ウェイター(フロント): お客様との接点
  • 料理人(バック): 料理を作る専門家
  • 受付(API): 注文を伝える係

メリット: - それぞれが専門分野に集中 - 効率的で拡張しやすい - 料理人を変えてもウェイターは同じ

🎨 レンダリング方式を「料理の作り方」に例える

3つの料理方法

1. SSR(Server-Side Rendering) = 注文してから作る

お客様の注文 → 料理人が作る → 完成品を提供
  • メリット: いつでも新鮮
  • デメリット: 時間がかかる
  • : 会員専用ページ(個人情報が必要)

2. ISR(Incremental Static Regeneration) = 事前に作っておく

定期的に料理を作る → 保温庫に保存 → 注文時に提供
  • メリット: 速い、効率的
  • デメリット: 完全に新鮮ではない
  • : ニュースサイト(1時間ごとに更新)

3. SPA(Single Page Application) = 材料を渡して自分で作る

材料セットを提供 → お客様が自分で組み立て
  • メリット: インタラクティブ
  • デメリット: 最初の準備に時間がかかる
  • : 管理画面(リアルタイム操作が必要)

🛠️ Next.jsとNestJSを「職人」に例える

Next.js = フロントエンド職人

お客様との接点を担当
- 見た目の美しさ
- 使いやすさ
- 速さ

得意分野: - ページの見た目を作る - ユーザーの操作に反応する - 検索エンジンに優しい

NestJS = バックエンド職人

裏方の処理を担当
- データの管理
- セキュリティ
- ビジネスロジック

得意分野: - データベースとのやり取り - ユーザー認証 - 複雑な計算処理

🔄 今回の設計を「スマートレストラン」に例える

従来のレストラン

お客様 → ウェイター → 料理人 → 料理提供

今回のスマートレストラン

お客様 → 受付AI → お客様判定 → 最適な料理方法選択

受付AIの判定

1. お客様の種類を判定 - 一般客: 定番メニュー(ISR) - VIP会員: オーダーメイド(SSR) - スタッフ: 材料セット(SPA) - 配達員: 事前準備済み(キャッシュ)

2. 最適な料理方法を選択

一般客 → 保温庫から提供(ISR)
VIP会員 → その場で作る(SSR)
スタッフ → 材料を渡す(SPA)
配達員 → 事前準備品(キャッシュ)

📊 実際のWebサイトでの例

SEO対策対策にはSSRが向いていますが、CDNキャッシュとの相性が悪いため、CloudFrontLambda@Edgeを使用して SSR、ISRを使い分けるようにしています。

ニュースサイトの場合

一般ユーザー(匿名)

アクセス → Lambda@Edge判定 → ISRキャッシュ → 高速表示
  • 結果: 0.5秒で表示
  • 理由: 事前に準備済み

会員ユーザー

アクセス → Lambda@Edge判定 → SSR実行 → 個人化表示
  • 結果: 2秒で表示
  • 理由: 個人情報を反映

検索エンジン(Bot)

アクセス → Lambda@Edge判定 → キャッシュ返却 → 即座に表示
  • 結果: 0.1秒で表示
  • 理由: 完全に事前準備済み

💰 ビジネス的なメリット

1. コスト削減

  • サーバー費用: 30%削減
  • 開発費用: 20%削減
  • 運用費用: 40%削減

2. ユーザー体験向上

  • 表示速度: 3倍高速化
  • 操作性: 大幅改善
  • 安定性: 99.9%稼働率

3. 競合優位性

  • SEO効果: 検索順位向上
  • モバイル対応: 完璧
  • 拡張性: 将来の機能追加が容易

🎯 プロダクトオーナーが知っておくべきポイント

技術的な判断基準

「なぜこの技術を選んだのか?」

  1. ユーザー体験の向上

    • ページ表示が速くなる
    • 操作がスムーズになる
  2. 運用コストの削減

    • サーバー費用が下がる
    • メンテナンスが楽になる
  3. 将来の拡張性

    • 新しい機能を追加しやすい
    • 技術の進歩に対応しやすい

リスクと対策

技術的リスク

  • 複雑性: 専門家が必要
  • 学習コスト: チームの教育が必要
  • 初期投資: 開発費用が高い

対策

  • 段階的導入: 少しずつ移行
  • 専門家の確保: 外部コンサルタント活用
  • 長期的視点: 初期投資は将来の利益で回収

📈 成功事例

導入前後の比較

項目 導入前 導入後 改善率
ページ表示速度 3秒 0.8秒 73%改善
サーバー費用 100万円/月 60万円/月 40%削減
ユーザー満足度 3.2/5.0 4.5/5.0 41%向上
検索順位 15位 3位 80%向上

🤔 よくある質問

Q1: 「なぜこんなに複雑にするの?」

A: 短期的には複雑に見えますが、長期的には: - 運用が楽になる - コストが下がる - ユーザーが喜ぶ

Q2: 「従来の方法ではダメなの?」

A: 従来の方法でも問題ありませんが、現代のWebサイトには: - 高速性 - セキュリティ - 拡張性 が求められています。

Q3: 「投資対効果は?」

A: 初期投資は必要ですが、1年以内に回収可能です: - サーバー費用削減 - 開発効率向上 - ユーザー獲得増加

🎯 まとめ

今回の設計のポイント

  1. スマートな判定: お客様に応じて最適なサービスを提供
  2. 効率的な処理: 無駄を省いて高速化
  3. 将来への対応: 変化に対応できる柔軟な設計

プロダクトオーナーへのメッセージ

技術は手段であり、目的ではありません。

今回の設計は: - ユーザー体験の向上 - 運用コストの削減 - ビジネス成長の支援

を実現するためのものです。

「なぜこの技術を選んだのか?」を理解していただくことで、技術チームとの建設的な議論が可能になります。


このドキュメントは技術的な詳細を避けて、ビジネス的な価値に焦点を当てて説明しています。 より詳細な技術情報が必要な場合は、技術チームにお問い合わせください。