[ ♥REC. ] ·技術改善のご提案書
🇯🇵 日本語
📋 技術改善のご提案 LRCC-2386 2026-05-19 | Amela 開発チーム

CMS表示速度の
アーキテクチャ刷新のご提案

先日ご報告した「CMS側の反応スピードが遅い」件(LRCC-2386)の原因究明レポートに続き、 増加したデータ量に対応しつつ、貴社が当初ご要望された データの鮮度もしっかり担保する形での 中長期改善案をご提案いたします。

エグゼクティブサマリ
  • 当初のご判断(リアルタイム・直接クエリ)は当時の前提として完全に妥当でした
  • データ量が大幅に増加 → アーキテクチャの進化が必要なフェーズに
  • 2層構成へ刷新 — Google Analytics・Stripe等が採用する業界標準パターン
  • 応答時間: 60秒 → < 1秒、データ鮮度は約5分以内を維持
01 | 背景

当初のご判断と現状

改善案をご提案する前に、まず経緯を正しく整理させていただきます。

当初の方針 プロジェクト初期

リアルタイム + 直接DBクエリ

CMS構築時、貴社より「ダッシュボードは常に最新のデータをリアルタイムで表示してほしい」とのご要望をいただきました。 ご要望に最も忠実な形で応えるべく、画面を開く度に データベースへ直接クエリを実行する方式を採用いたしました。

この判断は正しいものでした: 当時はデータ量が小さく、重いクエリでも1〜2秒で完了し、何より「絶対的な精度の保証」が最優先事項でした。

2026年5月現在 データは約50〜100倍に増加

同じ方式 — しかしデータは大きく成長

運用1〜2年経過し、取引系テーブルが大幅に成長: video_viewテーブル約500万行、 transactionテーブル約300万行。

同じクエリが現在は約1.5億行のスキャンを要し、 画面表示に60秒以上かかっている状況です(LRCC-2386詳細レポート参照)。

詳細: customer-report-jp.html

つまり、当初の方式が間違っていたわけではございません — データの成長に伴って スケールしなくなったというだけのことです。 これは、あらゆるデータプロダクトが辿る自然な成長フェーズでございます。
— Amela 開発チーム
02 | 提案アーキテクチャ

2層構成への進化 — 業界標準パターン

毎リクエストごとに直接クエリする方式から、2段階のバッファを挟む方式へ。 これは大規模アナリティクスダッシュボードでは事実上のデファクトスタンダードです。

現状
CMS管理画面
バックエンドAPI
直接DBクエリ
毎回 約1.5億行スキャン
60秒
ご提案
CMS管理画面
バックエンドAPI
レイヤー 1 | Redisキャッシュ
TTL 5〜10分 · <100ms
↓ (cache miss時)
レイヤー 2 | 集計テーブル
15分毎に再計算 · <1秒
↓ (fallback)
元のデータベース
必要時のみ直接アクセス
< 1秒
レイヤー 1

Redisキャッシュ

高速メモリ上にクエリ結果を一時保存します。リクエストはまずキャッシュを確認し、 ミスまたは期限切れ(TTL 5〜10分)の場合のみデータベースへアクセスします。

  • +初回アクセスは従来通り(キャッシュミス)
  • +10分以内の2回目以降: <100msで表示
  • +Redisは既存スタックに導入済 — 追加コストなし
レイヤー 2

集計テーブル(事前集計)

日次集計テーブル(例: partnership_revenue_daily)を新設し、 バックグラウンドのcronジョブが15〜30分毎に更新します。 複雑な集計クエリが小さなSUM計算に置き換わります。

  • +6ヶ月分のデータでも約180行のスキャンで完了(従来は1.5億行)
  • +長期間フィルタでも常に <1秒で応答
  • +他の集計画面(売上、会員統計等)にも応用可能
03 | Industry Standard

これは業界標準の処理パターンでございます

大規模アナリティクスダッシュボードでは、ほぼ例外なくこのアーキテクチャが採用されております。 応急処置ではなく、システム設計の教科書にも記載される正式なパターンです。

Google Analytics
数百万サイトを集計
「標準レポートは24〜48時間ごとに処理・更新されます。 リアルタイムレポートは別パネルにて直近30分のみ表示します」
Stripe Dashboard
世界規模の決済管理画面
「ダッシュボードの数値は最大数分の遅延が発生する場合がございます。 リアルタイムデータが必要な場合はStripe Sigmaまたはイベントをご利用ください」
Mixpanel
プロダクト分析プラットフォーム
「チャートやファネルは時間単位で集計されたキューブを使用します。 Live Viewは直近100イベントのみリアルタイム表示します」
Amazon QuickSight
AWS BIサービス
「SPICEインメモリキャッシュが時間単位〜日次で更新されます。 Direct Queryモードもございますが、100万行以下のテーブルでのみ推奨です」
Snowflake / BigQuery
大手データウェアハウス
「Materialized Viewが自動的にクエリ結果を事前集計します。 大規模ファクトテーブルに対するダッシュボードの標準パターンです」
Shopify Admin
ECサイト管理画面
「アナリティクス画面のデータは約30分の遅延がございます。 全マーチャント間でパフォーマンスと整合性を担保するためです」
このパターンは正式名称 「OLAP クエリ最適化」 と呼ばれており、 取引系クエリ(OLTP: リアルタイム必須、少行数)と 統計系クエリ(OLAP: 集計、キャッシュ可)を分離する設計手法でございます。 エンタープライズ向けアナリティクス製品では、ほぼ例外なくこの方式が採用されております。 LoveRecがこの方向に進化することは、不具合の修正ではなく、自然な成長段階に応じた拡張と位置付けられます。
04 | データ鮮度の担保

