--- title: HTML の基本 slug: Learn/Getting_started_with_the_web/HTML_basics tags: - Beginner - CodingScripting - Doctype html - HTML - Learn - Web - l10n:priority - 初心者 - 学習 translation_of: Learn/Getting_started_with_the_web/HTML_basics ---
HTML (Hypertext Markup Language、ハイパーテキスト・マークアップ・ランゲージ)は、ウェブサイトのコンテンツの構造を作るために使うコードです。例えば、コンテンツは段落、箇条書きのリスト、画像の使用、データテーブルなどの組み合わせで構成されています。タイトルが示すように、この記事では HTML とその機能の基本的な理解ができるように説明します。
HTML は、コンテンツの構造を定義するマークアップ言語です。 HTML は一連の{{Glossary("element", "要素")}}で構成されており、これらの要素がコンテンツのさまざまな部分を囲み、一定の表示や動作をさせることができます。{{Glossary("tag", "タグ")}}で囲むと、単語や画像をどこかにハイパーリンクさせたり、単語を斜体にしたり、フォントを大きくしたり小さくしたりすることができます。 例えば、次のようなコンテンツがあるとします。
My cat is very grumpy
行を独立させたい場合は、段落タグで囲んで段落であることを指定することができます。
<p>My cat is very grumpy</p>
この段落要素についてもう少し詳しく見ていきましょう。
要素は主に以下のようなもので構成されています。
要素には属性 (Attribute) を設定することができます。このような感じです。
属性には、実際のコンテンツには表示させたくない、要素に関する追加情報が含まれています。ここでは、 class
が属性の名前で、 editor-note
が属性の値です。 class
属性では、要素に一意ではない識別子を与えることができ、それを使って要素 (および同じ class
値を持つ他の要素) にスタイル情報などのターゲットを設定することができます。
属性は常に次のような形式になります。
注: ASCII のホワイトスペース (または "
'
`
=
<
>
のいずれかの文字) を含まない単純な属性値は引用符を省略することができますが、コードを一貫性のあるものにし、理解を容易にするため、すべての属性値を引用符で囲むことをお勧めします。
要素の中に他の要素を入れることもできます。これをネスト (または入れ子) と言います。もしあなたの猫が「とっても」機嫌が悪いことを表したいとしたら、「とっても」という単語を {{htmlelement("strong")}} 要素に入れて、単語の強調を表すことができます。
<p>私のネコは<strong>とっても</strong>機嫌が悪い。</p>
しかしながら要素は正しく入れ子にしなければなりません。上記の例では、まず始めに {{htmlelement("p")}} 要素が開始され、その次に {{htmlelement("strong")}} 要素が開始されています。その場合は、必ず {{htmlelement("strong")}} 要素、 {{htmlelement("p")}} 要素の順で終了しなければなりません。次の例は間違いです。
<p>私の猫は<strong>とっても機嫌が悪い。</p></strong>
要素は確実に他の要素の中もしくは外で開始し、終了する必要があります。上記の例のように要素が重複してしまうと、ウェブブラウザーは言おうとしていることを推測してもっとも良いと思われる解釈をするため、予期せぬ結果になることがあります。そうならないよう気を付けましょう!
コンテンツを持たない要素もあります。そのような要素を空要素 (empty elements) と呼びます。すでに HTML ページにある {{htmlelement("img")}} 要素を例に見ていきましょう。
<img src="images/firefox-icon.png" alt="My test image">
この要素は 2 つの属性を持っていますが、終了タグ </img>
がありませんし、内部にコンテンツもありません。これは画像要素は、その機能を果たすためにコンテンツを囲むものではないからです。画像要素の目的は、画像を HTML ページの表示させたいところに埋め込むことです。
ここまでは HTML 要素についてみてきました。しかし要素単体ではあまり役には立ちません。ここからはどのようにしてそれぞれの要素を組み合わせ、 HTML ページ全体を作っていくのかを勉強していきましょう。ファイルの扱いで出てきた index.html
に書いてあるコードをもう一度見てみましょう。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>My test page</title> </head> <body> <img src="images/firefox-icon.png" alt="My test image"> </body> </html>
この中にあるものは以下の通りです。
<!DOCTYPE html>
— 文書型宣言です。これは必須の前置きです。昔々、 HTML がまだ出来たばかりの頃 (1991~2年)、文書型宣言は HTML ページが正しい HTML と見なされるために従わなければならない、一連のルールへのリンクとして機能することを意味していました。つまり、自動エラーチェックなどの有益なものを表すことができました。しかし、最近ではあまり機能しておらず、文書が正しく動作するために必要なだけです。今はこれだけ知っていれば大丈夫です。<html></html>
— {{htmlelement("html")}} 要素です。この要素は、このページのすべてのコンテンツを囲み、ルート要素と呼ばれることもあります。<head></head>
— {{htmlelement("head")}} 要素です。この要素は、ページの閲覧者に向けて表示するためのコンテンツではない、 HTML ページに含めたいものをすべて収めるための入れ物です。 <head>
要素は検索エンジン向けの {{Glossary("keyword", "キーワード")}} や説明書き、ページの見た目を変更するための CSS、文字コードの宣言などを含みます。<meta charset="utf-8">
— この要素は、大部分の書き言葉の文字のほとんどを含む UTF-8 を文書で使用するように設定しています。基本的には、文書はどんなテキストコンテンツでも扱えるようになります。これを設定しない理由はありませんし、後でいくつかの問題を回避するのに役立ちます。<title></title>
— {{htmlelement("title")}} 要素です。ページのタイトルを指定しています。このタイトルはページが読み込まれた時にブラウザーのタブに表示されます。また、ブックマークやお気に入りに登録した時の説明にも使われます。<body></body>
— {{htmlelement("body")}} 要素です。これには、テキスト、画像、ビデオ、ゲーム、再生可能なオーディオトラックなど、ページを訪れたウェブの利用者に表示したいすべてのコンテンツが含まれます。もう一度 {{htmlelement("img")}} 要素について見ていくことにしましょう。
<img src="images/firefox-icon.png" alt="My test image">
前に説明したように、ページのこれが現れたところに画像を埋め込みます。画像ファイルのパスを値に持つ src
(source) 属性を指定することによってその画像を表示できます。
また、 alt
(alternative; 代替) 属性も指定しています。これは以下のような理由で画像を見られない人に向けて説明するテキストを指定するものです。
alt
属性の内容を読み上げます。src
属性の中のパスをわざと正しくないものに変更してみてください。ページを保存したり再読み込みしたりすると、画像の場所に下記のようなものが表示されるでしょう。alt テキストのキーワードは「説明文」です。 alt テキストは、その画像が何を伝えているのかを読者が十分に理解できるような情報を提供する必要があります。この例では、現在のテキストである「My test image」は全く意味がありません。 Firefox のロゴであれば、「Firefox のロゴ: 地球の周りを燃えるような狐が囲んでいる。」の方がずっと良いでしょう。
画像に良い代替文字列を付けてみましょう。
アクセシビリティについて詳しくは MDN のアクセシビリティのページを参照してください。
この節では、文字列をマークアップするために使用する基本的な HTML 要素をいくつか見ていきます。
見出し要素により、コンテンツの特定の部分を見出し、または小見出しとして指定することができます。本にメインタイトル、章立て、サブタイトルがあるように、 HTML 文書にも見出しがあります。 HTML には {{htmlelement("h1")}} から {{htmlelement("h6")}} の 6 段階の見出しがありますが、よく使うのはせいぜい 3 から 4 まででしょう。
<h1>メインタイトル</h1> <h2>最上位の見出し</h2> <h3>小見出し</h3> <h4>孫見出し</h4>
それでは、あなたの HTML の {{htmlelement("img")}} 要素の上に適切なタイトルを付けてみましょう。
注: 見出しレベル 1 には、暗黙のスタイルがあることがわかりますね。テキストを大きくしたり、太くしたりするために見出し要素を使用しないでください。見出し要素はアクセシビリティや SEO などの理由で使用されているからです。レベルを飛ばすことなく、意味のある見出しの並びをページ上に作るようにしてください。
先に説明したように、 {{htmlelement("p")}} 要素は段落を示しています。通常の文章を書くときにはこの要素を頻繁に使うことになるでしょう。
<p>これは単独の段落です</p>
サンプルテキストを (「ウェブサイトをどんな外見にするか」から持ってきてください) 1 つまたは複数の段落に入れ、 {{htmlelement("img")}} 要素のすぐ下に配置してください。
ウェブのコンテンツの多くはリストであり、 HTML にはリストのための特別な要素があります。リストのマークアップは、常に 2 つ以上の要素で構成されています。最も一般的なリストの種類は、順序付きリストと順序なしリストです。
リストの中に入るそれぞれのアイテムは {{htmlelement("li")}} (list item) 要素の中に書きます。
例えば、次の段落の一部をリストにしたい場合、
<p>At Mozilla, we’re a global community of technologists, thinkers, and builders working together ... </p>
以下のようにマークアップします。
<p>At Mozilla, we’re a global community of</p> <ul> <li>technologists</li> <li>thinkers</li> <li>builders</li> </ul> <p>working together ... </p>
ページに番号付きリストと番号なしリストを追加してみましょう。
リンクはとても重要です — これがウェブをウェブたらしめているものです。リンクを追加するには、シンプルな要素 {{htmlelement("a")}} を使う必要があります。 a
は "anchor" を省略したものです。段落中の文字をリンクにするには次の手順で行います。
<a>Mozilla Manifesto</a>
href
属性を追加します。
<a href="">Mozilla Manifesto</a>
<a href="https://www.mozilla.org/en-US/about/manifesto/">Mozilla Manifesto</a>
アドレスの先頭にある https://
や http://
の部分 (プロトコルと言います) を書き忘れると、予期せぬ結果となってしまうかもしれません。リンクを作ったら、ちゃんとそれが遷移したいところに行ってくれるかを確かめましょう。
href
は属性名として変に思うかもしれません。覚えにくかったら、 href
は hypertext reference を表しているということを覚えておきましょう。
もしまだやってないのなら、ページにリンクを追加してみましょう。
ここまでの説明に沿ってやってきたのなら、以下のようなページができあがっているはずです (ここでも見られます)。
もし途中で行き詰まってしまったなら、 GitHub にある完成版のコード例と見比べてみてください。
この記事では HTML の表面的な部分だけを勉強しました。もっと知りたい場合は HTML を学ぶを読んでみてくだい。
{{PreviousMenuNext("Learn/Getting_started_with_the_web/Dealing_with_files", "Learn/Getting_started_with_the_web/CSS_basics", "Learn/Getting_started_with_the_web")}}