ちょっといつもと趣が異なる記事として、HTML5 Doctor で 「HTML5: briefing notes for journalists and analysts」 という記事が上がっていましたのでまたまた稚拙ではありますが翻訳など。
今回の記事は、ジャーナリスト、アナリスト (つまり、あまり技術的な話に精通していない人) 向けに、よくある質問とその答えをまとめたものです。技術者以外の人に 「HTML5 って何?」 って聞かれたときの参考になるかも。
原文
HTML5: briefing notes for journalists and analysts : HTML5 Doctor
HTML5とは何ですか?
あなたが何を求めるかによりますが… 「HTML5」 という言葉には 3つの異なる用途があります。
HTML5 仕様
HTML5 の最も正確な意味は、W3C と WHATWG によって策定されている HTML5 の主要な仕様を指します。これは Web ページを記述する言語にとって待望の進化であり、Web アプリケーション (動的な対話型 Web ページ) を開発するために設計されています。1990年代後半から続く HTML5 の前身である HTML 4 は、Web ページのための言語でした(静的でハイパーリンクが張られたテキストドキュメント、画像、フォーム)。
重要な事実
- HTML5 は、ブラウザ間で相互運用可能(クロスブラウザ)な Web ページを作るように設計されています。最近ではみんなが複数のブラウザを使用する(例えば、仕事ではIE、携帯電話で Safari や Opera、家では Firefox とか) ので、Web サイトが動かない環境があるってのは愚かだし迷惑です。
- すべてのブラウザベンダ - Opera、Mozilla (Firefox)、Apple (Safari)、Microsoft (IE)、Google (Chrome) - が共同で作業しており、その他の組織や個人も協力してくれています(Netflix、Adobe、IBM、HP、BBC など)。
- HTML5 は既存の Web ページを壊すことなく、Web の機能を拡張するために設計されています。
- HTML5 は、Microsoft Silverlight や Adobe Flash のようなプラグインと競合しています。
HTML5 と仲間達
HTML5 のコア仕様に加えて、WHATWG は Web Workers、Web Sockets、Web Database のような他の規格も策定しました。これらは多くのアプリケーションやゲームで有用な機能です。(これらの規格の多くは、元々 HTML5 のコア仕様の一部でしたが、手続き上や、組織的な理由で分離されました。これらすべてを含む仕様のまとまりを 「Web Applications 1.0」 と呼びます。)
新しい、エキサイティングな Web テクノロジ
ほとんどの非開発者 (または多くの知識に乏しい開発者) が「HTML5」と言う場合、非常に多くのテクノロジーを意味しており、HTML5 のコア仕様やその仲間とは無関係な技術のことを指します。位置情報、Device Orientation (訳者注:デバイスの物理的な向き、傾きや動きの情報)、タッチイベント、CSS Animations (とてもシンプルな Flash アニメーションの代替になる)、SVG (拡大してもギザギザにならない - ベクターグラフィックを描写する仕組み) や新参者の WebGL (ブラウザで 3D グラフィックスなどを表示するための仕様)など。
これら多くは W3C によって策定され、WebGL は Khronos Group によって管理されています。
多くの、いわゆる 「HTML5 デモ」 と呼ばれるものが HTML5 とは何も関係ないことに注意しなければなりません。例えば多くの 「Google Doodles」(訳者注:Google がロゴでやるお遊び) は DHTML -前世紀から続く HTML 4 の技術- を使用しています。
どうしてHTML5が開発されたの?
HTML4 は新種のアプリケーションの狭間で悲鳴を上げていました(訳者注:つまり HTML 4 はもう限界だったってこと)。いくつかは HTML 4 だけでは解決できず、Adobe Flash や Microsoft Silverlight などを使用する必要がありました。その他についても、裏技的な Hack を駆使する必要があり、オーナーに利益をもたらすべき Web サイトの確固たる基盤ではありませんでした。
HTML5 に準拠したブラウザはどれくらいあるの?
「HTML5 への準拠」 をどのように定義するかで答えは変わりますが、HTML5 は HTML 4 を拡張するものなので、ある意味ですべてのブラウザは HTML5 の機能をすでに備えています。
一方で、すべてのコア HTML5 仕様に準拠したブラウザを知りたければ、それは存在しません。現状のブラウザは、仕様全体(これは 700 ページ以上あります) の一部を実装していますが、すべてを実装したものはありません。
すべての誇大広告を無視してください。最新バージョンブラウザにおける実装レベルはほぼ同じです (各ブラウザが仕様を実装する時期や順番がユーザーのニーズによってずれていたとしても)。
誰が HTML5 を推進しているの?
HTML5 は 2004年に Opera で Ian Hickson 氏をエディターとしてスタートし、徐々に全ブラウザベンダも参加しました。Hickson 氏は Opera から Google に移り、仕様の策定を続けています。
ブラウザベンダが W3C や他の多くの組織や個人と共同して HTML5 の仕様を進めていくと言うことは最も公平な方法です。最終的に HTML5 の策定は Web 開発者のニーズによって進められています。
誰が HTML5 を使っているの?
多くの人々 - ハイテク企業だけでなく、Boston Globe Newspaper(訳者注:ボストン・グローブ紙)、Nationwide Building Society(訳者注:イギリス全国建築学会)、Yell.com (訳者注:電話帳) をはじめ多くの Web サイトが利用しています。 HTML5gallery.com は、多くの HTML5 を用いた Web サイトを紹介しています。
いつ HTML5 は準備が整うの?
おそらく 2012年。おそらく 2022年…でもそれは重要ではありません。重要なのは HTML5 仕様の多くが現在のブラウザに実装されていることで、それは現時点でも利用できるということです。
「HTML5 の策定が終わっていないから HTML5 を利用できない」 と言うのは、「英語が完成していないから我々は英語を話すことができない」 と言うようなものです。(訳者注:要するに細けぇことはいいんだよ。使いたいやつは今すぐ使え。ってことですね)
Internet Explorer では使えないんでしょ?
違うよ。IE9 は HTML5 をいい感じにサポートしています。一部の API に関しては JavaScript で polyfilling(訳者注:文末※1) と呼ばれる技法を使うか、Flash や Silverlight などのプラグインで代替できます。
<canvas> に関しても、IE8 以前のバージョンに対しては疑似的に再現できます。古いブラウザでは遅い JavaScript エンジンによって問題が起こるとこもありますが、ビデオ再生に関しては、古いバージョンのブラウザに対して Flash による代替処置をとることもできます。
HTML5 に含まれる機能の多くは、Microsoft によって生み出され、IE5 に実装されていたものです(contenteditable (訳者注:コンテンツの編集を可能にする属性)や Drag and Drop API など)。
HTML5は、単に携帯電話に関することなのですか?
とんでもない。HTML5 の設計に関する原理原則 (Design Principles) の中でも 「Universal Access」 について述べています。
各機能は、誰もが同じように利用できる (ユニバーサルアクセス) よう設計する必要があります。… 各機能は可能な限り異なるプラットフォーム、デバイス、メディアで動作する必要があります。
ここではモバイルにとって有用ないくつかの機能があることも述べられています。もしあなたが "本物の" HTML5 を見ているなら、オフラインでも Web サイトの操作を可能にする 「Application Cache ("Appcache") 」などは便利な機能の1つに挙げられます。
あなたが Adbe Flash を利用できないデバイス上で、HTML5 <canvas> を使用してアニメーションを実現できるという事実は有益だと思います。
「新しい、エキサイティングな Web テクノロジ」 と定義した HTML5 (訳者注:上記 「HTML5とは何ですか?」 で触れた点です) においては、位置情報はとても重要な機能です。
HTML5 は Adobe Flash を殺すのか?
いいえ - またはそうでないことを願います。何年もの間、Web ページにビデオを掲載する手段は Flash だけでしたが、今は HTML5 があります。この競争が意味するのは、両方がより良いものになっていくということで、開発者にとっては喜ばしいことです。
Apple が iOS デバイスに Flash を搭載しないと決めたことで、HTML5 video が急速に広がりました。しかし重要なのは、iOS の HTML5 マルチメディアが完璧なプラットフォームとは言えないということです。
- HTML5 video issues on the iPad and how to solve them (iPad における HTML5 Video の問題と対処法)
- Unsolved HTML5 video issues on iOS (iOS における未解決の HTML5 Video 問題)
- Audio Sprites (and fixes for iOS)
アダプティブビットレートストリーミングを使用するビデオやデジタル著作権管理(DRM)にとって、Flash は有用、かつクロスブラウザなツールであり続けるでしょう。
また、Flash は単純なビデオを扱うためだけのものでないことに気付く必要があります。簡単なゲームのようなものは HTML5 <canvas> に奪われてしまい、かつて Flash が使われていたような、ちょっとしたアニメーションの類 (例えば何かがくるくる回る動作など) は CSS 3 に移行しました。しかし、ゲームやアニメのような洗練されたコンテンツの制作に利用しやすいのは Flash です。Adobe の制作環境は多数のツール (トゥイーンやタイムライン) がそろっているので制作者が作業しやすく、ビジュアル開発者にとっても使いやすいです。企業が <canvas> に適した制作環境を開発していくにつれ変わっていくかもしれませんが、今はそのような状態にはなっていません。
(Adobe は最近、「Adobe Edge」 と呼ばれるタイムラインを中心とした Flash ではないアニメーション制作環境のプレビュー版を発表しました。しかしこれが HTML5 だという主張は無視します。現在は開発初期の状態で、ただ単に HTML 4 の <div> を JavaScript で動かしているだけです。)
HTML5 は携帯電話アプリを殺すのか?
HTML5 (もっとも広い意味においては "新しい、エキサイティングな Web テクノロジ") が、Web の可能性を著しく高めています。2年前、GPS (Global Positioning System) に電話からアクセスするには、プラットフォームに応じて C++、Java 、.NET、Objective C でネイティブアプリケーションを書かないといけませんでした。今では利用者がアプリをダウンロードするかわりに URL にアクセスすることで、全てのプラットフォ―ムで JavaScript から位置情報データにアクセスできます。
オープンな Web テクノロジーによって、デバイスのカメラや Orientation (訳者注:縦横の向き)、システムのアドレス帳、peer-to-peer (P2P) のブラウザ内ビデオ会議、デバイスのファイルシステムなど多くのものにアクセスできるようになりました。
JavaScript エンジンはネイティブコードと同じくらい速くなり、最先端のスマートフォン向けネイティブアプリケーションとの技術上の差は存在するものの、徐々に少なくなってきています。高速な JavaScript や、フルブラウザを実行できないデバイスにおいては、ネイティブアプリは今でも重要です。
アプリには技術とは関係ない理由もあります。経営者がアプリを好むのは、販売網をコントロールすることができ、購入者と販売者の両方から料金を取ることができるからです。ところが一部の消費者は評価しているものの、多くの人は融通のきかないアプリストアやアプリ承認プロセスを嫌っています。アプリストアはキュレーションを提供しています。アプリは審査されていて、電話を壊したり、個人情報を盗んでいかがわしいサイトにばらまいたりすることはないと消費者は思っています。
特定のデバイスのためにつくられたアプリは、デバイス側で決めたユーザーインターフェイスやユーザーエクスペリエンスと高度に統合することが可能です。一部の人々はこれを魅力的な利点だと考えます。しかし、Web サイト制作者が Linux、Mac 、Windows 用にそれぞれ違うサイトを作るのではなく、1つしか作らないことから考えても、Web に移行することに大きな影響はないように見えます。
さらに踏み込んだ質問?
わからないことは俺 (Bruce Lawson 氏) に聞け(訳者超意訳)
ということで、終わり。ちょっと言い回しが私には難しくて翻訳がおかしい部分もあるかもしれませんが、間違いがあったら指摘してください。
※1 polyfilling
いわゆる 「Regressive Enhancement」 という考え方ですね。最新の技術に対応している環境を前提にコードを書きつつ、未対応の環境には対しても同等の機能をあらゆる手段を用いて提供するという考え方。「Progressive Enhancement」 も 「Graceful Degradation」 もどこかに線を引いてそれ以外には妥協してもらうっていうアプローチですけど、「Regressive Enhancement」 はそこを気合いでエミュレートして差異をなくすっていうアプローチ。