なぜ適切に意味論的にマークアップする必要があるのでしょうか?


55

私は見た目や感じが好きなので、可能な限り意味的にマークアップしようとしますが、他の素晴らしい利点を知っているからではありません。私の質問のポイントは、他の人を教育できるようにすることです

さて、私は多くの記事やチュートリアルを見てきましたが、「セマンティックな方法でこれをマークアップしましょう」ということがよくあります。

しかし、奇妙な考えが私に来ました、なぜですか?

なぜ正しいセマンティックな意味を伝える特定の要素に煩わされる必要がある(またはしたい)のでしょうか?具体的には、私のような、新しいHTML5要素を参照しています<time><output>または<address>。特に、ページが「機能する」場合(すべてのブラウザで適切に表示されます)。

なぜ、<time>またはのような要素を使用したいのでしょうか?<address><span>

こういったいわゆるベストプラクティスに従わない(非常に人気のある)Webサイト(このサイトを含む)が多数あるので、これを求めています。


17
人間ではなく、コンピューターの情報を追加しています。

8
@ThorbjørnRavnAndersen:本当ですか?私は、コンピューターではなく、読むためのウェブサイトを書いています。人々に私のコンテンツを読んでもらい、最終的には私の店または何でも(ここでクライアントの観点から言えば)に来てほしい
マダラ

3
「コンピューターではなく、読む人のために」。さて、その場合、彼らは新聞や雑誌でそれを読むと思いますか?

1
@ThorbjørnRavnAndersen:Touché、でもページが機能する場合(人間のreadabeleのように)、なぜ次のような派手な要素を追加するのでしょうtimeか?
マダラ

2
確かになぜ。必要性がわからない場合は、見ないでください。

回答:


101

無料機能

<label>sを適切に使用すると、ラベルをクリックしてテキストフィールドに入力できるようになります。多くのブラウザは、公式仕様に従って論理的なデフォルト機能を多くのタグに追加します。つまり、<div>sと<span>sで完全に作成されたサイトよりも少ないJavaScriptプラグインを使用し、少ないコードを記述できます。

アクセシビリティ

無料の機能に関連して、セマンティクスはスクリーンリーダーソフトウェアにとって非常に重要です。入力フィールドの前のテキストは、<label>意志とまったく同じ方法で読み取られません。スクリーンリーダーはCSSのほとんどを無視するため、HTMLの構造次第です。

論理CSS

とスタイルを直接div #header使用できるのに、なぜ使用<header>するのですか?セマンティックタグを使用すると、マークアップが簡単になり、スタイルの移植性が高まります。取り消し線に特定のスタイルがあり、常に<del>要素を使用する場合、スタイルはより移植性が高くなります。<del>全員にとって同じことを意味しますが、.deletedTextクラスの名前はそれぞれ異なります。

また、大規模なプロジェクトで全員を同じページに維持するのにも役立ちます。誰も他の人の難解なクラスの命名規則を学ぶことを楽しんでいない。

SEO

Googleのような検索エンジンは、セマンティックHTMLとメタデータの使用を増やしています。Googleのリッチスニペットは、セマンティックコンテンツを伝えるための特別なメタデータも使用します。

なぜそれほど一般的ではないのか

それには手間がかかり、人々はウェブサイトの見た目や動作によってウェブサイトを判断することに慣れています。多くの場合、アプリのビジネスケースを書く人はそれを理解していないか、なぜそれが重要であるのかという意味で、セマンティクスの説明はありません。

HTMLのセマンティクスを理解または評価することは、技術に詳しくない人にとって非常に困難です。

ウェブサイトが見栄えが良く、動作しているように見える場合、なぜ心配するのですか?多くの人々は、それ以上のものがあることすら知らないかもしれません。アクセシビリティと同様に、チームの誰かがこれを本当に理解するまで、これは無視される傾向があります。

セマンティックHTMLをプロジェクトの優先事項にしたい場合は、そのケースを提示する必要があります。スクリーンリーダーでWebサイトがどのように機能するかをチーム/上司に示すことも有用なツールです。


