---
generated_at: 2026-01-29 12:00:00
metrics:
  claims_total: 45
  claims_with_evidence: 42
  claims_without_evidence: 3
confidence_derived: 0.93
---

# 根拠レポート：インフラ設計書

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.93**
  - 根拠あり：42 / 45、根拠なし：3
- 優先レビュー（高）
  1. **サーバースペック推奨値**：コードからは具体的なスペック要件が読み取れない
  2. **バックアップ設計の頻度・保持期間**：運用ポリシーとして記載、コードに明示なし
  3. **OpenSearch/Elasticsearch検索機能**：Gemfileに依存関係はあるが設定ファイルの詳細未確認

## 2) 参照した情報（Evidence一覧）

- E-01: `docker-compose.yaml`
- E-02: `docker-compose.production.yaml`
- E-03: `docker-compose.test.yaml`
- E-04: `docker/Dockerfile`
- E-05: `.devcontainer/docker-compose.yml`
- E-06: `.devcontainer/Dockerfile`
- E-07: `.devcontainer/Dockerfile.base`
- E-08: `config/database.yml`
- E-09: `config/sidekiq.yml`
- E-10: `config/cable.yml`
- E-11: `config/storage.yml`
- E-12: `config/schedule.yml`
- E-13: `config/initializers/01_redis.rb`
- E-14: `config/initializers/sidekiq.rb`
- E-15: `config/initializers/actioncable.rb`
- E-16: `config/initializers/rack_attack.rb`
- E-17: `lib/redis/config.rb`
- E-18: `.env.example`
- E-19: `deployment/nginx_chatwoot.conf`
- E-20: `deployment/chatwoot-web.1.service`
- E-21: `deployment/chatwoot-worker.1.service`
- E-22: `Procfile`
- E-23: `Procfile.dev`
- E-24: `Gemfile`

## 3) Claims と根拠の対応（レビューの主戦場）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | Ruby 3.4.4を使用 | E-04, E-24 | ○ |
| C-02 | Rails 7.1.xを使用 | E-24 | ○ |
| C-03 | Node.js 24.13.0を使用 | E-04, E-05 | ○ |
| C-04 | pnpm 10.2.0を使用 | E-04, E-07 | ○ |
| C-05 | PostgreSQL 16（pgvector）を使用 | E-01, E-02 | ○ |
| C-06 | Redis Alpine版を使用 | E-01, E-02 | ○ |
| C-07 | Sidekiq 7.3.1以上を使用 | E-24 | ○ |
| C-08 | Sidekiq-cron 1.12.0以上を使用 | E-24 | ○ |
| C-09 | Pumaをアプリケーションサーバーとして使用 | E-24 | ○ |
| C-10 | ポート3000でRailsが起動 | E-01, E-02, E-04 | ○ |
| C-11 | ポート5432でPostgreSQLが起動 | E-01, E-02 | ○ |
| C-12 | ポート6379でRedisが起動 | E-01, E-02 | ○ |
| C-13 | Vite開発サーバーはポート3036 | E-01 | ○ |
| C-14 | SIDEKIQ_CONCURRENCYデフォルト値は10 | E-09 | ○ |
| C-15 | RAILS_MAX_THREADSデフォルト値は5 | E-08, E-18 | ○ |
| C-16 | Sidekiqキューは15種類 | E-09 | ○ |
| C-17 | Redis Sentinel構成に対応 | E-17 | ○ |
| C-18 | デフォルトSentinel Master名はmymaster | E-17 | ○ |
| C-19 | PostgreSQL Statement Timeoutデフォルト14秒 | E-08, E-18 | ○ |
| C-20 | Redisタイムアウト1秒 | E-17 | ○ |
| C-21 | S3ストレージ対応 | E-11, E-18, E-24 | ○ |
| C-22 | GCSストレージ対応 | E-11, E-24 | ○ |
| C-23 | Azure Blob Storage対応 | E-11, E-24 | ○ |
| C-24 | S3互換ストレージ対応 | E-11 | ○ |
| C-25 | Nginxリバースプロキシ設定 | E-19 | ○ |
| C-26 | SSL/TLS 1.2, 1.3対応 | E-19 | ○ |
| C-27 | HSTS有効 | E-19 | ○ |
| C-28 | Nginx Proxy Read Timeout 36000秒 | E-19 | ○ |
| C-29 | Rack Attack有効（本番環境） | E-16 | ○ |
| C-30 | Rack Attackリクエスト上限3000/分 | E-16 | ○ |
| C-31 | /healthエンドポイントはスロットリング除外 | E-16 | ○ |
| C-32 | ログイン試行制限5回/5分（IP） | E-16 | ○ |
| C-33 | MFA認証制限5回/分（IP） | E-16 | ○ |
| C-34 | $alfredコネクションプールサイズ5 | E-13 | ○ |
| C-35 | $velmaコネクションプールサイズ5 | E-13 | ○ |
| C-36 | 定期ジョブ11種類 | E-12 | ○ |
| C-37 | Systemdサービス設定 | E-20, E-21 | ○ |
| C-38 | Sidekiqワーカーメモリ上限1.2GB | E-21 | ○ |
| C-39 | Sentry APM対応 | E-18, E-24 | ○ |
| C-40 | New Relic APM対応 | E-18, E-24 | ○ |
| C-41 | Datadog APM対応 | E-18, E-24 | ○ |
| C-42 | Elastic APM対応 | E-18, E-24 | ○ |
| C-43 | サーバースペック推奨値（2vCPU/4GB等） | **根拠なし** | △ |
| C-44 | バックアップ頻度・保持期間 | **根拠なし** | △ |
| C-45 | OpenSearch検索機能詳細設定 | **根拠不足** | △ |

