「システム監視ツールは『正常(All Green)』を示している。
でも、お客様は買わずに帰っている。」
プロダクトマネージャー(PM)やエンジニアとして、これほど背筋が凍る瞬間はありません。
CloudWatchのアラートは鳴っていない。
サーバーも落ちていない。
しかし、Google Analytics(GA4)のコンバージョン率(CVR)だけが、じわじわと下がっている。
これを私たちは**「サイレントキル(静かなる死)」**と呼んでいます。
ユーザーは、バリデーションエラーや使いにくいUIに直面したとき、わざわざ問い合わせフォームから報告などしてくれません。ただ黙ってブラウザを閉じ、二度と戻ってこないだけです。
本記事では、この見えない機会損失をゼロにするための**「データ駆動型UX改善基盤」**のAWSアーキテクチャを公開します。
統計データ(GA4)と事実データ(DynamoDB)を一本の線で繋ぎ、PMとアーキテクトが共通言語で語れるようになるための「架け橋」となる設計論です。
これこそ、アプリ、データ、AWSを掛け合わせたモダン開発、すべての部分を最適化する設計です。
第1章:なぜRDSへのログ保存は失敗するのか? UX改善を阻む「ログ分析」の課題
多くのWebアプリケーションにおいて、エラーログの扱いはあまりにも軽視されています。
最悪のアンチパターンは、メインの業務データベース(MySQLやPostgreSQLなどのRDS)に、とりあえず error_logs というテーブルを作って保存してしまうことです。
「道連れ」という名のリスク
RDSへの同期的なログ保存は、アクセス集中時に牙を剥きます。
例えば、大規模なセールでアクセスが殺到したとしましょう。当然、エラーの発生数も比例して増えます。
このとき、大量のログ書き込み(INSERT)がRDSのCPUとI/Oを食いつぶし、
**「ログを保存するために、正常な決済トランザクションがタイムアウトする」**という本末転倒な事態を引き起こします。
これを「Database Avalanche(雪崩)」と呼びます。よくいう、二次被害というやつ。
調査できない「ゴミ箱」
また、テキスト形式で丸投げされたスタックトレースは、分析には不向きです。
「先週、iPhoneユーザーで何件エラーが出た?」とPMに聞かれても、エンジニアは巨大なテキストログをgrep(検索)するしかなく、回答までに数時間を要します。これではUX改善のサイクルなど回るはずがありません。
私たちは、「メインの血管(RDS)」と「ログの排出路」を物理的に分ける必要があります。
第2章:AWSで作る「非同期ログ基盤」。SQS × Lambda × DynamoDB アーキテクチャ
UX改善を守るための鉄則。
それは**「ユーザーを待たせないこと」と「メインシステムを巻き込まないこと」**です。
これを実現する最適解が、AWSのサーバーレスサービスを組み合わせた**「SQS × Lambda × DynamoDB」**による非同期アーキテクチャです。
アーキテクチャ図解
データの流れは以下の通りです。
- Application: エラー発生時、ログデータをJSON化して Amazon SQS へ投げる(所要時間:数ミリ秒)。ユーザーへのレスポンスは即座に返す。
- SQS (Buffering): アクセスがスパイクしても、ここで一時的に受け止める(ダムの役割)。
- Lambda (Worker): SQSからデータを吸い上げ、Amazon DynamoDB へ書き込む。
- DynamoDB (Storage): 柔軟なスキーマでログを保存。TTL(有効期限)を設定し、90日後に自動削除する。
なぜ、この構成なのか?(プロの選定理由)
- SQSの採用理由:「Fire-and-Forget(撃ちっ放し)」を実現するためです。もしDBがダウンしていても、SQSにキューが残るためログは消えません。アプリ側はDBの状態を気にする必要がなくなります。
- DynamoDBの採用理由:書き込み性能が青天井(スケーラブル)だからです。RDSのようにロックが発生せず、秒間数千件のエラーが来ても飲み込みます。また、BatchWriteItem を使うことで、コストを極限まで抑えることができます。
第3章:UX改善に直結する「DynamoDBテーブル設計」とJSONスキーマ
基盤ができたら、次は「データの質」です。
単に message: “Error occurred” だけ保存しても、分析には役立ちません。
データサイエンスの視点を取り入れ、JSONペイロードを**「3層構造(Context / Error / Env)」**で設計します。
推奨されるJSONスキーマ
例)JSON
{
"user_id": "u_1001",
"timestamp": "2025-10-01T10:00:00Z",
"payload": {
"context_layer": {
"screen_id": "/checkout/payment",
"previous_screen": "/cart",
"component": "CreditCardForm"
},
"error_layer": {
"code": "VALIDATION_ERROR",
"field": "expiry_date",
"input_value": "02/30" // ← ★ここが最重要
},
"env_layer": {
"device": "mobile",
"os": "iOS 17.2",
"browser": "Safari"
}
}
}
このデータの価値
特に重要なのが、error_layer.input_value(誤入力された値)です。
これを分析することで、以下のような**「事実」**が浮かび上がります。
- 事実A: 「生年月日でエラーになるユーザーの30%が、『R5年』のように和暦を入力している」
- 改善策: システム側で和暦を西暦に自動変換するロジックを入れる。
- 事実B: 「電話番号エラーの多くが、全角数字で入力されている」
- 改善策: 全角を半角に自動補正する。
「ユーザーが間違っている」のではありません。
「間違えさせるUIが悪い」のです。このデータがあれば、PMは確信を持ってUI改修の指示を出せます。
第4章:GA4とDynamoDBのID連携。TraceIDで実現する「データ駆動型」原因特定
マーケティングツールの「GA4」と、エンジニアリングツールの「DynamoDB」を繋ぎます。
繋ぐ鍵は「Trace ID」
方法はシンプルです。アプリケーション側でリクエストごとに一意なID(Trace ID または Session ID)を発行し、それを双方に送るのです。
- GA4へ: カスタムディメンションとして
trace_idを送信。 - DynamoDBへ: 主キー(Partition Key)として
trace_idを保存。
運用シナリオ:PMとアーキテクトの連携
この「ID連携」が実現すると、定例ミーティングの景色は一変します。
- PM(Google Analyticsを見る):「昨日の20時頃、決済画面での離脱率が急増している。エラーイベントの trace_id を抽出したから、詳細を頼む」
- アーキテクト(DynamoDBを見る):「IDで検索しました。……ログを確認。特定のクレジットカードブランド(Amex)でのみ、決済ゲートウェイのタイムアウトが発生しています」
- PM:「なるほど、ユーザーの入力ミスじゃなくてインフラの問題か。すぐに決済代行会社に問い合わせよう」
これまで「なんとなく調子が悪い」で片付けられていた事象が、数分で原因特定からアクションまで繋がるようになります。
攻めのCS:プロアクティブ・サポート
さらに、この仕組みは「顧客サポート」を進化させます。
VIPユーザーが何度もエラーを出していることをリアルタイムで検知し、CSから能動的に「お困りですか?」と電話やメールをすることが可能になります。
「エラーで怒って離脱するはずだった顧客」が、「神対応に感動したロイヤルカスタマー」に変わる瞬間です。
第5章:PMとエンジニアが共通のKPIを追う組織へ
このプロジェクトは、単なるシステム導入ではありません。組織の「評価指標」を変える取り組みです。
従来、PMは「機能を作ること」、エンジニアは「バグがないこと」で評価されがちでした。しかし、この基盤の上では、両者が同じ方向を向くことができます。
| 役割 | 責任範囲 | 追うべきKPI |
| PM (Business) | Why & What 機会損失の発見と改善優先度の決定 | ・施策によるCVR改善率 ・カゴ落ち率の低減数 |
| Architect (Tech) | How & Stability 高信頼な基盤提供と原因特定 | ・平均復旧時間 (MTTR) ・システム稼働率 |
PMが「GA4」というレーダーで敵(異常)を見つけ、アーキテクトが「DynamoDB」という精密照準で原因を撃ち抜く。
この**二人三脚の体制(BizDevOps)**こそが、変化の激しい市場で勝ち残るための必須条件です。
まとめると、ログは「ゴミ」ではない。「資産」だ。
もしあなたのチームが、エラーログを「開発者がデバッグのためだけに見るもの」として扱っているなら、それは大きな間違いです。
ログには、ユーザーの「迷い」「苛立ち」「諦め」という、生々しい感情が記録されています。
それは、プロダクトを成長させるための最も純度の高い**「資産(燃料)」**です。
- SQSとDynamoDBで、システムを守る。
- JSON設計で、ユーザーの文脈を知る。
- GA4連携で、ビジネスと技術を繋ぐ。
今日から、ユーザーの「無言の離脱」に耳を傾けましょう。
その声の中にこそ、次の成長へのヒントが隠されているのですから。
👇 【キャリア】この技術で「年収」を上げるには?
【年収1000万への道】「機能を作る人」から「ビジネスを救う人」へ
今回解説した「データ駆動アーキテクチャ」を提案・実装できるエンジニアは、市場に1%もいません。
単なる実装者から、経営にインパクトを与える**「次世代システムアーキテクト」**へ進化するためのキャリア戦略を、体系的に解説します。
👉 記事を書いた人

AI参謀GAくん | じーえーくん
tech leadかねやん | 金岡潤
+α
「システムも野菜も、鮮度が命。」
元メガ企業のSEとして、大規模サービスのバックエンド開発・アーキテクチャ設計に従事。その後、福岡に移住し起業。「八百屋」を地域No1にするという異色の経歴を持つ。 現在はBig Tech企業のモダンな開発手法(ベクトル検索、GraphRAG、エージェント技術など)を、地方企業や中小ビジネスの現場に落とし込むDX支援を行っている。 技術の複雑さを感じさせない設計、ビジネスの成果(CX)に直結させる「翻訳者」としてテックリードを担っている。

