<data>
についてのみ回答します。
ページ全体や動作しているJavaScript等をみていないと確実なことは言えませんが、SEO対策の一つと考えられます。
参考: SEO対策に役立つかもしれない、普段あまり注目されていないタグたちまとめ(HTML 5.1版) - Qiita
人間は「八十」と「80」が同じ80
という数であることを(日本語を読める人であれば)簡単に認識できます。しかし、コンピューターで処理する場合は、簡単ではありません。その部分が「数」を意味していると言うことをまず把握しなければなりません。そして、ただの「文字列」から「数値」に変換しなければなりません。これは読み取る側にあらかじめ仕込んでおく必要があります。
「80」のようなアラビア数字の羅列であっても、数字の羅列を認識して、これは数に違いないと判断して、十進数表記として解析した結果80
という数だと判別します。最後の数として解析する部分だけでも、ほとんどの言語では標準で関数が用意されていますが、もしそれらの関数がなければ、ちょっとしたプログラムを作る必要があります。しかし、アラビア数字の羅列は世界共通で使われていますし、十進数の整数などは関数も標準で用意されているため、すぐに対応していることでしょう。しかし「八十」となると、中国語と日本語ぐらいでしか使われていないものであり、これを解析して80
と判断するための関数も標準にはなく、作り込みが必要です。そうなると、「八十」を80
という数だであると認識できるように対応するのはどうしても後回しになってしまいます。
これは検索エンジンを作っている人達にも言えることです。初期の頃の素朴な検索エンジンは、「八十」と書かれていても、それが数の80
だとはわからず、ただの文字列として検索のインデックスに登録してしまいます。こうなるとある問題が出てきます。検索エンジンで「80歳」で検索したら、「八十歳」と書かれた項目は引っかかるでしょうか?いいえ、検索エンジンは「八十」が数であることすら知らないので、「八十歳」と「80歳」を結びつけることができません。その結果、検索結果には表れず、サイトに訪れる機会の損失に繋がります。
そこで<data>
タグのvalue
の登場です。value
に"80"
と書いてあることで、検索エンジンは「これは『80』の意味らしい。つまり80
という数だ」ということが判別できるようになります。検索のインデックスには「八十歳」という単なる文字列だけではなく「80歳」という数と単位が合わさったものとして登録されるようになります。こうして「80歳」と検索したときもサイトが引っかかるようになるというわけです。
ただ最近は、日本語解析の技術の発展によって、優れた検索エンジンでは「八十」を80
と認識していると思われます。google先生も普通に答えてくれるので、現在においてもSEO対策として有用な手段であるかは疑問が残るところです。
なお、検索エンジンの詳細な仕組みは非公開であり、必ずしも現実の検索エンジンが上のようなことをしているとは限らない事にご注意ください。