JSONスキーマの存在意義

檜山正幸さんがJSONスキーマについて丁寧に解説されています

この記事のブコメを見てみると XML Schema が在るんだし軽さがウリの JSON にそんなの必要なくね?的なコメントが散見されます。実を言えば私自身もこの記事を最初に見たときにそう思いました。

ただよくよく考えるとJSONスキーマ、意味あるのかもと思うようになってきました。というのも、JavaScript だけの世界でデータ検証を行いたい時に有用なんじゃないか、と。

AJAXアプリで、JavaScript からサーバサイドのプログラムにデータを渡す時は JSON スキーマなんて必要ないと思うのです。それこそ XML で送ればサーバサイドスクリプトでは XML Schema での validate が楽に行えるでしょう。Java なら JAXB など幾つか実装が既に存在していますし。

しかしクライアントサイドの JavaScript で外部から取得したデータの整合性を検証しようとなると、JavaScriptXML Schema を実装する必要が出てきます*1。もちろん JavaScriptXML Schema を実装しても構わないんですが、スキーマのパース及びデータのパース検証を考えると JSONスキーマの方が圧倒的に軽く実装できるのではないでしょうか。

というわけで、JavaScriptの世界だけでデータ検証を行いたい場合には JSONスキーマは充分意味があるのではないかと思った次第です。

2009-04-17 15:26 追記

檜山正幸さんが改めて JSONスキーマの意義を考察されています(trackback参照)。
これ読んで改めて考えてたんですが、確かに JavaScript の世界だけに限る必要性は無さそうですね。

例えば、マッシュアップでサービスを作る際に元のサービスが JSON でデータを提供しているというのは良くある話だと思います。そういった場合にサーバサイドでも JSONスキーマで validate が行えると助かりますね。スキーマを元にした Bean の生成なんかにも利用できますし。

*1:MSXMLなど使えば既に可能ですが、クライアントが限定されてしまいます。