10
「セマンティックHTMLをプロジェクトの優先事項にしたい場合は、そのケースを提示する必要があります。」–または、目の不自由な人のために働く!(注:私はあなたの上司の顔に酸を投げることを提案していません!しかし、多分彼に目隠しをし、しばらくの間音声ブラウザを使用させてください。)
ヨルグWミットタグ

34
そしてもちろん、GoogleBotは基本的に注意力欠如障害のある3歳の盲人であり、盲人です。
ヨルグWミットタグ

2
素晴らしい答え。また、このようなベストプラクティスに従うために、最初に「不必要な」努力が加えられるコードを維持することを追加します(コードを維持する元のデザイナー/プログラマーであっても) 。
ケネス

9
「フリー機能」側では、モバイルブラウザ上のデバイスは、モバイル入力(例:<日時>要素上)のために設計されたネイティブウィジェットを表示するために、あなたもできるように
クリス・クーパー

1
@QmunkE、多くの人が携帯電話のブラウザはしばしばtextviewsのようなネイティブの要素にHTMLのビットを回すというのは本当無視
ベンBrocka

9

その答えは単純で情報を伝達する、あなたの文書を構造化します

スパンとdivを使用する場合、ドキュメントには構造がありません。リスト、段落、表、ハイパーリンクはありません。なし。HTMLをマークアップ言語として選択し、コンテンツを表現および構造化するために提供するボキャブラリーを無視することは本当に意味がありません。ここで構造は重要な言葉です。HTMLは、表示されない構造化用です。それがCSSの目的です。

コードを意味的にマークアップすると、人間の読者だけでなく、マシンにも要素内のデータを理解する機会が与えられます。span要素とdiv要素をすべて使用する場合、この追加情報は得られず、値だけからそれらを推測することは不可能な場合があります。

同様に、Webサイトをスクレイピングし、見出しのみを抽出して目次を作成する場合、クモは見出しが何であるかを知る必要があります。適切な要素がなければ、それはできません。

最後になりましたが、divとspanのみを使用すると、CSSでこれらのスタイルを設定するのが難しくなります。CSSセレクターはドキュメントの構造に作用し、それがほとんど曖昧な構造である場合、CSSルールは適用するのが困難になります。div div div本当に参照するかどうかをどのように決定しますtable tr tdbody ul li?その場合、クラスとIDを追加する必要がありますが、その後、車輪を再発明します。

W3C推奨事項も参照してください

適切なセマンティック要素を使用すると、ユーザーエージェントが構造を利用できるようになります。これには、コンテンツの意味を理解する上で異なるユニットが持つ役割を明示的に示すことが含まれます。段落、ヘッダー、強調テキスト、表などのコンテンツの性質はすべて、この方法で示すことができます。場合によっては、見出しと小見出しの間、またはテーブルのセル間など、コンテンツのユニット間の関係も示す必要があります。次に、ユーザーエージェントは、たとえば、構造の種類ごとに異なる視覚的表現を使用するか、聴覚表現で異なる音声またはピッチを使用することにより、構造をユーザーに認識させることができます。


これが最善の答えになる可能性がありますが、すべてのスパン/ divが意味的に意味のあるクラスとIDでスパムされることを考慮すると、それは役に立ちませんか?
クリスピットマン

その利点は何ですか?マシンにコードを読み取らせますか?
マダラ

(編集範囲を広げる)ブラウザーのデフォルトのスタイルを気にする必要があるのはなぜですか?私は独自のCSSを使用し(さらに、これらの正確なスタイルを削除するためにリセットします)、正常に動作します。質問の焦点は、主にHTML5の新しい要素です。<time> <output> <address>
マダラ

@MadaraUchiha Googleがあなたのコンテンツをより良く理解すればするほど、彼らはあなたのサイトに検索者を向けることができます
クリスピットマン

@クリス:確かに、それはほとんど要件ではありませんか?つまり、多くの非常にセマンティックでないWebサイトがGoogleで最初に登場します。
マダラ

5

ここですでに良い答えを追加するために、私が言及していないことの一つは、前方互換性です。仕様が進化するにつれて、特定のセマンティック要素に追加の機能を指定することが可能になります。コードが意味的に正しい場合、メンテナンスなしで、または最小限のメンテナンスでこの機能を利用できます。