「リアルタイム」へのご懸念について

当初の貴社のご要望「データはリアルタイムであるべき」は完全に妥当なものでございました。 本提案では、データ鮮度をできる限りリアルタイムに近い状態で維持する仕組みも併せてご用意いたします。

ご懸念
「キャッシュを使うとデータが古くなるのでは?」
回答: キャッシュTTLは5〜10分に設定 — CMS管理画面のコンテキストではほぼリアルタイムに相当いたします。 管理者の方がダッシュボードをご覧になる際は、傾向の把握が主目的であり、30秒単位の意思決定をされるケースは稀でございます。 集計画面における5分のラグは「即時表示」と体感的に同等です。
ご懸念
「管理者が今すぐ最新の数値を見たい場合は?」
回答: 画面上に 「🔄 最新を取得 / Refresh now」ボタンを配置いたします。 管理者がクリックした場合のみキャッシュをバイパスし、直接クエリで最新値を取得します。 この場合は従来通りの応答時間となりますが、管理者ご自身が「待ち時間を許容する」明示的な選択となります。 Stripe Dashboardの「Refresh」ボタンと同等の体験です。
ご懸念
「管理者は表示中のデータがいつのものか分かるのですか?」
回答: ページ右上に 「3分前に更新」 のラベルを常時表示いたします。 データ鮮度を完全に可視化し、管理者は集計時刻を常時把握できます。
ご懸念
「絶対にリアルタイムが必要な機能もあるのではないか?」
回答: 本提案の対象は 集計・統計系の画面のみ (売上総額、プラン別会員数、収益分析 等)。 リアルタイム性が絶対条件となる機能 (通知、チャット、現在オンラインユーザー一覧 等)は 従来通りの直接クエリ方式を維持いたします。
05 | 実装ロードマップ

2フェーズ + オプション機能

段階的なリリースとし、各フェーズで明確な改善効果を確認いただけます。

1

フェーズ 1 — Redisキャッシュ層

工数: 約1〜2日 最大ROI

CMS内の重い5エンドポイント (収益、統計、会員一覧等)にキャッシュ層を追加します。 初回アクセス時はキャッシュミスのため従来通り60秒、10分以内の2回目以降は <100ms となります。

リスク: 非常に低(キャッシュOFFでロールバック可能)
体感効果: 即座に表示速度が向上
検証期間: A/B テスト 1週間
2

フェーズ 2 — 事前集計テーブル

工数: 約3〜5日 根本対応

*_daily形式の集計テーブルを新設し、 既存のcron-job-serviceワーカで15分毎に更新します。 重いクエリでも初回から < 1秒に短縮されます。

リスク: 低(既存テーブル維持、集計テーブル追加のみ)
体感効果: 常時 <1秒の安定した応答
他画面への波及: 80%のダッシュボードに応用可能
3

フェーズ 3 — Refresh ボタン + 鮮度ラベル (UI)

工数: 約1日 オプション

各集計画面に「Refresh now」ボタンと「Updated X minutes ago」ラベルを追加します。 管理者が明示的に最新データを取得できる手段を提供し、特殊なリアルタイム要件の1%のケースもカバーします。

ご検討のお願い

本ご提案について、以下の3点をご検討いただけますと幸いです:

  1. 1
    本提案アーキテクチャ(2層キャッシュ + 事前集計)への方向性のご承認
  2. 2
    フェーズ1のみ先行か、フェーズ1+2を一括実施か、ご希望をお聞かせください
  3. 3
    実装開始時期(リリーススケジュールへの組み込み)についてご相談させていただければと存じます

ご不明な点、ご懸念、追加でご確認されたい事項などございましたら、 お気軽にお申し付けくださいませ。本件について別途お打ち合わせのお時間をいただけますと幸いです。

何卒よろしくお願いいたします。

関連資料
  • 📋 Backlog: LRCC-2386
  • 📄 原因究明レポート: customer-report-jp.html
  • 🎬 動画証跡: 貴社よりご提供いただきました録画
数値まとめ
現状応答時間60秒+
フェーズ1完了後100ms (2回目以降)
フェーズ2完了後< 1秒 (初回から)
データ鮮度5分以内
Amela 開発チーム | 株式会社Amela Inc.
2026年5月19日