
JoiはNode.jsフレームワークHapiの一部として誕生し、現在はSideway Inc.傘下で開発が続けられているJavaScript用スキーマ検証ライブラリである。2012年頃にWalmartLabsのエリック・ハマー氏が開発したHapiエコシステム内で生まれ、サーバサイドAPI入力検証のデファクトスタンダードとして長年君臨してきた。クライアント向けのYupやZodがフロントエンドを席巻する一方、Joiは堅牢な型システムとリッチな機能群でバックエンド検証の定石として根強く使われ続けている。本記事ではJoiの設計思想、Hapiとの関係、現代における立ち位置を整理する。
この記事の目次
- Joiを特徴づける3つの軸
- Hapi分離と独立プロジェクト化
- Joiが今も選ばれるバックエンドシーン
- Zod・Ajv・Yupとの比較
- まとめ
Joiを特徴づける3つの軸

Joiの設計の中心には「Node.jsサーバが受け取る入力をあらゆる角度から検証する」という目的意識がある。Joi.object({ id: Joi.number().integer().min(1).required() })のように流暢な記法でスキーマを組み立てつつ、conditional、alternatives、refといった機能で「フィールドAが特定値ならBは必須」といった複雑な条件も自然に表現できる。
もう一つの強みは、HapiフレームワークのoptionsオブジェクトにJoiスキーマを直接渡せる統合性である。Hapiはrequest.payloadやrequest.queryの検証ルールをルート定義に書くだけで自動的にJoiを呼び出してくれる。Express系列でもexpress-joi-validationなどの中間層を介して同様の体験が得られるため、サーバ実装の保守性が大きく向上する。
Hapi分離と独立プロジェクト化

Joiは元々WalmartLabsが運営していたHapi.jsプロジェクトの一部として誕生した。WalmartがHapi開発から手を引いた後、エリック・ハマー氏は自身の会社Sideway Inc.を立ち上げてHapi/Joiの保守を引き継いだ。「@hapi/joi」というスコープ付きパッケージ名だった時期もあったが、後にHapi本体との分離が進み、現在は単独パッケージ「joi」として公開されている。
v17で大きなAPI刷新があり、validate()の返り値がPromiseに統一されるなど現代的な書き味へ整えられた。歴史的経緯からバージョンごとに細かな変更があるため、古いチュートリアル記事と最新ドキュメントで構文が異なる点には注意したい。現行版ではTypeScriptの型定義も整備されているが、Zodのようなスキーマからの自動型推論は備えていない。
Joiが今も選ばれるバックエンドシーン

Joiが今もなお業務システムで使われ続ける理由は、何よりも「枯れた信頼性」と「条件付き検証の表現力」にある。alternativesとwhenを組み合わせれば「Aが1ならBは数値、Aが2ならBは文字列」といった分岐ロジックを宣言的に書けるため、業務ドメインの複雑な制約条件を素直に表現できる。
また、エラーオブジェクトには検証失敗したパス、期待された型、入力値などが詳細に格納されており、API側で適切なエラーレスポンスを組み立てやすい。REST APIのリクエストペイロード検証、GraphQLリゾルバ入口でのサニタイズ、CLIツールの引数検証など、信頼性を要する場面では今も第一候補となる。ブラウザ向けにはバンドルが重い欠点はあるが、サーバサイドではほぼ問題にならない。
Zod・Ajv・Yupとの比較

JoiとZodはしばしば比較されるが、出自と得意領域が異なる。Zodは「TypeScriptと型を共有する」現代的な発想で、フロント・サーバ問わずTS統一スタックに最適。一方Joiは「Node.jsサーバで安全な入力検証を実現する」目的に最適化されており、TypeScriptを使わないJavaScriptサーバや、複雑な分岐条件を必要とする業務ロジックでは今もアドバンテージがある。
Ajvはより低レベルのJSON Schema準拠の検証エンジンで、速度を最優先する場合に向く。Yupはフロント向けのJoi系列とも言える存在で、Formikと組み合わせるシーンで普及した。結論として、Hapi.jsを使うならJoi一択、TS統一スタックならZod、JSON Schemaのエコシステム重視ならAjv、と棲み分けがほぼ確立している。
まとめ
JoiはHapi.js時代から続くNode.jsサーバ検証の老舗ライブラリとして、10年以上にわたり実務で活用されてきた。Zodの台頭で新規プロジェクトにおける第一選択ではなくなったが、Hapi系の資産を抱えるシステムや、条件分岐の表現力が求められる業務APIでは今も最有力の候補だ。サーバサイド検証の文脈ではJoiの設計思想を理解しておく価値が、現代の開発者にも十分にある。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント