<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>共通仕様 on 設計書</title><link>https://Hitamuki.github.io/image-upload/design/common/</link><description>Recent content in 共通仕様 on 設計書</description><generator>Hugo</generator><language>ja</language><atom:link href="https://Hitamuki.github.io/image-upload/design/common/index.xml" rel="self" type="application/rss+xml"/><item><title>アーキテクチャ図</title><link>https://Hitamuki.github.io/image-upload/design/common/%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%E5%9B%B3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://Hitamuki.github.io/image-upload/design/common/%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%E5%9B%B3/</guid><description>&lt;h1 id="アーキテクチャ図"&gt;アーキテクチャ図&lt;a class="anchor" href="#%e3%82%a2%e3%83%bc%e3%82%ad%e3%83%86%e3%82%af%e3%83%81%e3%83%a3%e5%9b%b3"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="概要"&gt;概要&lt;a class="anchor" href="#%e6%a6%82%e8%a6%81"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;本システムの全体構造、モノレポ内の各パッケージの責務、およびそれらの依存関係を定義する。
本システムはモノレポ構成を採用し、関心の分離（SoC）を徹底する。&lt;/p&gt;
&lt;h2 id="レイヤー構造図"&gt;レイヤー構造図&lt;a class="anchor" href="#%e3%83%ac%e3%82%a4%e3%83%a4%e3%83%bc%e6%a7%8b%e9%80%a0%e5%9b%b3"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;pre class="mermaid"&gt;graph TD
 subgraph Apps [&amp;#34;apps/ (アプリケーション層)&amp;#34;]
 Frontend[frontend: React / React Router]
 Backend[backend: Hono / Bun]
 end

 subgraph Packages [&amp;#34;packages/ (共通基盤・ドメイン層)&amp;#34;]
 UI[ui: shadcn/uiベース共通コンポーネント]
 API[api: Orval 生成 Client]
 Domain[domain: ビジネスロジック・Entity/Policy]
 DB[db: Prisma/Repository]
 Infra[infra: Terraform/AWS設定]
 Shared[shared: Logger/Config/TraceID]
 end

 %% 依存関係
 Frontend --&amp;gt; UI
 Frontend --&amp;gt; API
 Frontend --&amp;gt; Shared
 
 Backend --&amp;gt; Domain
 Backend --&amp;gt; DB
 Backend --&amp;gt; Shared
 
 Domain --&amp;gt; DB
 Domain --&amp;gt; Shared
 
 DB --&amp;gt; Shared
 
 API -. &amp;#34;OpenAPIから生成&amp;#34; .-&amp;gt; Backend&lt;/pre&gt;&lt;h2 id="各パッケージの責務"&gt;各パッケージの責務&lt;a class="anchor" href="#%e5%90%84%e3%83%91%e3%83%83%e3%82%b1%e3%83%bc%e3%82%b8%e3%81%ae%e8%b2%ac%e5%8b%99"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;apps/frontend&lt;/strong&gt;: UI/UXの構築。React Routerによるルーティング、TanStack Queryによる状態管理。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;apps/backend&lt;/strong&gt;: HonoによるAPIエンドポイント。ミドルウェア（CORS, Logger, TraceID）の適用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;packages/domain&lt;/strong&gt;: ビジネスロジックの中核。Entity, Value Object, Domain Service, およびポリシーの強制。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;packages/db&lt;/strong&gt;: データアクセス層。Prisma Clientを用いたデータベース操作、Repositoryパターン。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;packages/ui&lt;/strong&gt;: デザインシステムに基づく共通UIコンポーネント群。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;packages/api&lt;/strong&gt;: OpenAPI (specs/api) から生成されたフロントエンド用APIクライアント。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;packages/infra&lt;/strong&gt;: TerraformによるAWSリソース（S3, CloudFront, Lambda等）のコード化。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;packages/shared&lt;/strong&gt;: trace_id (UUID v4)、Pinoによる構造化ロガー、共通設定等の横断的関心事。&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>システム構成図</title><link>https://Hitamuki.github.io/image-upload/design/common/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E6%A7%8B%E6%88%90%E5%9B%B3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://Hitamuki.github.io/image-upload/design/common/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E6%A7%8B%E6%88%90%E5%9B%B3/</guid><description>&lt;h1 id="システム構成図"&gt;システム構成図&lt;a class="anchor" href="#%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e6%a7%8b%e6%88%90%e5%9b%b3"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="概要"&gt;概要&lt;a class="anchor" href="#%e6%a6%82%e8%a6%81"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;本システムのデプロイメント環境および AWS インフラストラクチャの構成を定義する。&lt;/p&gt;
&lt;h2 id="インフラ構成図"&gt;インフラ構成図&lt;a class="anchor" href="#%e3%82%a4%e3%83%b3%e3%83%95%e3%83%a9%e6%a7%8b%e6%88%90%e5%9b%b3"&gt;#&lt;/a&gt;&lt;/h2&gt;


 
 &lt;img src="https://Hitamuki.github.io/image-upload/images/AWS%E7%92%B0%E5%A2%83%E6%A7%8B%E6%88%90%E5%9B%B3.drawio.svg" alt="AWS環境構成図"&gt;
 


&lt;h2 id="使用サービス"&gt;使用サービス&lt;a class="anchor" href="#%e4%bd%bf%e7%94%a8%e3%82%b5%e3%83%bc%e3%83%93%e3%82%b9"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;サービス名&lt;/th&gt;
 &lt;th style="text-align: left"&gt;役割・用途&lt;/th&gt;
 &lt;th style="text-align: left"&gt;スペック・設定&lt;/th&gt;
 &lt;th style="text-align: left"&gt;月額料金（円）&lt;/th&gt;
 &lt;th style="text-align: left"&gt;補足&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;Amazon CloudFront&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;CDN / SPA配信 / APIルーティング&lt;/td&gt;
 &lt;td style="text-align: left"&gt;価格クラス100&lt;/td&gt;
 &lt;td style="text-align: left"&gt;約1,500円&lt;/td&gt;
 &lt;td style="text-align: left"&gt;エッジでのキャッシュ、HTTPS終端、WAF連携&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;Amazon S3 (Static Assets)&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;フロントエンド(SPA)ホスティング&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Standard Storage, 5GB保存&lt;/td&gt;
 &lt;td style="text-align: left"&gt;約500円&lt;/td&gt;
 &lt;td style="text-align: left"&gt;HTML / JS / CSS 等の静的ファイル配信&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;Amazon S3 (Image Storage)&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;画像ストレージ&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Standard Storage, 20GB保存&lt;/td&gt;
 &lt;td style="text-align: left"&gt;約500円&lt;/td&gt;
 &lt;td style="text-align: left"&gt;アップロード画像の実体保存（Presigned URL方式）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;API Gateway&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;APIエンドポイント管理&lt;/td&gt;
 &lt;td style="text-align: left"&gt;REST API, 10万リクエスト/月&lt;/td&gt;
 &lt;td style="text-align: left"&gt;約300円&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Lambda Proxy統合、レート制限、認証&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;AWS Lambda (Hono / Bun)&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;APIバックエンド&lt;/td&gt;
 &lt;td style="text-align: left"&gt;128MB, 0.5秒平均, 10万実行/月&lt;/td&gt;
 &lt;td style="text-align: left"&gt;無料&lt;/td&gt;
 &lt;td style="text-align: left"&gt;サーバーレス実行環境。Prisma ORMによるDB操作&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;Amazon RDS (PostgreSQL)&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;マネージドデータベース&lt;/td&gt;
 &lt;td style="text-align: left"&gt;db.t3.micro, Single-AZ構成&lt;/td&gt;
 &lt;td style="text-align: left"&gt;約4,000円&lt;/td&gt;
 &lt;td style="text-align: left"&gt;画像のメタデータ・管理情報の永続化&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;AWS WAF&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Webアプリケーションファイアウォール&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Web ACL, 基本料金&lt;/td&gt;
 &lt;td style="text-align: left"&gt;約5,000円&lt;/td&gt;
 &lt;td style="text-align: left"&gt;レート制限、IP制限、SQLi/XSS等の攻撃防御&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;AWS Secrets Manager&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;秘密情報管理&lt;/td&gt;
 &lt;td style="text-align: left"&gt;標準, 5シークレット&lt;/td&gt;
 &lt;td style="text-align: left"&gt;約200円&lt;/td&gt;
 &lt;td style="text-align: left"&gt;DB認証情報、APIキー等のセキュアな保管&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;Amazon CloudWatch Logs&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;ログ管理&lt;/td&gt;
 &lt;td style="text-align: left"&gt;標準, 5GBログ&lt;/td&gt;
 &lt;td style="text-align: left"&gt;約750円&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Pinoによる構造化ログ(JSON)の収集・蓄積&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;Amazon CloudWatch Alarms&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;監視・アラート&lt;/td&gt;
 &lt;td style="text-align: left"&gt;5個アラーム&lt;/td&gt;
 &lt;td style="text-align: left"&gt;約150円&lt;/td&gt;
 &lt;td style="text-align: left"&gt;メトリクス監視に基づいた異常検知・通知&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;AWS X-Ray&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;分散トレーシング&lt;/td&gt;
 &lt;td style="text-align: left"&gt;標準, 10万トレース&lt;/td&gt;
 &lt;td style="text-align: left"&gt;約100円&lt;/td&gt;
 &lt;td style="text-align: left"&gt;リクエストの追跡、パフォーマンスボトルネックの可視化&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;NAT Gateway&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;ネットワーク変換&lt;/td&gt;
 &lt;td style="text-align: left"&gt;1AZ, 10GB転送/月&lt;/td&gt;
 &lt;td style="text-align: left"&gt;約500円&lt;/td&gt;
 &lt;td style="text-align: left"&gt;プライベートサブネットからインターネットへの外部通信&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;Internet Gateway&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;VPCの出口&lt;/td&gt;
 &lt;td style="text-align: left"&gt;標準&lt;/td&gt;
 &lt;td style="text-align: left"&gt;無料&lt;/td&gt;
 &lt;td style="text-align: left"&gt;VPCとインターネット間の通信を可能にするゲートウェイ&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;合計&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;-&lt;/td&gt;
 &lt;td style="text-align: left"&gt;-&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;約8,000円&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;個人開発想定（月1,000ユーザー未満）&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="ネットワークセキュリティ"&gt;ネットワーク・セキュリティ&lt;a class="anchor" href="#%e3%83%8d%e3%83%83%e3%83%88%e3%83%af%e3%83%bc%e3%82%af%e3%82%bb%e3%82%ad%e3%83%a5%e3%83%aa%e3%83%86%e3%82%a3"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HTTPS&lt;/strong&gt;: 全通信は SSL/TLS で暗号化される。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CORS&lt;/strong&gt;: S3 バケットの設定により、特定のオリジンからの Direct Upload のみを許可する。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VPC (Virtual Private Cloud)&lt;/strong&gt;: RDS 等のバックエンドリソースはプライベートサブネット内に配置し、不必要な外部露出を避ける（Terraform にて定義）。&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>セキュリティ設計指針</title><link>https://Hitamuki.github.io/image-upload/design/common/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E8%A8%AD%E8%A8%88%E6%8C%87%E9%87%9D/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://Hitamuki.github.io/image-upload/design/common/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E8%A8%AD%E8%A8%88%E6%8C%87%E9%87%9D/</guid><description>&lt;h1 id="セキュリティ設計指針"&gt;セキュリティ設計指針&lt;a class="anchor" href="#%e3%82%bb%e3%82%ad%e3%83%a5%e3%83%aa%e3%83%86%e3%82%a3%e8%a8%ad%e8%a8%88%e6%8c%87%e9%87%9d"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="1-基本方針"&gt;1. 基本方針&lt;a class="anchor" href="#1-%e5%9f%ba%e6%9c%ac%e6%96%b9%e9%87%9d"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;API定義書（OpenAPI等）で定義された制約を厳格に適用し、脆弱性の混入を未然に防ぐ。&lt;/p&gt;
&lt;h2 id="2-認証認可-authentication--authorization"&gt;2. 認証・認可 (Authentication &amp;amp; Authorization)&lt;a class="anchor" href="#2-%e8%aa%8d%e8%a8%bc%e8%aa%8d%e5%8f%af-authentication--authorization"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;認証&lt;/strong&gt;: MVPフェーズでは実施しない。将来的にIDP（Firebase Auth等）の導入を検討する。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;認可&lt;/strong&gt;: MVPフェーズでは実施しない。全てのリクエストを全権限ユーザーとして扱う。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-通信の保護"&gt;3. 通信の保護&lt;a class="anchor" href="#3-%e9%80%9a%e4%bf%a1%e3%81%ae%e4%bf%9d%e8%ad%b7"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;全ての外部通信は TLS 1.2 以上（HTTPS）で暗号化する。&lt;/li&gt;
&lt;li&gt;HSTS (HTTP Strict Transport Security) を有効化し、常時SSL化を強制する。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-入力値の検証とサニタイズ"&gt;4. 入力値の検証とサニタイズ&lt;a class="anchor" href="#4-%e5%85%a5%e5%8a%9b%e5%80%a4%e3%81%ae%e6%a4%9c%e8%a8%bc%e3%81%a8%e3%82%b5%e3%83%8b%e3%82%bf%e3%82%a4%e3%82%ba"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;バリデーション&lt;/strong&gt;: APIスペックに基づき、型、長さ、形式（正規表現）をリクエスト受領時に即座に検証する。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQLインジェクション対策&lt;/strong&gt;: ORMの利用を原則とし、生のSQLを記述する場合は必ず静的プリペアードステートメント（プレースホルダ）を使用する。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;XSS対策&lt;/strong&gt;: フロントエンド（React/Next.js等）のエスケープ機能を活用し、サーバー側でも適切なContent-Type（application/json等）を強制する。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="5-データの暗号化"&gt;5. データの暗号化&lt;a class="anchor" href="#5-%e3%83%87%e3%83%bc%e3%82%bf%e3%81%ae%e6%9a%97%e5%8f%b7%e5%8c%96"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;保存時 (At Rest)&lt;/strong&gt;: データベースおよびオブジェクトストレージ（S3等）の暗号化を有効にする。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;機密情報&lt;/strong&gt;: APIキーやパスワード等は、暗号化した状態で環境変数またはシークレット管理ツールで管理する。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="6-秘匿情報の管理"&gt;6. 秘匿情報の管理&lt;a class="anchor" href="#6-%e7%a7%98%e5%8c%bf%e6%83%85%e5%a0%b1%e3%81%ae%e7%ae%a1%e7%90%86"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;ソースコード内にパスワードやAPIキーを直接記述（ハードコード）することを厳禁とする。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.env.example&lt;/code&gt; を提供し、実際の値はシークレット管理サービスから動的に取得する。&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>ログ設計指針</title><link>https://Hitamuki.github.io/image-upload/design/common/%E3%83%AD%E3%82%B0%E8%A8%AD%E8%A8%88%E6%8C%87%E9%87%9D/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://Hitamuki.github.io/image-upload/design/common/%E3%83%AD%E3%82%B0%E8%A8%AD%E8%A8%88%E6%8C%87%E9%87%9D/</guid><description>&lt;h1 id="ログ設計指針"&gt;ログ設計指針&lt;a class="anchor" href="#%e3%83%ad%e3%82%b0%e8%a8%ad%e8%a8%88%e6%8c%87%e9%87%9d"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="1-出力形式"&gt;1. 出力形式&lt;a class="anchor" href="#1-%e5%87%ba%e5%8a%9b%e5%bd%a2%e5%bc%8f"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;ログの集約と解析を容易にするため、全てのログを &lt;strong&gt;JSON形式&lt;/strong&gt; で標準出力（stdout）に出力する。&lt;/p&gt;
&lt;h2 id="2-ログレベル"&gt;2. ログレベル&lt;a class="anchor" href="#2-%e3%83%ad%e3%82%b0%e3%83%ac%e3%83%99%e3%83%ab"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;レベル&lt;/th&gt;
 &lt;th style="text-align: left"&gt;説明&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;FATAL&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;システム停止を伴う致命的なエラー。即時通知対象。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;ERROR&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;継続は可能だが、期待しない動作が発生したエラー。要調査。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;WARN&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;異常ではないが、リトライが発生した際やリソース不足の予兆など。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;INFO&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;業務上の重要なイベント（ファイルアップロード完了等）。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;DEBUG&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;開発時のデバッグ情報。本番環境では出力しない。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="3-共通ログ項目"&gt;3. 共通ログ項目&lt;a class="anchor" href="#3-%e5%85%b1%e9%80%9a%e3%83%ad%e3%82%b0%e9%a0%85%e7%9b%ae"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;全てのログには以下のフィールドを必須または推奨で含める。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;timestamp&lt;/code&gt;: ISO8601形式の時刻&lt;/li&gt;
&lt;li&gt;&lt;code&gt;level&lt;/code&gt;: ログレベル&lt;/li&gt;
&lt;li&gt;&lt;code&gt;trace_id&lt;/code&gt;: リクエスト間を横断して追跡するためのユニークなID（相関ID）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;request_id&lt;/code&gt;: 単一操作を識別するためのユニークなID（冪等性制御・キャンセル用）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;user_id&lt;/code&gt;: ユーザー識別子（MVPでは対象外とし、nullまたは固定値を出力する）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;message&lt;/code&gt;: ログの内容（人間が読める形式）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;context&lt;/code&gt;: 関連する補足データ（メタデータ）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-追跡可能性observability"&gt;4. 追跡可能性（Observability）&lt;a class="anchor" href="#4-%e8%bf%bd%e8%b7%a1%e5%8f%af%e8%83%bd%e6%80%a7observability"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;モノレポ内の各サービス間で &lt;code&gt;X-Trace-Id&lt;/code&gt; ヘッダーを伝播させ、フロントエンドからバックエンドまでの処理を単一のトレースIDで追跡可能にする。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;X-Request-Id&lt;/code&gt; ヘッダーも併せて伝播させ、単一操作のログを特定して追跡可能にする。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="5-ログ出力の禁止事項-piiの保護"&gt;5. ログ出力の禁止事項 (PIIの保護)&lt;a class="anchor" href="#5-%e3%83%ad%e3%82%b0%e5%87%ba%e5%8a%9b%e3%81%ae%e7%a6%81%e6%ad%a2%e4%ba%8b%e9%a0%85-pii%e3%81%ae%e4%bf%9d%e8%ad%b7"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;以下の情報は、セキュリティおよびプライバシー保護のため、ログに出力してはならない。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;パスワード、アクセストークン、シークレットキー&lt;/li&gt;
&lt;li&gt;クレジットカード情報&lt;/li&gt;
&lt;li&gt;個人情報（氏名、生年月日、住所、電話番号等）を直接特定できる情報
&lt;ul&gt;
&lt;li&gt;必要がある場合はハッシュ化またはマスキング処理（例: &lt;code&gt;k****@example.com&lt;/code&gt;）を行う。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="6-ログの保存とモニタリング"&gt;6. ログの保存とモニタリング&lt;a class="anchor" href="#6-%e3%83%ad%e3%82%b0%e3%81%ae%e4%bf%9d%e5%ad%98%e3%81%a8%e3%83%a2%e3%83%8b%e3%82%bf%e3%83%aa%e3%83%b3%e3%82%b0"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;保存期間&lt;/strong&gt;: 運用要件に基づき、30日間（またはそれ以上）を標準とする。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;監視&lt;/strong&gt;: ERROR以上のログが発生した場合、Slack等のチャットツールへ通知を行う。&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>運用設計指針</title><link>https://Hitamuki.github.io/image-upload/design/common/%E9%81%8B%E7%94%A8%E8%A8%AD%E8%A8%88%E6%8C%87%E9%87%9D/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://Hitamuki.github.io/image-upload/design/common/%E9%81%8B%E7%94%A8%E8%A8%AD%E8%A8%88%E6%8C%87%E9%87%9D/</guid><description>&lt;h1 id="運用設計指針"&gt;運用設計指針&lt;a class="anchor" href="#%e9%81%8b%e7%94%a8%e8%a8%ad%e8%a8%88%e6%8c%87%e9%87%9d"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="概要"&gt;概要&lt;a class="anchor" href="#%e6%a6%82%e8%a6%81"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;本システムの運用における監視・障害対応・ログ管理の方針を定義する。&lt;/p&gt;
&lt;h2 id="関連ドキュメント"&gt;関連ドキュメント&lt;a class="anchor" href="#%e9%96%a2%e9%80%a3%e3%83%89%e3%82%ad%e3%83%a5%e3%83%a1%e3%83%b3%e3%83%88"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://Hitamuki.github.io/image-upload/design/common/%E3%83%AD%E3%82%B0%E8%A8%AD%E8%A8%88%E6%8C%87%E9%87%9D/"&gt;ログ設計指針&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://Hitamuki.github.io/image-upload/design/common/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E6%A7%8B%E6%88%90%E5%9B%B3/"&gt;システム構成図&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="監視"&gt;監視&lt;a class="anchor" href="#%e7%9b%a3%e8%a6%96"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="監視対象"&gt;監視対象&lt;a class="anchor" href="#%e7%9b%a3%e8%a6%96%e5%af%be%e8%b1%a1"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;対象&lt;/th&gt;
 &lt;th style="text-align: left"&gt;監視内容&lt;/th&gt;
 &lt;th style="text-align: left"&gt;ツール&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;バックエンド (Lambda)&lt;/td&gt;
 &lt;td style="text-align: left"&gt;エラー率、レイテンシ、タイムアウト&lt;/td&gt;
 &lt;td style="text-align: left"&gt;CloudWatch Metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;S3&lt;/td&gt;
 &lt;td style="text-align: left"&gt;アップロード成功率、4xx/5xxエラー&lt;/td&gt;
 &lt;td style="text-align: left"&gt;CloudWatch Metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;DB (RDS)&lt;/td&gt;
 &lt;td style="text-align: left"&gt;接続数、クエリレイテンシ、ストレージ使用量&lt;/td&gt;
 &lt;td style="text-align: left"&gt;CloudWatch Metrics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;ログ&lt;/td&gt;
 &lt;td style="text-align: left"&gt;エラーログの検出&lt;/td&gt;
 &lt;td style="text-align: left"&gt;CloudWatch Logs Insights&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="アラート基準目安"&gt;アラート基準（目安）&lt;a class="anchor" href="#%e3%82%a2%e3%83%a9%e3%83%bc%e3%83%88%e5%9f%ba%e6%ba%96%e7%9b%ae%e5%ae%89"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;条件&lt;/th&gt;
 &lt;th style="text-align: left"&gt;閾値&lt;/th&gt;
 &lt;th style="text-align: left"&gt;対応&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;バックエンドエラー率&lt;/td&gt;
 &lt;td style="text-align: left"&gt;1% 超&lt;/td&gt;
 &lt;td style="text-align: left"&gt;即時調査&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;アップロード成功率&lt;/td&gt;
 &lt;td style="text-align: left"&gt;99% 未満&lt;/td&gt;
 &lt;td style="text-align: left"&gt;即時調査&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Lambda タイムアウト&lt;/td&gt;
 &lt;td style="text-align: left"&gt;連続3回以上&lt;/td&gt;
 &lt;td style="text-align: left"&gt;即時調査&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="障害対応"&gt;障害対応&lt;a class="anchor" href="#%e9%9a%9c%e5%ae%b3%e5%af%be%e5%bf%9c"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="調査手順"&gt;調査手順&lt;a class="anchor" href="#%e8%aa%bf%e6%9f%bb%e6%89%8b%e9%a0%86"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;CloudWatch Logs Insights で &lt;code&gt;trace_id&lt;/code&gt; をキーに横断検索する。&lt;/li&gt;
&lt;li&gt;特定の操作に問題がある場合は &lt;code&gt;request_id&lt;/code&gt; で絞り込んで検索する。&lt;/li&gt;
&lt;li&gt;フロントエンド → バックエンド → S3 → DB の順にログを追跡する。&lt;/li&gt;
&lt;li&gt;エラー発生箇所を特定し、原因を切り分ける。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="ログ検索クエリ例"&gt;ログ検索クエリ例&lt;a class="anchor" href="#%e3%83%ad%e3%82%b0%e6%a4%9c%e7%b4%a2%e3%82%af%e3%82%a8%e3%83%aa%e4%be%8b"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="セッション全体の調査trace_id"&gt;セッション全体の調査（trace_id）&lt;a class="anchor" href="#%e3%82%bb%e3%83%83%e3%82%b7%e3%83%a7%e3%83%b3%e5%85%a8%e4%bd%93%e3%81%ae%e8%aa%bf%e6%9f%bbtrace_id"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;fields @timestamp, @message, request_id
| filter trace_id = &amp;#34;&amp;lt;対象のtrace_id&amp;gt;&amp;#34;
| sort @timestamp asc&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="特定操作の調査request_id"&gt;特定操作の調査（request_id）&lt;a class="anchor" href="#%e7%89%b9%e5%ae%9a%e6%93%8d%e4%bd%9c%e3%81%ae%e8%aa%bf%e6%9f%bbrequest_id"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;fields @timestamp, @message, level
| filter request_id = &amp;#34;&amp;lt;対象のrequest_id&amp;gt;&amp;#34;
| sort @timestamp asc&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="エラー発生時の調査"&gt;エラー発生時の調査&lt;a class="anchor" href="#%e3%82%a8%e3%83%a9%e3%83%bc%e7%99%ba%e7%94%9f%e6%99%82%e3%81%ae%e8%aa%bf%e6%9f%bb"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;fields @timestamp, @message, level, error_code
| filter trace_id = &amp;#34;&amp;lt;対象のtrace_id&amp;gt;&amp;#34; and level = &amp;#34;ERROR&amp;#34;
| sort @timestamp desc&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="バックアップリカバリ"&gt;バックアップ・リカバリ&lt;a class="anchor" href="#%e3%83%90%e3%83%83%e3%82%af%e3%82%a2%e3%83%83%e3%83%97%e3%83%aa%e3%82%ab%e3%83%90%e3%83%aa"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;対象&lt;/th&gt;
 &lt;th style="text-align: left"&gt;方針&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;RDS&lt;/td&gt;
 &lt;td style="text-align: left"&gt;自動バックアップ（保持期間: 7日）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;S3&lt;/td&gt;
 &lt;td style="text-align: left"&gt;バージョニング有効化（誤削除対策）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="デプロイ"&gt;デプロイ&lt;a class="anchor" href="#%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;GitHub Actions による CI/CD で &lt;code&gt;main&lt;/code&gt; ブランチへのマージをトリガーに自動デプロイする。&lt;/li&gt;
&lt;li&gt;デプロイ前にAPIテスト・E2Eテストが通過していることを必須とする。&lt;/li&gt;
&lt;li&gt;ロールバックは直前の Lambda バージョンへの切り戻しで対応する。&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>