React/Vite製SPAで構築されたカスタムECサイトの内部構造を、実際に観測されたエンドポイントやデータスキーマから徹底解剖 CSR(クライアントサイドレンダリング)では、ファーストビューの遅延、ソフト404、メタデータの不足などSEO面で重大なリスクがある WooCommerceと比較し、「カスタムが常に優れているわけではない」という事実を、速度・拡張性・保守性・コストの観点から分析

Create a landscape editorial hero image for this Studio Global article: Bạn là bộ NÃO LẬP KẾ HOẠCH của một code agent. Bạn không trực tiếp truy cập máy; ENGINE sẽ thực thi đúng một lệnh JSON bạn in ra và trả kết. Article summary: {"tool":"write","args":{"path":"PHAN TICH KIEN TRUC ECOMMERCE.md","content":" Phân tích kiến trúc và hướng viết lại nền tảng e commerce\n\n Phạm vi và mức độ chắc chắn\n\nBáo cáo này phân biệt rõ ba loại kết luận:\n\n Dữ. Topic tags: general web, workflow, code, python, javascript. Style: premium digital editorial illustration, source-backed research mood, clean composition, high detail, modern web publication hero. Use reference image context only for broad subject, composition, and topical grounding; do not copy the exact image. Avoid: logos, brand marks, copyrighted characters, real person likenesses, fake screenshots, UI text, readable text, watermarks, char
「Reactで作ったSPA(シングルページアプリケーション)+独自のREST API。これこそモダンなECサイトだ。」
そう思っている開発者やプロダクトオーナーは少なくないでしょう。しかし、実際に動いているサイトを徹底的に解析すると、その「モダンさ」の裏に、SEO、データモデル、運用面で無視できない課題が潜んでいることがわかります。
本記事では、実際に稼働するあるECサイト(フロントエンド:React/Vite、バックエンド:独自REST API、CDN:Cloudflare)のアーキテクチャを、観測可能な事実と技術的な推論に基づいて深掘りします。そして、WooCommerceなどの既存プラットフォームと比較しながら、今後のリライト(書き換え)における最適な戦略を考察します。
※この分析は、特定の企業のコードや内部情報を不正に取得したものではありません。公開されているURL、APIレスポンス、HTML構造から読み取れる事実に基づいています。
サイトは以下の三層で構成されていました。
仮に「ヘッドレスWooCommerce」を利用していれば、WooCommerceのREST APIに特有のエンドポイント構造(/wp-json/wc/v3/productsなど)や、商品データのスキーマ(meta_dataフィールドなど)が現れます。
しかし、観測されたAPIは以下のような、完全に独自設計のものでした。
GET /api/products?limit=500&active=1GET /api/products/<slug>GET /api/homepageGET /api/layoutGET /api/public/settingsPOST /api/coupons/validatePOST /api/paypal/create-orderPOST /api/paypal/captureこれらのエンドポイント名、JSONレスポンスのフィールド名(section_order, variants, standard_handling_minなど)、そしてバックエンドのルーティング構造は、既存のECプラットフォームのそれとは全く異なります。これは、フロントエンドだけでなく、バックエンドも含めて完全にスクラッチで構築された「カスタムEC」であることを強く示唆しています。
<script type="module" src="/assets/index-<hash>.js">ポイント: 技術スタックの推測は、確固たる証拠に基づいて行うべきです。「ReactだからバックエンドはNode.jsに違いない」というような、生態系の類似性だけで結論を急ぐのは危険です。
<div id="root"></div>この仕組みは、検索エンジンにとって大きな問題を引き起こします。
/product/存在しないスラッグ)にアクセスしても、HTTPステータスコード200が返ってきます。Googleはこれを「ソフト404」と見なし、インデックス品質を低下させる可能性がありますGoogleの公式見解: Googleは動的レンダリング(クローラーにだけプリレンダリングHTMLを返す手法)を「あくまで一時的な回避策」と位置づけ、長期的な解決策として**サーバーサイドレンダリング(SSR)や静的サイト生成(SSG)**を推奨しています
。
観測されたAPIレスポンスやHTMLに埋め込まれたデータ (window.__INITIAL_DATA__ など) を解析すると、データモデルに複数の問題点が見えてきました。
現在のデータ構造は、「商品(Product)中心」 であり、「バリエーション(Variant)中心」 ではありません。
stock(在庫数)がバリエーションレベルではなく、商品レベルで管理されている。sizes(サイズ)、colors(色)も商品のプロパティとして配列で保持。XXL と 2XL が混在。ink navyInk Navytype や isbn といった、一般的なECサイトでは使われないフィールドが存在。これは別のドメインから流用した名残の可能性が高い。これらの不整合は、フィルタリング機能のバグ、在庫管理システムとの連携エラー、そしてアナリティクスの精度低下を引き起こします。
ホームページは、API (/api/homepage) から取得した section_order という配列に従って、ブロック(ヒーロー画像、プロモ、商品グリッドなど)を動的に並べ替えられる仕組みになっていました。これは、マーケティング担当者がフロントエンドのコードを変更せずにレイアウトを変更できる、非常に柔軟な設計です。
しかし、その裏で以下のような問題も見られました。
ann(announcementの略?)と announcement という、明らかに重複・旧称と思われるキーが混在。section_order、表示ON/OFFのフラグ、各ブロックのペイロード(画像URL、テキストなど)が別々のオブジェクトで管理されているため、データ不整合が発生しやすい構造でした(例:section_order にはあるブロックが指定されているが、ペイロードが存在しない、など)。PayPal決済は、一般的なcreate-order → capture のフローを採用しており、大枠は正しい設計です。
しかし、本番運用で致命的なバグを生まないためには、以下のような高度な考慮が不可欠です。
| 比較項目 | カスタムReact SPA | 従来のWooCommerce | 推奨するNext.js型ハイブリッド |
|---|---|---|---|
| UIの自由度 | 非常に高い | テーマ/ビルダーに依存 | 非常に高い |
| デフォルトのSEO | リスク大(特にCSR) | 良好(HTMLがサーバーサイド) | 良好(適切に設定すれば) |
| ページ内遷移の速度 | 高速 | 画面全体をリロード | 高速(プログレッシブエンハンスメントあり) |
| ファーストビュー | JS/API待ちで遅延する可能性 | HTMLが即座に表示される | HTMLが即座に表示される |
| 管理画面(バックオフィス) | 自作が必要 | 成熟しており充実 | 自作 or Commerce Engine利用 |
| 開発・保守コスト | エンジニアリングコストが高い | プラグイン/アップデート管理コスト | エンジニアリングコストは高いが、アーキテクチャはより堅牢 |
| マルチチャネル展開 | 容易 | REST/Headlessレイヤーが必要 | 容易 |
| 商品数16の小規模サイトへの適合性 | オーバーエンジニアリングの可能性 | 非常にフィット | ブランド戦略次第でフィット |
| 導入スピード | 遅い(スクラッチ開発のため) | 速い | やや速い(フレームワーク利用) |
| セキュリティ | 自己責任で高められるが、穴を作りやすい | プラグインの脆弱性に注意が必要 | フレームワークに準拠するが、実装次第 |
今のカスタムECは、「カスタムであること」自体が悪いわけではありません。問題は、その実装方法(Pure CSR SPA) と、将来を見据えたデータモデルにあります。
フロントエンドとしてNext.js(App Router) を採用することを強く推奨します。Next.jsは、以下の3つのレンダリング手法を柔軟に組み合わせられます。
これにより、「初回表示は高速でSEOに強い」「2回目以降のページ遷移はSPAのようにスムーズ」 という、理想的なユーザー体験と検索エンジン対策を両立できます。
Product、Variant(SKU、在庫数、価格、オプション値)、Option(サイズ、色など)という明確な関係性で設計する。GET /api/public/settingstax_id)が漏れていないか確認する。お問い合わせやニュースレターのAPIには、適切なレート制限とバリデーションを実装する。「モダンだから」「かっこいいから」という理由で、技術の本質を見誤ってはいけません。 あなたのビジネスにとって、本当に「最適な」選択は何か。本記事がその判断の一助となれば幸いです。
参考文献:
Google Developers. “Dynamic Rendering as a workaround.”
Google Search Central. “Understand JavaScript SEO Basics.”
Digital Codex. “JavaScript SEO: How Google Crawls and Indexes JS.”
Fuel Online. “JavaScript SEO 2026: How To Make SPAs & Dynamic Sites Crawlable.”
Incremys. “JavaScript SEO 2026: Rendering, SSR and Pre-Rendering.”
The Growth Terminal. “JavaScript Rendering SEO in 2026: The Framework That Kills Rankings.”
Google Search Central Forum.
Search Engine Land. “Google no longer recommends using dynamic rendering for Google Search.”
Studio Global AI
Use this topic as a starting point for a fresh source-backed answer, then compare citations before you share it.
React/Vite製SPAで構築されたカスタムECサイトの内部構造を、実際に観測されたエンドポイントやデータスキーマから徹底解剖
React/Vite製SPAで構築されたカスタムECサイトの内部構造を、実際に観測されたエンドポイントやデータスキーマから徹底解剖 CSR(クライアントサイドレンダリング)では、ファーストビューの遅延、ソフト404、メタデータの不足などSEO面で重大なリスクがある
WooCommerceと比較し、「カスタムが常に優れているわけではない」という事実を、速度・拡張性・保守性・コストの観点から分析