プラグインエコシステム Round 3 安定性・拡張性計画(v0.4.x)
本計画は Round 2(M1-M6)の後続フェーズです。sharelife を「機能実装済み」から「長期運用可能な品質」に引き上げます。
1. 目標と境界
1.1 目標
- 同時実行、障害、バージョンドリフト下での安定性確保。
- 将来拡張時の再設計コスト削減。
- プロダクト方針(高精度複製 + 厳格ガバナンス)との整合。
1.2 非目標
- 本フェーズでの重量級 SPA への全面移行は行わない。
- 分散 DB への移行は行わない。
- install/review ガードを緩和する方針は採らない。
2. 提案の採否
2.1 採用(実装対象)
- vanilla モジュールを維持したまま
Viteを導入。 - UI 状態同期を単一イベントバス(
EventTarget)へ集約。 - ユーザー由来 HTML を
DOMPurifyでサニタイズ。 - ARIA、キーボード操作、フォーカストラップの基線実装。
- 永続化を Repository 抽象 + SQLite 実装 + JSON フォールバックへ移行。
- scan/diff 重処理をバックグラウンド化(
asyncio.to_threadなど)。 - 認証依存、レート制限、CORS、セキュリティヘッダーを強化。
structlogによる構造化ログと Prometheus 指標を追加。- 公式 Docker(multi-stage)+ compose の配布パス整備。
- CI にカバレッジ/ i18n / docs / protocol 整合ゲートを追加。
2.2 保留
- PWA オフライン対応。
- 無限スクロール中心の UI モデル。
- Tailwind での全画面再スタイル。
- SQLite 前に PostgreSQL/
asyncpgへ直行する移行。
2.3 本フェーズで不採用
- 重量級 SPA への全面書き換え。
- ガバナンス門番を弱める高速化施策。
3. 技術方針(ADR 要約)
ADR-1: フロントエンド進化方針
決定:
- vanilla JS の責務分割を維持。
- Vite でビルドと成果物管理を標準化。
- 状態同期にイベントバスを導入。
理由:
- 破壊的変更を避けながら保守性を改善できる。
- グローバルスクリプト依存を縮小できる。
- 将来の宣言的更新に段階的に移行しやすい。
ADR-2: 永続化方針
決定:
- market/profile-pack/audit/trial を Repository 抽象へ統一。
- 既定実装を SQLite に切替。
- JSON 実装をフォールバックとして残す。
理由:
- 低コストで同時書き込み耐性を改善できる。
- 既存レイヤード構造を維持できる。
- 段階移行が可能で運用リスクを抑えられる。
ADR-3: セキュリティ・可観測性優先
決定:
- 認証/制限/例外処理を先に強化。
- 同フェーズでログとメトリクスを導入。
理由:
- 機能拡張前に露出リスクを下げられる。
- 観測不能な状態での拡張を防げる。
4. マイルストーン(N1-N5)
N1(整合性クローズ)
範囲:
- プラグイン・API・メタデータ・文書のバージョン整合。
- Round 2 状態表記を実装実態に合わせる。
- エラーコード文書の正準化。
受け入れ:
- バージョンドリフト検証テストが通る。
- 文書状態の整合テストが通る。
N2(フロント保守性・安全性)
範囲:
- Vite 導入。
- 主要状態フローをイベントバスへ移行。
- DOMPurify 適用。
- ARIA/キーボード/フォーカス制御を実装。
受け入れ:
node --test tests/webui/*.js緑。market -> drawer -> wizard -> compareE2E が緑。- XSS 回帰ケースが無害化される。
N3(バックエンド永続化・並行性基線)
範囲:
- SQLite Repository と移行ユーティリティ実装。
- サービス層の Repository 抽象化適用。
pack_id/status/risk_level/created_atへ索引追加。
受け入れ:
- JSON/SQLite 双方の回帰テストが通る。
- 同時書き込み時に状態破損がない。
N4(セキュリティ・可観測性強化)
範囲:
- ログイン/API レート制限。
- セキュリティヘッダーと厳格 CORS。
- 構造化ログスキーマ統一。
- 指標エンドポイントと基本監視項目追加。
受け入れ:
- 認可/総当たり/CORS の回帰テスト合格。
- 障害時の原因特定がログと指標で可能。
N5(配布・運用)
範囲:
- 公式 Docker イメージと compose サンプル。
- データボリュームとヘルスチェック整備。
- デプロイ/ロールバック手順書更新。
受け入れ:
- コンテナ起動で WebUI と主要 API が再現可能。
- ローカル/コンテナ両方の手順が文書化済み。
5. リスクとトレードオフ
- ビルド導入で前端複雑性は上がる。 対策: 責務分割維持、重フレームワークは導入しない。
- ストレージ移行で互換リスクがある。 対策: 移行ツール、段階切替、照合テストを先行。
- セキュリティ既定強化でローカル利便性が下がる。 対策: dev/prod 設定プロファイルを明示。
6. 進捗スナップショット(2026-04-02 時点)
- N1 完了: バージョン/文書整合テストを CI に導入済み。
- N2 完了: イベントバス、i18n 同期、アクセシビリティ焦点制御、ブラウザ E2E 主経路が通過。
- N3 完了:
MarketService、ProfilePackService、PreferenceService、RetryQueueService、TrialService、TrialRequestService、AuditService、InMemoryNotifierは Repository 抽象へ移行済みで、JSON/SQLite 実装、SQLite 索引、legacy 移行経路を提供。 - N4 基線完了: ログイン/API レート制限、セキュリティヘッダー、Request ID 追跡、構造化リクエストログ、統一エラーフォーマット(
internal_server_errorフォールバック含む)、auth/rate-limit 専用カウンタを含む/api/metricsを実装し、メトリクス path 基数ガードとエラーストーム時のスクレイプ回帰テストを追加。 - N5 基線完了: 公式 Dockerfile/compose、ヘルスチェック、スタンドアロン WebUI 起動スクリプトに加え、可観測性/ロールバック runbook を整備。
- N5+ 運用閉鎖を完了:
docker-compose可観測性オーバーレイ、smoke 自動検証スクリプト(scripts/smoke_observability_stack.sh)、および定期/手動実行 + 診断 artifact 保存付きのops-smokeGitHub Actions ワークフローを追加。 - N5++ 診断高速化を完了: smoke 診断で構造化サマリ/データ(
output/ops-smoke/triage.md+triage.json)を自動生成し、Job Summary 反映 + signal/action annotations 出力まで実施。
7. 推奨実行順
- N1 -> N2 -> N3 -> N4 -> N5。
- N1-N2 完了までは大規模機能拡張を抑制。
- 各マイルストーンでテスト・文書・ロールバック手順を同時出荷。
8. 既存ロードマップとの関係
- Round 2 の機能面は維持。
- Round 3 は品質・運用基盤の強化フェーズ。
- ガバナンス不変条件(dry-run 先行、rollback 可能、監査可能)を維持。