本文へ移動
Unlogical Systems

Ctrl / ⌘ + K でも開けます

    Unlogical Systems

    Vitest / Jest を採用する理由

    VitestとJestは、JavaScript・TypeScriptのコードを関数や部品の単位で自動検証する単体テストのツールです。弊社が画面やサーバーのロジックの品質確保にVitestとJestを採用する理由と、運用の考え方をまとめました。

    Vitest / Jest

    公式サイト

    Vitest / Jestとは

    VitestとJestは、JavaScriptやTypeScriptで書いたコードを、関数や画面部品といった小さな単位で自動的に検証する「単体テスト」のためのツールです。「この入力ならこの結果になるはず」という期待をテストとして書いておき、コードを変更するたびに実行して、期待どおりに動き続けているかを確認します。Jestは長く使われてきた定番のツールで、VitestはViteというビルドツールと同じ仕組みで動く、より新しいツールです。書き方はほぼ共通しており、どちらもTypeScriptや画面部品のテストに対応しています。

    弊社が採用する理由

    弊社では、TypeScriptで開発する案件の単体テストにVitestを、既存のプロジェクトや構成上の理由がある場合にはJestを採用しています。テストの対象は、金額計算や日付の扱い、入力チェックといった業務ルールを担う関数、APIの応答を整形する処理、Reactの画面部品の表示と振る舞いなどです。要件定義で決めた業務ルールをテストとして書き残すことで、ルールが仕様書とコードの両方に残り、将来の改修で意図せず変わってしまうことを防げます。Playwrightによる画面全体のテストとは役割を分け、細かなルールの検証は単体テストで速く網羅し、主要な操作の流れをE2Eテストで確認する組み合わせにしています。GitHub Actionsで変更のたびに実行し、問題があれば取り込む前に検出しています。PHPの案件では同じ役割をPHPUnitやPestが担っており、技術構成にかかわらず同じ考え方で品質を確保しています。

    向いている案件

    • 金額計算や入力チェックなど、業務ルールを担うロジックの検証
    • Reactの画面部品の表示と振る舞いの確認
    • フレームワーク更新時に動作が変わっていないことを速く確認したい場合

    保守・移行の観点

    単体テストはコードと一緒に保守するもので、仕様変更の際はテストも合わせて更新します。テストが多すぎて実行に時間がかかると実行されなくなるため、業務ルールに関わる部分を優先し、実装の細部に依存しすぎないテストを心がけます。VitestやJestの更新では設定の書き方が変わることがあり、TypeScriptやReactの更新と合わせて依存関係を棚卸しする時期に対応します。テストの網羅率を目標にするより、不具合が起きたら再発防止のテストを追加する運用のほうが、長期的には効果的です。

    組み合わせて使う技術

    よくあるご質問

    単体テストを書くと開発費用は高くなりますか?

    テストを書く分の工数は増えますが、不具合の早期発見と改修時の確認作業の削減で回収できることが多いです。長期間保守するシステムほど効果が出やすく、対象を業務ルールの部分に絞ることで費用を抑えられます。

    VitestとJestのどちらを使うかは選べますか?

    はい。既存のプロジェクトがJestを使っていればそのまま継続し、新規ではVitestを基本にしています。書き方はほぼ共通なので、どちらを選んでも保守性に大きな差はありません。

    関連するサービス

    関連する開発ガイド

    関連用語: 検収要件定義契約不適合責任

    監修: Unlogical Systems合同会社杉並区・西荻窪)公開

    まずは現場のエンジニアにご相談ください

    営業担当ではなく、実際に設計・開発を行うエンジニアが直接お答えします。ご相談・お見積りは無料、1営業日以内にご回答いたします。

    無料でご相談・お見積り

    資料の添付は、送信後に届く受付メールへの返信でお送りいただけます。

    相談・見積りは無料
    1営業日以内にご回答します

    無料で相談する