長期保守パターン:依存ライブラリのライフサイクル・破壊的変更の対応・非推奨化戦略・マイグレーションガイド・知識移転。外部ライブラリの追加評価・破壊的変更の計画・5年以上運用するシステムの移行戦略の計画時に使用する。
5年以上運用するシステムの保守パターン。出力はすべて「提案」。
全外部ライブラリは ADR に記録。以下の基準で採否を判断:
| 基準 | 確認事項 |
|---|---|
| 必要性 | 標準ライブラリや既存の依存で代替できないか |
| メンテナンス状況 | 過去 6 ヶ月以内にコミットがあるか |
| ライセンス | 商用利用が許可されているか(MIT / Apache 2.0 等) |
| バンドルサイズ | 既存のバンドルサイズに対して許容範囲か |
| 既知の脆弱性 | npm audit で脆弱性がないか |
docs/guides/ にマイグレーション手順作成Option A: 新旧フィールド並存 + 旧を Deprecated。削除は次 major まで待つ。
Option B: /v2/resource + /v1/resourceにDeprecatedヘッダー。廃止スケジュールをADRに記録。
禁止: 事前告知なしの破壊的変更
@deprecated + ADR 番号docs/ も同時更新review.instructions.md の長期保守レビュー観点。interface 経由で依存し、具象クラスへの直接参照を避ける。
// NG: 具象クラスへの直接依存
import { PrismaTaskRepository } from "./prisma-task-repository";
class TaskService {
constructor(private readonly repo: PrismaTaskRepository) {}
}
// OK: interface 経由
interface TaskRepository {
findById(id: string): Promise<Result<Task>>;
save(task: Task): Promise<Result<void>>;
}
class TaskService {
constructor(private readonly repo: TaskRepository) {}
}
docs/ のグロッサリーで管理docs/ 確認、なければ Issue に記録長期運用で特に問題になりやすいセキュリティ領域:
| リスク | 対策 |
|---|---|
| 依存ライブラリの脆弱性蓄積 | npm audit を CI で必須とし、高 Severity は即時対応 |
| 認可ロジックの陳腐化 | 機能追加時に必ず認可チェックが機能しているか確認する |
| ログへの PII 混入増加 | ログ出力コードを変更したら Privacy Skill の規約を再確認する |
| 古い API の認証バイパス | Deprecated エンドポイントも廃止まで認証・認可を維持する |
セキュリティに影響する変更は必ず
// TODO(security): requires review before mergeを付けること。
catch 内で構造化ログを出力TODO(domain): エラーケース未検証 で未検証パスを明示