Cybozu Frontend Monthly #71

タイトル画像

イベント概要

サイボウズフロントエンドマンスリーは、サイボウズ社内で行っているフロントエンド情報共有会「フロントエンドウィークリー」の公開版です。

その月に気になったフロントエンドの情報を、サイボウズのフロントエンドエンジニアのメンバーが共有していきます。

このイベントのハッシュタグは #サイボウズフロントエンドマンスリー です。

※フロントエンドウィークリーとは

毎週火曜の 17:00 〜 18:00 で社内向けに行っているフロントエンドの気になる記事を紹介する会です。
2016年3月15日から行われています。

ZennのPublicationにてウィークリーのまとめを投稿していますので、ぜひこちらもご覧ください。https://zenn.dev/p/cybozu_frontend

開催日

2026年09月29日

イベントページ

https://cybozu.connpass.com/event/405580/

メンバー


コンテンツ

👀 Notable Articles

pnpm 12.4

9/10 に pnpm 12.4 がリリースされました。

ここでの大きい変更として、従来の npm パッケージに加えて、Python、Cargo (Rust) のパッケージもサポートされました。

pnpm-workspace.yaml に

cargo:
  enabled: true
python:
  enabled: true

などと書いておくだけで、 pnpm add crate:serde pnpm add pypi:httpx などとして依存パッケージをインストールできるようになります。

これに対して、「なぜ Rust と Python をサポートするのか?」という疑問が Discussion に起票されています。

メンテナからの回答があり、要約すると次のような内容でした。

正直私も pnpm = npm のパッケージマネージャという認識だったので「そうだったの!?」という感じでした。

複数言語の管理となると、mise などが利用されるケースも多いですが、 pnpm が今後拡張されていくと、そのあたり単体でカバーされるようになるのかもしれませんね。

(ただ、“pnpm” と名前の一部に “npm” が入ってるのはいいのでしょうか)

Vitest 5.0 is out!

Vitest 5.0 がリリースされました。

5.0 ではパフォーマンス改善にフォーカスしていたようですが、そのほかにもいくつか新しい機能や変更があります。

パフォーマンス改善

機能追加や変更

Zod のバリデーションが速くなりそう

Zod 4.5 と Zod 4.6 に入った変更でバリデーションの高速化が図られています。

z.compile() - v4.5

新しくz.compile()というメソッドが追加されました。このz.compile()でschemaをwrapすると、実行時にスキーマを 1 回走査し以降はなるべくループなしのフラットな JS を new Function で生成するようになります。

ベンチマークではオブジェクトや配列、unionで3~9倍程度の高速化が実現されたそうで、複雑なschemaで何度もチェックしてる部分ではこの最適化が効いてきそうです。

ただし、注意点としてバンドルサイズが少し増えることや、失敗時はエラーを組み立てるために従来のパーサーにフォールバックするので高速化の恩恵を受けられるのは基本的に正常系だけ、といった点があります。

z.validate() - v4.6

新しくz.validate()というメソッドが4.6からサポートされました。このz.validate()はZodError を作らず boolean だけ返す型ガードです。ZodErrorを作らないためこれまでの.safeParse().successで判定結果を受け取るよりも大幅に高速化されるのがメリットです。

v4.5のcompileと組み合わせた上で不正な入力を弾くケースでは、.safeParse().successと比べて最大で35倍速くなった例もあるそうです。compileが苦手だった失敗系をちょうど埋めてくれる形になっています。

まとめ

今回の2バージョンで入った変更によって「多くの場合正常系のデータがくる&正誤判定しか使わない」ようなユースケースでは大幅な高速化が見込まれます。チームでZodを利用している人はぜひ書き換えを検討してみてはどうでしょうか?

🗓 Monthly Articles

📖 Framework, Library

⚡️ Services

🖥 Browsers

💬 Languages

🤖 Runtimes

📝 Specifications

🦆 Others