ハイパーテキストマークアップ言語(HTML)は、1990年代初頭からWebのコアテクノロジーでした。Tim Berners-Leeは、電子文書をエンコードするためのシンプルで効果的な方法として、1989年にHTMLを作成しました。実際、Webブラウザーの本来の目的は、そのようなドキュメントのリーダーとして機能することでした。20年後、ブラウザ自体がオンラインメディアの世界へのポータルになりました。そのため、HTML5は単なるHTMLリビジョンではなく、Webページの動作に関する包括的な標準です。
HTML5の独自性をよりよく理解するために、時計を少し戻しましょう。1994年当時、HTMLはまだ最初の改訂版であり、MosaicとNetscapeがブラウザ市場を支配し、ほとんどの人はWorldWideWebと呼ばれるこの新しいものをまだ体験していませんでした。その年、HTMLクリエーターのBerners-Leeは、World Wide Web Consortium(W3C)として知られる新しく設立されたWeb標準グループを率いました。
W3Cは今日、尊敬されている標準機関ですが、1990年代のブラウザ市場の商用プレーヤーは、これらの標準をほとんど無視し、独自の道を切り開いていました。1995年までに、W3CはHTML標準の2番目のリビジョンを公開し、Webの新参者であるMicrosoftはInternet Explorer(IE)ブラウザーで着実に成長していました。Microsoftは標準をほとんど無視し、IEが支配し始めている間、Netscapeは立派な市場シェアを維持するのに苦労しました[出典:Harris]。
これらの初期のブラウザ戦争の間、Web開発者は、主要なブラウザの新しいリリースごとに、またあまり使用されていないOperaおよびAppleSafariブラウザと互換性を保つようにサイトを維持するという課題に直面しました。W3Cは1997年にHTML3.2を公開し、続いて1998年にHTML 4を公開しましたが、標準に従うことは、ブラウザ固有の機能に追いつくことほど重要ではないように思われました。これは、コミュニティ主導のMozillaFoundationがトレンドを打ち破った2003年まで続きました。最初のMozillaブラウザのリリース後、 2004年にFirefoxブラウザがリリースされた後、MozillaはすぐにIEの優位性をハッキングしました。さらに、これらの新しいブラウザは、実際には既存のW3C標準に準拠しています。
MozillaのFirefoxは古いHTML4標準を使用して成長を続けていましたが、Mozillaは2004年にAppleとOperaに加わり、Web Hypertext Application Technology Working Group(WHATWG)と呼ばれるグループを結成しました。WHATWGの目標は、HTML開発を存続させることです。W3Cは当初は躊躇していましたが、2006年にHTMLの復活に加わりました。WHATWGとW3Cは、HTMLとXHTMLの既存の仕様を組み合わせ、さらに開発して新しいHTML5仕様を作成しました。その仕様は現在、W3Cによって維持および公開されています[出典:W3C、WHATWG ]。
この記事では、この新しいHTML5テクノロジーについて説明します。HTML5に組み込まれたXHTMLやその他のテクノロジーを見て、HTML5を使用して魅力的で標準に準拠したWebコンテンツを作成する方法の基本的なポイントについて説明します。また、人々がWeb上でHTML5を使用しているいくつかのエキサイティングな方法も確認します。HTML5の目標と、それが単なるHTML以上のものである理由を見てみましょう。
- HTML5はHTMLを超えて
- HTML5 Foundation Technologies
- 基本的なHTMLコンテンツ
- フォーム
- セマンティック要素
- メディア要素とフラッシュの競争
- キャンバス
- CSS3でルックを作成する
- 中心的なコンポーネントとしてのJavaScript
- Webアプリケーションテクノロジー
- 画期的な概念実証
HTML5はHTMLを超えて
HTML自体は、静的なドキュメント、つまりテキストやリンクなどの表示に重点を置いています。HTML 4を通じて、HTML標準は、この目的を達成するために使用されたHTML構文と同じものでした。HTML5標準には、Webページがブラウザーにロードされたときに、その背後にあるコンテンツ、スタイル、およびアプリケーションインターフェイスを記述するというはるかに広い目標があります。より具体的には、HTML5は、Webページがコンピューターのメモリにロードしたすべての要素と対話するための単一の構文を確立します。
先に進む前に、「HTML5」という用語について明確にする必要がある潜在的な混乱のポイントがあります。HTML5と呼ばれるマークアップ言語自体の新しいバージョンがあります。ただし、その言語は、HTML5という名前を共有するより広範な標準の一部にすぎません。この記事では、HTML5言語が中心となるHTML5標準のすべてのコンポーネントについて説明します。
その違いを念頭に置いて、ブラウザは、長年のHTML 4言語ではなく、新しいHTML5標準に従って記述されたページをどのようにロードしますか?結局のところ、私たちは通常、背後にあるHTMLを気にせずに、ブラウザに依存してWebページをロードします。答えは簡単です。ブラウザ自体がHTML5をサポートできる限り、HTMLリビジョンを区別することなく、ブラウザでスローしたものをすべて処理できます。
この魔法を実現するために、HTML5標準は、共通の目標に向けて連携して機能する複数のテクノロジーの新しいバージョンを統合します。これらの目標には、次のものが含まれます。
- 言語をシンプルかつ直感的に保つ
- コードの読み取りと保守が容易であることを確認する
- 静的ドキュメントではなくインタラクティブアプリケーションとしてページをアドレス指定する
- コンテンツのスタイル設定をカスケードスタイルシート(CSS)に依存する
- JavaScriptをWebページの中心的なスクリプトコンポーネントとして認識する
- PHPやASPなどのサーバー側テクノロジーからの動的コンテンツの採用
HTML5はHTMLマークアップ自体以上のものであることがわかったので、標準の基盤技術を調べてみましょう。
HTML5 Foundation Technologies
マークアップ言語は、一連のタグを使用してファイル内の要素をマークします。マークアップは、それらの要素が何であるか、およびそれらをどのように使用するかを定義するある種のモデルに依存しています。HTMLは常にドキュメントのエンコードに関するものであるため、ドキュメントオブジェクトモデル(DOM)と呼ばれるものに依存しています。DOMは、Webブラウザアプリケーション自体に組み込まれています。したがって、マークアップ言語は、すでに理解しているモデルに基づいてブラウザに指示を与える方法にすぎません。
DOMとHTMLの関係をよりよく理解するために、DOMをゴム印の箱と考えてください。各スタンプは、DOM内の異なる要素です。HTMLで書かれた各ページは、スタンプから作成された一連のインプリントであり、独自のカスタムコンテンツが入力されています。Webブラウザは、そのボックス内のスタンプから作成されたものをすべて表示できます。
技術的に言えば、DOMは、HTMLまたはXMLドキュメントを処理するためのプラットフォームに依存しない方法を提供するアプリケーションプログラミングインターフェイス(API)です。(Extensible Markup Language(XML)はHTMLに似ていますが、プログラマーはドキュメントで使用できる要素のカスタマイズされたセットを追加できます。)HTML5標準では、DOM5HTMLと呼ばれるDOMが必要です。HTML5の成長に備えて、Chrome、Firefox、IE、Safari、Operaブラウザの最新バージョンはすべてDOM5HTMLでページを処理できます。
HTML5のもう1つの重要な基盤は、関連する多目的インターネットメール拡張機能(MIME)タイプです。MIMEは、インターネット対応ソフトウェアに処理しようとしているコンテンツの種類を警告するためのインターネット技術特別調査委員会(IETF)の標準です。これは通常、HTMLドキュメントやMP3オーディオファイルなどの特定の種類のファイルに対応します。
Web開発者は、WebページをエンコードするときにMIMEタイプを指定します。これにより、ブラウザはタイプに応じて対応するファイルを適切にロードするように求められます。DOM5HTMLを結合して新しいHTML5標準の基礎を形成する2つのMIMEタイプがあります。HTMLMIMEタイプ(text / html)とXML MIMEタイプ(application / xhtml + xml)です。HTML5には、これら両方のMIMEタイプの構文の更新が含まれています。
つまり、HTML5標準の基本的なテクノロジは、DOM5 HTMLと、HTMLおよびXML用のHTML5互換のMIMEタイプです。次に、HTML5を使用してWebページを作成する方法に移りましょう。
基本的なHTMLコンテンツ
少なくとも、HTML5には基本的なHTML構文のバージョン5が含まれています。このページのサイドバーにあるサンプルコードは、このHTMLコードが基本的なWebページでどのように見えるかを示しています。Webを閲覧しているときは、ブラウザの[ソースの表示]または同様のオプションを使用して、現在表示しているページを作成するためにロードされたHTML(およびその他のコード)を確認します。この例に示されているすべてのコードは、HTML 4との下位互換性もあります。つまり、HTML5で利用できる新しい追加機能はありません。
すべてのWebページに存在するわけではありませんが、例に示すように、ドキュメントタイプ(doctype)宣言でHTMLファイルを開始することをお勧めします。これにより、ブラウザがドキュメントを解釈するときに標準のHTMLを期待する必要があることが確認されます。一部の開発者は、ドキュメントタイプ定義(DTD)ファイルを使用するHTML標準の拡張機能に依存しています。その場合、開発者はこのDoctypeの一部としてDTDの場所を指定します。
doctypeの他に、例の残りのコードは標準のHTML構文です。この構文に慣れていない場合は、Webページのしくみに関する記事を参照してください。
では、HTML5のこれらの基本的な要素の新機能は何ですか?これがリストです。次のページでそれぞれを詳しく見ていきます。
- 新規および更新されたフォーム要素-フォーム構造のレイアウトとユーザーからのフォーム入力の処理
- セマンティック要素-Webページ内での役割に基づいてコンテンツを識別します
- メディア要素-サードパーティのブラウザ拡張機能を必要とせずに、オーディオ、ビデオ、その他のインタラクティブメディアを埋め込む
- Ruby要素-アジア言語のWebページの国際化をサポート
フォーム
フォーム(ユーザーが名前や住所などの特定のデータを入力できるWebサイトのセクション)は、HTMLで利用できる最も初期の要素の一部でしたが、HTML5より前の多くの便利な機能がありませんでした。これを補うために、サードパーティの開発者は、基本的なHTMLフォームをほとんど時代遅れに見えるようにするWebフォームソフトウェアを作成しました。HTML5は、フォームに新しい命を吹き込みましたが、新しいフォーム要素、入力タイプ、および既存の要素の属性を備えています。
古い構文と新しい構文を区別せずに、HTML5を使用してWebページのフォームを作成するための全体的なアプローチを調べてみましょう。開始するためのいくつかの推奨手順は次のとおりです。
- を使用してフォームブロックを確立します
- を使用してフォーム内のフィールドのブロックを指定します
- を使用して、フィールドセットの各フィールドをレイアウトします。
- 各ラベルタグ内に、表示したいフィールド名に加えて、フィールド自体のタグ。
- 入力タグ内でtype属性を使用します()そのタイプに基づいてユーザーの入力を検証するようにブラウザに促します。これにより、検証を処理して再入力を促すための追加のコードが不要になります。HTML5には、日付、時刻、日時、日時-ローカル、月、週、番号、電子メール、電話、URL、範囲、色、検索の入力タイプが含まれています。正規表現でpattern属性を使用して、カスタム検証パターンを作成することもできます。
- 入力要素に必須属性を追加して、必須フィールドを示します。
- autofocus属性を使用して、特定の入力要素をフォームの最初の要素として設定します。これは、フォームのロード後にWebブラウザがユーザーのカーソルを自動的に配置する場所です。
- 特定のフィールドに何を入力するかについてのテキストヒントを追加するには、必要に応じてプレースホルダー属性を使用します。
- 「:required」と「:invalid」のCSSスタイルを設定して、特定の入力タイプに対して検証されない情報や入力が欠落していることをユーザーが視覚的に把握できるようにします。
フォーム要素とその属性の完全なリストについては、最新のHTML5リファレンスガイドを確認してください。また、一部のフォームフィールドのサポートは、Webブラウザによって異なることに注意してください。Webサイトでサポートするブラウザの種類ごとにフォームをテストしてください。
HTMLフォーム要素はバージョン5でより多くの機能を備えていますが、次の要素タイプはHTML5ではまったく新しいものです。
セマンティック要素
HTML5のセマンティック要素は、その名前が示すように、特定のコンテンツの意味を参照する要素です。今日のほとんどのWebサイトでは、1つのページにいくつかの異なるタイプのコンテンツが含まれているため、タグを単独で使用するだけでは不十分です。Web開発者は、各タイプのコンテンツの外観または動作について個別のルールを適用する必要があります。
セマンティック要素がない場合、Web開発者は
時間の経過とともに、ヘッダー、フッター、メニュー、ナビゲーションポイントなど、特定のコンテンツタイプがWebサイトで非常に一般的になりました。HTML5は、標準のセマンティック要素を追加することでこれらを組み込んでいます。これは、ブロックを一連の一連のセマンティック要素ではなく、有用なセマンティック要素に分割できることを意味します
以下は、セマンティックページ要素のリストとそれぞれの簡単な定義です。各セマンティック要素の有効な属性と子要素の完全なリストについては、信頼できるHTML5リファレンスを必ず見つけてください。
ブロック要素:
- セクション-コンテンツのより大きなブロックを分割するために使用される一般的なページ分割
- 記事-元々外部ソースからのものであり、アグリゲータースクリプトを使用してページの読み込み時に動的に追加されることがあるコンテンツ
- ヘッダーとフッター-各ページの上部と下部に表示されるブロック
- hgroup-タイトルやサブタイトルなど、関連する複数のヘッダーのグループ
- menu-コマンドのリスト(コマンド要素を参照)、およびメニューの動作を指定する属性
- nav -Webサイトのナビゲーション専用のブロックを識別します。通常は、サイトの他のページへのリンクの順序付けられていないリストです。
- アドレス-記事、セクション、ページ本文全体など、ブロック内のコンテンツの作成者の連絡先情報が含まれます
- aside-コンテンツをサイドバーとして扱う必要があることを示します
インライン要素:
- 概要と詳細-同じコンテンツのティーザー/概要と完全な詳細を切り替えます
- figureとfigcaption-どのメディア要素(img、svg、canvas)を使用して画像を含めるかに関係なく、画像に一般的な動作を適用するために使用される要素
- 時間-必要に応じてブラウザがタイムゾーンの違いを調整できるようにフォーマットされた、カレンダーの日付、時刻、またはその両方を表すテキスト
- コマンド-ラベルと、キーボードまたはマウスを使用してラベルを操作するときにそのラベルに関連付けられた動作。通常、メニューブロック内で使用されます。
- dfn-コンテンツ内で定義されている用語
- wbr-複数行に折り返されるときに単語内のテキストを分割するための許容可能な場所を示すタグ
セマンティック要素は、より一般的なHTML要素を改良したものとして作成されました。ただし、次の新しい要素タイプは、Webブラウザのサードパーティメディア拡張機能を完全に置き換えることを目的としています。
スペースまたはスペースなし?
HTML 4などの他のバージョンのHTMLを参照する場合、数字の前にスペースがありますが、HTML5への参照にはスペースがありません。HTMLコミュニティでは、この問題について多くの議論と議論がありましたが、最終的に、WHATWGとW3Cの両方が、ドキュメントの一貫性を保つために公式のスペルとしてHTML5を採用しました。
メディア要素とフラッシュの競争
HTML5の最も話題になっている機能の1つは、Webページにメディアを埋め込むための新しいアプローチです。この記事の後半で、このHTML5機能のすばらしいアプリケーションをいくつか見ていきます。HTML5は、外部のブラウザプラグインを必要とせずに、この埋め込みを実現します。HTML5で使用できるメディア要素は次のとおりです。
- audio-ページにオーディオを埋め込み、再生方法を指定するための属性を含めます。サポートされているファイル形式は、Webブラウザによって異なります
- video-ページにビデオを埋め込み、ビデオの再生方法を指定するための属性を含みます。サポートされているファイル形式は、Webブラウザによって異なります
- ソース-ソースを識別するためにオーディオまたはビデオ要素とともに使用されます。1つのアイテムに複数のソースを指定できます
- embed-他のメディア要素内でサポートが不足している可能性のあるコンテンツのメディアタイプを埋め込み、指定します
- キャンバス-JavaScriptが画像を描画できるページの一部またはコンピューター画面を確保します。今後、この重要な新機能がどのように機能するかについて詳しく説明します
- svg -SVGマークアップ言語でエンコードされたベクターグラフィックスを埋め込み、グラフィックスの品質を損なうことなく、ロードされたページの領域に動的に拡大縮小できるようにします
HTML5が開発されるにつれ、市場の専門家は、現在Adobeによって管理されているFlashに取って代わるかどうかを疑問視しました。Flashは、Webブラウザにプラグインとして追加できるメディアプレーヤーです。Flashには、サイトがさまざまなタイプのメディアを埋め込むために必要なすべての機能があるため、YouTubeのようなサイトは何年もの間Flashに依存してきました。インタラクティブなインターフェイスを強化するためにFlashに完全に依存しているWebアプリケーションもあります。2007年にFlashの採用が広まったため、待望のApple iPhoneがリリースされると、多くの消費者は、そのオペレーティングシステムであるAppleiOSがFlashをサポートしていないと聞いて腹を立てました。
間違いなくインターネット上で最大のブランドであるGoogleが、HTML5を使用したアプリの開発に真っ向から取り組んだとき、Flashのサポーターは注目しました。HTML5以前は、Flashの優位性に対する唯一の脅威は、カスタムHTML/JavaScriptの代替案を構築および維持することをいとわないWebアプリケーション開発者でした。HTML5を使用すると、Flashテクノロジーに匹敵するインタラクティブなメディアエクスペリエンスを作成するときに、このような面倒なカスタマイズは不要になります。
では、誰が勝ちますか:FlashとHTML5のどちらですか?簡単な答えは「どちらでもない」です。各テクノロジーには、独自の機能、長所、および短所があります。さらに、AdobeとGoogleはFlashからHTML5への変換ツールに取り組んできました。この記事の執筆時点では、HTML5はステータスを獲得しつつありますが、Flashもしばらくの間それ自体の人気を維持する可能性が高いようです。
次のページにフラッシュオーバーして、canvas要素とHTML5Webページでの使用方法を説明します。
キャンバス
HTML5の最も重要な新機能の1つは、キャンバスです。キャンバス機能を使用すると、Webページのセクションを識別し、そのセクション内にコンテンツを描画し、インタラクティブな機能を追加できます。これはすべて、HTMLコードとJavaScriptコードを組み合わせることで可能になります。HTML5でキャンバスを設定するために必要な3つの部分を見てみましょう。
パート1:使用する
width = "400"
height = "300>
このテキストが表示された場合は、ブラウザ
HTML5キャンバスをサポートしていません。
パート2:コンテンツをキャンバスに描画するJavaScriptを作成します。後で、HTML5Webページに関連付けられたJavaScriptコードを追加および管理する方法を説明します。ここでは、キャンバスオブジェクトに使用できるJavaScriptのサンプルをいくつか見てみましょう。次のコードは、上のキャンバス内に長方形を描画します。
関数drawRectangle(){
var targetCanvas = document.getElementById( "sampleCanvas");
var rectContext = sampleCanvas.getContext( "2d");
rectContext.fillStyle = "blue";
rectContext.fillRect(50、25、150、100);
}
この関数は、キャンバス内に青い実線の長方形を描画します。2つの「var」行は、使用できる変数を作成します。最初の(targetCanvas)は、HTMLからのIDを使用して、ターゲットにしているキャンバス要素を識別します。2番目の(rectContext)は、描画用の2次元コンテキストを設定します。コンテキストをキャンバスの上に置かれたガラスの透明な層と考えてください。関数を呼び出して、そのガラスに描画します。
「fillStyle」行は、青色を名前で識別します。これは、HTMLが認識し、名前の付いた色の1つに関連付けます。HTMLまたはCSSでスタイルコードを作成する場合と同じように、任意の色、パターン、またはグラデーションを使用することもできます。「fillRect」線は、左上からのオフセットで始まる長方形を描画します。最初の2つの数値は、キャンバスの左上が座標(0,0)にあるかのように、xオフセットとyオフセットです。次の2つの数字は、それぞれ長方形の幅と高さを示します。
パート3: HTMLコードからJavaScript関数を呼び出します。これにより、2つのピースが結び付けられます。Webページが読み込まれるとすぐに関数を呼び出すことができます。これは、ページが読み込まれるとすぐに表示する必要があるインタラクティブなページコンテンツをキャンバスを使用して描画する場合に意味があります。もう1つのオプションは、描画イベントをトリガーするボタン、メニュー、またはその他の要素をHTMLに作成することです。以下は、上記のサンプルスクリプトを実行するために使用できるボタンの例です。
Dive Into HTML5には、Webページのキャンバス要素を作成するためのわかりやすいガイドがあります。さらに、信頼性の高いHTML5リファレンスは、静止および移動の両方で洗練されたグラフィックを描画するための広範なリソースを提供する必要があります。HTML5でキャンバスを多用したい場合は、JavaScriptでのプログラミングに慣れている必要があります。次に、CSS3がHTML5Webページのルックアンドフィールをどのように作成するかを調べてみましょう。
CSS3でルックを作成する
各HTML要素には、その要素の外観や機能を変更するためにコードで使用するいくつかの属性があります。スタイルと関連する属性は、要素のサイズ、色、配置、境界線、およびその他の物理的側面を調整します。Webの寿命の何年にもわたって、サイト開発者はスタイルをコンテンツから分離する慣行を広く採用しました。この分離を行うことにより、開発者は次の利点を享受できます。
- 維持するコードの削減:複数のWebページにまたがる複数の要素は、それぞれのスタイルコードを繰り返すことなく、同じスタイルを共有できます。
- 時間の経過に伴うメンテナンスの容易化:新しいスタイルに更新する、または既存のスタイルを修正するということは、そのコードを使用して各要素を更新するのではなく、1つのスタイリングコードのみを変更することを意味します。
したがって、スタイリングはHTMLコードに合わせて配置できますが、Web開発者にとってより一般的な選択肢は、カスケードスタイルシート(CSS)を使用してWebサイトに関連付けられたすべてのスタイリングコードを管理することです。各ページのHTMLは、1つ以上のスタイルシートを参照できます。スタイルシートは、ページの読み込み時にブラウザが読み込む必要があります。これらのスタイルシートは、CSSファイルの形式で、使用して入力する可能性のあるものを模倣することを目的としています。