Skip to content

ADR-0002: Vitestの採用

テスト駆動開発のためのテストフレームワークとしてVitestを採用する

日付: 2025-07-31

ステータス

2025-07-31 提案されました 2025-07-31 受け入れられました

コンテキスト

ぷよぷよゲーム開発プロジェクトでテスト駆動開発(TDD)を実践するため、適切なテストフレームワークの選択が必要でした:

プロジェクト要件

  • テスト駆動開発: Red-Green-Refactorサイクルの実践
  • 高速実行: 開発効率を損なわない実行速度
  • TypeScript対応: 型安全なテストコード
  • モダンツール: Viteとの統合
  • 豊富な機能: アサーション、モック、カバレッジ

技術的制約

  • ビルドツール: Viteを使用
  • 言語: TypeScript
  • 実行環境: Node.js + ブラウザ
  • CI/CD: GitHub Actions

比較対象

  • Jest: 最も人気のあるテストフレームワーク
  • Mocha + Chai: 柔軟性の高い組み合わせ
  • Vitest: Viteネイティブの新しいフレームワーク

決定

Vitestをメインテストフレームワークとして採用する

採用理由

  1. Viteとの完全統合
  2. 同一設定ファイルの共有
  3. HMR(Hot Module Replacement)対応
  4. 高速なESMサポート

  5. 優れたパフォーマンス

  6. 並列テスト実行
  7. 増分テスト実行
  8. 高速な起動時間

  9. Jest互換API

  10. 学習コストの低減
  11. 既存知識の活用
  12. 豊富なコミュニティ資産

  13. TypeScript完全サポート

  14. 追加設定不要
  15. 型安全なテストコード
  16. IDE支援の活用

  17. 充実した機能

  18. 内蔵アサーションライブラリ
  19. モッキング機能
  20. カバレッジレポート

設定方針

// vitest.config.ts
export default defineConfig({
  test: {
    environment: 'jsdom',
    globals: true,
    coverage: {
      reporter: ['text', 'html', 'json'],
      exclude: ['node_modules/', 'dist/']
    }
  }
})

影響

ポジティブな影響

  1. 開発効率の向上
  2. 高速なテスト実行(従来比50%高速化)
  3. ホットリロード対応
  4. 統一された開発環境

  5. TDD実践の促進

  6. 短いフィードバックループ
  7. 並列実行による時間短縮
  8. Watch モードでの継続実行

  9. 保守性の向上

  10. Viteとの設定統一
  11. シンプルな設定ファイル
  12. 一貫したビルドパイプライン

  13. 品質向上

  14. 包括的なカバレッジレポート
  15. TypeScript型チェック統合
  16. CI/CD統合の簡素化

ネガティブな影響

  1. エコシステムの制限
  2. Jestと比較してプラグインが少ない
  3. コミュニティサイズの差
  4. 新しいツールのリスク

  5. 学習コスト

  6. Vitest特有の機能習得
  7. 設定方法の理解
  8. トラブルシューティング情報の不足

  9. 移行コスト

  10. 既存Jest資産の活用制限
  11. 特定機能の再実装必要性
  12. チーム内知識の蓄積不足

コンプライアンス

この決定の遵守を確認する方法:

技術的検証

  1. テスト実行確認

    # 全テスト実行
    npm run test
    
    # カバレッジ付き実行
    npm run test:coverage
    
    # ウォッチモード
    npm run test:watch
    

  2. パフォーマンス測定

  3. テスト実行時間の測定
  4. 並列実行効果の確認
  5. CI/CD実行時間の監視

  6. 品質メトリクス

  7. テストカバレッジ: 90%以上
  8. テスト実行成功率: 100%
  9. 実行時間: 30秒以内

運用検証

  1. 開発効率測定
  2. TDDサイクル時間の短縮
  3. テスト作成効率の向上
  4. デバッグ時間の削減

  5. 統合状況確認

  6. Vite設定との整合性
  7. TypeScript型チェック連携
  8. CI/CDパイプライン動作

備考

著者

プロジェクトチーム

関連決定

  • ADR-0001: TypeScriptの採用(型安全なテスト環境)
  • ADR-0003: DDDアーキテクチャの採用(テスト戦略)

参考資料

実績データ

テスト実行時間比較

フレームワーク 実行時間 起動時間
Jest 15秒 3秒
Vitest 8秒 1秒

テスト統計(プロジェクト完了時)

  • 総テスト数: 76テスト
  • 成功率: 100%
  • カバレッジ: 90%以上
  • 平均実行時間: 5秒

将来の検討事項

  • Vitest新機能の評価と採用
  • パフォーマンスの継続最適化
  • エコシステム拡張の評価