## 4) 不足情報（Unknown / Missing）

- **C-43: サーバースペック推奨値**
  - コードベースからは具体的なハードウェア要件は読み取れない
  - 候補：公式ドキュメント / デプロイメントガイド / 運用経験に基づく推奨値

- **C-44: バックアップ設計の詳細**
  - アプリケーションコードにはバックアップロジックが含まれていない（インフラレベルの設定）
  - 候補：運用手順書 / クラウドプロバイダー設定 / pg_dumpスクリプト

- **C-45: OpenSearch/Elasticsearch設定**
  - GemfileにSearchkick, opensearch-rubyの依存関係は確認
  - 具体的な設定ファイル（elasticsearch.yml等）は未検出
  - 候補：config/initializers/searchkick.rb / 環境変数による動的設定

## 5) リスクフラグ（レビュー観点）

- **0: 低リスク** - 基本的なインフラ構成（Docker, ミドルウェアバージョン等）
  - Docker Compose設定は実ファイルから正確に抽出
  - ミドルウェアバージョンはDockerfile, Gemfileから確認済み

- **1: 中リスク** - 外部サービス連携
  - 環境変数による設定のため、実際の接続先は環境依存
  - Gemfileの依存関係から機能の存在は確認可能

- **2: 高リスク** - サーバースペック・バックアップ設計
  - コードベースからは推定値のみ
  - 本番環境の実態と乖離する可能性あり

## 6) レビュアーチェックリスト（最小）

- [ ] サーバースペック推奨値は実際の運用要件と整合しているか確認
- [ ] バックアップ設計は組織のRPO/RTO要件を満たしているか確認
- [ ] OpenSearch/Elasticsearchを使用する場合の設定を追記
- [ ] Enterprise版固有のインフラ要件がある場合は追記
- [ ] セキュリティグループ/ファイアウォール設定の詳細を追記（必要に応じて）
- [ ] DNS/ドメイン設定の詳細を追記（必要に応じて）
- [ ] CDN設定（ASSET_CDN_HOST）の詳細を追記（必要に応じて）
