esm-migration-plan.json•3.9 kB
{
  "schema": "memory_document_v2",
  "metadata": {
    "id": "b31e2f65-63c1-444e-9b45-cc66675f5a1c",
    "title": "ESM移行計画",
    "documentType": "generic",
    "path": "esm-migration-plan.md",
    "tags": [],
    "lastModified": "2025-03-18T13:12:58.869Z",
    "createdAt": "2025-03-18T13:12:58.869Z",
    "version": 1
  },
  "content": {
    "rawContent": "# ESM移行計画\n\n## 背景と目的\n\nメモリバンクMCPサーバーはESモジュール形式で開発されていましたが、テスト環境との互換性問題から一時的にCommonJSへの移行を検討していました。しかし、MCP SDKがデュアルパッケージ形式(ESM/CommonJS両対応)であり、内部テストもESMで実行されていることが判明したため、ESM形式に戻す方針に変更します。\n\nこの移行の主な目的は:\n\n1. **SDKのネイティブサポート形式との一致**: MCP SDKのメイン形式はESM\n2. **将来的な互換性の確保**: ESMは今後の標準となるモジュールシステム\n3. **コード品質と一貫性の向上**: 一時的な変換によるバグリスクの低減\n\n## 実装計画\n\n### 1. Jest設定のESMモード対応\n\n```javascript\n// jest.config.js\nimport { createDefaultEsmPreset } from \"ts-jest\";\nconst defaultEsmPreset = createDefaultEsmPreset();\n\nexport default {\n  ..defaultEsmPreset,\n  moduleNameMapper: {\n    \"^(\\\\.{1,2}/.*)\\\\.js$\": \"$1\"\n  },\n  transformIgnorePatterns: [\n    \"/node_modules/(?!@modelcontextprotocol/sdk)(?!uuid)/\"\n  ],\n  testPathIgnorePatterns: [\"/node_modules/\", \"/dist/\"]\n};\n```\n\n### 2. TypeScript設定の最適化\n\n```json\n// tsconfig.json\n{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"module\": \"Node16\",\n    \"moduleResolution\": \"Node16\",\n    \"esModuleInterop\": true,\n    \"strict\": true,\n    \"skipLibCheck\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"outDir\": \"./dist\",\n    \"rootDir\": \"./src\",\n    \"declaration\": true\n  }\n}\n```\n\n### 3. package.json設定の更新\n\n```json\n{\n  \"type\": \"module\",\n  \"scripts\": {\n    \"test\": \"node --experimental-vm-modules node_modules/jest/bin/jest.js\"\n  }\n}\n```\n\n### 4. 必要なファイルの修正\n\n1. **ヘルパーモジュールの更新**:\n   - `import` 文と `export` 文の形式を確認・修正\n   - 相対パスでの `.js` 拡張子の追加\n   - 型定義方法の最適化\n\n2. **テストファイルの更新**:\n   - モジュールインポート方法の修正\n   - 型定義の参照方法の確認\n\n## 実装手順\n\n1. **基本設定の変更**:\n   - package.jsonの`\"type\": \"module\"`の追加/確認\n   - tsconfig.jsonの更新\n   - jest.config.jsの作成・最適化\n\n2. **テスト基盤の更新**:\n   - server-manager.tsの修正\n   - mcp-client.tsの修正\n   - test-utils.tsの修正\n\n3. **テストファイルの更新**:\n   - basic-mcp-test.test.tsの修正\n   - その他のテストファイルの段階的更新\n\n4. **検証プロセス**:\n   - 基本的なテストの実行確認\n   - より複雑なテストへの段階的移行\n   - 完全なテストスイートのカバレッジ確保\n\n## 期待される成果\n\n1. MCP SDKとのシームレスな統合\n2. より安定したテスト環境\n3. 将来の拡張に対する堅牢な基盤\n4. 開発生産性の向上\n\n## 修正影響範囲\n\n1. テスト環境の設定ファイル\n2. テストヘルパーモジュール\n3. 既存のテストファイル\n\n本番コードへの影響は最小限に抑えられる見込みです。\n",
    "sections": {
      "": "1. テスト環境の設定ファイル\n2. テストヘルパーモジュール\n3. 既存のテストファイル\n\n本番コードへの影響は最小限に抑えられる見込みです。"
    }
  }
}