2025/04/12 21:03 Zod v4 Beta

ロボ子、Zod 4 beta版が出たみたいじゃぞ!1年以上も開発してたらしいのじゃ。

それはすごいですね、博士!どんな点が新しくなったんですか?

パフォーマンスが大幅に向上したみたいじゃ。例えば、文字列解析がZod 3より2.6倍も速くなったらしいぞ。Zod3では348 µs/iterだったのが、Zod4では132 µs/iterになったとか。

それは驚きです!配列解析も3倍、オブジェクト解析は7倍も速くなっているんですね。

そうなんじゃ!しかも、TSCインスタンスの生成も20倍削減、コアバンドルサイズも半分になったらしいぞ。

バンドルサイズが小さくなるのは、パフォーマンスにも良い影響がありそうですね。

@zod/miniっていうツリーシェイキング可能なライブラリも出たみたいじゃ。これを使うと、コアバンドルサイズがさらに小さくなるらしいぞ。6.6倍削減じゃと!

それはすごいですね!他に何か面白い機能はありますか?

メタデータじゃな。スキーマに型付きメタデータを追加できるようになったみたいじゃ。z.registry()でレジストリを作って、z.globalRegistryでグローバルレジストリを使えるらしいぞ。

メタデータですか。JSON Schema変換もサポートされたみたいですね。z.toJSONSchema()で変換できると。

そうそう!それと、z.interface()っていうAPIも新しく追加されたみたいじゃ。オブジェクト型を定義するのに便利らしいぞ。キーのオプショナリティをより正確に表現できるとか。

ファイルスキーマも追加されたんですね。z.file()でFileインスタンスのバリデーションができるんですか。

その通り!.min(), .max(), .type()でサイズやMIMEタイプを検証できるらしいぞ。国際化対応も強化されたみたいじゃな。エラーメッセージをいろんな言語に翻訳できるロケールAPIが導入されたみたいじゃ。

エラーのプリティプリントも便利そうですね。z.prettifyError関数でZodErrorをユーザーフレンドリーな文字列に変換できるんですね。

他にも、z.email()とかz.uuidv4()みたいな文字列フォーマット関数がトップレベルに昇格したり、z.templateLiteral()でテンプレートリテラル型を表現できるようになったり、いろいろあるみたいじゃ。

数値フォーマットもたくさん追加されたんですね。z.int(), z.float32()など、細かい指定ができるようになったんですね。

z.stringbool()っていうのもあるぞ。これは、より高度な"env-style"の真偽値強制ができるらしい。

エラーカスタマイズも簡略化されたんですね。エラーメッセージをカスタマイズしやすくなったのは嬉しいです。

z.discriminatedUnion()もアップグレードされたみたいじゃ。識別子キーの自動検出とか、判別共用体の合成をサポートしたとか。

z.literal()も複数値をサポートしたんですね。スキーマ内のリファインメントも保存されるようになったんですね。

.overwrite()っていうメソッドも追加されたみたいじゃ。推論型を変更せずに変換を表現できるらしいぞ。

拡張可能な基盤として@zod/coreパッケージも作成されたんですね。Zod 3からZod 4への移行期間として、約6週間のベータ期間が設けられているんですね。

そうみたいじゃな。しかし、これだけ機能が増えると、覚えるのが大変じゃな。まるで、ロボ子の頭の中身みたいじゃ。

博士、それは褒め言葉ですか?それとも、からかっているんですか?

もちろん、褒め言葉じゃ!…たぶん。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