2
開発者の観点から、これが最も重要なポイントだと思います。ボットやSEOなどにアクセスしやすいことはすべて重要ですが、Web開発者としては、これが私にとって最も興味のあることです。
ヤニス

3

セマンティクスに完全に準拠しているサイトが多くない理由の1つは、多くの場合、ビジネスケースがないことです。販売(または露出などの関連カテゴリ)を促進する場合は、セマンティックHTMLを記述する価値があります。


タグをセマンティックに使用するためにできる最善のケースは、ツールでHTMLを使用するか使用する場合です。たとえば、セマンティックタグを使用すると、他のスタイルにスタイルを追加または削除することを恐れずに、要素に直接スタイルを設定できます。さらに、スクレーパーなどを使用してHTMLを解析する必要がある場合は、XPathおよびDOMクエリを作成して必要なものを見つけるのが容易になるため、整形式のセマンティックHTMLを高く評価するでしょう。


クラスはセマンティックタグを直接置き換えるものではないことに注意してください。私は、[error, information, warning]さまざまな意味を伝える再利用可能なクラスを持っているため、スタイルはそれらが関連付けられているタグに基づいています。


誰かが私のサイトをスクレイプしたいのなら、なぜ気にする必要があるのですか?
マダラ

4
@MadaraUchihaは、サイトで商品を販売しており、それらをインデックスに登録する検索エンジンにより、商品へのリンクが追加され、収益が増加する可能性があるためです。
ゴードン

また、ある日、あなた、同僚、または将来のメンテナーが、サイトの解析やコードの読み取りを伴う何かをする必要があるかもしれないことを考慮してください。あなたは、10年後の人々が息をのむようにつぶやいて、あなたのコードをからかい、あなたを憎んでいる男になりたくない。
jmort253

どんなに美しく書かれていても、誰でも10年前のコードの編集を楽しんでいる可能性は信じられないほど小さいです。Webフレームワークが現在成長している方法では、5年前のコードを見ることはほとんどできません。
グラハム

1

クローラーやWebサービス(コンピューターと通信するコンピューター)にとって有用または必要な場合があるためです。あなたが書く場合:

<span class="time">Sep 16 at 2:17</span>

... Webクローラーは、それを日付、時間のものとして理解する必要はありません。または、日付情報として見つけるのがはるかに困難になります。

使用する場合:

 <time datetime="2012-02-11 16:24:02">feb 11 2012 at 16:24:02</time>

...クローラーがコンテンツを見つけて分析するのがはるかに簡単になります。

私がクローラーを言うとき、私は必ずしも検索エンジンを意味するわけではありません:)


1

