目次

    こんにちは、Benと申します!
    今月もサイドプロジェクトから学んだことについて、紹介していきたいと思います。
    今回は zod を紹介したいと思います。

    zod とは?

    ZodはTypeScriptプロジェクトのための模型バリデーションライブラリです。
    このライブラリは、ストリクトに基づく相関データの検証や保存を簡単に実現できることが特徴です。
    コードが混乱しやすい大規模アプリでは、特に有用なツールと評価されています。

    使用を開始する前に、Zodをプロジェクトに追加します。
    npm install zod
    yarn add zod

    Zodは、スキーマを使って検証ルールを構築します。以下は基本的な使用例です。

    スキーマの作成

    import { z } from 'zod';

    // 単純な数字タイプのスキーマ
    const numberSchema = z.number();

    // 検証
    const result = numberSchema.safeParse(42);

    if (result.success) {
      console.log('Valid number:', result.data);
    } else {
      console.log('Validation failed:', result.error);
    }

    連続するバリデーション

    const positiveNumber = z.number().positive();
    const result = positiveNumber.safeParse(-10);
    console.log(result.success); // false

    Zodの素晴らしい点の1つは、複雑なスキーマを構築できることです。

    const userSchema = z.object({
      name: z.string(),
      age: z.number().int().positive(),
      email: z.string().email()
    });

    const userData = {
      name: 'Taro',
      age: 30,
      email: 'taro@example.com'
    };
    const validationResult = userSchema.safeParse(userData);
    console.log(validationResult.success); // true

    配列スキーマ

    const numbersArray = z.array(z.number());
    const arrayData = [1, 2, 3];
    const result = numbersArray.safeParse(arrayData);
    console.log(result.success); // true

    選択式タイプスキーマ

    const statusSchema = z.union([
      z.literal('success'),
      z.literal('failure')
    ]);

    const status = 'success';
    const validationResult = statusSchema.safeParse(status);
    console.log(validationResult.success); // true

    WebAPIから収集したデータの構造を検証したい場合に最適です。

    const apiResponseSchema = z.object({
      id: z.string().uuid(),
      data: z.array(z.object({
        key: z.string(),
        value: z.number()
      }))
    });

    fetch('/api/data')
      .then(response => response.json())
      .then(json => {
        const result = apiResponseSchema.safeParse(json);
        if (!result.success) {
          console.error('Invalid API response:', result.error);
        } else {
          console.log('Valid API response:', result.data);
        }
      });

    値が指定されていない場合のデフォルト値を設定することも可能です。

    const schemaWithDefault = z.object({
      name: z.string().default('Anonymous'),
      age: z.number().optional()
    });

    const data = { age: 25 };
    const parsedData = schemaWithDefault.parse(data);
    console.log(parsedData.name); // "Anonymous"


    Zodはシンプルな使い方から専門性の高い変数検証まで実現できる模型バリデーションライブラリです。
    特にTypeScriptプロジェクトのデータ保証に有用です。

    これは今月の記事になります!ぜひサイドプロジェクトで使ってみてくださいね!

    PREV
    2024.12.10
    PayPal決済ゲートウェイをウェブアプリケーションに実装する方法
    NEXT
    2025.01.09
    RESTful APIの設計とドキュメント作成のベストプラクティス