本文へ移動
Unlogical Systems

Ctrl / ⌘ + K でも開けます

    Unlogical Systems

    zod を採用する理由

    zodは、データの形と検証ルールをTypeScriptで宣言し、入力チェックと型定義を一致させるためのライブラリです。弊社がフォームやAPI、設定データの検証にzodを採用する理由と保守の考え方をまとめました。

    zodとは

    zodは、「このデータはこういう形で、各項目はこういう条件を満たすべき」という定義をTypeScriptのコードとして書き、実際のデータがその定義に合っているかを検証するためのライブラリです。定義した内容からTypeScriptの型を自動的に導き出せるため、検証ルールと型定義を別々に書いて食い違う、という問題を防げます。フォームの入力チェック、APIが受け取るデータの検証、設定ファイルや環境変数の確認など、外部から入ってくるデータの入口で使われます。

    弊社が採用する理由

    弊社では、Next.jsやReactで作る画面の入力チェックと、Node.jsで作るサーバー側のデータ検証にzodを採用しています。この会社サイトでも、ページの内容を記述したデータがルールどおりかをzodで検証してから公開しています。採用の理由は、要件定義で決めた「必須項目」「文字数の上限」「選べる値の種類」といった業務ルールを、一か所に宣言としてまとめられることです。同じ定義を画面側とサーバー側の両方で使えるため、片方だけ更新して食い違うことを防げます。TypeScriptの型が定義から導かれるので、項目を追加したときに影響する箇所がコードの実行前にわかります。また、生成AIの出力のように形が保証されないデータを扱う際にも、期待する形かどうかをzodで確認してから処理に進めることで、想定外の動作を減らしています。

    向いている案件

    • 入力項目が多く、業務ルールの厳密なチェックが必要なフォーム
    • 画面とサーバーで同じ検証ルールを共有したいWebアプリケーション
    • 外部APIや生成AIからの応答など、形が保証されないデータの受け取り

    保守・移行の観点

    zodは比較的安定したライブラリですが、大きな更新では記述方法やエラー内容の形式が変わることがあります。エラーメッセージを画面に表示している場合は、更新後に表示が崩れていないかを確認してください。検証ルールは業務ルールそのものなので、仕様変更の際はまずzodの定義を更新し、そこから影響する画面やサーバー処理を型チェックで洗い出す進め方が安全です。定義に対する単体テストを用意しておくと、ルール変更の意図しない影響を早く発見できます。

    組み合わせて使う技術

    よくあるご質問

    入力チェックはサーバー側だけで十分ではないですか?

    安全性の観点ではサーバー側の検証が必須ですが、画面側でも同じルールで即座に確認できると利用者の使い勝手が向上します。zodを使うと同じ定義を両方で使えるため、二重管理になりません。

    Laravelで作ったシステムでもzodは使えますか?

    zodはTypeScript用のライブラリなので、サーバー側がLaravelの場合は画面側で使います。APIの仕様をOpenAPIで管理していれば、そこから画面側の検証定義を生成することもできます。

    関連するサービス

    関連する開発ガイド

    関連用語: API要件定義

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

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

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

    無料でご相談・お見積り

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

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

    無料で相談する