私は小さなWebコンサルティング会社を経営しており、現在のアプローチは、多くの要素のバランスをとろうとしているため、新しいHTML5タグを使用しないことです。この場合、バランスはユーザビリティ、ユーザビリティ、およびSEOの間です。

  • SEO:ここで他に答えられたことは、SEOに少し役立つかもしれませんが、私の経験によれば、SEO戦略がより明白であるほど、それが役立つ可能性は低くなります。

  • ユーザビリティ#1:HTML5タグが何らかのユーザビリティの利点をもたらすと仮定するのは理にかなっています。目の不自由なユーザーにとって、アクセス可能なブラウザーが提供するフォールバックが、私が提供できるものよりも優れていることは間違いありません。一般的なユーザーにとっては、議論の余地があります。ブラウザが提供するスキンのないメディアプレーヤーを使用する方が、使い慣れていないウィジェットよりも使いやすいかもしれません。または、ブラウザのデフォルトががらくたかもしれません(Chrome WindowsのデフォルトのMP3プレーヤーが定期的に動作を停止する方法のように)。

  • ユーザビリティ#2:古いIE。古いIEでは、これらのタグのいずれかが機能するために、ページを膨張させるHTML5シムの束が必要です。使用しているすべてのHTML5タグのループでCreateElement()を呼び出すスクリプトをheadタグに追加する必要があります。使用中のタグの各ページをくまなく調べない場合は、すべてのHTML5タグを意味します。これはすべての単一ページでインラインで実行する必要があります。つまり、キャッシュはありません。そして悪いニュース:古いIEはJavascriptの実行が最も遅いので、ロード中にすてきな小さな傾斜が作成されます。その後、古いIE専用のJavascriptとCSS、そして多くの場合Flashをひとまとめにして、サポートされていない新しい要素をすべて正しくレンダリングします。古いIEコードの読み込みを決定する前に検出機能を使用できますが、古いIEユーザーに、その機能を検出するのに十分なスクリプトが読み込まれるまで待ってから、それらのタグを機能させるすべてのものを要求し始めることもできます。ブラウザーは古いIEを検出し、それらのブラウザーを使用しているユーザーにのみ送信できますが、プラットフォームによってはキャッシングが困難または不可能になる可能性があります。さまざまなコードをさまざまなユーザーに提供するということは、テストがより複雑になることを意味します-非同期バグが発生したことはありませんか?特定のブラウザでのみ発生するものはどうですか?そして本番のみ?サインアップしてください。だから、おそらくあなたはその膨張をすべての人に送るだけでしょう。さまざまなコードをさまざまなユーザーに提供するということは、テストがより複雑になることを意味します-非同期バグが発生したことはありませんか?特定のブラウザでのみ発生するものはどうですか?そして本番のみ?サインアップしてください。だから、おそらくあなたはその膨張をすべての人に送るだけでしょう。さまざまなコードをさまざまなユーザーに提供するということは、テストがより複雑になることを意味します-非同期バグが発生したことはありませんか?特定のブラウザでのみ発生するものはどうですか?そして本番のみ?サインアップしてください。だから、おそらくあなたはその膨張をすべての人に送るだけでしょう。

IE8が死ぬまで、これらの新しいHTML5タグの値は、それらがもたらすパフォーマンスの問題に対して十分に高くありません。私たちは、まだ死に近づいている視聴者*とはまだ仕事をしていませんが、いつの日かです。

*最近のメトリックでは、IE8の訪問者が最も少ないサイトではIE8が6%であり、IE8の訪問者が24%であることが示されています。遠く、死から遠い。


0

短い答えは「実際には正当な理由はない」です。「セマンティック」マークアップを支持するほとんどすべての議論は、具体的なものではなく、何が起こるか、または起こるべきかについての考えにすぎません。たとえば、検索エンジンはよく言及されますが、世間体timeoutputまたはについての世話が最も少ないという公的な証拠はありませんaddress

間接的に、近い将来、彼らは気にしないと推測できます。schema.orgのサイトでは、いくつかの主要な検索エンジンによって、明確に完全に異なる何か、すなわち、ミクロ(に基づいて「セマンティックマークアップ」への具体的なアプローチ好むitemscopeと関連属性)。そして実際には、主に大規模な商業サイトまたはコミュニティサイトでこれを実行しています。

HTML5ノベルティは、スタイリングの目的であってもIEの古いバージョンでは認識されないため、HTML5ノベルティよりもうまく使用spanできdivます。したがって、コンテナ要素としても「機能」させるには、いくつかの策略が必要です。

ただし、ブラウザ、支援ソフトウェア、または検索エンジンによって実際の意味が割り当てられた「セマンティック」要素がいくつかあります。このh1ような理由から、主見出しに使用することは常に良い習慣です。labelフォームフィールドラベルに使用すると、ユーザビリティとアクセシビリティに大きな影響があります。等々; HTMLの実用ガイド:原則を参照してください。


8
明らかにいくつかの調査を行う必要があります。
ケネス

2
そのお粗末なリンクの場合は-1。(HTMLへの実用的なガイド:原則)
ブルーノシェーパー

0

HTMLは単なるUI言語ではなく、データ構造化言語でもあります。異種マシンが、サーバーに送られる情報のタイプを識別する1つの一般的な方法を持つように設計されました。したがって、非常に多くの異なるタグ。HTMLページはデータ構造と見なされる必要があります。


これについて詳しく説明します。質問に直接回答するわけではなく、既存の回答に追加されるようでもありません。
walpen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.