<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="http://organizeseries.com/"
	>

<channel>
	<title>Extensible Web &#8211; HTML5Experts.jp</title>
	<atom:link href="/tag/extensible-web/feed/" rel="self" type="application/rss+xml" />
	<link>https://html5experts.jp</link>
	<description>日本に、もっとエキスパートを。</description>
	<lastBuildDate>Sat, 07 Jul 2018 03:14:05 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.7.19</generator>
	<item>
		<title>【エキスパートガチトーク】Web技術の未来を「Extensible Web」から探る！（後編）─技術の進化は必要か？</title>
		<link>/shumpei-shiraishi/16641/</link>
		<pubDate>Tue, 08 Sep 2015 01:00:19 +0000</pubDate>
		<dc:creator><![CDATA[白石 俊平]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Extensible Web]]></category>
		<category><![CDATA[Promise]]></category>
		<category><![CDATA[ServiceWorker]]></category>
		<category><![CDATA[Web Components]]></category>

		<guid isPermaLink="false">/?p=16641</guid>
		<description><![CDATA[本対談記事は、Extensible Webが誕生してから2年で何が変わったのか、そしてこれからWebはどうなっていくのかを、有識者の方々にそれぞれの立場から語っていただこうという企画です。 後編である今回は、Extens...]]></description>
				<content:encoded><![CDATA[<p><style>
.post-detail-contents p {
  text-indent: 0;
  clear: left;
}
b.speaker.komatsu {
  background: url('/wp-content/uploads/2015/08/komatsu.png') no-repeat;
  background-size: 48px;
}
b.speaker.shiraishi {
  background: url('/wp-content/uploads/2015/08/shiraishi.png') no-repeat;
  background-size: 48px;
}
b.speaker.saito {
  background: url('/wp-content/uploads/2015/08/saito.png') no-repeat;
  background-size: 48px;
}
b.speaker.daniel {
  background: url('/wp-content/uploads/2015/08/daniel.png') no-repeat;
  background-size: 48px;
}
b.speaker.asai {
  background: url('/wp-content/uploads/2015/08/asai.png') no-repeat;
  background-size: 48px;
}
b.speaker {
  display: inline-block;
  width: 48px;
  height: 18px;
  float: left;
  padding-right: 8px;
  padding-top: 48px;
  text-align: center;
  font-size: 12px;
  margin-bottom: 4px;
  font-weight: normal;
  clear: left;
}
p {
  overflow: hidden;
}
</style>
本対談記事は、<strong>Extensible Web</strong>が誕生してから2年で何が変わったのか、そしてこれからWebはどうなっていくのかを、有識者の方々にそれぞれの立場から語っていただこうという企画です。</p>

<p>後編である今回は、Extensible Webの現在、そしてWeb技術の未来にフォーカスしたお話になります。Extensible Webの概要や、Extensible Web以前からあるWebの問題点について知りたい方は、<a href="https://html5experts.jp/shumpei-shiraishi/16597/" data-wpel-link="internal">前編</a>をご覧ください。</p>

<p><img src="/wp-content/uploads/2015/08/DSC_0187.png" alt="" width="640" height="407" class="aligncenter size-full wp-image-16716" srcset="/wp-content/uploads/2015/08/DSC_0187.png 640w, /wp-content/uploads/2015/08/DSC_0187-300x191.png 300w, /wp-content/uploads/2015/08/DSC_0187-207x132.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<h2>HTML5は（ついに）モジュール化される</h2>

<p><b class="speaker shiraishi">白石</b> では、Extensible Webの考え方が提唱されてから2年が過ぎたわけですが、どのような変化が起きつつありますか？まずは皆さん、思いついたものから教えていただけると嬉しいです。</p>

<p><b class="speaker daniel">ダニエル</b> 最近の話で言うと、<strong>HTML5の仕様がモジュール化されます</strong>。例えば<a href="http://w3c.github.io/charter-html/timed-media-wg.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Timed Media Working Group</a>というワーキンググループが提案されていますが、もともとはHTML5の一部でした。このように、専門的なグループに分かれて仕様策定が進められるようになろうとしています。</p>

<p><b class="speaker shiraishi">白石</b> Extensible Webは、標準化の話とも密接に関わっているかと思うので、詳しく教えて下さい。HTML5.1がバラバラになっていくということでしょうか？</p>

<p><b class="speaker daniel">ダニエル</b> そうです。まだ詳細は決まっていませんが、<strong>今後仕様書も分割されていきます</strong>。ちょうど、CSSがバージョン3になって、多数の仕様書に分割されて、それぞれメンテナンスされるようになったのと似た感じになるでしょう。</p>

<p>また、ワーキンググループが分かれていくというだけではなく、もっと開発者が参加しやすくなります。その一つが、<a href="https://www.w3.org/community/wicg/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Web Incubator Community Group</a>の作成です。これができたのもつい最近（2015/7/2）ですね。ここは仕様を提案する場というよりは、質問してアドバイスを受けたり、デモを投稿したりと、一般の開発者のサポートが中心になります。</p>

<p><b class="speaker saito">斉藤</b> これは素晴らしいですね。最近すごく思うのは、仕様書がGitHubに置かれるようになって、<strong>別にGitHubが大好きというわけでもないんですが、開発者に見られるサイトNo.1ということで</strong>、変更の履歴すらも簡単に見られるようになり、どういう経緯で仕様が変更されていったかが追えるようになったのは素晴らしいと思います。</p>

<p><b class="speaker daniel">ダニエル</b> 10月のTPACまでに細かい作業を終えて、TPAC以降にフィードバックをもらいながら改善していくという感じだと思います。</p>

<h2>APIの低レベルさはどこまで許容される？</h2>

<p><b class="speaker asai">浅井</b> 最近はExtensible Webの流れを受けて、低レベルなAPIを提供して開発者に使ってもらおう、ということを意識するようになりました。例えば最近、センサー類のAPIを作ろうとしているのですが、大きく２つの方向性があるという議論になったんですよ。</p>

<p>一つは光センサーとか、既存のセンサーを抽象化するようなもの。またそれと合わせて、組み込み向けの通信制御のAPIを提供してはどうかというものでした。こちらはまあ、普通ですね。</p>

<p>でももう一つはぶっ飛んでて、<strong>Low Level File System APIっていうのを作ってしまってはどうか</strong>、と。
UNIXって、<code>/dev</code> 以下のファイルを通じてデバイスにアクセスできるじゃないですか。だったら、ファイルにアクセスできる手段を一つ開発者に与えてあげるだけで、どんなデバイスでも操作できるようになるじゃないか、と。本当に低レベルなものを作りさえすれば、開発者が必要なものを作れるよという考え方です。</p>

<p>でもこれは完全にぶっ飛んでる。だってプラットフォームに思い切り依存するじゃないですか。やり過ぎ感はすごくあるけど(笑)、それをマジメに議論できるようになったというのが、Extensible Webから来る発想なんじゃないかな、という気がします。僕としては、ちょっと低レベルすぎるんじゃないかと思いますが。</p>

<p><b class="speaker shiraishi">白石</b> そのうち、システムコールとか叩けるAPIが出てきそうですね。</p>

<p><b class="speaker asai">浅井</b> あまりAPIが低レベル過ぎても、今度は（JavaScriptライブラリによる）パフォーマンスのロスが大きすぎるし、OS依存のAPIを露出するのはよくないという考え方もあるので、どこまで低レベルにいくべきかというのは、今Extensible Webの中で本当に議論していかなくてはならないんじゃないか、という気がします。</p>

<h2>「Extensible」なAPIたち</h2>

<p><b class="speaker shiraishi">白石</b> なるほど。ではここでちょっと話を変えて、実際にExtensible Webに関連するAPIといえば何があるんでしょう？まず<strong>Fetch</strong>（※）とか。あと、<strong>ServiceWorker</strong>（※）もでしょうか。</p>

<p><b class="speaker saito">斉藤</b> <strong>Promise</strong>（※）とかもそうだと言っていいんじゃないでしょうか。Promiseの原型になったAPI（Deferとか）は、Extensible Webの提唱以前からありますが。</p>

<p><b class="speaker komatsu">小松</b> 他には、<strong>Object.observe</strong>（※）とかもありますね。</p>

<p><b class="speaker asai">浅井</b> <strong>Web Components</strong>（※）もそうでしょうね。</p>

<p><b class="speaker daniel">ダニエル</b> Web Componentsは便利ですよね。Polymer 1.0が出た時に使ってみましたが、とてもよかった。でも、Polymer自体がものすごく巨大なので、便利さの代償も大きいな、と(笑)。</p>

<p><b class="speaker asai">浅井</b> Web Components、小規模なプロジェクトならいいですが、大規模で長期的なプロジェクトとかでは、まだあまり使われてないんじゃないでしょうか。
そういう点では、Mozillaはむしろ積極的に使っています。しかも、Firefox OS本体で。<strong>本当に大事なAPIは、誰かがガチで使わないと熟成されないので、我々は必ず本番プロジェクトにガンガン入れるんです</strong>。</p>

<p>Firefox OS 2.5とかになると、Web ComponentsだけじゃなくてServiceWorkerとかも思い切り使って、アプリケーションのアーキテクチャを大幅に変更しようとしてます。どこよりもServiceWorkerを思い切り使って、悪いところを見つけ出そう、くらいの勢いですね。
ただ、ServiceWorkerをフルに使用して、複雑なキャッシュ処理とかを行うコードを見ていると、これはもう一般のWeb開発者が気軽に触れるレベルじゃないな、と思います。WebGLを生で扱うコードとかもそうですけど。</p>

<p><img src="/wp-content/uploads/2015/08/DSC_0175.png" alt="" width="640" height="426" class="aligncenter size-full wp-image-16719" srcset="/wp-content/uploads/2015/08/DSC_0175.png 640w, /wp-content/uploads/2015/08/DSC_0175-300x200.png 300w, /wp-content/uploads/2015/08/DSC_0175-207x138.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker komatsu">小松</b> WebRTCなんかについても、「一般のWeb開発者にとっては、使うのが難しい」という話はよく聞きます。でも<strong>WebRTCは、低レベルすぎるという意見もあれば、あれでもまだAPIのレベルが高過ぎるという意見もあって</strong>。</p>

<p>もともとはビデオチャットをユースケースとしてAPIを作っていたんだけど、実際にやってみると双方向のビデオチャットだけじゃなくて、例えば監視カメラみたいに「一方向だけ」というユースケースも重要だったりとか、多人数会議とかやるときは映像のネゴシエーションとかもっと柔軟にやりたい、という話が出てくると、実は今のWebRTCでも高レベルすぎると。その議論が、今のORTCに繋がったりしているわけです。しかし、APIのレベルを低くすればするほど、柔軟性は向上するんだけど取り扱いは難しくなって、一般の開発者が触るには難しいものになっていくだろうな…とは感じています。</p>

<p><b class="speaker shiraishi">白石</b> なるほど…WebRTCみたいな、高度なネットワーク処理を伴うAPIについては、TCP/UDPのソケットを直接触れるような低レベルAPIがあればよさそうですよね。Socket APIとかは既にあるんでしたっけ？</p>

<p><b class="speaker asai">浅井</b> ありますよ。Firefox OSではよく使われています。</p>

<p><b class="speaker shiraishi">白石</b> ああそうか、Firefox OSやChrome OSだと、かなり低レベルなJavaScript APIが既に実装されてますよね。Bluetoothとか、シリアル通信とかも可能だったような。</p>

<p><b class="speaker daniel">ダニエル</b> BluetoothのAPIは使ってみたんですけど、やっぱりChromeブラウザじゃなくてChrome OSでしか使えないんですよね。ブラウザで（通常のWebアプリで）使いたいとは感じましたが、それは叶っていません。「危険だ」と。</p>

<p><b class="speaker komatsu">小松</b> <strong>APIのレイヤーを下げていくことと、セキュリティやプライバシーはトレードオフがあります</strong>よね。</p>

<p><small>
※ Fetch…ブラウザがHTTPを使用してリソースを取得する操作をAPIとして利用できるようにしたもの。XMLHttpRequestに近いが、よりAPIが洗練されている</p>

<p>※ ServiceWorker…バックグラウンドで動作し、アプリケーションのHTTPリクエスト・レスポンスをフック可能なAPI。詳しくは<a href="https://html5experts.jp/iwase/7006/" data-wpel-link="internal">こちらの記事</a>を参照のこと。</p>

<p>※ Promise…JavaScriptの非同期処理を扱いやすくするAPI。いわゆる「コールバック地獄」から開放される。</p>

<p>※ Object.observe…オブジェクトのプロパティ変更を監視できるAPI。AngularJSなどでユースケースが発見され、標準化提案がなされている。</p>

<p>※ Web Components…カスタム要素を利用できるようにできるAPI
</small></p>

<h2>低レベルAPIとセキュリティ・プライバシー</h2>

<p><b class="speaker daniel">ダニエル</b> 今お話に上がったように、「低レベルなAPIは危ない」という問題もある。皆さんここはどう考えますか？</p>

<p><b class="speaker shiraishi">白石</b> 僕が今回の対談を準備するにあたって、いろいろ情報を集めた中では、「<strong>そういうセキュリティやプライバシーの部分こそ、標準化のリソースを費やすべき点だ</strong>」という意見がありました。ひとりのエンジニアが、自分の力だけでセキュリティやプライバシーを完璧に実装することは不可能なので、標準化というプロセスを踏んで様々な知見を集約することで、そういったAPIの安全性を担保するという。</p>

<p><b class="speaker asai">浅井</b> ただ今の時代、<strong>APIだけでセキュリティを担保するのは難しくて、結局はアプリケーションのエコシステム全体でサポートしていかなくちゃいけない</strong>んですよね。例えばWebを全てHTTPS化するとか、アプリケーションマーケットでセキュリティレビューが行われるから安全になるとか、ほかの仕組みと組み合わせることで安全性を担保するという形になってきている。</p>

<p>まあ、一方で、そういう他の仕組みで担保してもらえるからエンジニア自身はあまりセキュリティのことを考えなくなっている…というのもあると感じています。もし低レベルのAPIが使えるようになるなら、実際躊躇なく開発者は使うわけですよ。Firefox OSでもふんだんに使われています。セキュリティレビュー前提でね。でも、そのセキュリティレビューが、どのエコシステムでも行われるわけではない。もしそういうAPIが、（セキュリティレビューのない）一般のWebコンテンツでも使えるようになったらまずいんです。</p>

<p><strong>エコシステム全体で安全性を保っているのに、エコシステム抜きでAPIだけ持ってきて使えるようにしてしまうと、安全でなくなってしまう。そこをどうやって担保していけばいいのか</strong>な、というのはすごく難しく感じています。</p>

<p><b class="speaker shiraishi">白石</b> HTTPSが前提だったり、Firefox OSみたいな環境の上でサンドボックス化されたアプリケーションであることが前提だったりとか、APIを取り囲む様々なコンテキストだったり環境を含めてこそセキュリティが担保されるのであって、APIだけ切り出して安全性を担保するというのは難しいということですね。</p>

<p><b class="speaker saito">斉藤</b> なるほど… 正直、「ServiceWorkerがHTTPSのみになりました」と聞いた時「なんだとコノヤロウ」と思ったくらいなんですが(笑)。よくよく考えてみると「そうだよね」と納得は出来るんですが、一方で「誰がそのSSL証明書代払うねん」という感じでもあります(笑)。</p>

<p><b class="speaker asai">浅井</b> <a href="http://www.mozilla.jp/blog/entry/10442/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">MozillaはHTTPSの無料化を推進しようとしています</a>けどね。</p>

<p><b class="speaker shiraishi">白石</b> そうですよね、頑張ってくださいよMozillaさん！世界中がMozillaに期待してます(笑)！</p>

<p>でも、ServiceWorkerはHTTPSオンリーです、というのは少し乱暴な感じも受けるのですが。<strong>今後、Extensible Webの思想に則ったAPIがどんどん現れるとして、「とりあえず危ないかもしれないからHTTPS限定にしておこう」という感じになっちゃわないんでしょうか</strong>？</p>

<p><b class="speaker saito">斉藤</b> まあ、流れとしてはWebは全部HTTPSにしていこうという感じですしねえ…</p>

<p><b class="speaker komatsu">小松</b> そうそう。iOS9のWebViewは、<a href="http://dev.classmethod.jp/smartphone/iphone/ios-9-intro-ats/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">デフォルトではHTTPS接続しかできなくなるしね</a>。</p>

<p><b class="speaker daniel">ダニエル</b> 標準化のほうでも、実際そういう流れはあります。「<a href="https://w3c.github.io/webappsec/specs/powerfulfeatures/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Secure Contexts</a>」というドキュメントがあって、<a href="https://w3c.github.io/webappsec/specs/powerfulfeatures/#threat-risks" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">「こういう場合はHTTPS接続が必要」というシチュエーションを列挙しています</a>。
これによると、センシティブなデータやセンサーデータにアクセスするAPIは全て対象となっていますので、（今まで非HTTPS環境でも利用できていた）<strong>Geolocation APIなども、将来的にはHTTPS限定になるかもしれません</strong>。</p>

<h2>世界は、開発者からのフィードバックを求めている</h2>

<p><b class="speaker shiraishi">白石</b> ここまでは、Extensible Webを中心として、Webの過去や現在についてお話いただきました。では、<strong>未来のWeb技術はどうなるんでしょう</strong>？</p>

<p><b class="speaker daniel">ダニエル</b> 簡単に言うと、<strong>低レベルなAPIが増えて、高レベルなライブラリが増える</strong>、ってことじゃないかと思います。</p>

<p><b class="speaker saito">斉藤</b> 一般の開発者や企業もライブラリを作るようになり、もっと言えば、それで利益を上げる企業が出てきてもいいと思います。今はWebのプラットフォームやライブラリを作っているのって、結局ブラウザベンダ周辺の方々ばかりです。もしそこで利益を上げられる仕組みが出てきたとしたら、もっと一般の企業や開発者がWebのプラットフォームづくりに貢献できるようになるんじゃないかと。今は、あまり貢献できる余地がない。</p>

<p><b class="speaker asai">浅井</b> <strong>（Webプラットフォームへの）貢献という点では、ブラウザベンダの立場から言うと、一番求めているのって開発者からのフィードバックなんですよね</strong>。Webブラウザのエンジニアは、フィードバックが欲しくてしかたがないんですよ。自分たちが仕様を書いても、他の人が作って使ってくれないと標準化できないんですから。そこを、どんな方法でもいいから解決したくって、だからこそこんな考え方（Extensible Web）になったという流れもあると思います。</p>

<p><b class="speaker shiraishi">白石</b> そうですよねえ…前編でいくつか挙がっていた「使われていないAPI」なんて、ほんとに使われてなさそうなので、フィードバックも何もあったもんじゃないですよね。</p>

<p><b class="speaker asai">浅井</b> そうなんです。少なくとも僕らは、W3Cにインパクトを与えるためにもどんどん開発者は意見をあげていってほしいと思っていますし、ダニエルさんが紹介していたWeb Platform Incubator Groupにも参加してほしいと思っています。Mozillaに限って言えば、<strong>Bugzillaに日本語でもいいからガンガンコメント欲しい</strong>ですね。「英語で書かなくちゃならない」と思って書かない方も多いんですが、翻訳サイトを使って読んでみて、わからなければ日本のエンジニアに質問が来るので。</p>

<p><b class="speaker saito">斉藤</b> なるほど、そういう貢献であれば、気軽にできそうだし人にも促せそうです。</p>

<p><b class="speaker asai">浅井</b> <strong>わかりにくい英語でフィードバックもらうくらいなら、専門用語満載で日本語で書いてくれたほうがありがたい</strong>んです。フィードバックをもらえないことで発生するコストに比べたら、日本語のフィードバックをもらってそれに日本のスタッフが応えるなんて安いもんです。今はそれこそ、縦書きの仕様とかあるじゃないですか。ああいうところって、日本でしか通用しない用語がたくさんある。それを無理に英語にする必要はなくて、そのまま日本語で書いてほしい。</p>

<p><b class="speaker saito">斉藤</b> そうですよね…「禁則処理」とか英語でどう言えばいいのか、よく考えたら知らない(笑)。</p>

<p><b class="speaker asai">浅井</b> そういうフィードバックを世界中の開発者がくれる、という未来を僕らは目指しているんです。それに、Extensible Webが進むことで、例えばライブラリやミドルウェアをビジネスにするような企業も出てきたとしたら、そういう企業ってブラウザベンダとの協業にも本気なので、更にフィードバックが熱くなって嬉しいし。</p>

<p>例えば3Dにしても、UnityとかUnrealとか大きな企業がガンガンフィードバックをくれるので、WebGLやasm.jsも —— 今は WebAssemblyの方向に向かっていますが —— どんどんよくなっていったわけですし。</p>

<p><b class="speaker komatsu">小松</b> 確かに、ビジネスで使われると急激にフィードバックが貰えるようになりますよね。</p>

<p><b class="speaker saito">斉藤</b> 「趣味」のレベルと「ビジネス」のレベルだと、フィードバックするモチベーションもぜんぜん違うかもしれませんね。</p>

<p><b class="speaker komatsu">小松</b> そうそう。趣味でやってる時って、例えバグに遭遇したとしても「このバグは仕様である」って済ませちゃう(笑)。</p>

<p><b class="speaker saito">斉藤</b> 「ま、いっか」で済ませちゃいますよね(笑)。Web技術の進化がビジネスに直結するのであれば、フィードバックのモチベーションは確実に高まると思います。</p>

<h2>今あえて問う: Web技術の進化は求められているのか？</h2>

<p><b class="speaker shiraishi">白石</b> ここで一つ、ちょっと刺激的に聞こえるかもしれない問題提起をさせてください。
<strong>Web技術の進化って、今そんなに求められているのでしょうか？</strong>
現状で言うと、Web技術って主にデスクトップブラウザで使われていて、モバイルはネイティブでいいよね、と世間に認知されている感覚が僕としてはあって。
しかも、デスクトップは進化が停滞していて、イノベーションはモバイルアプリで起こっている。WebのAPIをどんどん拡充していっているけど、それで喜んでいる人ってどれくらいいるのかな？と。</p>

<p><b class="speaker daniel">ダニエル</b> 確かに…最近そういう議論がありましたね。<a href="https://twitter.com/ppk" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ppk</a>（※）を中心として、<a href="http://www.quirksmode.org/blog/archives/2015/07/stop_pushing_th.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">「Webは一年くらい開発を止めておこう」という発言がありました</a>。</p>

<p><b class="speaker saito">斉藤</b> 僕もppkの発言は読みました。普通、僕らの開発でも、2年も経てばたくさん技術的負債が溜まっていってしまうものなのに、<strong>Webは壊れたままでどんどん新しい機能を追加していこうとしている</strong>。「一旦止まってしまうと死んでしまう」「止まることは後退することだ」というある種の強迫観念のようなものがあるのかもしれません。</p>

<p><b class="speaker asai">浅井</b> 実際には（Webの進化は）長い間止まってましたけどね(笑)。</p>

<p><b class="speaker shiraishi">白石</b> (HTML)4と5の間ね。</p>

<p><b class="speaker saito">斉藤</b> あの（進化が止まっていた）悲しさを繰り返しちゃダメだと、みんな思っているんじゃないでしょうか。僕は、Webはなくなってほしくないと思っているので、Web技術の進化は続いてほしいと考えています。ただ白石さんが仰るとおり、モバイルはネイティブでいいじゃん、という流れもあるのは確かです。</p>

<p><b class="speaker shiraishi">白石</b> 僕自身も、モバイルアプリであってもCordovaを使って開発していたりするので、Web技術は進化し続けてほしいと考えてはいます。CordovaやFirefox OSと言ったプラットフォームが今よりもっと力を持てば、先ほど僕が言った問題提起は不要だと思うんですけどね。</p>

<p><b class="speaker asai">浅井</b> 今はiOSやAndroidのシェアが非常に大きいですからね。そこら辺の状況が変わってくれば、Web技術の立ち位置ももう少し変わってくるんでしょうけどね。</p>

<p>また、先ほどあれだけ開発者に「声が欲しいんです」と訴えましたが、一方で仕様を作っているメンバーが念頭に置いているのは、<strong>5年10年先まで互換性を保ち、しかもあらゆるプラットフォームで動作する</strong>ことです。最初からこれを念頭に置いたプラットフォームは、人類にとって唯一のものだと思う。だから、5年10年先を見据えて絶え間なく技術を進化させていくというのは、誰かがやらなくてはならないと思っています。</p>

<p><b class="speaker shiraishi">白石</b> そう考えると、<strong>昔の「ユースケースありき」で仕様を決めていくというのは少し無理があったのかな、と思えます</strong>ね。5年10年経ったら、ユースケースなんて同じなわけがないですし。そう考えても、Extensible Webというのは正しい方向なんじゃないかと思えてきました。</p>

<p><b class="speaker daniel">ダニエル</b> そうですね。HTML5の世界は、長らくユースケースベースでした。例えばHTML5に何かを提案しようとすると、Ian Hickson（※）の答えは決まって「あなたのユースケースを教えて下さい」（「What&#8217;s your use case?」）でしたし。Extensible Webは、そうしたパラダイムからの脱却という面は少なからずあると思います。
<small>
※ ppk…Peter-Paul Koch氏のこと。著名なWebエンジニアで、<a href="http://www.quirksmode.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">QuirksMode</a>というサイトを運営している。</p>

<p>※ Ian Hickson…HTML5を始め、近年の様々なAPI仕様を策定するにあたって中心的な役割を果たしていた人物。相性はHixie。
</small></p>

<p><img src="/wp-content/uploads/2015/08/DSC_0090.png" alt="" width="640" height="403" class="aligncenter size-full wp-image-16720" srcset="/wp-content/uploads/2015/08/DSC_0090.png 640w, /wp-content/uploads/2015/08/DSC_0090-300x189.png 300w, /wp-content/uploads/2015/08/DSC_0090-207x130.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<h2>新たなライブラリ、仕様書の変化 &#8211; Extensible Webがもたらしつつある変化とは</h2>

<p><b class="speaker daniel">ダニエル</b> CSSの方でも、ユースケースありきの考え方から脱却しつつあります。例えば<strong>「<a href="https://github.com/w3c/css-houdini-drafts" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CSS Houdini</a>」は、ユースケースを考えずにCSSの基盤を公開して、その上に新たな機能を載せていく</strong>というアイデアです。</p>

<p>例えば、「新しいセレクタが欲しい」という場合、CSSの低レベルAPIで独自のCSSセレクタを作ったり…ということが想定されています。</p>

<p><b class="speaker komatsu">小松</b> 正確ではありませんが、「Web ComponentsのCSS版」といえばわかりやすいんじゃないかな。</p>

<p><b class="speaker saito">斉藤</b> 「独自のCSSセレクタを作る」というのを実現する<a href="http://www.hitchjs.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">hitch.js</a>というライブラリはすでにありますね。</p>

<p><b class="speaker shiraishi">白石</b> （READMEの例を一見して）自分の好きなセレクタを書ける！これはすごい。いやー、未来的な話になってきましたね。</p>

<p><b class="speaker saito">斉藤</b> CSSにまつわる話で言うと、<a href="https://github.com/marcj/css-element-queries" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CSS Element Query</a>っていうのもありますね。</p>

<p><b class="speaker shiraishi">白石</b> （こちらもREADMEの例を一見して）ああ、これは使いやすそうですね。メディアクエリで「巨大なif」みたいな感じになるのが防げますね(笑)。</p>

<p><b class="speaker komatsu">小松</b> ほんとだ、これは便利そう。</p>

<p><b class="speaker daniel">ダニエル</b>
ちょっといいですか？<strong>今ここで起きていることこそが、Extensible Webが目指す形だと思いました</strong>。</p>

<p>これまでは、まず英語でできた仕様書しかなくて、その後コードやデモが整備されるまでは中々APIを理解できない。英語がよく読めない人たちにとってはなおさらです。</p>

<p><strong>でも今ここで起きていたのは、アイデアがコードで示されていて、皆さんは説明よりも先にコードを読んでいました。そして、「これはいい」とか「これは良くない」とかそういう話で盛り上がっていた</strong>。</p>

<p><b class="speaker komatsu">小松</b> 確かに。それに、仕様書にコードスニペットが記載されるという動きも、どんどん広がってますよね。そっちのほうがずっと分かりやすいから。</p>

<p><b class="speaker shiraishi">白石</b> そうですよねー、<strong>WebIDL</strong>（※）で示されたインターフェース定義から、どう動くのか想像するのとかって、割としんどかったですからね。そもそもWebIDLの読み方を勉強しなくちゃならない。</p>

<p><b class="speaker saito">斉藤</b> 「仕様書の読み方」みたいな講座があってもいいかもしれませんよね(笑)。</p>

<p><small>
※ WebIDL…W3Cのドキュメントで使用される、Web技術用のインターフェース定義言語（IDL:Interface Definition Language）
</small></p>

<h2>Extensible Webから探る、Webの未来</h2>

<p><b class="speaker shiraishi">白石</b> では、最後のトピックとして、Webブラウザの未来を探ってみたいと思うのですが、いかがでしょう？例えば以前、「Webは死ぬか」という対談を行った時に、Googleの及川さんが、「ブラウザコードもコンポーネント化が進んで、必要に応じてコンポーネントがダウンロードされる」という可能性を示唆してくれたのですが。</p>

<p><b class="speaker komatsu">小松</b> 例えばLinuxディストリビューションを想定してみるのもいいかもしれませんね。Linuxのカーネルに当たるのが現在のブラウザエンジン（のコア部分）で、その他の部分、例えばJavaScriptライブラリや利用頻度がそこまで高くないAPIとかは、パッケージみたいな扱いになるとか。</p>

<p><b class="speaker daniel">ダニエル</b> 未来のブラウザという話で言うと、<strong>もっと専門的なブラウザが出てくる可能性もある</strong>のかな、と考えています。例えば<a href="http://www.espial.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Espial</a>という会社がありまして、別にここは新しい会社ではありませんが、TV専用のブラウザを作っていて、結構使われています。
こういうブラウザが、TVに関係する機能だけ実装すればいいのと同じように、家電専用のブラウザとか、色んな用途に特化したブラウザが出てくる可能性は大きいと思います。</p>

<p><b class="speaker asai">浅井</b> ブラウザが様々なデバイスで使われるようになっていくと、そのうちブラウザというのはユーザから見えなくなって、意識されなくなっていく。四角くなくなるとか、UIのないブラウザとかが普通に使われるようになっていく。</p>

<p><b class="speaker saito">斉藤</b> ブラウザがどこにでもある、って世界ですね。</p>

<p><b class="speaker shiraishi">白石</b> ただ例えば、ウェアラブルデバイスにブラウザが乗るのは当面ないような気もしますね。パフォーマンスの問題もありますし。</p>

<p><b class="speaker saito">斉藤</b> それは確かにそうかもしれません。が、何をもってブラウザと呼ぶのか、という話もありますね。例えば最近読んだのは、車通勤している最中に、Mediumの記事を読み上げてほしいという話があって。そのためのAPIを作ってはという話だったのですが、サーバ側でMediumのHTMLを解釈して、音声データだけをダウンロードしてクライアントで再生するようにすれば、HTMLを解釈する「ブラウザ」はクライアント側になくてもいいわけです。このように、Webページを「聞く」という行為、それすらも「ブラウジング」と言えると思います。</p>

<p><b class="speaker shiraishi">白石</b> なるほど、<strong>「ブラウザがどこにでもある」という世界を考えると、逆にブラウザが手元になくてもいい</strong>わけですね。HTMLが単なる音声データのためのデータソースになっている。</p>

<p><b class="speaker asai">浅井</b> そういうサービスを作るにあたっても、Web技術を使うようにすると、特許の問題とかが起きにくいんです。</p>

<p><b class="speaker saito">斉藤</b> ああ、それはありますね。</p>

<p><b class="speaker asai">浅井</b> …新しいものを作るときに、エコシステムが広がるのをブロックしてしまう原因を、Webは比較的解決していたり、最初から意識していたりすることが多いので、Web技術が広がってくれると、</p>

<p><b class="speaker shiraishi">白石</b> 広がってくれると？</p>

<p><b class="speaker asai">浅井</b> <strong>より人類は幸せになれます</strong>。</p>

<p><b class="speaker shiraishi">白石</b> 話でかい(笑)。〆の言葉としていい感じのフレーズが出たところで、本対談を終わりにしたいと思います。皆様、本日はどうもありがとうございました！</p>
]]></content:encoded>
			</item>
		<item>
		<title>【エキスパートガチトーク】Web技術の未来を「Extensible Web」から探る！ (前編)─HTML5は問題だらけ？</title>
		<link>/shumpei-shiraishi/16597/</link>
		<pubDate>Thu, 03 Sep 2015 01:00:26 +0000</pubDate>
		<dc:creator><![CDATA[白石 俊平]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Application Cache]]></category>
		<category><![CDATA[Extensible Web]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">/?p=16597</guid>
		<description><![CDATA[読者の皆様は、「Extensible Web」というキーワードについてご存知でしょうか。 Extensible Webは、現在のWebが抱える大きな問題点を解決しようとする考え方であり、ムーブメントです。 その問題点とは...]]></description>
				<content:encoded><![CDATA[<p><style>
.post-detail-contents p {
  text-indent: 0;
  clear: left;
}
b.speaker.komatsu {
  background: url('/wp-content/uploads/2015/08/komatsu.png') no-repeat;
  background-size: 48px;
}
b.speaker.shiraishi {
  background: url('/wp-content/uploads/2015/08/shiraishi.png') no-repeat;
  background-size: 48px;
}
b.speaker.saito {
  background: url('/wp-content/uploads/2015/08/saito.png') no-repeat;
  background-size: 48px;
}
b.speaker.daniel {
  background: url('/wp-content/uploads/2015/08/daniel.png') no-repeat;
  background-size: 48px;
}
b.speaker.asai {
  background: url('/wp-content/uploads/2015/08/asai.png') no-repeat;
  background-size: 48px;
}
b.speaker {
  display: inline-block;
  width: 48px;
  height: 18px;
  float: left;
  padding-right: 8px;
  padding-top: 48px;
  text-align: center;
  font-size: 12px;
  margin-bottom: 4px;
  font-weight: normal;
  clear: left;
}
p {
  overflow: hidden;
}
</style></p>

<p>読者の皆様は、「<strong>Extensible Web</strong>」というキーワードについてご存知でしょうか。</p>

<p>Extensible Webは、現在のWebが抱える大きな問題点を解決しようとする考え方であり、ムーブメントです。
その問題点とは、誤解を恐れず言うなら、「HTML5の流れで生み出された様々なAPIが実際にはあまり使われておらず、役に立っていない」という点に尽きると思います。</p>

<p>Extensible Webはそうした問題を解決するために、「開発者によって拡張可能なWebを目指そう」と呼びかけます。そのために必要なのは、特定のユースケースを想定した粒度の粗いAPIではなく、粒度が細かく、より基本的な機能を提供する低レベルなAPIを提供することで、開発者が様々なライブラリを作りやすくすることです。詳しくは<a href="https://html5experts.jp/iwase/10825/" data-wpel-link="internal">こちらの記事</a>も参考にしてください。</p>

<p><img src="/wp-content/uploads/2015/08/DSC_0199.png" alt="" width="640" height="415" class="aligncenter size-full wp-image-16713" srcset="/wp-content/uploads/2015/08/DSC_0199.png 640w, /wp-content/uploads/2015/08/DSC_0199-300x195.png 300w, /wp-content/uploads/2015/08/DSC_0199-207x134.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>Extensible Webは、「<a href="https://extensiblewebmanifesto.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Extensible Web Manifesto</a>」というマニフェストが公開されてから広く世に知られるようになりました。<a href="https://github.com/extensibleweb/manifesto/blob/master/README.md" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Extensible Web Manifestoの文書がGitHub上で公開されたのが2013年6月9日</a>ですので、既に2年以上が経過していることになります。本対談では、Extensible Webが誕生してから2年で何が変わったのか、そしてこれからWebはどうなっていくのかを、有識者の方々にそれぞれの立場から語っていただこうという発想で企画しました。</p>

<p>標準化団体のスタッフがどんな目線でWebを見ているのか、ブラウザベンダが開発者に求めているものは何か、Web標準にも詳しいエキスパートが現在のWebをどう捉えているかなど、普段聞けない話がいっぱいです！前後編でお届けしますので、どうかお楽しみくださいませ。</p>

<p>ちなみに、前編は全体的に、HTML5や関連（あまり知られていないかもしれない）APIを広範に<s>disる</s>批評するという流れになってしまったので、ちょっとマニアックかもしれません…あしからず。</p>

<h2>自己紹介</h2>

<p><b class="speaker shiraishi">白石</b> 皆さん、本日はお集まりいただき、ありがとうございます。非常に豪華なメンバーにお集まりいただき、誠に光栄です。今日は脱線大歓迎というノリで、自由闊達にExtensible Web、そしてWeb全体について語っていただきたいと思います。ではまずは、自己紹介からお願いできますでしょうか。</p>

<p><b class="speaker komatsu">小松</b> 小松と申します。通信会社（NTTコミュニケーションズ）でWebに関する研究開発をしておりまして、最近ではWebRTCやIoT/WoTに関する開発、標準化活動をやっています。</p>

<p><b class="speaker asai">浅井</b> Mozilla Japanの浅井です。最近はエヴァンジェリストとしてWeb技術に関して開発者の皆さんの前でお話したり、モバイル＆エコシステムマネージャーとして、パートナーさんとの協業を促進しています。<a href="http://au-fx.kddi.com/products/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Fx0</a>というスマートフォンの開発や、FirefoxOSを搭載した<a href="http://panasonic.jp/viera/firefox/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ビエラ</a>の開発をお手伝いしたりなど、パートナーさんと「Webを使ったものづくり」を広げていく仕事をしています。</p>

<p><b class="speaker shiraishi">白石</b> ビエラって、FirefoxOS積んでるんですか。知らなかった…。</p>

<p><b class="speaker saito">斉藤</b> 株式会社<a href="http://www.rich.co.jp/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">リッチメディア</a>で、主にメディア事業に携わりながら、対外的にはUXエンジニアとして活動しています。ここにいる皆さんは、標準化に近いところで働いていらっしゃる方が多いと思いますが、僕は一番現場に近いところで実装寄りの仕事をしているんじゃないかな。</p>

<p><b class="speaker daniel">ダニエル</b> W3Cのダニエル・デイビスと申します。半分はTV・ビデオ関係の仕事を、もう半分はマーケティングやコミュニケーション、特に開発者向けに標準をどう伝えていくかといったことを担当しています。特に最近注目しているのはセキュリティです。今セキュリティに関する仕様書がたくさん増えているので、そうした情報を開発者に伝えるにはどうしたらいいかを考えています。</p>

<h2>Extensible Web以前 &#8211; Application Cacheの失敗</h2>

<p><b class="speaker shiraishi">白石</b> では、Extensible Webが出てもう2年が過ぎたわけですが、そもそもExtensible Web以前は何が問題だったのでしょうか？例えば、標準化の失敗例としては <strong>Application Cache</strong> (※) がよく引き合いに出されますね。AppCacheの何がいけなかったのでしょう？</p>

<p><b class="speaker komatsu">小松</b> 使えるシーンが限られていたのが一番の問題じゃないかと思います。数ページ程度の静的なWebサイトならいいんだけど、ページ数が増えたり、ちょっと複雑になるととたんに使えなくなっちゃう。あと、キャッシュのバージョン管理が面倒臭かったですね。</p>

<p><b class="speaker saito">斉藤</b> アプリケーションキャッシュのファイルのバージョンを書き換えるGruntタスク、なんてのもあったりしますが、「勘弁してくれよ」って感じですね(笑)
キャッシュが更新されるタイミングもブラウザによってまちまちですし。</p>

<p><b class="speaker shiraishi">白石</b> 実務だと、キャッシュの最大容量とかもよく問題になりましたね。巨大な動画ファイルとかはキャッシュされなかったり、キャッシュの最大容量を知ろうと思っても知る手段すらない、とか。</p>

<p><b class="speaker daniel">ダニエル</b> 「オフラインの場合はキャッシュを、オンラインの場合はWeb上にある最新のリソースを使う」といったユースケースにも対応できていませんでしたね。</p>

<p><b class="speaker saito">斉藤</b> 仕様としても、結構珍しいかなと思いますね。長くWeb屋をやっていますが、1ファイル（マニフェストファイル）だけ用意すれば、あとはブラウザがうまくやってくれる…という仕様は他に見たことがありません。
<br><br>
JavaScriptのAPIは、だいたいにおいてPolyfill (※)を用意できるように作られていて、レガシーなブラウザの上でも動作をエミュレートできるようにしてあるものが多い。でもアプリケーションキャッシュの場合は、使うか使わないかの「ゼロイチ」を要求される。APIではなく、いきなりプラットフォームを作りにいったという感じがありますね。</p>

<p><b class="speaker shiraishi">白石</b> 僕、Google Gears（※）っていう技術の本を書いたことがあって、そういうのだけよく知ってるんですが、Gearsの仕様を参考に作られたからこんなことになったんだと思ってます…どうでもいい話ですが。。</p>

<p><small>
※ Application Cache…Webサイトをオフラインでも利用できるようにする仕組み。マニフェストファイルというファイルを一枚用意するだけで、キャッシュの管理はすべてブラウザが行ってくれるというのがウリの一つ。</p>

<p>※ Polyfill…新しいAPIをJavaScriptで実装し、非対応ブラウザでもそのAPIを使えるようにするもの。有名なところでは、Web Componentsを古いブラウザでも利用可能にする「Polymer」などがある。</p>

<p>※ Google Gears…Googleが昔開発していた、オフラインWebアプリを実現するブラウザプラグイン技術。Application CacheやWebSQL Database、Web Workersなど、HTML5関連APIの仕様策定に参照され、HTML5がメジャーになると開発が終了された。
</small></p>

<p><img src="/wp-content/uploads/2015/08/DSC_0059.png" alt="" width="640" height="413" class="aligncenter size-full wp-image-16723" srcset="/wp-content/uploads/2015/08/DSC_0059.png 640w, /wp-content/uploads/2015/08/DSC_0059-300x194.png 300w, /wp-content/uploads/2015/08/DSC_0059-207x134.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<h2>Webはアプリケーションプラットフォームになった</h2>

<p><b class="speaker shiraishi">白石</b> 他に、問題だったAPIとかありますか？</p>

<p><b class="speaker komatsu">小松</b> よく言われるのは <strong>contentEditable</strong> (※)ですね。</p>

<p><b class="speaker asai">浅井</b> ああ…死んでましたね。実装する側が(笑) 。「誰だ、こんな、実際には誰も使わないAPI作ったの」って開発者が文句言ってました(笑)。</p>

<p><b class="speaker shiraishi">白石</b> 確かそれって、IEかなんかで実装されていたのを仕様に起こしたって感じじゃありませんでしたっけ。</p>

<p><b class="speaker asai">浅井</b> そうかもしれませんね。「Webはみんなで作るもの」ってなる前の時代に作られた仕様という気がします。</p>

<p><b class="speaker saito">斉藤</b> ちょっと全般的な話になってしまうのですが、かつて単なる「ドキュメントレンダラー」だったWebブラウザが、HTML5のブームの中で、アプリケーションのランタイムへと変化していったという流れがあると思うんですよね。</p>

<p><b class="speaker shiraishi">白石</b> かつてはHTML5の仕様書の先頭の方にも、「アプリケーションプラットフォームを目指します」と書いてありましたしね。</p>

<p><b class="speaker daniel">ダニエル</b> それは今も変わっていませんね。W3CとしてはWebのことをオープン・ウェブ・プラットフォームと呼び表しつつ、プラットフォームがあまりに広くなりすぎているので、<a href="http://www.w3.org/blog/2014/10/application-foundations-for-the-open-web-platform/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Application Foundation（アプリケーション基盤）として8つのカテゴリに集中する</a>という動きをしています。</p>

<p><b class="speaker asai">浅井</b> ブラウザベンダ側からすると、JavaScriptを生み出した時点で「僕らはアプリケーションプラットフォームです」と言い続けていたんですよ。機能不足で、そうは見えなかったんでしょうが…ただ、それを目指していたというのはNetscapeの時代からありました（若い人向けの注: Netscape NavigatorというブラウザがFirefoxの前身）。
<br><br>
NetscapeがJavaScriptを動的な、拡張可能な言語として設計した時点から、Webはずっと拡張可能なプラットフォームです。なので、Extensible Webというキーワードには、<strong>（Webは拡張可能であるという）ブラウザベンダの思いを、Web開発者に伝わりやすいように言い直したという一面があるんじゃないか</strong>な、と思っています。</p>

<p><small>
※ contentEditable…任意の要素を、ユーザが編集可能な領域にすることのできる属性。<code>&lt;div contentEditable&gt;</code>とするだけで、簡単なWYSIWYGエディタを作成可能
</small></p>

<h2>disってない。disってないですよ</h2>

<p><b class="speaker shiraishi">白石</b> イマイチという評価のAPIとしては、他にもそういえば<strong>Web Storage</strong>（※）もありますね。同期型のAPIなので、ループの中とかで使っちゃうとUIスレッドがビジーになっちゃって、UIがもたついちゃったりフリーズしちゃったり、という。</p>

<p><b class="speaker komatsu">小松</b> 僕は割と好きなんですけどね。</p>

<p><b class="speaker saito">斉藤</b> ハードに使っちゃダメなんですよ。ちょっとした優しさのために使うべき(笑) 。例えばフォームの入力内容を入れておいて、ネットワークが切れた時でも失われないようにするとか、その程度。</p>

<p><b class="speaker daniel">ダニエル</b> 問題のあるAPIというと、<code>&lt;input type="date"&gt;</code>とかもそう。昔私はOperaにいたんですが、そこらへん（inputの様々なtype）をいち早く実装したのが自慢でした。でも開発者からのフィードバックとしては褒められるどころか、「（<code>&lt;input type="date"&gt;</code>使った時に）自動的に表示されるカレンダーのデザイン変えさせろ」でした(笑)。</p>

<p><b class="speaker saito">斉藤</b> Operaかわいそう(笑)。</p>

<p><b class="speaker asai">浅井</b> HTML5の発端（の一つ）だったのにね(笑) 。※</p>

<p><b class="speaker saito">斉藤</b> 僕は結局使ったことないですね(笑) 。デザインが合わないと、結局使いものにならないので。フォーム関係の仕様で言えば、<code>required</code>属性とか、<code>&lt;input type="email"&gt;</code>とか<code>&lt;input type="number"&gt;</code>とかはすごく助かりますよね。</p>

<p><b class="speaker komatsu">小松</b> モバイルで、タイプに合わせた最適なキーボードが出てきてくれるのが嬉しいですよね。</p>

<p><b class="speaker shiraishi">白石</b> ほかには、存在はするけどあんまり使われてない、ってAPIも多そうですよね。例えば<strong>Web Workers</strong>（※）とか。<strong>Shared Worker</strong>（※)なんてのもあったなあ…。</p>

<p><b class="speaker asai">浅井</b> いや、（Mozillaは）使ってますよ！</p>

<p><b class="speaker shiraishi">白石</b> いやまあ、一般のWeb技術者が使っているかというと、あんまり…という気がしますよね。他には…えーと…名前が出てこない。EventSourceとかいうAPI使うやつ。</p>

<p><b class="speaker komatsu">小松</b> <strong>Server Sent Events</strong>（※）だ。</p>

<p><br>
一同: ああーー</p>

<p><b class="speaker komatsu">小松</b> テキストしか扱えないし、サーバプッシュの用途だったら、他にWebSocketがあるから。HTTPサーバで事足りるっていうのはいいんですけどね。</p>

<p><b class="speaker daniel">ダニエル</b> WebSocketを使えないホスティングサービスの上で、「しょうがないから」Server Sent Events使ったということはありましたね(笑)。</p>

<p><b class="speaker shiraishi">白石</b> まあ、こういう風に、「あるけど使われてない」とか「あるけどイケてない」という仕様がいっぱいあって。</p>

<p><b class="speaker daniel">ダニエル</b> 他にももう一つ思い出しました。<strong>Network Service Discovery API</strong>（※）。W3Cスタッフとして言っていいかどうかわからないけど、あれはセキュリティの問題もあって、ちょっと残念な感じでした(笑)。</p>

<p><b class="speaker shiraishi">白石</b> でもこの対談、<strong>HTML5のAPIをdisる流れになってて、こんなの初めてで面白いなあ(笑)</strong>。</p>

<p><b class="speaker asai">浅井</b> disるように誘導してません？(笑)。</p>

<p><b class="speaker shiraishi">白石</b> いや、そんなつもりは…(汗) 。</p>

<p><small>
※ Web Storage…シンプルなローカルストレージAPI。<code>localStorage.setItem('key', 'value')</code>とするだけで、ローカルのストレージに値を保存できる。</p>

<p>※ WHATWGの取り組みの初期に、「<a href="https://whatwg.org/specs/web-forms/current-work/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Web Forms 2.0</a>」という仕様が提案されていた。</p>

<p>※ Web Workers, Shared Workers…Webブラウザ上でマルチスレッドプログラミングを可能にするAPI。</p>

<p>※ Server Sent Events…サーバプッシュを可能にするAPI。WebSocketとは異なり、HTTPサーバさえあれば動作する。</p>

<p>※ Network Service Discovery API…ネットワーク上のサービスを動的に発見するためのAPI。ホームネットワーク上で、デバイスを発見する用途に利用できるとされていた。
</small></p>

<h2>プレフィックスの反省を活かす</h2>

<p><b class="speaker shiraishi">白石</b> あと、Extensible Webの情報漁ってた時に「<strong>Indexed Database API</strong>（※）は、開発者のフィードバックを受けながら作った素晴らしいAPI」と書いてあったんですが、正直同意できない(笑) 。かなり使いにくいAPIだと思うんだけど…。</p>

<p><b class="speaker asai">浅井</b> えーと、いや、それは、<strong>申し訳ない</strong>。だいぶうちら（Mozilla）が推進しちゃって(笑)。</p>

<p><b class="speaker komatsu">小松</b> 一番最初に実装してなかったけ？</p>

<p><b class="speaker asai">浅井</b> してました(笑)。 （それ以前に提案されていた）<strong>WebSQL Database</strong>（※）なんて、標準化されていないSQLiteの仕様に依存してて全然ダメだ、と。</p>

<p><b class="speaker shiraishi">白石</b> いや、その主張は同意できたんですけど、できあがってみたIndexed Database APIの仕様がこれかーー、と(笑)。</p>

<p><b class="speaker asai">浅井</b> いやでもまあ、Extensibleではあるじゃないですか。プリミティブで、パフォーマンスも上げられるAPIは一応揃っていて。APIの使い勝手については、申し訳ない、ライブラリ使ってくださいと。MDN (Mozilla Developer Network) に掲載されているIndexed Database APIの解説でも、「<a href="https://github.com/mozilla/localForage" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">localForage</a>か<a href="http://www.dexie.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">dexie.js</a>を使ってください。<strong>そっちのほうが『More user friendlyだから』</strong>と」と<a href="https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">書いてあります</a>(笑)。</p>

<p><b class="speaker daniel">ダニエル</b> 素で使うのが厳しいという意味では、<strong>WebGL</strong>（※）とかもそうですよね。ラッパーライブラリがないとコーディングは厳しいけど、プリミティブでパフォーマンスの高いAPIを提供している。</p>

<p><b class="speaker asai">浅井</b> そういう点から言うと、<strong>Extensible Webの考え方があと数年早かったら、Web Audio API（※）じゃなくて、Mozillaが作っていたAudio Data APIだったんじゃないかな</strong>、と思いますね。プリミティブなAPIを提供して、ライブラリはJavaScriptで作ればいいじゃん、と、そういう発想で作られていたAPIだったんです。</p>

<p><b class="speaker komatsu">小松</b> さっき話に上がってたWebSQL Databaseは、実はまだ結構使われてたりする。</p>

<p><b class="speaker asai">浅井</b> ああ、結構ありますね。たまにユーザから「動きません」ってフィードバックもらって、見てみるとWebSQL Databaseのせいだったりする。WebKitがWebSQLを実装したあたりで、急にみんなが新しいWebの機能を使い出して、そのままになってるサイトが多いんですよね。</p>

<p><b class="speaker shiraishi">白石</b> <strong>それは、<code>-webkit-</code>プレフィックスに依存したサイトが未だに大量にある、って問題とも繋がってますよね。</strong></p>

<p><b class="speaker asai">浅井</b> そうなんですよ… <strong>プレフィックス付けてる間に開発者からの意見を取り入れていこう、というシナリオをブラウザベンダは考えていたのですが、開発者たちは便利なものがあれば使ってしまう</strong>。我々（ブラウザベンダ）が考えていたようには、うまくいきませんでした。かと言って、ブラウザベンダ自らがライブラリを作って提案したりしても、使われるのは最初だけで、すぐ使われなくなったりしてしまう。だから、ライブラリを作りやすくして開発者の意見を取り込みやすくしていこうというのがExtensible Webの目標の一つです。プレフィックスの失敗も、反省の一つだと思うんですよね。</p>

<p><small>
※ Indexed Database API…ブラウザ上で利用できるキー・バリュー・ストレージ。Web Storageに比べると複雑だが高機能。</p>

<p>※ Web SQL Database…ブラウザ上で利用できるリレーショナル・データベース。SQLiteというデータベース実装の使用を前提としていたことが標準仕様としては不適格という理由で、今は非推奨に。</p>

<p>※ WebGL…ブラウザ上で利用できる3Dグラフィック用API。</p>

<p>※ Web Audio API…ブラウザ上で利用できる音声操作API。</p>

<p>※ Audio Data API…音声操作のAPIとして、Mozillaが仕様策定と実装を進めていたが、標準化の過程でWeb Audio APIに一本化された。</p>

<p></small></p>

<h2>Extensible Webの起源はjQueryにあり？</h2>

<p><b class="speaker komatsu">小松</b> あと、Extensible Web以前という話で言うと、4年前にサンタクララで行われたTPAC（※）のブレークアウトセッションの中で、「<strong>開発者とW3Cがうまく関わっていくにはどうしたらいいか</strong>」という議論をしたのを覚えています。そこで、開発者が中心になってWebを伸ばしていくという話で、jQueryの例が取り上げられていました。
<br><br>
で、（DOM操作に）セレクタを使用するというのがWeb開発者に受け入れられるというのが判明したので、パフォーマンスの問題を解決するために、ネイティブで<code>querySelector API</code>（※）が実装されたと。ここではフィードバックループがうまく働いたので、こういう例をどんどん増やしていこうという話がありまして、こういう流れがExtensible Webに繋がったのかなあ、と思います。</p>

<p><b class="speaker daniel">ダニエル</b> jQueryの話が出たところで、一ついいですか？Extensible Webとは全然関係ないんだけど。</p>

<p><b class="speaker shiraishi">白石</b> なんですか？</p>

<p><b class="speaker daniel">ダニエル</b> …<strong>小松さん、John Resig（※）に似てない？</strong></p>

<p><b class="speaker saito">斉藤</b> ああー、ググって出てきた写真で見ると、ちょうど黄色のやつに似てる。<a href="https://admin.thefutureofevents.com/assets/speaker/images/516/medium/JResig_(1).jpg?1408528451" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">黄色いJohn Resig</a>。</p>

<p><br>
一同: (爆笑)</p>

<p><img src="/wp-content/uploads/2015/08/DSC_0064.png" alt="" width="640" height="420" class="aligncenter size-full wp-image-16722" srcset="/wp-content/uploads/2015/08/DSC_0064.png 640w, /wp-content/uploads/2015/08/DSC_0064-300x197.png 300w, /wp-content/uploads/2015/08/DSC_0064-207x136.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker daniel">ダニエル</b> すいません、脱線しまして…。</p>

<p><b class="speaker shiraishi">白石</b> いえいえ、最初にお伝えしたように、脱線大歓迎です。この、「黄色いJohn Resig」の話も、記事に含めさせていただきます(笑)。</p>

<p>ではここらで一旦まとめますと、まずjQueryをきっかけとして<code>querySelector API</code>が出てきたといった流れがあり、これは実際に役立つAPIとして世界中で利用されているし、jQuery、もしくは類似ライブラリのパフォーマンス向上にも一役買っている。</p>

<p>一方で、Webプラットフォームには今やたくさんAPIがあるけど、使われていないものや、イケてないものもたくさんあると。こうした問題を解決する一つの糸口として、<code>querySelector API</code>が生み出された経緯をヒントにしつつ、現在のExtensible Webというムーブメントに繋がっている…という流れでしょうか。</p>

<p><strong>（以後、後編に続く）</strong></p>

<p><small>
※ TPAC…W3Cが主催する、Web標準技術に関するカンファレンス。</p>

<p>※ querySelector API…今すぐ開発者ツールのコンソールを開いて、<code>document.querySelector('任意のセレクタ')</code>を実行してみるべし。</p>

<p>※ John Resig…jQueryを作った人。
</small></p>
]]></content:encoded>
			</item>
		<item>
		<title>Webの未来を議論！「Extensible Web Summit Berlin」イベントレポート</title>
		<link>/iwase/10848/</link>
		<pubDate>Thu, 25 Sep 2014 00:00:35 +0000</pubDate>
		<dc:creator><![CDATA[岩瀬 義昌]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Extensible Web]]></category>
		<category><![CDATA[W3C仕様]]></category>

		<guid isPermaLink="false">/?p=10848</guid>
		<description><![CDATA[連載： イベントレポート (24)Extensible Web Summitとは 2014年9月11日にドイツ・ベルリンにて、Extensible Web Summitが開催されました。本イベントは、Exntensibl...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/eventarchives/" class="series-159" title="イベントレポート" data-wpel-link="internal">イベントレポート</a> (24)</div><h2>Extensible Web Summitとは</h2>

<p>2014年9月11日にドイツ・ベルリンにて、<a href="http://lanyrd.com/2014/extwebsummit-berlin/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Extensible Web Summit</a>が開催されました。本イベントは、<a href="http://extensiblewebmanifesto.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Exntensible Web Manifesto</a>に興味を持つ、Web開発者・ブラウザベンダ・W3Cメンバ等が一堂に会し、未来のWebについてディスカッションを行うというイベントです。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/09/Screen-Shot-2014-09-24-at-1.21.42.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/09/Screen-Shot-2014-09-24-at-1.21.42-1024x540.png" alt="Extensible Web Summit" width="1024" height="540" class="alignnone size-large wp-image-11078" srcset="/wp-content/uploads/2014/09/Screen-Shot-2014-09-24-at-1.21.42-1024x540.png 1024w, /wp-content/uploads/2014/09/Screen-Shot-2014-09-24-at-1.21.42-300x158.png 300w, /wp-content/uploads/2014/09/Screen-Shot-2014-09-24-at-1.21.42-207x108.png 207w, /wp-content/uploads/2014/09/Screen-Shot-2014-09-24-at-1.21.42.png 640w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>

<p>イベント自体は、アンカンファレンススタイルで進められるため、会議の前に議題は決まっていません。会議当日の前半のセッションにて、ライトニングトークが5本あり、その内容を参考にしつつ、参加者自らがトピックが設定していきます。設定されたトピックに沿って、本イベントでは3つのブレイクアウトセッションが平行して開催されます。そして、各参加者は自分の興味のあるセッションに参加します。</p>

<p>本記事では、Extensible Web Summit Berlinでの設定されたトピック、およびトピックの中から特にExtensible Web に関係する議論が行われたトピック2つをピックアップし、その議論模様を紹介いたします。世界中のWeb関係者が、どのような点に興味を持っているか参考になるはずです。</p>

<h2>当日決定されたトピック</h2>

<p>当日決定されたトピックは以下の通りとなりました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/09/Screen-Shot-2014-09-24-at-1.21.28.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/09/Screen-Shot-2014-09-24-at-1.21.28-300x293.png" alt="Extensible Web Summit Program" width="300" height="293" class="alignnone size-medium wp-image-11079" srcset="/wp-content/uploads/2014/09/Screen-Shot-2014-09-24-at-1.21.28-300x293.png 300w, /wp-content/uploads/2014/09/Screen-Shot-2014-09-24-at-1.21.28-1024x1000.png 1024w, /wp-content/uploads/2014/09/Screen-Shot-2014-09-24-at-1.21.28-207x202.png 207w, /wp-content/uploads/2014/09/Screen-Shot-2014-09-24-at-1.21.28.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<table>
<thead>
<tr>
  <th align="left">No.</th>
  <th align="left">Room1</th>
  <th align="left">Room2</th>
  <th align="left">Room3</th>
</tr>
</thead>
<tbody>
<tr>
  <td align="left">Session 1</td>
  <td align="left"><em>Extensible Web, Huh?</em></td>
  <td align="left"></td>
  <td align="left"></td>
</tr>
<tr>
  <td align="left">Session 2</td>
  <td align="left">Offline First, Service worker &amp; Friends</td>
  <td align="left">Future JS</td>
  <td align="left"><em>New way to do specs; how to connect specs and developers, next generation standardization, etc&#8230;</em></td>
</tr>
<tr>
  <td align="left">Session 3</td>
  <td align="left">Native mobile vs web</td>
  <td align="left">Testing</td>
  <td align="left">Web Components / Simpler Components / How to use components today</td>
</tr>
<tr>
  <td align="left">Session 4</td>
  <td align="left">Content Editable / Rich Text Editing / Accessibility</td>
  <td align="left">WebRTC</td>
  <td align="left">Application Facilitation Layer</td>
</tr>
<tr>
  <td align="left">Session 5</td>
  <td align="left">CSS is awesome &#8211; where are we, where do we go?</td>
  <td align="left">Permissions</td>
  <td align="left">Dev Tools / Source Maps</td>
</tr>
</tbody>
</table>

<p>当日の議論の議事録は、<a href="http://oksoclap.com/p/ews-berlin" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">こちら</a>で公開されています。各ディスカッショントピック議事録へのリンクもありますので、詳細確認されたい方は、是非チェックしてみてください。</p>

<p>ディスカッショントピックは、Extensible Webに関するものだけではなく、「このトピックについて、W3Cメンバーと開発者との間で議論したい！」というものも多く存在しました（例えば、WebRTCのセッションでは、『iOSってWebRTCサポートされないの？』『こればっかりは分かんないね〜』といった話題も）。</p>

<p>本稿では、各種トピックの中から特に Extensible Web に関わりの深い二つのトピック（上表にて、強調表示）の議論模様を紹介いたします。</p>

<h2>セッション紹介：Extensible Web, Huh?</h2>

<p>本セッションのみ、全員参加のセッションとなりました。本セッションでは、『Extensible Webって、実際どうなの？』というテーマで、参加者がディスカッションが行われました。</p>

<p>セッションの進行形式としては、質問/疑問を持っている参加者がそれを発言し、他の参加者が回答する流れとなります。ここでは、主な議論事項を紹介いたします。（議事録は、<a href="http://oksoclap.com/p/ews-berlin" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">こちら</a>。要旨理解を助けるため一部、議論の順番を組み直して記載しています。）</p>

<p>まず最初の質問として投げかけられたのが、「Exntensible Webでは、低レベルのAPIを公開することになるが、Webのセキュリティモデルに適しているのか？」という点でした。これに対しては、</p>

<blockquote>
  <p>同様の課題は、Service WorkerやCORSにもある。</p>
</blockquote>

<p>や、</p>

<blockquote>
  <p>もしExtensible Webを実現するためのテンプレート/パターンのようなものがあれば、セキュリティモデルに対する1つの解になるのではないか。</p>
</blockquote>

<p>という回答が上がっておりました。</p>

<p>また、Extensible Webでは、世界中のWeb開発者が独自のWeb拡張を進めることが出来ます。このとき、 「多くの開発者が同じ目的を持って、Webの拡張に取り組んだ場合、どうやってまとめていくのか？複数のWebの世界を作ってしまうのではないか？」
という懸念があります。これらに対しては、少しジョークのニュアンスを含みますが、</p>

<blockquote>
  <p>READMEが最も簡単で理解しやすいものが、生き残るのではないか。</p>
</blockquote>

<p>という回答、また世界中の開発者を巻き込むという観点から</p>

<blockquote>
  <p>技術に取り組むなら、英語が必要だ。優れなコントリビュータの中でも、英語を使えない人をほとんど知らない。
  また、仕様に使われる英語をもっと簡単にする必要もある。</p>
</blockquote>

<p>という回答がありました。</p>

<p>その他にも、「必要以上に低レベルなAPIを公開することにより、パフォーマンスに影響が出てしまうのではないか？」という懸念も出てきていました。この懸念に対しては、</p>

<blockquote>
  <p>JavaScriptのパフォーマンスはそこまで悪くない。</p>
</blockquote>

<p>といった意見や、</p>

<blockquote>
  <p>ブラウザネイティブの機能を利用した方が、polyfillを使うよりもパフォーマンスが良いのは理にかなっている。polyfillを毎回ダウンロードする必要もない。</p>
</blockquote>

<p>のように、ネイティブの機能のほうがパフォーマンスは良くなる、といった回答も挙がっておりました。</p>

<p>ここまで記載してきたのは、技術的な側面からの質疑でしたが、その他の側面からのコメントとして、</p>

<blockquote>
  <p>Extensible Webでは、低レベルなAPIを公開する等の技術的な側面はもちろんだが、社会的な側面も必要となる。社会的な側面とはつまり、<em>世界中の開発者をどうやって巻き込んでいくか？</em>ということだ。</p>
</blockquote>

<p>というもっともな疑問も挙がっています。本疑問については、参加者の多くが重要と考えており、以下に続く別セッションへ切り出しとなっております。</p>

<h2>セッション紹介：New way to do specs; how to connect specs and developers, next generation standardization, etc&#8230;</h2>

<p><em>(本セッションレポートは、<a href="https://html5experts.jp/komasshu/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">小松</a> が執筆しました。要旨理解を助けるため、議論の順番を組み直して記載しています）</em></p>

<p>本セッションでは、『開発者が標準化プロセスにもっと関われるようになるためには、どのような取り組みが必要か？』についてディスカッションが行われました。W3C HTML5仕様のメインエディター、Robin Berjon 氏がセッションモデレーターを務めました。（議事録は、<a href="http://oksoclap.com/p/ews-berlin-spec-utopia" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">こちら</a>）</p>

<p>本セッションのポイントは、仕様エディターと開発者との間の連携やコミュニケーションの実効性を上げていくこと。理由は、仕様と実際のニーズとの乖離を防ぐためです。例えば、この手の議論で失敗例としてよく出てくる AppCache ですが、</p>

<blockquote>
  <p>「AppCacheの失敗は、開発者が望んでいる機能を仕様化しなかったこと」
  「AppCacheの考え方（オフラインWeb）自体は、間違っていない。仕様化の進め方が間違っていた」</p>
</blockquote>

<p>という分析を行ったとのこと。これを受けて、Indexed Database APIの仕様化にあたっては、エディターとデータベース技術者とで連携したことを紹介し、<strong>W3Cの仕様化に普段は関わっていない、実際の利用者から密にフィードバックを得ること</strong>が、良い仕様を作るためには重要との考えが示されました。</p>

<p>開発者からのフィードバック手段として現在良く利用されているのが、BlogやSNSへの書き込み。これらのフィードバックは、エディターにとって非常に重要な情報ですが、</p>

<blockquote>
  <p>「それらを追いかけるのは、大変」</p>
</blockquote>

<p>このため、<a href="http://discourse.specifiction.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Specifictionというフォーラム</a>を開設しており、仕様へのフィードバックは、是非ここに書き込んでいって欲しいとのことでした。</p>

<p>また、このようなオープンな標準化プロセスを進めるにあたり、その大枠の考え方を <a href="http://specs.webplatform.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">WebPlatform Specs</a> として文書化していることが紹介されました。現状、ポイントとしては</p>

<ul>
<li>Forkable</li>
<li>Hackable</li>
<li>Thoughtful</li>
<li>Royalty-Free</li>
<li>Software Practices</li>
<li>Tested</li>
</ul>

<p>が挙げられています。最初の二つは、GitHubのイメージですね<em>（参考まで、W3Cではないですが、<strong>HTTP/2</strong>は<a href="https://github.com/http2" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">GitHub</a> で、オープンに管理されています）</em>。当日のディスカッションでは、</p>

<blockquote>
  <p>Polyfillの開発やサンプルコードによるユースケースの提示は仕様化を進めるのに有効</p>
</blockquote>

<p>との発言もあり、Forkable, Hackableは大変重要な概念と感じました。</p>

<p>あと、3番目の <strong>Thoughtful</strong> を補足すると、仕様化にあたって「何をゴールにするか？」のルールを複雑に考えていると、それだけで無駄な時間がとられてしまうので、（アジャイルの考え方で）仕様化も継続的に進められると考え、ゴール設定やルールはシンプルでスマートにしようといったことが述べられています。</p>

<p>ほかには、</p>

<blockquote>
  <p>開発者は普段別の仕事をしており、仕様化貢献にそこまで時間を割くことはできない</p>
</blockquote>

<p>というコメントがあり、これを解決するために仕様を機能分割し、開発者の学習コストを下げる取り組みを行っているといった議論もありました。</p>

<h2>まとめ</h2>

<p>本記事では、Extensible Web Summit Berlinの議論模様を一部紹介いたしました。前述のように、詳細な議事録は、<a href="http://oksoclap.com/p/ews-berlin" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">こちら</a>で公開されています。各ディスカッショントピック議事録へのリンクもありますので、詳細確認されたい方は、是非チェックしてみてください。</p>
]]></content:encoded>
		
		<series:name><![CDATA[イベントレポート]]></series:name>
	</item>
		<item>
		<title>開発者によるWeb標準化を可能とする「Extensible Web」とは？</title>
		<link>/iwase/10825/</link>
		<pubDate>Wed, 24 Sep 2014 00:00:38 +0000</pubDate>
		<dc:creator><![CDATA[岩瀬 義昌]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Extensible Web]]></category>
		<category><![CDATA[W3C仕様]]></category>

		<guid isPermaLink="false">/?p=10825</guid>
		<description><![CDATA[Extensible Webとは？ W3Cの標準化担当者・Web開発者が支持を表名している、「Extensible Web」という概念をご存知でしょうか？ Extensible Webとは、一言で表すと、標準化組織である...]]></description>
				<content:encoded><![CDATA[<h2>Extensible Webとは？</h2>

<p>W3Cの標準化担当者・Web開発者が支持を表名している、「Extensible Web」という概念をご存知でしょうか？
Extensible Webとは、一言で表すと、<strong>標準化組織であるW3Cとブラウザベンダだけでなく、
Web開発者も巻き込んでWebの未来を拡張していこう</strong>、という考え方のことです。</p>

<p>本記事では、Extensible Webの登場背景、その内容について紹介いたします。</p>

<h2>登場の背景</h2>

<p>これまでのWebの新機能は、長い年月をかけてブラウザベンダによって開発されてきました。
そのため、多くの場合、Web開発者がブラウザへフィードバックをするには、
まずブラウザ側の機能実装を待つ必要がありました。</p>

<p>しかし近年、Webの開発者が先導して、ブラウザの新機能へ影響を与えるケースが出てきています。
例えば、<code>querySelector</code> や、<code>Object.observe</code> が具体例です。
これらの例は、以下のフィードバックループによって生まれてきています：</p>

<ol>
<li>Web開発者が自身が必要とするユースケースに沿ってAPI(ライブラリ)をデザインする</li>
<li>Web開発者は、他の開発者が作成するAPIと切磋琢磨し、自身のAPIを洗練させていく</li>
<li>洗練されたAPIの中から、ブラウザが実装すべき基本的な機能が抽出される（ブラウザがNativeに実装すればパフォーマンスが向上し、かつライブラリのコードも小さくできる)</li>
</ol>

<p>Webに本当に必要な機能を生み出すためには、 上記のように、ユースケースに沿った実践的なフィードバックループを回すことが重要です。</p>

<p>既にこのプロセスはWeb標準化にも取り込まれています。例をあげると、</p>

<table>
<thead>
<tr>
  <th align="left">ライブラリ例</th>
  <th align="left">標準化された例</th>
</tr>
</thead>
<tbody>
<tr>
  <td align="left">jQuery</td>
  <td align="left">querySelector</td>
</tr>
<tr>
  <td align="left">Ember, AngularJS</td>
  <td align="left">Object.observe</td>
</tr>
<tr>
  <td align="left">Sass, Less</td>
  <td align="left">CSS Variables</td>
</tr>
</tbody>
</table>

<p>といったところが代表的でしょう。例えば、セレクタを用いたDOM操作は jQuery で実践的に有効性が示され、querySelectorとして標準化されました。これにより、jQueryのパフォーマンスは向上し、さらに Zepto.js のような軽量化ライブラリが登場・・・といったWebの好循環を起こしました。</p>

<p>一方、ユースケースの考慮が浅いまま実装されてしまったAPIは、
結果的に実践にそぐわず、憂き目にあってしまうケースが多々見受けられます。(その代表的な例が、<code>Application Cache</code> です)</p>

<p>これまで説明してきたフィードバックループを、
Webを構成するHTML・CSS・JS等の様々な分野で更に展開できるといいのですが、
現在のWebを取り巻く環境では限界があります。なぜならば、<br />
　<em>「Web開発者が、拡張(extend)できるポイントが少ない」</em> <br />
ためです。
例えば、CSSの構文を拡張するのは、既存の拡張ポイント(API)では困難であるため、
そもそもフィードバックループを回しはじめることが出来ません。</p>

<h2>Extensible Web Manifest</h2>

<p>もし、Web開発者が拡張できるポイントが多くあれば、
言い換えれば、低レベルのAPIがWeb開発者に公開されるとしたら、どうなるでしょうか？
Web開発者が実際に必要とするケースに沿って、
さらに多くのAPIやライブラリを開発できるようになります。</p>

<p>このような考え方は、<a href="http://extensiblewebmanifesto.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Extensible Web Manifesto</a>にまとめられています。</p>

<div id="attachment_10827" style="width: 1272px" class="wp-caption alignnone"><a href="https://html5experts.jp/wp-content/uploads/2014/09/Screen-Shot-2014-09-14-at-9.27.141.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/09/Screen-Shot-2014-09-14-at-9.27.141.png" alt="Extensible Web Manifesto Screen Capture" width="1262" height="358" class="size-full wp-image-10827" srcset="/wp-content/uploads/2014/09/Screen-Shot-2014-09-14-at-9.27.141.png 640w, /wp-content/uploads/2014/09/Screen-Shot-2014-09-14-at-9.27.141-300x85.png 300w, /wp-content/uploads/2014/09/Screen-Shot-2014-09-14-at-9.27.141-1024x290.png 1024w, /wp-content/uploads/2014/09/Screen-Shot-2014-09-14-at-9.27.141-207x58.png 207w" sizes="(max-width: 1262px) 100vw, 1262px" /></a><p class="wp-caption-text">Extensible Web Manifesto</p></div>

<p>Extensible Web Manifestoでは、ExtensibleなWebのプラットフォームの設計原理として、
以下の点を提言しています：</p>

<p>(Extensible Web Manifestoより抜粋、意訳)</p>

<blockquote>
  <p>Focus on adding new low-level capabilities to the web platform that are secure and efficient.</p>
</blockquote>

<p>安全で効率的な、新たな低レベル機能をWebのプラットフォームに追加する</p>

<blockquote>
  <p>Expose low-level capabilities that explain existing features, such as HTML and CSS, allowing authors to understand and replicate them.</p>
</blockquote>

<p>既存の機能(HTMLやCSS)が、これら低レベル機能によりどのように実装されるかを示すことで、開発者の理解を促進し、複製を可能とする</p>

<blockquote>
  <p>Develop, describe and test new high-level features in JavaScript, and allow web developers to iterate on them before they become standardized. This creates a virtuous cycle between standards and developers.</p>
</blockquote>

<p>新機能の開発、表現、テストをJavascriptで実施し、標準化の前にWeb開発者が参画できるようにする。これにより、Web開発者と標準化担当者の間で素晴らしいサイクルが実現される</p>

<blockquote>
  <p>Prioritize efforts that follow these recommendations and deprioritize and refocus those which do not.</p>
</blockquote>

<p>上記のような提言に沿った取組みの優先度を高くし、そうでないものは優先度を低くするか、もう一度フォーカスを練り直す</p>

<p><a href="http://extensiblewebmanifesto.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">原典</a>ではそれぞれの項目について、更に詳細な記載がありますので、興味のある方は参照ください。</p>

<h3>Extensible Webの今後</h3>

<p>Extensible Web Manifestoは、標準化団体であるW3C・各種ブラウザベンダ(Google, Mozilla等)・著名ライブラリの開発者が支持を表明しており、今後より具体化していくことが期待されます。</p>

<p>具体的な活動の一部として、フェイスツーフェイスのミーティングも既に開催されています。
そこで次回の記事では、2014年9月11日にドイツ ベルリンで開催された <a href="http://lanyrd.com/2014/extwebsummit-berlin/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Extensible Web Summit</a> の議論模様を紹介いたします。</p>
]]></content:encoded>
			</item>
	</channel>
</rss>
