マシンリーダビリティは重要だが、マシンライタビリティはそうでもない
#HTML #セマンティック・ウェブ #アクセシビリティ
私はマシンリーダブルなHTMLが好きだ。
クローラに認識しやすく、視覚に障害を抱える人でも意味を理解できる Web サイトがもっと増えればいいと思う。
一方、世の中で #セマンティック・ウェブ と呼ばれてきたものや、できるだけ #JavaScript を使わなくても全機能が動く #プログレッシブ・エンハンスメント の設計にはずっと懐疑的だった。
関連: #そもそも_HTML_の_<form>_がそんなに好きじゃない
がんばってセマンティックに書いた <form> が大量の <input type="hidden"> にまみれた汚いコードになってるのを何度も見てきたし、XSS で <form> 要素をネストさせて action を変更するタイプの攻撃の話などを聞くと、最初から action 属性になんぞ頼りたくないわと思ってしまう。
bot が悪質な問い合わせをフォームを通じて送るハードルは高いほうがいいと思うので、なんなら #JavaScript なしでフォームが動かないのは善いことですらあると思う( reCAPTCHA の <script> 要素がないと使えないフォーム、は現代では許容される設計だろう )。
これは整理すると、私は HTMLが "machine-readable" であることは重視してるが、 "machine-writable" であることは全く尊重してないということだ。
実のところ、"machine-readable" 性が重視されるのはその名の通り「読む」とき、つまり参照系だけだ。
更新系(データを変更するとか)はしょぼい bot では太刀打ちできない、ブラウザとしてのフルの機能(JavaScript の実行など)を持ったクライアントだけが可能な操作であればいいと思う。
もちろんヘッドレスブラウザを用いて悪質なリクエストを送ることもできるだろうが、それは JSON API を怪しげな curl に対して頑健にしておけば済むことのはずだ。
そして障害者向けのブラウジングツールもできる限りそのように(つまり JavaScript で制御されたフォームを誰でも使える方向に)進化していって欲しいと思う。その上で、JavaScript で動的に生えてくる HTML 要素をアクセシブルに書くのが良い。