この記事に関連するツール
ブラウザ上ですぐに試せます。記事の内容を確認しながら使うと、作業の流れをつかみやすくなります。

「型定義だけじゃ、まだ不安」なあなたへ
TypeScriptでコードを書き、型定義を完璧に整えた。コンパイルエラーもゼロ。
それなのに、実行時にAPIから予期せぬデータが届いてアプリがクラッシュする……。そんな苦い経験はありませんか?
TypeScriptの型はコンパイル時にのみ存在し、ブラウザで動くときには消えてしまいます。つまり、「外部から来るデータ」が本当に正しいかどうかは、実行時にチェックするしかないのです。
Zod:型安全を「ランタイム」に持ち込む
そこで登場するのが Zod です。
Zodは、データの「スキーマ(設計図)」を定義し、実行時にその通りであるかを厳格にチェックします。
- 不適切なデータを入り口で遮断: string を期待していたのに null が来たら、即座にエラーを出して後続の処理を守ります。
- 型定義も同時に手に入る: スキーマを定義すれば、そこから TypeScript の型も自動的に抽出できます(
z.infer<T>)。
スキーマを書く手間を「ゼロ」に
Zodは非常に強力ですが、複雑なJSONに合わせてスキーマを手書きするのは、それなりに骨の折れる作業です。
当サイトの JSON→Zod変換ツール は、そんな「スキーマ定義の面倒くささ」を解消するために作りました。お手元のJSONを貼り付けるだけで、対応する Zod スキーマを一瞬で生成します。
基本的なワークフロー
- APIから返ってくるJSONをコピーする。
- ツールに貼り付けて、Zod スキーマ(
z.object({...}))を生成。 - 生成されたコードをプロジェクトに貼り付けて、
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);
APIレスポンスでの実用例
実務では、一覧APIの一部フィールドだけが null になる、日付が文字列で返る、数値IDが文字列に変わる、といった小さなズレが起きます。
{
"id": "123",
"name": "Ada",
"lastLoginAt": null
}
このJSONから生成したスキーマは、そのまま使うだけでなく、仕様に合わせて調整します。id を数値に変換する設計なら z.coerce.number()、ログイン日時が未設定でもよいなら z.string().datetime().nullable() のように直します。ツールでたたき台を作り、境界条件だけ人間がレビューする流れにすると、手書きミスを減らしながら現実のAPI仕様にも合わせられます。
まとめ
データの境界線を守ることは、システムの堅牢性を守ることです。
「たぶん大丈夫だろう」という推測を、Zodによる「確かな検証」に変えましょう。手書きの手間はツールに任せて、より本質的なロジックの実装に集中してください。