ValidityとかValidatyとかValidator S.A.C.とか
著
Firefox絶不調以来何が不便かといえば、Html Validator for Firefox and Mozillaが利用できないこと。既にFirefoxからChromeに乗り換えており、似たような拡張もいくつか試してはみたものの、同等の利便を提供してくれる……つまりインターネットに接続していない状態で、かつローカルファイルっていうかfileスキームのURLを開いたとき自動的に検証してくれるものが見当たらないのです。自動的な検証、という意味ではHTML Validatorが対応(Autorun)しているけれど、裏でW3Cのサーバとやりとりするものだから、ネット接続が前提となるし、fileスキームのURLにも対応していません。
とりあえず、ネット接続を必要とせずに検証が実行可能な拡張として、Validityをみつけました。オプションにCustom Validator URLという設定項目があるので、(W3Cのサーバでなくとも)ローカルホスト上でサービスが動いているなら、そちらを使って検証できるのです。でもW3CのMarkup Validation ServiceをMacにインストールするの面倒だなぁと思ったら、お手軽な方法を@summerwindさんに教わりました。インストールはしていたけれどあまり利用したことの無かったValidator S.A.C.が、実はWebサービスとして利用できるというのです。まずはValidator S.A.C.を/Applications直下に移動し(いつもの調子で~/apps/以下に置いていた)、Using Validator S.A.C. as a Web Serviceの項にある方法に従って作業したところ、めでたくhttp://localhost/w3c-validator/でMarkup Validation Serviceが使えるようになりました。
しかしなぜか、Validityの設定でhttp://localhost/w3c-validator/を指定しても、検証してくれません(アイコンが接続中の状態になったまま無反応になってしまう)。Firefox用アドオンとしてValidaty(名前が紛らわしいなぁ)があって、こちらもオプションでValidatorの場所を指定できるのですけど、こちらは同じhttp://localhost/w3c-validator/の指定でちゃんと検証できていています(ただしValidatyには自動実行機能がないので都度ボタンを押さない限り検証されない)。/var/log/apache2/access_logをみる限り、Validatyは/w3c-validator/check?output=soap12&uri=検証対象URLにアクセスしている一方、Validityは/w3c-validator/と/w3c-validator/whatsnew.htmlにアクセスしているみたいで謎。Issue 6: Use XML response from validator.に相当する状況だと仮定するとValidityがJSON出力を必要としているのに、Markup Validation Service側が対応していないことが原因なのか?
インストール済みのValidator S.A.C. 0.6.4に同梱されているMarkup Validation Serviceのバージョンは0.8.3(ちなみにvaliadtor.w3.orgで動いている最新版は1.1)。0.8.3のリリースノートにはExperimental Feature: the validator can output its results as JSON.
とあるけど、0.8.6のリリースノートでBug fix: there were several errors in the JSON output.
とあるから、JSON出力のバグがValidityの動作に何かしら悪影響を及ぼしている可能性は否めないものの、はっきりしたことは僕にはわかりません。結果的にこれとは直接の相関は無かったようですけど、
- check: Argument "text/html" isn't numeric in numeric eq (==) at /Applications/Validator-SAC.app/Contents/Resources/validator/httpd/cgi-bin/check line 627.
- check: Use of uninitialized value in string eq at /Applications/Validator-SAC.app/Contents/Resources/validator/httpd/cgi-bin/check line 1127.
みたいな行がApacgeのerror_logに残る件で、Validator S.A.C.の作者であるChuck Houptさんとメールでやりとりしたついでに聞いた話では、次のバージョンでは最新のMarkup Validation Serviceを積んでくれるらしいので、待つしかないかなぁという感じ(新しいJAVAベースのHTML5サブシステムを組み込むのが難航しているのだとか)。なお上記のログについては、/Applications/Validator-SAC.app/Contents/Resources/validator/httpd/cgi-bin/check_wrapper.shの最後の行に2> /dev/nullを書き足して、exec /usr/bin/perl5.8.9 -I"$W3C_VALIDATOR_HOME"/lib "$W3C_VALIDATOR_HOME"/httpd/cgi-bin/check 2> /dev/nullとする方法を教えていただいたので、それで一応の解決としています。