DevToolKits.app
ツール紹介

ZodでJSONバリデーションを簡略化する

TypeScriptフレンドリーなスキーマ定義ライブラリ「Zod」を使い、JSONデータのランタイムバリデーションと型生成を自動化する方法を紹介します。

Zodによるバリデーションのイメージ

「型定義だけじゃ、まだ不安」なあなたへ

TypeScriptでコードを書き、型定義を完璧に整えた。コンパイルエラーもゼロ。
それなのに、実行時にAPIから予期せぬデータが届いてアプリがクラッシュする……。そんな苦い経験はありませんか?

TypeScriptの型はコンパイル時にのみ存在し、ブラウザで動くときには消えてしまいます。つまり、「外部から来るデータ」が本当に正しいかどうかは、実行時にチェックするしかないのです。

Zod:型安全を「ランタイム」に持ち込む

そこで登場するのが Zod です。
Zodは、データの「スキーマ(設計図)」を定義し、実行時にその通りであるかを厳格にチェックします。

  • 不適切なデータを入り口で遮断: string を期待していたのに null が来たら、即座にエラーを出して後続の処理を守ります。
  • 型定義も同時に手に入る: スキーマを定義すれば、そこから TypeScript の型も自動的に抽出できます(z.infer<T>)。

スキーマを書く手間を「ゼロ」に

Zodは非常に強力ですが、複雑なJSONに合わせてスキーマを手書きするのは、それなりに骨の折れる作業です。

当サイトの JSON→Zod変換ツール は、そんな「スキーマ定義の面倒くささ」を解消するために作りました。お手元のJSONを貼り付けるだけで、対応する Zod スキーマを一瞬で生成します。

基本的なワークフロー

  1. APIから返ってくるJSONをコピーする。
  2. ツールに貼り付けて、Zod スキーマ(z.object({...}))を生成。
  3. 生成されたコードをプロジェクトに貼り付けて、Schema.parse(data) でバリデーションを開始!
import { z } from 'zod';

// ツールで生成されたスキーマ
const UserSchema = z.object({
  id: z.number(),
  name: z.string(),
});

// 実行時のチェックと型抽出が同時に行える
type User = z.infer<typeof UserSchema>;
const safeData = UserSchema.parse(rawData);

まとめ

データの境界線を守ることは、システムの堅牢性を守ることです。
「たぶん大丈夫だろう」という推測を、Zodによる「確かな検証」に変えましょう。手書きの手間はツールに任せて、より本質的なロジックの実装に集中してください。

関連ツール

広告

広告