一から始めるWeb制作 #4〜文字エンコーディングとHTMLの基本構造 | ウラの裏

一から始めるWeb制作 #4〜文字エンコーディングとHTMLの基本構造

コーディング イメージ

チームで制作することが多いウェブサイトのHTML文書は、誰がみてもわかるように、規則やルールに則ってコーディングすることが大切だ。

なので、今回から、必要に応じGoogle HTML/CSS Style Guideに沿って、案内していこう。

最初は、文字エンコーディングとHTMLの基本構造についてだ。

Google HTML/CSS Style Guideについて

冒頭で触れた通り、HTML文書は、誰がみてもわかるように、規則やルールに則ってコーディングするもの。勝手にコーディングすれば、一緒に制作している人たちが理解できず、結果としてWeb制作が遅れたり、バグが生じる原因となる。

そして、「誰も」とは、同じチーム内のスタッフ同士だけではなく、文字通り「誰も」がわかることが原則だ。それは、人間だけではなく、検索ロボットまでもが理解できることが大切。

なぜなら、自分(たち)のウェブサイトは、常に多くの人に検索されることを願っている。それが、企業やショップの売上につながるからだ。

そのためには、Googleをはじめとする検索ロボットに、正しくウェブサイトを認識してもらわなければならない。

それをある程度、世界共通の規則やルールにしたものが「Google HTML/CSS Style Guide」である。原文は英語で書かれているが、Google翻訳で日本語にすれば、何が書いてあるかわかる。

コーディングで困ったときや最新の記述の仕方などについて、参考にするとよい。

文字エンコーディングはUTF-8 BOM無しで

最初は、HTML文書の基本設定について。

文字エンコーディング

普段、「文字エンコーディング」という言葉は意識していなくても、パソコンあるいはスマートフォンで、まれに「文字化け」した画面を見たことがあるだろう。特に、受信メールでありがちだ。

文字化けは、コンピュータ上の文字コードが合っていないために起こる。

では、文字コードとは、そしてエンコーディングとはなにか?

文字コードは、コンピュータ上の各文字に割り当てられるバイト表現のこと。と言われても、なんだかわかりにくいが、

  • Shift_JIS
  • Unicode(UTF-8 / 16 / 32 etc)
  • ISO-2022-JP
  • EUC-JP

といった類なら、みたことはあると思う。Shift_JISは、日本語を含む文字列を表現する文字コードだ。

「バイト表現」という言葉はわからなくても、文字コードを統一することで、「文字化け」していた文章が、自身の環境下(パソコンなど)で読めるようになる。

これはウェブサイトでも同様で、世界的に標準の文字コードを使えば、例え日本語の文章であっても、世界中で制作した文書通りに表示されるということだ。

そして、世界標準の文字コードは、当たり前ではあるがShift_JISではなく、UTF-8だ。

ちなみに、エンコーディングとは、文字コード宣言のこと。文書の冒頭で、

「このHTML文書は、UTF-8で書きますよ〜」

と宣言しておくことで、どのパソコンで読んでも同じように表示されるというわけだ。ウェブサイトのソースコードを見ると、冒頭に必ず、

<meta charset="utf-8">

という表示があるのが、そう。

BOMとは

BOMは、バイトオーダーマーク(byte order mark)のこと。

文字コードのUnicodeには、「BOM付き」と「BOM無し」の2種類がある。

パソコンの文字は、全て数字とアルファベットの組み合わせでできていて、例えば、平仮名の「あ」は「3042」というコードが割り当てられている。そして、その前にUnicodeデータであるかどうかの符号がついていて、その数バイトがBOMだ。

UTF-8の場合、先頭の3バイト<0xEF 0xBB 0xBF>がBOMにあたる。

文字コードについて調べていくと大変長くなるし、趣旨からも外れるので、これくらいにしておく。詳しくは、ウィキペディアでも解説している。

HTML文書では「BOM」は不要のため、UTF-8の文字コードを使用する場合、必ず

「BOM無し」

を選択することが前提となる。

では、書いているHTML文書が「BOM付き」か「BOM無し」かを調べるにはどうしたら良いか?また、新たにファイルを作成するとき、どのように指定すれば良いか?

それは、自身が使用しているテキストエディタで調べられ、または指定できる。

前回紹介したVisual Studio Codeであれば、新規ファイル作成の際、右下の「UTF-8」をクリックすると、ウィンドウ上部で「エンコーディングの選択」ができる。

VSCodeのエンコーディング

また、Mac専用のCodEditorも同様で、右下の「Unicode (UTF-8)」をクリックすると、プルダウンで選択できるようになる。

codeditorのエンコーディング

その他のテキストエディタも、概ね同様だ。

HTML文書のデフォルトは、UTF-8 BOM無し(または「UTF-8N」と表示)と覚えておこう。

HTML文書の基本構造

HTML文書は、最低限以下要素で構成されている。

視覚的にわかりやすいように、CodePenというツールを使ってHTMLを書いてみた。左側またはHTMLタブで表示されているのはテキストエディタ、右側またはResultタブで表示されているのはブラウザ、つまりネット上の表示ということ。

See the Pen
basic-html
by Kazy (@uraflt)
on CodePen.

左側のテキストエディタ部分を、拡張子「.html」で保存すれば、HTML文書だ。

さらに、これをFTPソフトで契約しているサーバーへアップすれば、誰でも閲覧できるWorld Wide Webのページになる。

では、上から順を追って説明していこう。以下小見出しは、必ずこの順で上から書いていくものだ。

ドキュメントタイプ

1行目は、必ずドキュメントタイプを書く。<!doctype html>と書いておくことで、この文書がHTML文書であることを宣言している。

別名は、「DOCTYPE宣言」または「文書型宣言」。

現在はHTML5が標準となるため、このような簡潔な書き方となった。

<>で囲まれたものを「タグ」といい、必ず終了タグ</>で閉じられるのが原則。しかし、ドキュメントタイプのように、終了タグが存在しないタグのことを「void要素」という。

改行を示す<br>も同様のvoid要素だ。よく、<br />と書く人がいるが、これは間違い。
Google HTML/CSS Style Guide 3.1.1参照)

htmlタグ

2行目は、htmlタグ。

このタグで囲った箇所がHTML文書であることを示し、さらにlang属性で、「要素の中で使用する言語の種類を明示」している。

早い話、

「このHTML文書は日本語で書かれていますよ〜」

といっている。

これは、ウェブサイトを見る人(人間)に対してだけではなく、検索エンジン(機械)にもわかるように書いてある。また、自動翻訳にも役に立つのだ。

htmlタグは、必ず文末に終了タグがくる。

headタグ

3行目は、headタグ。

HTML文書のヘッド部分を指定するタグで、ここにtitleタグ、metaタグ、linkタグなど、HTMLに必要な情報を書いておくところ。ブラウザ上には表示されない。

CSSの外部ファイルも、情報のひとつとして、ここに外部ファイルからのリンクを書くことで読み込ませる。

一方、javascriptの外部ファイルは、headタグ内で読み込ませると、ページ読み込みスピードが遅くなることから、Googleでは推奨していない。そのため、この下に続くbodyタグの最後に記載するのが、一般的である。

4行目、6行目はmetaタグと言って、文書の情報を検索エンジンに伝える情報を記載するもの。必ず、headタグ内に記載する。

4行目は、「charset属性」で、上述の文字エンコーディングをする。

6行目は、「name属性」の”discription”を記載している。「メタ・ディスクリプション」という言葉を聞いたことはないだろうか?

いわゆる、そのページの概要を書いておくところで、検索の上位に表示されるかどうかの大事な要素だ。概要には、ヒットさせたい検索ワードを散りばめておくことが重要になる。

bodyタグ

bodyダグで囲まれた部分は、Webページの本文。ブラウザに表示されるところだ。

bodyタグ内にあるh1, h2といったタグは、見出し(heading)タグのこと。h1〜h6まであり、数字が小さいほど文字フォントが大きくなる。

ここにも検索ワードを入れることが大切で、検索にも重要なタグであることをお忘れなく。

このように、HTML文書は上から、

  1. ドキュメントタイプ
  2. htmlタグ
  3. headタグ
  4. bodyタグ

の4つで、構成されている。

これ以外の多くのタグ・文章・画像などは、上記2〜4のいずれかのタグ内に追加して、記載されている。

CSSとjavascript

HTML文書を、より視覚的に表示するものとして、

  • CSS (Casading Style Sheets)
  • javascript

がある。

CSSは、その名の通り「スタイルシート」で、ウェブページの装飾の役目を果たすコード。HTMLと同じ仲間と言ってもいい。

一方、javascriptは、ウェブページをよりダイナミックに動かすためのプログラミング言語だ。こちらは、別の専門知識が必要となる。

javascriptは、上述の通りプログラミング言語なので、HTMLコーディングの習得には必須ではない。

ここでいう「HTMLコーディング」は、HTML+CSSのことである。

それぞれについては、後日別ページで詳しく解説するが、HTMLの基本構造(上述)の通り、この2つについてはHTML文書内に書かず、必ず別ファイルを用意して、HTML文書内にリンクして作用させるのが標準だ。

このことを「関心の分離」という。
Google HTML/CSS Style Guide 3.1.5参照)

しかしながら、これには例外があり、ページ読み込みスピードアップのため、短いCSSはHTML文書内に含んで書くことがある。javascriptも同様だ。

とはいっても例外は例外なので、必ずコーディングの基本に戻り、可能な限りCSSとjavascriptは外部ファイルを用意することが望ましい。

この章のまとめ

今回は、

  1. Google HTML/CSS Style Guideに沿ったコーディングを心がける
  2. HTML文書は、必ずUTF-8 BOM無し(UTF-8N)で書く
  3. HTML文書の基本構造は、4つのタグでできている
  4. CSSとjavascriptは、必ず外部ファイルから読み込ませる

について解説した。

次回は、いよいよHTMLコーディングの基本について書く予定だ。

【本で学習したい人はコレ】

コメント