systemPatterns.json•6.21 kB
{
  "schema": "memory_document_v2",
  "metadata": {
    "id": "9b50dd9f-7b80-4955-9711-3e1ac5e8e8fa",
    "title": "システムパターン",
    "documentType": "generic",
    "path": "systemPatterns.md",
    "tags": [],
    "lastModified": "2025-03-21T01:08:29.300Z",
    "createdAt": "2025-03-17T02:13:31.704Z",
    "version": 1
  },
  "content": {
    "技術的判断": "### マイグレーションアーキテクチャの選択\n\n**コンテキスト**: Markdownファイルから新しいJSON形式へのマイグレーションを行うため、効率的で信頼性の高いアーキテクチャが必要です。\n\n**判断**: ストラテジーパターンを採用し、各ドキュメントタイプに特化した変換ロジックを実装します。また、コマンドパターンを使用してマイグレーションプロセスをカプセル化します。\n\n**理由**:\n- ドキュメントタイプごとに異なる変換ロジックが必要\n- 将来的に新しいドキュメントタイプが追加される可能性がある\n- マイグレーションプロセスの一貫性と再利用性を確保するため\n\n### バックアップとロールバック戦略\n\n**コンテキスト**: マイグレーション中に問題が発生した場合、データ損失を防ぐためのバックアップとロールバック機能が必要です。\n\n**判断**: トランザクション的なアプローチを採用し、以下のプロセスを実装します:\n1. マイグレーション開始前に全ドキュメントのバックアップを作成\n2. マイグレーション中のエラーを検出し、記録\n3. エラー発生時または明示的な要求に応じてバックアップからロールバック\n\n**理由**:\n- データ安全性の確保\n- 失敗したマイグレーションの容易な復旧\n- 部分的成功の状況でも一貫性を維持\n\n### JSON形式の検証方法\n\n**コンテキスト**: 生成されたJSONファイルが正しいスキーマに準拠していることを確認する必要があります。\n\n**判断**: Zodを使用して型安全な検証を実装します。既存のスキーマ定義を活用し、マイグレーション前後で検証を行います。\n\n**理由**:\n- TypeScriptとの統合が容易\n- スキーマとの一貫性を確保\n- エラーメッセージの詳細さ",
    "関連するファイルやディレクトリ構造": "### コアコンポーネント\n\n```\nsrc/\n  migration/                          # マイグレーション関連のコンポーネント\n    MarkdownToJsonMigrator.ts         # メインのマイグレーターロジック\n    MigrationValidator.ts             # JSONスキーマ検証ロジック\n    MigrationBackup.ts                # バックアップと復元機能\n    converters/                       # ドキュメントタイプ別の変換ロジック\n      BaseConverter.ts                # 基本変換インターフェース\n      BranchContextConverter.ts       # branchContext用コンバーター\n      ActiveContextConverter.ts       # activeContext用コンバーター\n      SystemPatternsConverter.ts      # systemPatterns用コンバーター\n      ProgressConverter.ts            # progress用コンバーター\n      GenericConverter.ts             # 一般的なドキュメント用コンバーター\n    utils/                            # ユーティリティ関数\n      MarkdownParser.ts               # Markdownパースユーティリティ\n      TypeDetector.ts                 # ドキュメントタイプ検出\n  cli/\n    commands/\n      migration/\n        MigrateCommand.ts             # マイグレーションのCLIコマンド\n  schemas/                            # 既存のJSONスキーマ定義\n    v2/\n      json-document.ts                # JSONドキュメントスキーマ\n```\n\n### テスト構造\n\n```\ntest/\n  unit/\n    migration/\n      MarkdownToJsonMigrator.test.ts\n      MigrationValidator.test.ts\n      MigrationBackup.test.ts\n      converters/\n        BranchContextConverter.test.ts\n        ActiveContextConverter.test.ts\n        SystemPatternsConverter.test.ts\n        ProgressConverter.test.ts\n        GenericConverter.test.ts\n  integration/\n    migration/\n      migration-flow.test.ts\n```",
    "クラス設計": "### MarkdownToJsonMigrator\n\nメイン機能を提供するクラスで、マイグレーションプロセス全体を制御します。\n\n```typescript\nexport class MarkdownToJsonMigrator {\n  constructor(\n    private readonly backupService: MigrationBackup,\n    private readonly validator: MigrationValidator,\n    private readonly converterFactory: ConverterFactory,\n    private readonly logger: Logger\n  ) {}\n\n  async migrateDirectory(directory: string, options: MigrationOptions): Promise<MigrationResult>;\n  async migrateFile(filePath: string, options: MigrationOptions): Promise<MigrationResult>;\n  private async detectDocumentType(content: string, path: string): Promise<DocumentType>;\n  // ..その他の内部メソッド\n}\n```\n\n### ConverterFactory\n\nドキュメントタイプに応じた適切なコンバーターを提供するファクトリークラス。\n\n```typescript\nexport class ConverterFactory {\n  getConverter(documentType: DocumentType): BaseConverter;\n}\n```\n\n### BaseConverter\n\nすべてのコンバーターが実装する基本インターフェース。\n\n```typescript\nexport interface BaseConverter {\n  convert(markdownContent: string, path: string): JsonDocument;\n}\n```\n\n### MigrationBackup\n\nバックアップと復元機能を提供するクラス。\n\n```typescript\nexport class MigrationBackup {\n  async createBackup(directory: string): Promise<string>; // バックアップディレクトリのパスを返す\n  async restoreFromBackup(backupPath: string, targetDir: string): Promise<boolean>;\n}\n```\n\n### MigrationValidator\n\n生成されたJSONの検証を行うクラス。\n\n```typescript\nexport class MigrationValidator {\n  validateJson(jsonContent: unknown, documentType: DocumentType): ValidationResult;\n}\n```"
  }
}