SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

そこが知りたい! Web標準サイトの活かし方

HTMLのマークアップ時に目的に合った要素を選ぶ方法

そこが知りたい! Web標準サイトの活かし方(3)


  • X ポスト
  • このエントリーをはてなブックマークに追加

 本連載では、Web標準のメリットを最大限に生かすことをテーマに、仕様書には書かれていない部分を中心に取り上げ、実際のWeb制作現場で起こり得る問題について、解決の糸口をたらしていきたいと思います。連載第3回目となる今回のテーマは、「目的にあった要素選び」です。コーディングの際、「構文的に正しいかどうか」はツールを使ってチェックすることができますが、「目的に合っているかどうか」については人間が判断する他ありません。どの要素でマークアップするか、判断に迷う部分について掘り下げて考えてみましょう。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 本連載では、Web標準のメリットを最大限に生かすことをテーマに、仕様書には書かれていない部分を中心に取り上げ、実際のWeb制作現場で起こり得る問題について、解決の糸口をたらしていきたいと思います。

 連載第3回目となる今回のテーマは、「目的にあった要素選び」です。コーディングの際、「構文的に正しいかどうか」はツールを使ってチェックすることができますが、「目的に合っているかどうか」については人間が判断する他ありません。どの要素でマークアップするか、判断に迷う部分について掘り下げて考えてみましょう。

対象読者

  • XHTMLとCSSの基本を理解している方。
  • Web標準サイトの実践的な作り方に興味のある方。

必要な環境

 (X)HTMLやCSSを記述するエディタと、それを確認するブラウザがあれば、特別な環境は必要ありません。

構文の妥当性と目的の妥当性

 マークアップの妥当性は、構文の妥当性と目的の妥当性の2つの側面から考えることができます。

構文の妥当性

 「構文の妥当性」とは、そのマークアップが「構文的に正しいかどうか」ということを指します。例えば、その文書型で非推奨の要素や属性を使用していないか、要素が正しくネストされているか、開始タグと終了タグが対になっているかどうか、などが焦点となります。

 Web標準に準拠したWebサイト制作を目指すなら、相互運用性や互換性を確保するためにも、少なくとも「構文的に正しい」という条件はクリアしておきたいところです。例えば、支援技術を含むユーザーエージェントは、正しい構文であってこそ本来の機能を発揮することができます。Webブラウザは、構文を解析したうえでユーザーに知覚できる形でコンテンツを掲示しますし、検索エンジンのクローラも、構文を解析したうえでデータベースにインデックスを追加します。構文にミスがあった場合、音声ブラウザであれば、正しく読み上げることが難しくなりますし、視覚ブラウザであれば、正しくレンダリングするのが難しくなるでしょう。同様の理由から、SEO的にも期待する効果は得られにくくなるはずです。

 さて、この「構文の妥当性」については、ユーザーエージェントの解析メカニズム同様、プログラムで解析して評価することができます。例えば、属性値を囲む引用符を1つ付け忘れるようなささいなミスでも構文エラーとなってしまうわけですが、このような人間が気づきにくい箇所であっても、W3C Markup Validation ServiceAnother HTML-lintなどの解析ツールを利用することで、確実に、そして簡単に発見することができます。

 ツールを利用して「構文の妥当性」をチェックし、構文エラーを修正すれば、少なくともユーザーエージェントには正しく機能してもらうことができるようになるはずです。けれども、ブラウザのようなユーザーエージェントを利用してWebページを視聴しているユーザーに対して、情報が正しく伝わっているかどうかは、また別の話しです。これには「目的の妥当性」が関連してきます。

目的の妥当性

 「目的の妥当性」では、「要素、属性、属性値の使いどころが、仕様書で示されている本来の目的に合っているかどうか」が焦点となります。ここではtitle要素を例に挙げてみましょう。

 title要素は、「開始タグと終了タグが必須」で、「head要素内に必ず1つのみ」なければなりません。また、コメントも含め、他のマークアップが現れてはなりません。以上が構文的なルールとなりますが、さらにtitle要素は、「その文書の内容を識別する」ために用いる必要があります。これが「目的の妥当性」で扱われる部分です。

 head要素内にtitle要素がなかったり、2度登場したり、title要素内に他のマークアップがあったりすることは認められませんが、この「構文の妥当性」については、前項で紹介したように、ツールを利用してチェックすることができます。

 しかし、<title>と</title>の間に記述された内容が、「その文書の内容を識別するものとして適切であるかどうか」という「目的の妥当性」については、人間の判断に頼るしかありません。

 次のサンプルコードでは、「説明」というタイトルが付けられています。ここでのユーザーエージェントの役割は、「title要素の内容をユーザーが得られるようにする」ことです。例えば、ページヘッダやウィンドウタイトルとして掲示したり、読み上げたりするわけですが、「構文の妥当性」さえクリアされていれば、この仕事は果たされます。このサンプルの場合、構文的には正しいので、「説明」というタイトルがユーザーに掲示されることになりますが、これだけでは何の説明なのかユーザーが判断することができません。つまり、目的の妥当性については、「妥当ではない」ということになります。

リスト1 title要素の悪い例
<head>
  <title>説明</title>
</head>

 ユーザーエージェントの動作を確実にしたうえで、ユーザーに対しても情報が正しく伝わるようにするためには、構文と目的の両方を妥当なものにする必要があります。

 次のサンプルは、その文書の内容を識別できるよう、タイトルをより具体的にしたものです。ユーザーは文脈抜きで文書を参照することがあるため、文脈を踏まえたタイトルを付けなければなりません。つまり、「説明」のような文脈不明なタイトルではなく「目的の妥当性についての説明」のような、より具体的なタイトルを提供すれば良いわけです。

リスト2 title要素の良い例
<head>
  <title>目的の妥当性についての説明</title>
</head>

 さて、title要素の場合「文書の内容を識別するために利用する」というように、その使用目的が明らかですし、「1つの文書に1度のみの出現」に限られていますから、マークアップ時の判断に迷うことはまずないでしょう。しかし、(X)HTMLに用意されている要素や属性は決して豊富とは言えませんから、状況によってはマークアップ時に「ここはどの要素を使うべき?」と、判断に迷う部分も出てきます。以降、「目的の妥当性」において、迷いの生じやすい状況を取り上げて解説していきます。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
見出しのマークアップ

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
そこが知りたい! Web標準サイトの活かし方連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 宮本麻矢(ミヤモト マヤ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3481 2009/06/22 18:38

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング