<?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>W3C仕様 &#8211; HTML5Experts.jp</title>
	<atom:link href="/tag/w3c仕様/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>Promise議論が白熱！TPAC 2014 WebRTCワーキンググループレポート</title>
		<link>/alan-iida/11325/</link>
		<pubDate>Wed, 19 Nov 2014 03:00:25 +0000</pubDate>
		<dc:creator><![CDATA[飯田 アレン真人]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[TPAC2014]]></category>
		<category><![CDATA[W3C仕様]]></category>
		<category><![CDATA[WebRTC特集]]></category>

		<guid isPermaLink="false">/?p=11325</guid>
		<description><![CDATA[連載： WebRTC (2)10月26日から31日にかけて、Santa Claraで開催された「TPAC 2014」。本レポートでは、TPACで行われたWebRTCワーキンググループについてレポートします。 TPACとは...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/webrtc/" class="series-395" title="WebRTC" data-wpel-link="internal">WebRTC</a> (2)</div><p>10月26日から31日にかけて、Santa Claraで開催された「<a href="http://www.w3.org/2014/11/TPAC/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">TPAC 2014</a>」。本レポートでは、TPACで行われたWebRTCワーキンググループについてレポートします。</p>

<h2>TPACとは?</h2>

<p>TPACとは、Webの標準化団体であるW3C(World Wide Web Consortium)が開催する1週間のイベントのことです。様々な国、様々な企業からメンバーが集まり、現在のWeb標準・将来的なWebの機能(例えば、cryptoやaudio)について議論します。</p>

<p><img src="/wp-content/uploads/2014/11/tpac3.jpg" alt="" width="300" height="400" class="alignnone size-full wp-image-11509" srcset="/wp-content/uploads/2014/11/tpac3.jpg 300w, /wp-content/uploads/2014/11/tpac3-225x300.jpg 225w, /wp-content/uploads/2014/11/tpac3-155x207.jpg 155w" sizes="(max-width: 300px) 100vw, 300px" /></p>

<p>本記事では、WebRTC WG(ワーキンググループ)で議論された注目の話題をレポートします。WebRTC WGには、WebRTC(※)をより安心・安全に、一方で開発者には強力な柔軟性を与えたいと考えるメンバーが集まっています。</p>

<p>※ WebRTCとは？：
WebRTC(Web Real Time Communication)とは、サーバを経由せずにブラウザ同士が通信する技術のことで、ブラウザから音声や映像を取得するようなAPIを含んでいます。これらのAPIにより、プラグインなしで、お好きな複数のデバイス間で音声・映像通信を実現できます。WebRTC自体の技術的な内容については、本サイトの<a href="https://html5experts.jp/series/webrtc-beginner/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">WebRTCを使ってみよう！</a>をご覧ください。</p>

<h2>Media Capture タスクフォース</h2>

<p>Media Captureタスクフォースは、Device APIsとWebRTC WGsの両者が参加するタスクフォースです。音声・映像をデバイスから取得するgetUserMedia APIを担当しています。今年のTACでは、いかに開発者に簡単にAPIを利用させるか、また、ラストコール(勧告候補の前にコメントや提案を受け付けるタイミングです)の準備ができた、という点について議論が集中しました。</p>

<h3>Promises</h3>

<p>MozillaのJan-Ivar Bruaroeyが推進するPromiseが議論が白熱したトピックです。
具体的には、getUserMediaを取り巻くイベント(例えばMedia Stream Track <a href="http://w3c.github.io/mediacapture-main/getusermedia.html#widl-MediaStreamTrack-onended" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">onended</a> イベント)について、Promiseを利用する案が出ています。Promiseによってコードを綺麗に書くだけでなく、より詳細なエラー情報を開発者が利用可能になると、彼は述べています。</p>

<p>対して、RFTMの創設者であるEric Rescorlaは「不必要に複雑で、開発者が悪いコードを書いてしまう可能性がある」と述べ、強く反対しました。また、Promiseは複数回発生ようなイベントを扱えない、という問題があるとも述べています。
結局、MediaStreamTrack onendedイベントのようなイベントについては、reason codeを付けるのが最適という妥協点に達しました。getUserMediaは、メディアキャプチャに関するAPIの中でPromiseを使う唯一のAPIとなります。</p>

<h3>出力デバイスの選択</h3>

<p>WebRTCのアプリ開発の上で、開発者が直面する問題の1つに、音をスピーカから出力するか・ヘッドセットから出力するか、指定できないという問題があります。残念なことに、自由に出力デバイスを選択できるようにしてしまうと、セキュリティ上の懸念（例えば、悪意のあるサイトが広告を音声として流すようにな懸念）が出てきます。</p>

<p>GoogleのJustin Ubertiは、デバイスグループを定義するという、シンプルな解決方法を提案しました。
もし、入力と出力のデバイスが同一であるなら、同じデバイスグループに属するという考え方です。例えば、ヘッドセットや会議室のマイクが典型になります。本機能の前提として、もしユーザが入力デバイスに制御権を与えるなら、出力デバイスにも同じ権利が与えられてもよい、という考えがあります。本提案は歓迎されましたが、参加者はさらなる詳細(permissionの継続や仮のデバイス利用)について要望しました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/11/20141031_090710.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/11/20141031_090710-300x225.jpg" alt="20141031_090710" width="300" height="225" class="alignnone size-medium wp-image-11327" srcset="/wp-content/uploads/2014/11/20141031_090710-300x225.jpg 300w, /wp-content/uploads/2014/11/20141031_090710-1024x768.jpg 1024w, /wp-content/uploads/2014/11/20141031_090710-207x155.jpg 207w, /wp-content/uploads/2014/11/20141031_090710.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h2>WebRTCワーキンググループ</h2>

<p>WebRTC WGで議論された主なトピックは、オブジェクトを利用してWebRTC APIをモダンなものにする、ということ。マイクロソフトが推進するORTC(Object RTC)は明に言及されていないものの、明らかに多くの提案はORTCが推進力になっているものでした。</p>

<h3>RTPSender と RTPReceiver</h3>

<p>GoogleのJustinが、WebRTCでSDPを使うための新たな方法である、RTPSenderとRTPReceiverを提案しました。
現時点でストリームのビットレートを変更するためには、SDPのプレインテキストを書き換える必要があり、かなり大変です。また、SDPを見なければ、セッションで使われている最大のビットレートのような情報を取得できません。
Justinの提案は、これらの問題を解決するための第一歩になります。</p>

<p>この提案の中で最も受け入れられた部分は、<a href="http://w3c.github.io/webrtc-pc/#rtcpeerconnection-interface" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">RTCPeerConnection</a>オブジェクトの扱いにおいて、ストリームベースからトラックベース(RTCSender/Receiverオブジェクトにトラックを結びつける方法)へ、メディアを扱う方法を変えていくといった部分でした。</p>

<p>つまり、全てのトラックがRTCSenderオブジェクトを送り、全てのトラックがRTCReceiverオブジェクトを受け取ります。このようにすることで、同じトラックを複数の箇所で複製・利用できるようになり、ビットレート等もトラックごとに操作できるようになります。</p>

<p>また、提案の中には、ローカル/リモート候補、リモートのDTLS証明書、ユーザに対するビットレートのようなエンコードパラメタに挙げられる、トランスポートに関するデータを公開する方法も含まれています。全体として、この提案は良いと考えられたものの、エラーに対する操作やWebRTC 1.0に含める最小の仕様については、さらなる議論が必要となっています。</p>

<p>最後に、Justinはトラックを直接編集可能にする、という提案をしています。この提案によりモバイル機器の全面と背面のカメラを切り替えるときに発生する問題が解消できます（現在は、古いトラックを削除して、新しいトラックを追加し、再度ネゴシエーションする方法で対応しないといけません）。提案されたAPIであれば、トラックの内容を変更するだけで済み、再度ネゴシエーションする必要がありません。</p>

<h3>またまたPromises</h3>

<p>Jan-Ivarが再度登壇し、WebRTCについてもPromiseを利用するという、提案をしています。Media Captureセッションから受け取るフィードバックを利用して、promisesの実験的な利用を削減し、ICE・ピアコネクション・コールの発信のフローの中でPromiseを利用する教科書的な利用方法を提案しています。</p>

<p>Eric Rescorlaはまだ納得していなかったようなものの、エラー処理の簡単さに対するJan-Ivarのアピールが残りのグループの同意を勝ち取り、promiseが含められる点が合意され、既存のコールバックは非推奨となりました。</p>

<h3>DTLS証明書</h3>

<p>DTLS証明書は、ピア自身が本人であることを証明するために利用できます。マイクロソフトのMartin Thompsonは、Web Crypto APIを利用した、DTLS証明書を生成する新たなAPIを提案しました。</p>

<p>これにより、ドメイン毎・ユーザ毎に同じDTLS証明書を再利用できるようになりますし、証明書を毎回作成し直すことも可能になります。ただし残念なことに、<a href="http://en.wikipedia.org/wiki/Elliptic_curve_cryptography" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Elliptic curve cryptography</a> (<a href="http://ja.wikipedia.org/wiki/%E6%A5%95%E5%86%86%E6%9B%B2%E7%B7%9A%E6%9A%97%E5%8F%B7" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">日本語リンク</a>)がWeb Crypto APIで動作するか誰も知らなかったので、明らかになるまで延期するのがよいという結論になりました。</p>

<h3>Stats API (統計API)</h3>

<p>Callstats.ioのファウンダであるVarun Singhは、新しいWebRTC stats APIドラフトの詳細について、WGの意見を募集しました。詳細とは例えば、変数名、コード名のフォーマット、bytesSent/Receivedがヘッダに計算結果を加えるべきか・それとも単にペイロードにすべきか、等になります。</p>

<h3>Bugs, bugs and more bugs!</h3>

<p>翌朝2日目の8:30という早朝から、bugzillaに出されているWebRTC関連のバグについて議論をするために、グループが集まりました。グループはそれぞれのバグについてのアクションを決めるために、3時間以上を費やしました。グループの参加者は徐々に減っていき、最後にはアクションを決定できなくなってしまいました。（主要メンバーが既に帰ってしまった！）</p>

<h2>結論</h2>

<p>2日間に渡り続いたTPAC 2014のWebRTC WGも終わりです。WebRTC劇場へPromiseが追加されますし、策定中の大きな仕様変更もまだあります。今後数年間で追加されるである新機能が楽しみですね！</p>

<p>(本記事は、飯田 アレン真人が英語で執筆し、編集部の岩瀬 義昌により翻訳されました)</p>
]]></content:encoded>
		
		<series:name><![CDATA[WebRTC]]></series:name>
	</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>
		<item>
		<title>エキスパートがぶっちゃけトークで語る「ハイブリッドアプリ開発、ホントのトコロ」</title>
		<link>/miyuki-baba/7643/</link>
		<pubDate>Mon, 04 Aug 2014 00:00:11 +0000</pubDate>
		<dc:creator><![CDATA[馬場 美由紀]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[W3C仕様]]></category>
		<category><![CDATA[html5j]]></category>
		<category><![CDATA[デバイス]]></category>
		<category><![CDATA[ハイブリッド]]></category>

		<guid isPermaLink="false">/?p=7643</guid>
		<description><![CDATA[連載： ハイブリッドアプリ開発最前線 (9)HTML5を活用したハイブリッドアプリ開発について、Web業界を代表するエキスパート陣が様々な観点からレポートをお届けした「ハイブリットアプリ開発最前線」特集。 最後のレポート...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/hybrid-special/" class="series-181" title="ハイブリッドアプリ開発最前線" data-wpel-link="internal">ハイブリッドアプリ開発最前線</a> (9)</div><p>HTML5を活用したハイブリッドアプリ開発について、Web業界を代表するエキスパート陣が様々な観点からレポートをお届けした「<a href="https://html5experts.jp/series/hybrid-special/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ハイブリットアプリ開発最前線</a>」特集。</p>

<p>最後のレポートは「ハイブリッドアプリ開発、ホントのトコロ」と題し、第48回HTML5とか勉強会「ハイブリッドアプリ開発最新動向」の懇親会で行われたぶっちゃけトーク対談を再現レポートします。</p>

<p><img src="/wp-content/uploads/2014/07/main3.jpg" alt="" width="640" height="200" class="alignnone size-full wp-image-8045" srcset="/wp-content/uploads/2014/07/main3.jpg 640w, /wp-content/uploads/2014/07/main3-300x93.jpg 300w, /wp-content/uploads/2014/07/main3-207x64.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /><br><span style="font-size: 95%;">▲登壇者（左から）：株式会社ニューフォリア <a href="https://html5experts.jp/htpboost/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">畠田喜丈</a>さん、アシアル株式会社 <a href="https://html5experts.jp/anatoo/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">久保田光則</a>さん、AngularJS Japan User Group管理人 <a href="https://html5experts.jp/canidoweb/ " data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">金井健一</a>さん、Google Developer Expert（Chrome）<a href="https://html5experts.jp/yoshikawa_t/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">吉川徹</a>さん<br>モデレーター：HTML5 Experts.jp編集長 <a href="https://html5experts.jp/shumpei-shiraishi/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">白石俊平</a></span></p>

<h2>ハイブリッドアプリ開発にしてよかったことは？</h2>

<p><br>
<strong>白石：</strong>ハイブリッドアプリ開発が注目され出してもう数年が経つんですが、まだくすぶってる感があると思うんです。今日は本音でいろいろ聞けたらと。まず、ハイブリッドアプリ開発にしてよかったと思うことを聞かせてください。<br><br>
<strong>久保田：</strong>僕はハイ・フィデリティ（忠実度の高い）なプロトタイプをさくっと作れることですね。アプリの機能は動かないけど、アプリのユーザーインターフェイスやインタラクションがわかる。動きやさわった感じが確かめられるし、アプリケーションの見た目の“ガワ”を作るのが断然早くなります。<br><br>
これがいいアプリなのか判断に迷うフェーズでも、実際のUIの“ガワ”をがっちり作ることで、高い確度で確かめることができる。それに、クロスデバイス,クロスプラットフォームでがしがし動くので、アプリのUIを確かめるのに役立っています。サービスの受託でやってたときに、お客様にもそんなに早くできるのかって驚かれたこともありますね。</p>

<p><div id="attachment_8051" style="width: 650px" class="wp-caption alignnone"><a href="https://html5experts.jp/anatoo/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/kubota3.jpg" alt="アシアル株式会社　久保田 光則さん" width="640" height="321" class="size-full wp-image-8051" srcset="/wp-content/uploads/2014/07/kubota3.jpg 640w, /wp-content/uploads/2014/07/kubota3-300x150.jpg 300w, /wp-content/uploads/2014/07/kubota3-207x103.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">アシアル株式会社　久保田 光則さん</p></div>
<br>
<strong>白石：</strong>ちなみにそのプロトタイプって、PCのWebブラウザでも動くんですか？<br><br>
<strong>久保田：</strong>動きますよ。開発スタイルにもよりますが、モバイルでいちいち確認するより、Webブラウザでも確認できたほうが早かったりします。お客さんにもすぐ触ってもらえるし、開発の後半で「ここのUIがいけてない」と指摘されるのを最初からつぶせるので便利です。<br><br>
<strong>畠田：</strong>そんな高品質なプロトタイプを無料で作っちゃうと、受注先のシステムインテグレーション企業とかに、「こんなに簡単にできるんなら安くして」って言われたりすることがありそう。なんかすごく頑張って作ったのに、損した気分にならない？<br><br>
<strong>久保田：</strong>もちろんハイブリッドアプリの利便性を理解してくれる、リテラシーが高いお客さんであることは条件になるかなと思います。<br><br>
<strong>畠田：</strong>やっぱり（笑）。<br><br>
<strong>畠田：</strong>私がハイブリッド開発で良いと思える点は、デザイナーとエンジニアの分担作業がしやすいところですね。モバイルアプリの案件って、だいたいUI上の要件は似たようなものが多いし、そういう繰り返し作業ってエンジニアにはつらいんですよね。同じことをずっとやり続けるのって技術力の向上も期待できないし。<br><br>
その点、ハイブリッドアプリはUIのデザインはコーディングも含めてデザイナーにお任せしやすいので、エンジニアはロジックに集中できる。早い・安いだけではない、エンジニアのモチベーションの根っこの部分に寄与することも多いような気がします。<br><br>
<strong>白石：</strong>HTML5を書けるデザイナーさんは増えてますもんね。<br><br>
<strong>金井：</strong>僕はある程度動くものがサクッと作れるので、早い段階からアプリのイメージをお客さんと共有できることですね。コストをかけずにハイブリッドアプリでまずリリースして、人気が出たらネイティブにしてもいいし、ダメならそのままで、みたいな選択肢がある。はじめからAndroidとiPhone用のネイティブアプリを両方開発するより、リスクが少ない。</p>

<p><img src="/wp-content/uploads/2014/07/photo.jpg" alt="" width="640" height="367" class="alignnone size-full wp-image-8067" srcset="/wp-content/uploads/2014/07/photo.jpg 640w, /wp-content/uploads/2014/07/photo-300x172.jpg 300w, /wp-content/uploads/2014/07/photo-207x118.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><br>
<strong>白石：</strong>ところで、ここまでクロスプラットフォームでの移植性の話があまり出てきていませんね。ハイブリッドの利点といえばそこだと思っていたので、意外。<br><br>
<strong>畠田：</strong>ああ、移植性については、まずありきのつもりで話してました。<br><br>
<strong>久保田：</strong>そうですね。ちなみに私はAndroid版は動作が遅いので、先に作るようにしています。前にiOSから作ってAndroidに移植したら遅くて大変な目に合ったことがあって…。<br><br>
<strong>白石：</strong>ちなみに最近は、Androidは2.3以上をターゲットにして開発しているんですか？まだ2.2もスコープに入ってるのかな。<br><br>
<strong>畠田：</strong>2.2が要求仕様書に入ってるところはまだ多いですね。ただ「端末買い換えが2年だからそこは切り捨てましょう」って、そこは削ってもらうように説得しようと試みますけどね（笑）。<br><br>
<strong>吉川：</strong>私は一エンジニアとしての視点から、ハイブリッドアプリでよかった点をお話すると、やはりWebエンジニアがJavaやObjective-Cが書けなくても、AndoroidやiOSアプリの仕事が受けられることですね。最近はWebのコードで書いて、Cordovaでコンパイルすればアプリが作れる。仕事の幅が広がって楽しいです。<br><br>
<strong>──ここで会場から質問が寄せられた</strong><br><br>
<strong>Q.</strong>ハイブリッドアプリというと移植性の話もあるけど、クックパッドの事例が成功として挙げられます。ユーザーを絞り込んだABテストが容易にできるだけではなく、デブロイの早さなどを考慮してハイブリッドアプリにしていると聞いたことがあるのですが、そのほかにハイブリッドアプリにしかできないことってありますか？<br><br>
<strong>畠田：</strong>ハイブリッドアプリって遅いんじゃないか？というハイブリッドアプリに否定的な声に対抗できるので、クックパッドさんの成功事例は我々にとってありがたいですね。<br><br>
詳しくは存じ上げないのですが、クックパッドさんにとっては、新機能のデプロイまでの時間を短くするための、現時点での最善策がハイブリッドアプリなのではないでしょうか。</p>

<p><div id="attachment_8046" style="width: 650px" class="wp-caption alignnone"><img src="/wp-content/uploads/2014/07/hatada.jpg" alt="株式会社ニューフォリア　畠田喜丈さん" width="640" height="351" class="size-full wp-image-8046" srcset="/wp-content/uploads/2014/07/hatada.jpg 640w, /wp-content/uploads/2014/07/hatada-300x164.jpg 300w, /wp-content/uploads/2014/07/hatada-207x113.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /><p class="wp-caption-text">株式会社ニューフォリア　畠田喜丈さん</p></div>
<br>
<strong>久保田：</strong>機能面やUXの観点からいうと、なんだかんだ言っても“ネイティブが最高！”だと思ってます。だって、FacebookやTwitterはプラットフォームに合わせて書き換えてるじゃないですか。結局、それが一番いい体験だからなんですよね。ハイブリッドの利点は、機能やUXとは別の側面から語られるべきかな、と思います。<br><br>
<strong>──さらに会場からの質問が飛ぶ</strong><br><br>
<strong>Q.</strong>最近、ハイブリッドアプリを開発するときに、（PhoneGap）プラグインを使わないでできることが少なくて苦戦しています。時には、ネイティブコードでプラグインを書く必要が生じたりとか。これって、Web技術で全部書くという理想から言うと残念なのですが、どうお考えですか？<br><br>
<strong>久保田：</strong>さっき“ネイティブが最高！”と言ったのは、アプリの要件と環境によります。FacebookやTwitterみたいに開発予算があって、エンジニアが揃えられればなんでもできると思いますが、全部のプロジェクトがそんなことができるかというとできない。プラットフォームごとに最高のUXを提供することよりも、リリースのスピードや限られた予算と言った事情が優先されることもあるということです。<br><br>
だから絶対HTML5で書かなければいけないと思い込む事自体、ナンセンスかなと。例えばリリースのスピードが優先されている場合に、ネイティブで書いたほうが早ければ、ネイティブで書けばいいと思います。<br><br>
<strong>吉川：</strong>ネイティブでしか書けないものはネイティブアプリで作ればよいので、私は基本的にはハイブリッドアプリで“ネイティブコードで書いたら負け”と思ってます。ただ、お客さんはモバイルアプリ大好きなので、何でもかんでもモバイルで作ってくださいと言ってくることが多いのも現実としてあります。その時は機能面で妥協できるのかとか、それなりのコストがかかることを提示して、なるべくプラグインで書かなくていいようにしています。それくらいプラグインを書くのはつらい（笑）。</p>

<h2>ハイブリッドアプリで開発してドはまりしたことある？</h2>

<p><br>
<strong>白石：</strong>ところで、ハイブリッドアプリでドはまりした経験はありますか？デバックが全然できなかったとか、移植したら動作が違うとか。<br><br>
<strong>金井：</strong>端末によって同じCSSなのに見た目が全然違うのもそうですが、JavaScriptの挙動も違うところ。一方の端末は滑らかに動くのに、別の端末だとカクカクだったり、もっさりしたり。とにかく端末ごとに挙動が違うのは予想できないので、トライ＆エラーを繰り返すことになりましたね。</p>

<p><div id="attachment_8060" style="width: 650px" class="wp-caption alignnone"><a href="https://html5experts.jp/canidoweb/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/kanai11.jpg" alt="html5j Web先端技術味見部部長　AngularJS Japan User Group 管理人　金井 健一さん" width="640" height="350" class="size-full wp-image-8060" srcset="/wp-content/uploads/2014/07/kanai11.jpg 640w, /wp-content/uploads/2014/07/kanai11-300x164.jpg 300w, /wp-content/uploads/2014/07/kanai11-207x113.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">html5j Web先端技術味見部部長　AngularJS Japan User Group 管理人　金井 健一さん</p></div>
<br>
<strong>──会場からも同様の経験談が寄せられる</strong><br><br>
<strong>Q.</strong>2年前くらいにハイブリッドアプリを開発したとき、Android2.2と2.3の全盛期だったんですが、同じCSSを適用しているのにデバイスによって見た目が違うのが困りました。最近はどうなんでしょうか？<br><br>
<strong>吉川：</strong>最近のAndroidだと4.1以降は標準ブラウザがChromeになっていますし、4.4からは、内部のWebViewもBlink(Chromeのレンダリングエンジン)が利用されるようになっているので、2.x時代に比べると大分改善されていると思います。<br><br>
<strong>──ここで、当時のひどい開発事例の話が盛り上がり</strong><br><br>
<strong>畠田：</strong>昔は見た目のスピードを上げるために、ひどいハックをする端末メーカーもありました。ここにいるメンバーはハイブリッドアプリを推進する立場の人間だけど、なんでもかんでもハイブリッドアプリがいいですよと万能の薬のように言っていけないと思うんです。<br><br>
ハイブリッドアプリに向いてないものは全力で羽交い絞めして、止めるべきなんですよね。そうでないとハイブリッドアプリ自体が間違った方向で捉えられてしまう。ネイティブで開発したほうがいいものは、ちゃんとジャッジして伝えてあげるのも重要ですね。</p>

<h2>標準化の動きはどうなってる？</h2>

<p><br>
<strong>白石：</strong>CordovaやニューフォリアのAPI、Chrome AppsのAPIなど、モバイルデバイス向けのWeb APIは細分化しつつありますが、これって標準化できないものなんでしょうか。<br><br>
<strong>──ここで、白石さんが突然会場の<a href="https://html5experts.jp/futomi/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">羽田野太巳</a>さんを指名</strong><br><br>
羽田野さん、現状ってどんなかんじなんですか？<br><br>
<strong>羽田野：</strong>最新情報はあまりよく知らないんだけど、統一はしばらくないんじゃないかと思います。もちろんいつかは一緒にするために施策を立てているとは思いますが、現在はFirefox OS/Windows 8/Chrome Appsなど、各ベンダーが独自にAPIを作り込んでるのが現状です。<br><br>
でも、いつか標準化してくれるからそれまで開発を待とうなんてベンダーはないわけで。いろいろAPIが出てきて、いろんな事例を経験して、みんなが試していいものが残っていくし、ある意味健全です。だからまだまだ時間がかかる。個人的にはベンダーがそれぞれ独自のAPIで作っていくのは大歓迎ですね。<br><br>
これまではネイティブでしかできなかったことが、JavaScriptで何でも開発できるようになってきました。今はばらばらだけど、一つのプログラム言語だけでできるようになりつつあると思います。これはまだデファクトではないけど、コンソーシアム標準的には前向きに捉えていいのではないでしょうか。</p>

<p><div id="attachment_8032" style="width: 650px" class="wp-caption alignnone"><a href="https://html5experts.jp/futomi/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/hatano.jpg" alt="羽田野 太巳さん" width="640" height="327" class="size-full wp-image-8032" srcset="/wp-content/uploads/2014/07/hatano.jpg 640w, /wp-content/uploads/2014/07/hatano-300x153.jpg 300w, /wp-content/uploads/2014/07/hatano-207x105.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">有限会社futomi 代表取締役、株式会社ニューフォリア　取締役　最高技術責任者 羽田野 太巳さん</p></div>
<br>
<strong>吉川：</strong>ちなみに、Chrome AppsのAPIはまだ標準化するつもりはないと思います。将来的にはW3Cの議題にのせるという話も出ていますが、今は各プラットフォームが独自に作ってて、そのフィードバックを収集している段階じゃないかと。<br><br></p>

<h2>HTML5でデバイスごとの互換性や移植性がとれてない？</h2>

<p><br>
<strong>白石：</strong>ところで、HTML5ならデバイスごとの互換性や移植性がとれると言われていたのに、結局選ぶプラットフォームに依存していて、互換性がとれてないですよね？その辺はいかがでしょうか。</p>

<p><div id="attachment_8062" style="width: 650px" class="wp-caption alignnone"><a href="https://html5experts.jp/shumpei-shiraishi/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/shiraishi.jpg" alt="HTML5 Experts.jp編集長 　白石 俊平さん" width="640" height="305" class="size-full wp-image-8062" srcset="/wp-content/uploads/2014/07/shiraishi.jpg 640w, /wp-content/uploads/2014/07/shiraishi-300x142.jpg 300w, /wp-content/uploads/2014/07/shiraishi-207x98.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">HTML5 Experts.jp編集長　白石 俊平</p></div>
<br>
<strong>久保田：</strong>ネイティブの機能を呼び出すCordovaプラグインのAPIインターフェイスは、なるべく全部W3Cが出した仕様に従ってポリフィルを作っています。<br><br>
<strong>羽田野：</strong>そもそもHTML5に関わらずプラットフォームに対する互換性がないとか、Web標準やHTML5に期待しすぎな面があるよう気がします。Web標準ってキャッチアップにしかすぎなくて、最先端のものがいきなり標準化されるわけではありません。これまで標準化されたのはHTML5というのはWebの延長であって、アプリプラットフォームはあとから出てきたものなんですよね。<br><br>
OSが提供するAPIの数からすれば、WebのAPIなんてまだまだ足りない。はじめからHTML5が何でもできると思ってしまうこと自体ナンセンスで、足りないものは独自実装に頼るしかない。WebとOSの差分はどうしても出てしまうけど、それはしょうがないし、期待しすぎてはいけない。それでもこのトレンドでWebの技術しかなかった人がアプリを作れるようになってきたのだから、十分価値があると思います。<br><br>
<strong>畠田：</strong>Web技術の応用範囲はすごい勢いで広がっています。標準化のスピードと比較しても圧倒的に早いわけです。例えばクルマに使おうかとか、今まで思ってもみなかったところに拡大していて、私たちWeb業界の人間からすると、すごく面白いわけです。だから今は標準化はまだ先でもいいんじゃないかと思います。<br><br>
<strong>羽田野：</strong>もう一つ、標準化に対してブラックな話をすると、皆さんの仕事の単価が下がることにもつながるんです。だって誰が作っても同じクオリティのアプリがプラットフォームに上がってくるんですから、お金を取る理由がなくなってくるんです。<br><br>
今みたいにプラットフォームごとにばらばらのカオスな状況だからこそ、コストも請求できるといういい面もある。だから誰が作っても同じというものだけが標準化されていけばいい。価値が下がって単価が下がってもいいものだけが、標準化されればいいと考えたほうがいいと思いますよ。</p>

<h2>さまざまなデバイスでWeb技術が果たす役割</h2>

<p><br>
<strong>白石：</strong>これからさらに様々なデバイスが登場し、Web技術が果たす役割も増えていくと思います。皆さんはどのようにお考えですか？</p>

<p><img src="/wp-content/uploads/2014/07/photo3.jpg" alt="" width="640" height="341" class="alignnone size-full wp-image-8070" srcset="/wp-content/uploads/2014/07/photo3.jpg 640w, /wp-content/uploads/2014/07/photo3-300x159.jpg 300w, /wp-content/uploads/2014/07/photo3-207x110.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><br>
<strong>吉川：</strong>いろんなデバイスにWebの技術が広がっていくのはうれしいですね。Webの進化のスピードに合わせて、デジタル家電のUIやデザインの進化も加速するはず。期待したいです。<br><br>
<strong>畠田：</strong>ユーザーインターフェイスもだんだんWebに準じたものになり、今まで古くさかったデザインやUIが洗練されたものになっていくはずです。Webで活躍しているエンジニアやデザイナーたちによって使いにくいインターフェイスやマニュアルなどが革新されていく。誰でも使えるようになる世界が早く来てほしい。<br><br>
<strong>白石：</strong>ただ僕が心配しているのは、ウェアラブルなデバイスなど、デバイスの小型化がどんどん進んでいる現状では、デバイスの「非力化」も進んでいるんじゃないかと思うのです。そうなると、比較的高いCPUパワーを必要とするWeb技術は敬遠されて、ネイティブが当たり前になっちゃうんじゃないかと。Webブラウザを搭載しないデバイスも増えてきそうです。<br><br>
<strong>吉川：</strong>それは心配ないんじゃないでしょうか。ハードウェアの進化があったからこそ、ウェアラブルが出てきたはず。今後もハードウェアの進化は続くでしょう。<br><br>
例えば、昔のインターネット回線が遅かった時代は動画なんてありえませんでしたが、回線が早くなったからこそ品質が良くなって動画サービスがブレイクした。要は、環境次第で変わるということです。今は、ハードウェアの性能が上がってきているからこそ、Webを組み込んでも大丈夫じゃないかという流れですね。未来はそんなに暗くはないんじゃないかな。</p>

<div id="attachment_8054" style="width: 650px" class="wp-caption alignnone"><a href="https://html5experts.jp/yoshikawa_t/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/yoshikawa2.jpg" alt="Google Developer Expert（Chrome）　吉川 徹さん" width="640" height="295" class="size-full wp-image-8054" srcset="/wp-content/uploads/2014/07/yoshikawa2.jpg 640w, /wp-content/uploads/2014/07/yoshikawa2-300x138.jpg 300w, /wp-content/uploads/2014/07/yoshikawa2-207x95.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">Google Developer Expert（Chrome）　吉川 徹さん</p></div>

<p>さらに会場からは、HTMLとJavaScriptとCSSで書くから重くなるのではないかという声も。JavaScriptだけにすれば軽くなるのではという意見や、3つ以外の言語や新たなレンダリングエンジンが生まれる可能性、WebGLやFamo.usなどに対する期待の声も多く聞かれました。</p>

<p>未来のデバイスとWeb技術にも夢を馳せながら語り合った対談もここで終了。Webとネイティブのメリット、デメリットを合わせ持つハイブリッドアプリが、今後デバイスやWeb技術の進化とともにどう技術的課題をクリアしていくのか。編集部では今後も最新事情をお伝えしていきたいと思います。</p>

<h4>★今回の登壇者が執筆したハイブリッドアプリ特集記事もぜひ合わせてご覧ください。</h4>

<ul>
<li>久保田光則さん執筆：<a href="https://html5experts.jp/anatoo/7253/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTML5ハイブリッドアプリ開発、最新動向はやわかり！</a></li>
<li>金井健一さん執筆：<a href="https://html5experts.jp/canidoweb/7359/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">キミはionicを知っているか？AngularJS+PhoneGap+美麗コンポーネント群！</a></li>
<li>畠田喜丈さん執筆：<a href="https://html5experts.jp/htpboost/8318/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">PhoneGapとは一味違う！純国産ハイブリッドアプリフレームワーク、「アプリカン」事始め</a></li>
<li>吉川徹さん執筆：<a href="https://html5experts.jp/yoshikawa_t/9240/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Chrome AppsをモバイルでもーChrome Apps on mobileー</a></li>
<li>ハイブリッドアプリ開発最前線：特集レポート一覧は<a href="https://html5experts.jp/series/hybrid-special/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">こちら</a></li>
</ul>
]]></content:encoded>
		
		<series:name><![CDATA[ハイブリッドアプリ開発最前線]]></series:name>
	</item>
		<item>
		<title>ServiceWorker解説 &#8211; オフラインWebアプリケーション開発技術の最前線</title>
		<link>/iwase/7006/</link>
		<pubDate>Fri, 23 May 2014 03:00:45 +0000</pubDate>
		<dc:creator><![CDATA[岩瀬 義昌]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[ServiceWorker]]></category>
		<category><![CDATA[W3C仕様]]></category>

		<guid isPermaLink="false">/?p=7006</guid>
		<description><![CDATA[今月上旬5月8日に、W3CよりServiceWorkerの草案初版が提示されました。ServiceWorkerは、オフラインWebアプリケーションの開発者が問題と考える点を解決する、非常に魅力的な仕様です。日本語の情報が...]]></description>
				<content:encoded><![CDATA[<p>今月上旬5月8日に、W3Cより<a href="http://www.w3.org/TR/2014/WD-service-workers-20140508/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">ServiceWorkerの草案初版</a>が提示されました。ServiceWorkerは、オフラインWebアプリケーションの開発者が問題と考える点を解決する、非常に魅力的な仕様です。日本語の情報がほとんどないこのタイミングで、HTML5 Expert.jp編集部が解説いたします！</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/05/ScreenShot2014-05-22-2.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/05/ScreenShot2014-05-22-2.png" alt="ScreenShot2014-05-22-2" width="847" height="522" class="alignnone size-full wp-image-7015" srcset="/wp-content/uploads/2014/05/ScreenShot2014-05-22-2.png 640w, /wp-content/uploads/2014/05/ScreenShot2014-05-22-2-300x184.png 300w, /wp-content/uploads/2014/05/ScreenShot2014-05-22-2-207x127.png 207w" sizes="(max-width: 847px) 100vw, 847px" /></a></p>

<h2>ServiceWorkerとは</h2>

<p>ServiceWorkerは、リソースの永続的なキャッシュを可能にする、およびWebアプリケーションのリソース要求の処理を可能にする新しい機能です。Webページを開く前であっても（ネットワークの接続/切断の有無にかかわらず）、独自の処理を挟み込めるのがポイントです。クライアント側に、一種のプロキシサーバがあるようにイメージされると分かりやすいと思います。</p>

<p>ServiceWorker自体は、WebWorker同様にJavaScriptで記述し、特にWebWorkerの一種であるSharedWorkerに似ています。最大の違いとしては、SharedWorkerはWebページによってコントロールされるのに対し、ServiceWorkerはWebページをコントロールします。任意のWebアプリケーション(ServiceWorker)がひとたびインストールされると、次回以降のアクセスでは、ブラウザ側の処理がはじまる前に、ServiceWorkerの処理が起動します。</p>

<h3>注意点(ブラウザのサポート状況について)</h3>

<p>執筆時点では、ServiceWorkerをサポートするブラウザはありません。Chrome Canaryでは、以下のようにchrome://flagsにて一部の機能を有効化できますが、あくまで一部の機能であり、後述するキャッシュからリソースを取得する機能等、多くの機能は動作しません。</p>

<div id="attachment_7007" style="width: 689px" class="wp-caption alignnone"><a href="https://html5experts.jp/wp-content/uploads/2014/05/ScreenShot2014-05-22.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/05/ScreenShot2014-05-22.png" alt="Chrome://flagsのスクリーンショット" width="679" height="310" class="size-full wp-image-7007" srcset="/wp-content/uploads/2014/05/ScreenShot2014-05-22.png 640w, /wp-content/uploads/2014/05/ScreenShot2014-05-22-300x136.png 300w, /wp-content/uploads/2014/05/ScreenShot2014-05-22-207x94.png 207w" sizes="(max-width: 679px) 100vw, 679px" /></a><p class="wp-caption-text">Chrome://flagsのスクリーンショット</p></div>

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

<p>オフラインWebアプリケーションの開発において、よく知られるキャッシュ機能にApplicationCacheがあります。ApplicationCacheは、ネットワークが切断されている状態であっても、事前にキャッシュしたコンテンツを、Webアプリケーションに提供しますが、<a href="https://html5experts.jp/kyo_ago/2466/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">こちらの記事</a>でも言及されているとおり、様々な問題を抱えています。</p>

<p>例えば、ApplictionCacheは一部のキャッシュのみを更新することができません。ApplicationCacheでは、キャッシュしたいリソースを以下のようなmanifestファイルにすべて記載しておく必要があり、</p>

<p></p><pre class="crayon-plain-tag">CACHE MANIFEST
index.html
stylesheet.css
yourapp.js
myimage.png   <!-- このファイルだけ更新したい！ --></pre><p></p>

<p>ブラウザがWebページにアクセスした際に、これらのリソースはすべてダウンロードされます。仮に上記のコメント箇所のように、リソースの一部のキャッシュのみを更新したいと考えていても、不可能となります。</p>

<p>上記の例は、ApplicationCacheの抱える問題点の一例に過ぎず、その他にも問題点が多くあります。ServiceWorkerは、これらの問題点に対する解決方法となります。</p>

<p>以下で、W3Cの草案で示されるコードサンプル(本記事では一部簡略化)を参考に、利用イメージを解説します。W3Cの例では、非同期処理にpromiseを利用しています。本記事ではpromiseの解説はいたしませんので、必要に応じて<a href="https://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Reference/Global_Objects/Promise" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">MDN</a>等を参照ください。なお、前述した通りで、執筆時点でServiceWorkerが動作するブラウザはありませんので、以下のコードは実際には動作しない点にご注意ください。</p>

<h2>ServiceWorkerの利用イメージ</h2>

<p>例えば、https://www.example.com/index.htmlにて、ServiceWorkerを利用するケースを考えます。(ServiceWorkerはセキュリティの都合上、HTTPSが必須となる点に注意ください) 先に処理フローを図示し、その後にコード例で解説いたします。</p>

<p style="text-indent: 0em">※ 2014/05/23 追記：ServiceWorkerの処理フローを示す図を追加いたしました。（本図は、Expertsの川田さんから提供いただきました）</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/05/20140523_sw.001.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/05/20140523_sw.001.png" alt="ServiceWorkerの処理フロー" width="1024" height="768" class="alignnone size-full wp-image-7036" srcset="/wp-content/uploads/2014/05/20140523_sw.001.png 640w, /wp-content/uploads/2014/05/20140523_sw.001-300x225.png 300w, /wp-content/uploads/2014/05/20140523_sw.001-207x155.png 207w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>

<h3>Register(登録)</h3>

<p>まずServiceWorkerとして動作させたい処理を登録(register)します。</p>

<p></p><pre class="crayon-plain-tag">if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/assets/myapp.js').then(
  	function(serviceWorker) { 
  	  console.log("myapp.jsのインストールに成功しました")
    },
  	function(why) { 
  	  console.log("myqpp.jsのインストールに失敗しました");
  	}
  );
}</pre><p></p>

<p>上記により、/assets/myapp.jsがブラウザにダウンロード＆インストールされます。ひとたびmyapp.jsがインストールされると、次回以降のhttp://www.example.com/配下に存在するページにアクセス時に、myapp.jsの処理が起動します。前述したように、ネットワークが切断状態であってもmyapp.jsは起動しますし、もちろんブラウザ自体が持つキャッシュ機構よりも先に動作します。</p>

<p>なお、上記のコード例では http://www.example.com/ の配下すべてのリソースが対象となりますが、/hoge/* のように、scopeを制限することも可能です。その場合、以下のとおり、オプション引数であるscopeを設定してください。</p>

<p></p><pre class="crayon-plain-tag">if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/assets/myapp.js', {
    scope: 'hoge/*' // スコープを設定している
  }).then( ... );
}</pre><p></p>

<p>続いて、ServiceWorkerの処理を記載するmyapp.jsの例を見ていきましょう。</p>

<h3>Fetch(リソースの取得)</h3>

<p>myapp.jsは、WebWorker同様にWorkerスレッドで動作します。そのため、DOM操作はServiceWorkerでは利用できません。ServiceWorkerは、fetchイベントを利用してリソースへのリクエスト・レスポンスを処理します。</p>

<p></p><pre class="crayon-plain-tag">this.addEventListener('fetch', function(event) {
  console.log(event.request);
});</pre><p></p>

<p>上記の例では、http://www.example.com/*へアクセスしたすべてのタイミングで、fetchイベントが起動し、event.requestオブジェクトがコンソールに表示されます。event.requestオブジェクトは、例えば、URL、メソッド、ヘッダ等を含んでいます。</p>

<p>上記は単にリクエストを処理しているだけですが、任意のレスポンスをブラウザへ返すこともできます。</p>

<p></p><pre class="crayon-plain-tag">this.addEventListener('fetch', function(event) {
  event.respondWith(
    new Response({
      body: 'この内容はServiceWorkerが提供しています！'
    })
  );
});</pre><p></p>

<p>この例では、http://www.example.com/* へアクセスすると、「この内容はServiceWorkerが提供しています！」と表示されます。</p>

<h3>リソースのCache</h3>

<p>オフラインでも動作させるためには、キャッシュを利用する必要があります。キャッシュするためのコードは以下のようになります：</p>

<p></p><pre class="crayon-plain-tag">this.addEventListener('install', function(event) {
  var coreCache = new Cache();

  event.waitUntil(Promise.all([
    caches.add('core-v1', coreCache),
    coreCache.add(
      '/app.html',
      '/fallback.html',
      '/assets/v1/base.css',
      '/assets/v1/video.webm'
    )
  ]));
});</pre><p></p>

<p>ServiceWorkerのインストール成功時に発生するinstallイベントを利用して、キャッシュを準備します。Cacheおよびcaches(cacheListのインスタンス)は、ServiceWorkerが用意するストレージAPIです。上記例では、coreCache.add()にて、4つのリソースをキャッシュしています。</p>

<h3>Cacheしたリソースを取得する</h3>

<p>Cacheしたリソースを取得するには、fetchイベントを利用します：</p>

<p></p><pre class="crayon-plain-tag">this.addEventListener('fetch', function(event) {
  event.respondWith(
    caches.match(event.request).catch(function() {
      return cache.match('/fallback.html');
    })
  );
});</pre><p></p>

<p>上記では、event.requestで指定される内容がすでにcachesにあれば(caches.matchでrejectされなければ)、cacheされている内容を応答します。cachesにない場合は、.catch(&#8230;)の処理に進み、fallback.htmlの内容がブラウザに返されます。</p>

<h2>ServiceWorkerの更新</h2>

<p>ServiceWorkerは、Webページにアクセスするたびに、更新があるかどうか確認します。HTTP Cache-Controlヘッダにて、確認頻度を減らすことも可能ですが、ApplicationCacheに存在する問題を解決するために、長くとも24時間ごとにブラウザが更新を確認します。</p>

<p>もし、ServiceWorkerが以下のコード例のように少しでも異なるならば、新しいバージョンであるとブラウザは判断し、ServiceWorkerをインストールします。</p>

<p></p><pre class="crayon-plain-tag">this.addEventListener('install', function(event) {
  var coreCache = new Cache();

  event.waitUntil(Promise.all([
    caches.add('core-v2', coreCache), // v2にしている
    coreCache.add(
      '/app.html',
      '/fallback.html',
      '/assets/v2/base.css', // v2にしている
      '/assets/v1/video.webm'
    )
  ]));
});</pre><p></p>

<p>インストール処理の間は、現段階のバージョンがfetchイベントに対応し、新しいバージョンのServiceWorkerのインストール動作はバックグラウンドで動作します。</p>

<p>インストールが完了したら、新しいバージョンのServiceWorkerは待ち状態になり、、すべてのページにて現段階のバージョンの利用されなくなるのを待ちます。現段階のバージョンが利用されなくなると、新しいバージョンが動作を開始します。このとき、activateイベントが発生します：</p>

<p></p><pre class="crayon-plain-tag">this.addEventListener('activate', function(event) {
  event.waitUntil(
	// 古いキャッシュの削除等を実施
  );
});</pre><p></p>

<p>activateイベントは、上記コード例のように古いキャッシュの削除等、新しいバージョンのServiceWorkerで不要となるリソースの掃除に利用されます。</p>

<h2>まとめ</h2>

<p>本記事では、ServiceWorkerの登場背景、利用イメージについて解説しました。ServiceWorkerは今後、オフラインWebアプリケーションのコア技術となっていくと想定されます。まだ、ブラウザの実装も進んでいないことからも分かるように、ServiceWorkerはWebの最先端です。</p>

<p>今後も、HTML5 Experts.jpでは、今後も読者の皆様にWeb最先端の情報をお届けいたします！</p>

<h2>参考</h2>

<ul>
<li><a href="http://www.w3.org/TR/2014/WD-service-workers-20140508/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Service Workers &#8211; W3C First Public Working Draft（英語）</a></li>
<li><a href="https://github.com/slightlyoff/ServiceWorker" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">ServiceWorkerの詳細（英語）</a></li>
<li><a href="https://github.com/w3c-webmob/ServiceWorker" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">ServiceWorkerのユースケース（英語）</a></li>
</ul>
]]></content:encoded>
			</item>
		<item>
		<title>Web Componentsに関するパネル、WebとDOMとの関係性、ARIAのWeb標準化など海外WEBテク20本を一挙公開</title>
		<link>/cssradar/5987/</link>
		<pubDate>Mon, 07 Apr 2014 23:00:05 +0000</pubDate>
		<dc:creator><![CDATA[斉藤 祐也]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[W3C仕様]]></category>
		<category><![CDATA[Web Components]]></category>
		<category><![CDATA[海外]]></category>

		<guid isPermaLink="false">/?p=5987</guid>
		<description><![CDATA[連載： 海外WEBテク最新動向 (11)斉藤祐也の海外WEBテク定点観測＜Issue.12: 2014/03/01-2014/03/31＞ 今月の定点観測はWeb Componentsに関するパネル、WebとDOMとの関...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/web-tech/" class="series-151" title="海外WEBテク最新動向" data-wpel-link="internal">海外WEBテク最新動向</a> (11)</div><p><strong>斉藤祐也の海外WEBテク定点観測＜Issue.12: 2014/03/01-2014/03/31＞</strong></p>

<p>今月の定点観測はWeb Componentsに関するパネル、WebとDOMとの関係性、ARIAのWeb標準化などを紹介します。</p>

<h2>注目ニュースピックアップ</h2>

<h3><a href="https://www.youtube.com/watch?v=e29D1daRYrQ" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Web Componentsに関するパネルディスカッション</a></h3>

<p><img src="/wp-content/uploads/2014/04/edgeconf.png" alt="edgeconf" width="625" height="386" class="aligncenter size-full wp-image-5990" srcset="/wp-content/uploads/2014/04/edgeconf.png 625w, /wp-content/uploads/2014/04/edgeconf-300x185.png 300w, /wp-content/uploads/2014/04/edgeconf-207x127.png 207w" sizes="(max-width: 625px) 100vw, 625px" /></p>

<p>原題: EdgeConf 3: Components</p>

<p>3月21日にロンドンにて開催されたEDGE Conferenceにて議論されたWeb Components。このカンファレンスでの議論そのものも非常に興味深いものですが、このカンファレンスをきっかけに多くの議論がブログなどで展開されました。Web開発の未来を担うとすら表されるWeb Componentsがその未来へと着実に歩みを進めるためにどんな障害があるのでしょうか。様々な領域で活躍するエキスパートたちの意見を以下に関連リンクとしてまとめましたので、興味がある方はぜひそれぞれ一読を。</p>

<p>関連リンク:</p>

<ul>
<li><a href="http://coding.smashingmagazine.com/2014/03/04/introduction-to-custom-elements/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">A Detailed Introduction To Custom Elements &#8211; Smashing Coding</a></li>
<li><a href="http://webcomponents.github.io/articles/web-components-best-practices/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Web Components Best Practices &#8211; WebComponents.org</a></li>
<li><a href="http://aerotwist.com/blog/web-components-and-three-unsexy-pillars/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Web Components and the Three Unsexy Pillars &#8211; Aerotwist</a></li>
<li><a href="http://addyosmani.com/blog/the-webs-declarative-composable-future/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">The Web’s Declarative, Composable Future.</a></li>
<li><a href="http://www.brucelawson.co.uk/2014/notes-on-accessibility-of-web-components/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Notes on accessibility of Web Components &#8211; Bruce Lawson’s personal site</a></li>
<li><a href="http://www.emdeebeebee.com/golden_path" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">The Golden Path</a></li>
<li><a href="http://adactio.com/journal/6719/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Notes from the edge &#8211; Adactio</a></li>
</ul>

<h3><a href="http://acko.net/blog/shadow-dom/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Shadow DOM &#8211; Acko.net</a></h3>

<p><img src="/wp-content/uploads/2014/04/shadow-dom.png" alt="shadow-dom" width="625" height="386" class="aligncenter size-full wp-image-5991" srcset="/wp-content/uploads/2014/04/shadow-dom.png 625w, /wp-content/uploads/2014/04/shadow-dom-300x185.png 300w, /wp-content/uploads/2014/04/shadow-dom-207x127.png 207w" sizes="(max-width: 625px) 100vw, 625px" /></p>

<p>Steven Wittens氏により書かれたこの記事のタイトルはShadow DOMですが、あのShadow DOMではなく、DOMに関する問題点へ指摘と解決策の提言です。React.jsのようにDOMらしいものを生成しDOMを制御するアプローチがあったり、Angular.jsのようにHTMLによく似たシンタックスでDOMへのアプローチを隠蔽するアプローチがあったりと、DOMから離れれば離れるほどWebそのものがよいものになったように思えてくる。氏の狙いは非常に的確なものだと言えると思いますが、以下に関連リンクとして紹介しているCSS TricksのChris Coyer氏による反論も併せて読んでおくと良いでしょう。</p>

<p>関連リンク: <a href="http://css-tricks.com/hatin-web-tech/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Hatin&#8217; on Web Tech by CSS-Tricks</a></p>

<h3><a href="http://www.w3.org/blog/2014/03/wai-aria-expands-web-accessibility/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">WAI-ARIAがWebのアクセシビリティを拡張する &#8211; W3C Blog</a></h3>

<p><img src="/wp-content/uploads/2014/04/wai-aria.png" alt="wai-aria" width="625" height="386" class="aligncenter size-full wp-image-5992" srcset="/wp-content/uploads/2014/04/wai-aria.png 625w, /wp-content/uploads/2014/04/wai-aria-300x185.png 300w, /wp-content/uploads/2014/04/wai-aria-207x127.png 207w" sizes="(max-width: 625px) 100vw, 625px" /></p>

<p>原題: WAI-ARIA Expands Web Accessibility</p>

<p>Accessible Rich Internet Applications 1.0 (WAI-ARIA)、そして関連する仕様であるWAI-ARIA 1.0 User Agent Implementation GuideがW3C Recommendationとなりました。つまり、WAI-ARIAはWeb標準となったことを意味します。広範囲に及ぶ、実装だけではなく、テスト、そしてバグ修正を行い、多くのモダンブラウザですでにサポートされ、モバイル・ブラウザにおけるサポートも広がってきています。またHTMLだけではなく、EPub 3.0やSVG 2などの仕様にもWAI-ARIAを適応し、より広範囲でのアクセシビリティを提供していくそうです。</p>

<p>関連リンク:</p>

<ul>
<li><a href="http://thechangelog.com/we-make-the-web-lets-make-it-accessible/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">We Make the Web. Let&#8217;s Make It Accessible. &#8211; The Changelog</a></li>
<li><a href="http://www.marcozehe.de/2014/03/27/what-is-wai-aria-what-does-it-do-for-me-and-what-not/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">What is WAI-ARIA, what does it do for me, and what not? | Marco’s accessibility blog</a></li>
</ul>

<h3><a href="http://adactio.com/journal/6730/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Browsiness &#8211; Adactio</a></h3>

<p><img src="/wp-content/uploads/2014/04/browsiness.png" alt="browsiness" width="625" height="386" class="aligncenter size-full wp-image-5988" srcset="/wp-content/uploads/2014/04/browsiness.png 625w, /wp-content/uploads/2014/04/browsiness-300x185.png 300w, /wp-content/uploads/2014/04/browsiness-207x127.png 207w" sizes="(max-width: 625px) 100vw, 625px" /></p>

<p>本連載、<a href="https://html5experts.jp/cssradar/5484/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Issue. 11</a>にて紹介したJeremy Keith氏による「Webに課せられたある1つの矛盾」の考察に対する追記に当たる記事といえるでしょうか。記事はAndroidとiOSの違いについての考察から始まり、ネイティブとWebの差に話が及ぶ。その段になってKeith氏はWebとは何かという根源的な疑問に対し、氏がどのように考えているかについて語っていきます。<br />
氏は次の文で記事を締めくくります。
『分裂として捉えるのを辞め、多様性として捉え始めるべきだ。』<br />
氏の言葉通り、WebとはHTMLやCSS、JavaScriptで書かれたものだけを意味するものではないでしょう。</p>

<p>関連リンク: <a href="http://www.cennydd.co.uk/2014/why-dont-designers-take-android-seriously" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Why don&#8217;t designers take Android seriously? : Cennydd Bowles</a></p>

<h3><a href="http://annevankesteren.nl/2014/03/contributing-to-standards" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Web標準化に貢献するために必要なこと &#8211; Anne’s Blog</a></h3>

<p><img src="/wp-content/uploads/2014/04/contributing-standards.png" alt="contributing-standards" width="625" height="386" class="aligncenter size-full wp-image-5989" srcset="/wp-content/uploads/2014/04/contributing-standards.png 625w, /wp-content/uploads/2014/04/contributing-standards-300x185.png 300w, /wp-content/uploads/2014/04/contributing-standards-207x127.png 207w" sizes="(max-width: 625px) 100vw, 625px" /></p>

<p>原題: Contributing to standards</p>

<p>Anne van Kesteren氏はWeb標準化に貢献するためには、Web標準がコミュニティによって作られていることに気がつくことが大切なステップだとし、そのコミュニティでコミュニケーションに利用されているミディアムを追いかけることを次のステップとしています。もちろん貢献しようとしている標準そのものに詳しい必要もありますが、それらを取り巻く環境にまず慣れることが活動の第一歩だとしています。</p>

<p>関連リンク: <a href="https://www.youtube.com/watch?v=hneN6aW-d9w" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">How to win friends and influence standards bodies &#8211; Domenic Denicola</a> / Domenic Denicola氏がLXJS 2013にて発表した彼自身がどのように標準化団体にアプローチしたかについてのプレゼンテーション。</p>

<h2>海外トレンドコラム</h2>

<h3><a href="http://alistapart.com/blog/post/picture-element-qa" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Picture要素に関するQ&amp;A &#8211; An A List Apart</a></h3>

<p>原題: [A Q&amp;A on the Picture Element</p>

<p>Picture要素の復活に尽力したMarcos Caceres氏とYoav Weiss氏に対して、同じくResponsive Images Community Groupに所属しているMat Marquis氏がインタービュー。
Picture要素が以前のバージョンとどこが違うのか、それまでに登場したsrcsetやsrc-nという仕様や提案が現在のPicture要素にどのように影響しているのかなどについて詳しく解説しています。</p>

<h3><a href="http://ericportis.com/posts/2014/srcset-sizes/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Srcsetとsizes &#8211; ericportis.com</a></h3>

<p>原題: Srcset and sizes</p>

<p>Picture要素の現行仕様はどうしてそのシンタックスを採用したのでしょうか? この記事ではその疑問に対して、具体的なソースコードを見ながら現行の仕様とほかのレスポンシブ画像に対する解決案を比較しています。srcsetに加えて新たに追加されたsizesという属性が重要な役割を担っているのが一目でわかります。</p>

<h3><a href="http://www.forbes.com/sites/roberthof/2014/02/27/mobile-first-is-dead-says-google-display-ad-chief-neal-mohan/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">モバイル・ファーストはもう終わった、のか? &#8211; Forbes</a></h3>

<p>原題: Mobile-First Is Dead, Says Google Display Ad Chief Neal Mohan</p>

<p>Googleのディスプレイ広告部門の副社長を務めるNeal Mohan氏によると、多くのユーザーはもはやモバイルだけにフォーカスをしているだけでは時代遅れになりつつあるとしています。消費者達は多くのデバイスを駆使して、利用シーンに合わせてタスクを完遂しているとしています。なんと約90%ものユーザーがあるデバイスで開始したタスクを別のデバイスで完了しているとしています。モバイル・ファーストはすでに過去の問題を解決しようとしているに過ぎないと氏は語り、今後はマルチデバイスの最適化にフォーカスを移していくべきだとしています。</p>

<h3><a href="http://www.andybudd.com/archives/2014/03/my_advice_to_young_designers_and_develop/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">若いデザイナー、デベロッパに対するアドバイス &#8211; Andy Budd</a></h3>

<p>原題: My Advice to Young Designers and Developers</p>

<p>日本ではそうでもないと思いますが、大学を卒業するよりも業界の経験を積んでいる方が重宝される業界であるWeb業界において、大学に行く意味とはなんなのかをAndy Budd氏がアドバイス。</p>

<h2>パフォーマンス最適化 &#35;perfmatters</h2>

<h3><a href="http://aerotwist.com/blog/my-performance-audit-workflow/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Paul Lewis氏のパフォーマンスチェックフロー &#8211; Aerotwist</a></h3>

<p>原題: My Performance Audit Workflow</p>

<p>Googleの中でもパフォーマンスに注力しているPaul Lewis氏本人のパフォーマンスチェックのワークフローについて。氏はまずPageSpeed Insightsでサイト全体の状態を確認し、WebPageTestを使ってネットワーク周りのパフォーマンスを細かくチェック。それから、レンダリングに関わるパフォーマンスチェックを、<a href="http://calendar.perfplanet.com/2013/the-runtime-performance-checklist/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">このリスト</a>を参照しながら行っているそうです。このワークフローは手動で行うものがほとんどですが、自分が担当するプロダクトでは自動化できる部分は可能な限り自動化をしているとのこと。</p>

<h3><a href="http://jakearchibald.com/2014/browser-cache-vary-broken/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ブラウザキャッシュは”とても”壊れている &#8211; JakeArchibald.com</a></h3>

<p>原題: The browser cache is Vary broken</p>

<p>HTTPキャッシュはURLとHTTPメソッド(GETやPOSTなど)でコントロールするものですが、”Vary”ヘッダを利用してより細かく制限をすることができます。しかし、この”Vary”ヘッダは少々やっかいもので、IEでは”max-age”が無視され、Safariでは少々バグがあったりもします。この記事では具体的な例を見ながら”Vary”ヘッダの挙動について詳しく紹介しています。</p>

<h3><a href="http://blogs.adobe.com/webplatform/2014/03/18/css-animations-and-transitions-performance/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CSSアニメーションとトランジションのパフォーマンスについて &#8211; Web Platform Team Blog</a></h3>

<p>原題: CSS animations and transitions performance: looking inside the browser</p>

<p>ブラウザ内部がどのように動作しているのかを知ることで、CSSアニメーションやトランジションの記述をする前に、そのアニメーション/トランジションのパフォーマンスがよいものか、そうでないのかを知ることができます。この記事では特にGPUがどのようにパフォーマンスに作用するのか、そしてなぜ特定のプロパティをアニメートすることがパフォーマンスのボトルネックになるのかについて、詳しく解説しています。</p>

<h3><a href="https://www.webkit.org/blog/3271/webkit-css-selector-jit-compiler/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">WebKitのCSS JITコンパイラについて &#8211; Surfin&#8217; Safari</a></h3>

<p>原題: Little overview of WebKit’s CSS JIT Compiler</p>

<p>ブラウザはユーザーに対してよりよい体験を提供するために日々改善を行っています。この記事ではWebKitがCSSの解析にかかる時間をどう改善していくのかについて、JavaScriptの解析では当たり前のように利用されているJIT(Just In Time Compilers)をCSSのセレクタの解析に応用してみた結果について紹介しています。</p>

<h3><a href="http://flippinawesome.org/2014/03/10/is-jquery-too-big-for-mobile/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">jQueryはモバイルには大きすぎるのか? &#8211; Flippin&#8217; Awesome</a></h3>

<p>原題: Is jQuery Too Big For Mobile?</p>

<p>モバイルWebにおいて、パフォーマンスが特に重要なファクターであることはよく知られています。パフォーマンスの最適化に際し、デスクトップの時代には当たり前のように利用していたjQueryは、そのファイルサイズからモバイルでは利用されない傾向にあります。しかし、本当にjQueryはモバイルには大きすぎるのでしょうか?　この記事では実際のモバイル端末でjQueryを読み込み、どのくらいの時間がかかったのかを詳しく解析しています。また読み込みだけではなく、解析にかかる時間も加味した詳細なデータで疑問に答えてくれています。</p>

<h2>クローズアップ“ビデオ/スライド/ツール”</h2>

<h3>スライド</h3>

<h4><a href="http://quirksmode.org/presentations/Spring2014/viewports_jqueryeu.pdf" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Viewportとレスポンシブデザインの関係</a></h4>

<p>原題: Viewports or: why responsive design works</p>

<p>Peter-Paul Koch氏がjQUery EUで発表したこのプレゼンテーションは氏の得意とする詳細なテストによるデータを使ったViewportから見たレスポンシブ・デザインに関する実利的なアドバイスについてです。氏はまずピクセルとはなにかから解説し、モバイルとデスクトップのViewportsの違い、JavaScriptやMetaタグによるViewportsの仕組みについて詳しく解説しています。</p>

<p>関連リンク: <a href="http://quirksmode.org/mobile/overview.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">The Great Table</a> / Peter-Paul Koch氏による本プレゼンテーションで発表したViewportに関連するコンセプトのモバイルブラウザ別の対応状況をまとめた表。</p>

<h4><a href="http://www.slideshare.net/zomigi/leveling-up-with-flexbox-smashing-conference" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Flexboxを使って一歩上行くレイアウトを &#8211; Zoe Gillenwater</a></h4>

<p>原題: Leveling Up with Flexbox</p>

<p>Smashing ConferenceにてZoe Gillenwater氏が発表したFlexible Box Layoutを使ったレイアウトテクニックに関するプレゼンテーション。<br />
仕様として少々バタバタしていたFlexible Box Layoutですが、ようやく様々なブラウザで同じシンタックスが利用できるようにもなってきて、現実的なアプローチとして注目が集まってきています。氏はこのプレゼンテーションで様々なレイアウトテクニックを紹介しつつ、Flexible Box Layoutをサポートしていないブラウザに対するフォールバックについても紹介しています。</p>

<p>関連リンク: <a href="http://zomigi.com/blog/leveling-up-with-flexbox/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Leveling Up With Flexbox presentation at Smashing Conference</a></p>

<h4><a href="http://mattandrews.info/talks/port80-2013/#/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Guardian誌のレスポンシブデザイン対応について</a></h4>

<p>原題: Responsive design at the Guardian</p>

<p>イギリスの新聞であるGuardianにて、クライアントサイドWebデベロッパとして働くMatt Andrews氏によるプレゼンテーション。数年前にレスポンシブデザインを採用したBoston Globe誌を始め、最近ではBBCもレスポンシブデザインを採用しています。ニュースサイトにおけるレスポンシブデザインはなかなかハードルが高い部分がありますが、そのいくつものハードルをGuardianではどのように超えていったのかについて詳しく紹介しています。</p>

<h3>ツール</h3>

<h4><a href="https://html5sec.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTML5 Security Cheatsheet</a></h4>

<p>HTML5に関連する技術を使ったセキュリティに関する注意点と、その回避についてのチートシート。</p>

<h4><a href="http://bennettfeely.com/cssynth/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CSSynth</a></h4>

<p>CSSアニメーションを実際に目視しながらカスタマイズできるエディタ。特定のアニメーションに限ったエディタではありますが、エディタが作り出すスムーズなアニメーションは見ていて飽きません。</p>

<h4><a href="http://bennettfeely.com/filters/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CSS Filters Demo</a></h4>

<p>上で紹介したCSSynthの作者による別プロジェクト。こちらはCSSのフィルタを使ったデモ。</p>

<p>★次回の「斉藤祐也の海外WEBテク定点観測」は2014年5月1日にお届け予定です。★</p>
]]></content:encoded>
		
		<series:name><![CDATA[海外WEBテク最新動向]]></series:name>
	</item>
		<item>
		<title>Shared Workers復活？、CSSOM View更新ほか、2013年12月のWeb標準化動向</title>
		<link>/myakura/4888/</link>
		<pubDate>Tue, 04 Feb 2014 01:00:17 +0000</pubDate>
		<dc:creator><![CDATA[矢倉 眞隆]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[W3C仕様]]></category>

		<guid isPermaLink="false">/?p=4888</guid>
		<description><![CDATA[連載： WEB標準化動向 (3)TPACという大きなイベントも終了し、またホリデーシーズンに入ったこともあり、12月のW3Cはとても静か…と思いきや、結構な数の仕様に更新ありました。 また、先月ちょっとだけ取り上げたSh...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/webstandards-news/" class="series-156" title="WEB標準化動向" data-wpel-link="internal">WEB標準化動向</a> (3)</div><p><a href="https://html5experts.jp/wp-content/uploads/2014/02/W3C1.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/02/W3C1.jpg" alt="W3C" width="207" height="156" class="alignright size-full wp-image-5092" /></a>TPACという大きなイベントも終了し、またホリデーシーズンに入ったこともあり、12月のW3Cはとても静か…と思いきや、結構な数の仕様に更新ありました。</p>

<p>また、先月ちょっとだけ取り上げたShared Workersの今後について議論されるなど、思ったよりも動きのある12月でした。</p>

<h2>Shared Workers復活！？</h2>

<p><a href="https://html5experts.jp/myakura/3333/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">先月の記事</a>にて、WebApps WGのF2FにてShared Workersが削除されることを取り上げました。これはShared Workersの実装が乏しく、2つ以上の実装という勧告への要件を満たせないという懸念を受けてのアクションです。</p>

<ul>
<li><a href="http://lists.w3.org/Archives/Public/public-webapps/2013OctDec/0939.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Refactoring SharedWorkers out of Web Workers W3C spec</a></li>
</ul>

<p>しかし12月に入り、FirefoxがShared Workersを有効にしました（Firefox 29より利用可能となります）。</p>

<ul>
<li><a href="https://hg.mozilla.org/mozilla-central/rev/11f269e4597e" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">mozilla-central: changeset 159853 — Bug 924089 &#8211; Enable SharedWorker by default</a></li>
</ul>

<p>これを受け、Shared Workersを削除する必要があるのかといった議論が、WebApps WGのメーリングリストで交わされています。議論の中で<a href="http://lists.w3.org/Archives/Public/public-webapps/2013OctDec/0961.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">実はPrestoも実装していた</a>という話も出てきて、こないだの話はなんだったのだろう感が否めません。</p>

<p>とはいえ、この議論が出てきたのはその実装状況が不明だった、テストスイートによる検証がなされていなかったなど、現状把握を誰も行っていなかったことに起因します。メーリングリストでは、その後各ベンダーの担当者にWeb Workersのテストスイートを実行するよう要請したことで、実装状況と相互運用性の状況がわかりつつあります。</p>

<ul>
<li><a href="http://www.w3.org/wiki/Webapps/Interop/WebWorkers" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Webapps/Interop/WebWorkers &#8211; W3C Wiki</a></li>
</ul>

<p>議論を追うとテストケース自体への問題も指摘されており、Shared Workersが削除されるというよりもWeb Workers自体の問題に移行しているようです。</p>

<p>なお、Web Workersについてはいくつか機能追加の要望もあり、Level 2仕様への希望も出ました。Canvasの<code>ImageData</code>をWorkersで扱うインターフェースなどはすでにWHATWG HTMLで提案中ですが、synchronous message channelsなど別の機能も求められているようです。</p>

<p>冬休みに入ったためか議論が止まってしまい、今後は以前不透明です。とはいえ、実装が増えたことはShared Workersについて明るいニュースだったのではないでしょうか。</p>

<h2>CSSOM Viewが更新 ― <code>devicePixelRatio</code>、スムーズスクロール機能が追加</h2>

<p>2013年12月17日付けで、CSS WGから新しいCSSOM Viewの草案が公開されました。</p>

<ul>
<li><a href="http://www.w3.org/TR/2013/WD-cssom-view-20131217/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CSSOM View Module</a></li>
</ul>

<p>CSSOM ViewはCSS関連のオブジェクトモデルのうち、ブラウザやシステムに関わるプロパティを定義する仕様です。古くからある<code>clientWidth</code>や<code>getBoundingClientRect()</code>、比較的最近では<code>matchMedia()</code>などが定義されています。</p>

<p>今回の草案の見どころは、<code>window.devicePixelRatio</code>とスムーズスクロール関連の機能が定義されたことでしょうか。<code>window.devicePixelRatio</code>プロパティはAppleが高解像度モードのためにWebKitに導入した独自拡張で、Retina Displayをはじめ高密度ディスプレイへの対応をする際に使われています（ちなみにこのプロパティ、iPhone 4で初めてRetina Displayが登場するよりもずっと前の<a href="http://trac.webkit.org/changeset/15312" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">2006年に実装</a>されています）。他のベンダーも追従し、最近では<a href="http://msdn.microsoft.com/en-us/library/ie/dn265030" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">IE11でも実装</a>されました。</p>

<p>今回のCSSOM Viewではブラウザのズームとピンチズームの概念も導入され、さらに<code>devicePixelRatio</code>がブラウザズームの影響を受けると定義されました。これはGecko, Blink, Tridentの挙動に沿ったものですがWebKitの実装はそうではなく、Appleはこの定義に反対しています（WebKitではブラウザのズームにも、画面解像度の変更においても<code>devicePixelRatio</code>の値が変化しません）。</p>

<p>スムーズスクロール機能は現在、JavaScriptライブラリやスニペットを使って実装されていますが、タイマーを使ってちまちま<code>scrollTo()</code>をするものであまり効率が良い感じがしません。
今回の草案では新たに<a href="http://dev.w3.org/csswg/cssom-view/#smooth-scrolling:-the-&#039;scroll-behavior&#039;-property" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><code>scroll-behavior</code>プロパティ</a>というCSSプロパティが定義されました。<code>scroll-behavior: smooth</code>と指定すれば、対応する実装がネイティブのスムーズスクロールを利用するよう支持できます。</p>

<p>ほかにも、新たなメソッド<code>moveTo()</code>、<code>moveBy()</code>、<code>resizeTo()</code>、<code>resizeBy()</code>の導入や、<code>resize</code>イベントと<code>scroll</code>イベントが定義されたりなど盛りだくさんです。</p>

<h2>続CSSOM View ― PPK氏によるDPR調査など</h2>

<p>ブラウザの互換性調査などで有名なPeter-Paul Koch氏が、devicePixelRatioやズーム、screen関連のDOMプロパティについてコメントを寄せました。デスクトップのページズームはdevicePixelRatioに影響させるすべきでないなど、今の流れと正反対の意見を唱えており、ちょっとした議論になりました。</p>

<ul>
<li><a href="http://lists.w3.org/Archives/Public/www-style/2013Dec/0110.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">[css-om] Issues with width and resolution media queries</a></li>
</ul>

<p>CSSOM Viewはもともとあまり互換性のなかったデスクトップブラウザ間の挙動を、なんとか合わせるために策定が始まりました。しかしviewportやデバイスピクセル比などモバイルからもたらされた概念が関わり、さらにはブラウザのバグなどもあり混沌としています。今回の議論は、そういった概念の整理に加え、現在出回っているモバイルブラウザの挙動と、プラットフォームとしてどうあるべきかという仕様の方向が異なっていることも背景にありそうです。</p>

<p>なお、デバイスピクセル比については、ほかにも<a href="http://lists.w3.org/Archives/Public/www-style/2013Dec/0154.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><code>resolution</code>媒体特性が返す小数点の位がとる幅</a>について議論されています。</p>

<h2>仕様の断片化にどう対処するか</h2>

<p>Jens O. Meiert氏がHTML WG、CSS WG、WHATWGに、仕様の断片化についてアドバイスをしていました。</p>

<ul>
<li><a href="http://meiert.com/en/blog/20131205/spec-fragmentation/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CSS, HTML, and the Problem of Spec Fragmentation · Jens O. Meiert</a></li>
</ul>

<p>CSSはモジュール化というアプローチで策定されていますが、氏は以前より機能が増えすぎていることを問題視していました。また、CSSモジュールだけではなく、WHATWG仕様の一部やHTML仕様、SVGでもセレクタやプロパティが定義されてることに触れ、見通しの悪さも指摘しています。</p>

<p>HTMLについても、WHATWG HTMLとW3CのHTML5、それにHTML 5.1と細かなバリエーションがあります。氏は触れていませんが、拡張仕様やHTML仕様が参照するいくつかのDOM仕様も含めると、HTML関連仕様も数がかなり多くなりそうです。</p>

<p>Meiert氏は、実装する方においては都合がよいかもしれないが、開発者は複数の仕様の違いに戸惑うことを問題視しています。仕様の断片化についてはW3Cの勧告プロセスにあるのではないかと思いますが、たしかに仕様の分割が頻繁で、どの機能がどこにあるのかがわからなくなることしばしばと思います。</p>

<h2>Custom Elementsのメソッド名が変更</h2>

<p>いろんな「今年注目すべきWeb技術」的エントリで、ここ数年取り上げら続けているWeb Componentsですが、そのいち仕様であるCustom ElementsについてAppleよりコメントが寄せられました。<a href="w3c.github.io/webcomponents/spec/custom/" data-wpel-link="internal">Custom Elements仕様</a>はWeb Componentsの独自の要素を定義するための仕組みを用意します。要素を定義するためのメソッドはこれまで<code>document.register()</code>という名前でしたが、<code>register</code>という単語1語の名前が汎用的すぎるといったコメントが寄せられました。</p>

<ul>
<li><a href="http://lists.w3.org/Archives/Public/public-webapps/2013OctDec/0968.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">[custom elements] Improving the name of document.register()</a></li>
</ul>

<p>こういった名前に関する指摘は自転車小屋の議論に陥りやすく、W3Cで過去に起こった同様の議論でもあまりいい解決を見たことがありません。しかしながら、今回はApple, Mozilla, Googleなどベンダーの開発者からのフィードバックもあり、それなりに思慮深い話になった感じがします。</p>

<p>結果として、仕様は<code>document.registerElement()</code>を使うことになりました。Chromeの実装も変更されています。</p>

<h2>その他12月に公開されたWeb標準</h2>

<ul>
<li>12月3日付けで、<a href="http://www.w3.org/TR/2013/WD-css-shapes-1-20131203/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CSS Shapes</a>がCSS WGよりLast Callとして公開されました。大きな変更はTPACでのF2Fにて決定された構文の変更が仕様書に反映されたことでしょうか。</li>
<li>12月3日付けで、<a href="http://www.w3.org/TR/2013/WD-hr-time-2-20131203/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">High Resolution Time Level 2</a>の草案がWeb Performance WGより初公開にしてLast Callというすっとんだかたちで公開されました。Level 2での機能追加は今のところWeb Workersでのサポートとなっています。</li>
<li>12月5日付けで、<a href="http://www.w3.org/TR/2013/WD-cssom-20131205/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CSS Object Model</a>の草案がCSS WGより公開されました。カスケードされた後のスタイルや利用されるスタイルといったスタイルを取得するインターフェースや、CSSOMとしてセーフな値にする<code>CSS.excape()</code>メソッドなどが新たに定義されています。</li>
<li>12月10日付けで、<a href="http://www.w3.org/TR/2013/WD-DOM-Parsing-20131210/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">DOM Parsing and Serialization</a>がWebApps WGよりLast Callとして公開されました。<code>innerHTML</code>や<code>insertAdjacentHTML()</code>を定義する仕様です。</li>
<li>12月12日付けで、<a href="http://www.w3.org/TR/2013/REC-performance-timeline-20131212/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Performance Timeline</a>、<a href="http://www.w3.org/TR/2013/REC-user-timing-20131212/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">User Timing</a>が勧告されました。</li>
<li>12月17日付けで、<a href="http://www.w3.org/TR/2013/CR-pointerlock-20131217/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Pointer Lock</a>がWebApps WGより勧告候補として公開されました。</li>
<li>12月17日付けで、<a href="http://www.w3.org/TR/2013/WD-ime-api-20131217/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Input Method Editor API</a>の草案がWebApps WGより公開されました。IMEの候補ウインドウを描画するAPIが削除されたほか、Microsoftが提案したイベントやインターフェースが追加されました。</li>
</ul>
]]></content:encoded>
		
		<series:name><![CDATA[WEB標準化動向]]></series:name>
	</item>
		<item>
		<title>HTML5で実現できる！環境光に合わせたレスポンシブなUI</title>
		<link>/girlie_mac/4558/</link>
		<pubDate>Wed, 22 Jan 2014 01:00:45 +0000</pubDate>
		<dc:creator><![CDATA[Tomomi Imura]]></dc:creator>
				<category><![CDATA[デザイン]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[W3C仕様]]></category>
		<category><![CDATA[ブラウザ]]></category>
		<category><![CDATA[モバイル]]></category>

		<guid isPermaLink="false">/?p=4558</guid>
		<description><![CDATA[フロントエンド開発やデザインに携っている皆さんにとって、ここ数年間「レスポンシブ・ウェブ」についての話題は避けて通れないものとなっているでしょう。モバイルやタブレット上でも、ユーザー・エクスペリエンスを失うことのないウェ...]]></description>
				<content:encoded><![CDATA[<p>フロントエンド開発やデザインに携っている皆さんにとって、ここ数年間「レスポンシブ・ウェブ」についての話題は避けて通れないものとなっているでしょう。モバイルやタブレット上でも、ユーザー・エクスペリエンスを失うことのないウェブを表現するには、CSS3 Media-queriesが欠かせないものとなってきました。</p>

<p>それでは実際、レスポンシブ・ウェブとは何についての対応（レスポンシブ）なのでしょうか。</p>

<p>現在のところ、私たちがいうレスポンシブ・ウェブデザインとは、どんなスクリーンの幅や表示領域、デバイスの画面解像度や画面の縦横の向きにも対応したウェブデザイン、というのが事実上の定義となっているようです。</p>

<p>そこで今回、私はその定義を超えたレスポンシブ・ウェブのユースケースについて考えてみました。</p>

<h2>太陽光下でのスクリーン・リーダビリティ</h2>

<p>私は普段の仕事ではNokia Lumiaというスマートフォンを使っているのですが、これがなかなかの優れもの。環境光センサーでスクリーンの輝度値を自動調整してくれるので、晴天の空の下でもスクリーンのコンテンツがはっきり読めるのです。ところが私の個人用で使ってる別機種の場合、そうもいきません。例えば読みたいウェブがたとえ「レスポンシブ」であれ「モバイル・ファースト」であれ、まぶしいカリフォルニアの空の下では、全くコンテンツが見えないので使い物にならないのです。</p>

<p>一方、W3CのCSSメーリングリストでは、次世代の<a href="http://dev.w3.org/csswg/mediaqueries4/#luminosity" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">CSS Media Queries 4</a>のひとつである<pre class="crayon-plain-tag">luminosity</pre>メディア・フィーチャーについて討議されています。<br>
ということは、もしこのスペックがブラウザに実装されることになれば、まさに環境光に反応するレスポンシブなウェブが作れることに！</p>

<p>しかしこれが実現するのは一体いつの日になることやら…</p>

<h2>Ambient Light Events API</h2>

<p>というわけで、今現在のブラウザでは、CSSを使って環境光の度合いに合わせてウェブのUIを調整するのは不可能。</p>

<p>しかし私たちには、HTML5を使ってブラウザから各種センサーやカメラなどのハードウェアが持つ機能にアクセスするための仕様、<a href="http://www.w3.org/2009/dap/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">デバイス API</a>のひとつである<a href="http://www.w3.org/TR/ambient-light/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Ambient Light Events</a>があるでないですか！<br>
これならJavaScriptを使って環境光センサーから照度を知ることができるはず。これを使えば、次世代メディアクエリをまねて、太陽や照明にレスポンシブなウェブが作れるかもしれない！<br>
そう思って私は、実験的に簡単なデモを書いてみました。</p>

<h2>Devicelight events</h2>

<p>デバイスのセンサーが照度の変化に反応すると、ブラウザ側では<pre class="crayon-plain-tag">DeviceLightEvent</pre>イベントが発生します。このとき、イベントハンドラのイベントタイプである<pre class="crayon-plain-tag">devicelight</pre>を使えば、コールバック関数の引数からイベントオブジェクトが得られます。</p>

<p>そこで得られるプロパティの値、<pre class="crayon-plain-tag">value</pre>  は照度をluxの単位で返されます。</p>

<p>実際、大変簡単にこう書くことができます。</p>

<p></p><pre class="crayon-plain-tag">window.addEventListener('devicelight', function(event) {
  console.log(event.value + 'lux');
});</pre><p></p>

<h2>照度にレスポンシブなウェブを作ってみる</h2>

<p>これを使って、環境光が変わってもウェブの内容を読みやすくするためのUIを考えてみました。</p>

<p>デフォルトではライトグレーの背景に黒の文字、明るい照度の時には白地に黒の文字、そして暗い時には暗めな背景に白の文字、というUIにしてみましょう。</p>

<p>例のAPIを使って、照度によってコンテンツのコンテイナー（このデモではわかりやすいように<pre class="crayon-plain-tag">document.body</pre>を使っています）のクラス名を変え、CSSで文字色などのビジュアルを定義します。</p>

<p></p><pre class="crayon-plain-tag">window.addEventListener('devicelight', function(e) {
  var lux = e.value;

  if(lux &lt; 50) {
    document.body.className = 'dim';
  }
  if(lux &gt;= 50 &amp;&amp; lux &lt;= 1000) {
    document.body.className = 'normal';
  }
  if(lux &gt; 1000)  {
    document.body.className = 'bright';
  } 
});</pre><p></p>

<p></p><pre class="crayon-plain-tag">body,
body.normal {
  background-color: #ddd;
  color: #111;
}
body.dim {
  background-color: #444;
  color: #fff;
}
body.bright {
  background-color: #fff;
  color: #333;
}</pre><p></p>

<p>実際に、このデモが動いている様子がわかる動画を作ってみました。</p>


<!-- iframe plugin v.4.3 wordpress.org/plugins/iframe/ -->
<iframe src="//player.vimeo.com/video/79466285" width="500" height="279" 0="webkitallowfullscreen" 1="mozallowfullscreen" 2="allowfullscreen" scrolling="yes" class="iframe-class" frameborder="0"></iframe>


<p><br></p>

<h2>ブラウザサポートとデバイス</h2>

<p>このデモで使われた実際のソースコードは、<a href="http://codepen.io/girliemac/pen/pvmBs" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">CodePen</a>を見てください。</p>

<p>ほとんどの方の観覧しているブラウザ上では <em>&#8220;AmbientLightEvent is not supported.&#8221;</em> というメッセージが出ていて何も起こらないのではないでしょうか。というのも、残念ながら今のところ、このAPIをサポートしているのは<a href="https://developer.mozilla.org/en-US/docs/Web/API/DeviceLightEvent" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Firefox 22+</a> だけ、しかもデバイス側にも環境光センサーが必要。<br>
ですので、デスクトップから見ている皆さんには、どのブラウザを使っていてもこのデモは作動していないでしょう。私のデモで実際に使ったデバイスはNexus 7ですので、AndroidやFirefoxOSのデバイス持っている方は、ぜひFirefoxで試してみてください。</p>

<p>イベントが返す値も、デバイスによってばらつきがあるようです。私が実験した機種2機ではずいぶん違う結果が出ました。たぶんセンサーの精度にブレがあるのでしょう。</p>

<p><img src="/wp-content/uploads/2014/01/luminosity-devices.jpg" alt="luminosity-devices" width="600" height="354" class="aligncenter size-full wp-image-4561" srcset="/wp-content/uploads/2014/01/luminosity-devices.jpg 600w, /wp-content/uploads/2014/01/luminosity-devices-300x177.jpg 300w, /wp-content/uploads/2014/01/luminosity-devices-207x122.jpg 207w" sizes="(max-width: 600px) 100vw, 600px" /></p>

<p>この写真にあるデバイスは、Moto G(Android)と、Keon(FirefoxOS)です。暗めの部屋での照度が、一方が6lux、もう一方が61luxとなっています。</p>

<h2>CSS Media Queries Level 4 Luminosity</h2>

<p>さて、話題をメディアクエリに戻します。<br>
今現在の<a href="http://dev.w3.org/csswg/mediaqueries4/#luminosity" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">仕様</a>では、メディアクエリ・レベル4はまだeditor&#8217;s draftの段階なので、ブラウザに実装されるまでにはまだまだ時間がかかりそうです。</p>

<p>将来的に実装された際には、このデモで書かれたコードはCSSのみでこのように書き直すことができるようになります。</p>

<p></p><pre class="crayon-plain-tag">@media screen and (luminosity: normal) {
  body {background-color: #ddd; color: #111;}
}
@media screen and (luminosity: dim) {
  body {background-color: #444; color: #fff;}
}
@media screen and (luminosity: washed) {
  body {background-color: #fff; color: #333;}
}</pre><p></p>

<p>このように、<pre class="crayon-plain-tag">luminosity</pre>メディア・フィーチャーを使えば簡単に書くことができます。CSS3メディアクエリに既になじみのある皆さんなら、かなり直感的でわかりやすいことかと思います。</p>

<h2>おわりに</h2>

<p>近い将来、レスポンシブ・ウェブの定義も、デバイスなどの多様性に合わせて変わってくるのではないでしょうか。このユースケースも実際果たして本当に役に立つのかどうかもまだわかりませんが、発想の転換とブラウザの新しい可能性、という面でこの記事を楽しんでいただけたかと思います。</p>

<p>この記事は元々は私個人の<a href="http://girliemac.com/blog/2014/01/12/luminosity/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">ブログ</a>（原文は英語）に掲載したのですが、TwitterやReddit、Hacker Newsで思いのほか話題になりました。やはりディベロッパ、デザイナは国境を問わず、みな新しい可能性に興味津々なのでしょう。</p>

<p>では。</p>
]]></content:encoded>
			</item>
		<item>
		<title>W3Cの総会「TPAC 2013」レポートと、2013年11月に公開された注目のWeb標準トピック</title>
		<link>/myakura/3333/</link>
		<pubDate>Wed, 25 Dec 2013 04:00:31 +0000</pubDate>
		<dc:creator><![CDATA[矢倉 眞隆]]></dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[W3C仕様]]></category>

		<guid isPermaLink="false">/?p=3333</guid>
		<description><![CDATA[連載： WEB標準化動向 (1)今月より、主にW3CまわりのWeb標準について、前の月に公開された仕様の動向やグループ内での議論を取り上げる連載をスタートします。 もう12月下旬になってしまいましたが、今回は11月中旬に...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/webstandards-news/" class="series-156" title="WEB標準化動向" data-wpel-link="internal">WEB標準化動向</a> (1)</div><p><a href="https://html5experts.jp/wp-content/uploads/2013/12/dtl_thm_001.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2013/12/dtl_thm_001.png" alt="dtl_thm_001" width="207" height="156" class="alignright size-full wp-image-3782" /></a>今月より、主にW3CまわりのWeb標準について、前の月に公開された仕様の動向やグループ内での議論を取り上げる連載をスタートします。</p>

<p>もう12月下旬になってしまいましたが、今回は11月中旬にW3CのTPACというイベントが開催されたので、そちらの模様を中心にお届けします。</p>

<h2>W3C TPAC開催</h2>

<p><a href="https://html5experts.jp/wp-content/uploads/2013/12/DSC_0283-11.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2013/12/DSC_0283-11.jpg" alt="DSC_0283-1" width="250" height="210" class="alignright size-full wp-image-3841" srcset="/wp-content/uploads/2013/12/DSC_0283-11.jpg 250w, /wp-content/uploads/2013/12/DSC_0283-11-207x173.jpg 207w" sizes="(max-width: 250px) 100vw, 250px" /></a></p>

<p>11月10日から11月15日まで、中国の深センにてW3Cの総会「<a href="http://www.w3.org/2013/11/TPAC/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">TPAC 2013</a>」が開催されました。</p>

<ul>
<li><a href="http://www.w3.org/blog/2013/11/on-tpac-2013/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">On TPAC 2013 | W3C Blog</a></li>
</ul>

<p>TPACでは、W3CがW3C Member（会員）と運営に関する会議を行うほか、W3Cの各WGがFace to Faceミーティングを開催します。</p>

<h3>Plenary Day ― デュアルライセンス、プロセス改訂など大きな提案が</h3>

<p>TPAC期間の水曜日は、Technical Plenaryという日で、WGなどの壁を超えたコミュニケーションが行われます。今年のPlenary Dayでは、午前中がシングルトラックでのセッション、午後はアンカンファレンスによるセッションという構成で行われました。</p>

<p>Plenary Dayの午前中で面白かったセッションは、HTML WGが策定する仕様のライセンスと、W3Cのプロセス改訂の話でしょうか。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2013/12/DSC00131.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2013/12/DSC00131.jpg" alt="DSC00131" width="1083" height="807" class="alignright size-full wp-image-3784" srcset="/wp-content/uploads/2013/12/DSC00131.jpg 640w, /wp-content/uploads/2013/12/DSC00131-300x223.jpg 300w, /wp-content/uploads/2013/12/DSC00131-1024x763.jpg 1024w, /wp-content/uploads/2013/12/DSC00131-207x153.jpg 207w" sizes="(max-width: 1083px) 100vw, 1083px" /></a></p>

<h4>HTML WGの仕様とW3C/CC-BYのデュアルライセンス</h4>

<p>HTML5仕様をはじめ、W3Cの仕様はW3C Document Licenseという独自のライセンスのもと提供されています。このライセンスの大きな欠点としては、仕様をフォークできないということです。また、教育目的などであっても仕様の一部を利用するといったことも文言上は禁止されているなど、自由度の低いライセンスとなっていました。</p>

<p>9月にHTML WGの活動憲章が更新され、その際にHTML WGが策定するHTML5, HTML 5.1以外の仕様について、ライセンスをW3C Document LicenseとCreative Commons 3.0 Affiliationライセンスのデュアルライセンスのもと提供できるようになりました。</p>

<ul>
<li><a href="http://www.w3.org/blog/2013/09/a-dual-license-for-the-html-working-group/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">A Dual License for the HTML Working Group | W3C Blog</a></li>
<li><a href="http://www.w3.org/2013/09/html-faq.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">FAQ Regarding HTML Working Group Charter License Experiment</a></li>
</ul>

<p>デュアルライセンスは試験的とされているため、他WGの仕様はデュアルライセンスになりません。また、HTML5仕様、HTML 5.1仕様もこの対象ではありません。まだまだ制限はありますが、使いやすい仕様書への第一歩となったのは間違いありません。</p>

<p>このセッションでは、GPLやCC0など他のライセンスとの比較や、仕様の分断化に対する懸念やPatent Policyとの関連など、幅広い観点から意見が出ていました。</p>

<h4>Last CallとCandidate Recommendationが統合？</h4>

<p>これまで、W3C勧告プロセスでは、仕様が以下の5つのステップに分かれていました。</p>

<ol>
<li>Working Draft</li>
<li>Last Call Working Draft</li>
<li>Candidate Recommendation</li>
<li>Proposed Recommendation</li>
<li>Recommendation</li>
</ol>

<p>各段階ごとの役割（WG内での仕様策定完了、実装を受け付ける、など）を設け進めていくモデルなのですが、頻繁に仕様が更新されるようになった今、プロセスが手間となるといった問題が出ていました。</p>

<p><a href="https://dvcs.w3.org/hg/AB/raw-file/default/tr.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">検討されている新しいプロセス</a>では仕様の段階と役割を再検討し、Working Draft、Last Call Candidate Recommendation（仮）、Recommendation（仮）と3つのステップとなっています。加えて、これまで曖昧だった実装に関する言及を明確化するなどの改訂もとられています。また、「Recommendation」を「Standard」に変更するかといった議論も出ているとのこと。</p>

<p>今後は、寄せられたコメントをもとに、最終的なドラフトを1月にW3Cの諮問委員会に提出するとのことです。</p>

<h4>アンカンファレンス</h4>

<p>午後はアンカンファレンス形式で、10トラック合計26のセッションが開かれました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2013/12/DSC00453.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2013/12/DSC00453.jpg" alt="DSC00453" width="640" height="455" class="alignnone size-full wp-image-3842" srcset="/wp-content/uploads/2013/12/DSC00453.jpg 640w, /wp-content/uploads/2013/12/DSC00453-300x213.jpg 300w, /wp-content/uploads/2013/12/DSC00453-207x147.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<ul>
<li><a href="http://www.w3.org/wiki/TPAC2013#Session_Grid" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">TPAC2013 &#8211; W3C Wiki</a></li>
</ul>

<p><a href="http://www.w3.org/2013/11/13-w3process-minutes.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">プロセス改訂の話の続き</a>や<a href="http://www.w3.org/2013/11/13-site-design-minutes.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">W3Cのサイトリデザイン</a>といったW3Cに関するセッション、Service Workers, Fetch, HTTP/2.0, オフラインWeb技術などの仕様にフォーカスしたセッションなど幅広いトピックが揃ったようです。</p>

<p>アンカンファレンスのセッションは短いため、概要と問題を説明し次のアクションにつなげて終了というものも多いのですが、<a href="http://www.w3.org/2013/11/13-ruby-minutes.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTMLのルビに関するセッション</a>では、拡張仕様として公開された<a href="http://darobin.github.io/html-ruby/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">W3C HTML Ruby Markup Extensions</a>の大部分ををHTML5仕様に持ってくることが内定するなど、仕様策定に関するところで前進もありました。</p>

<h2>Shenzhen F2Fs</h2>

<p>水曜日のPlenary Day以外の日は、各WGのF2Fミーティングが行われました。</p>

<h3>CSS WG F2F ― Shapes構文変更、ピクセル密度比の標準化</h3>

<p>CSS WGのF2Fミーティングは、11月10日から11月12日の3日間にわたり開催されました。</p>

<ul>
<li><a href="http://www.w3.org/blog/CSS/2013/11/23/resolutions115/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Minutes TPAC F2F Nov. 2013 Part I</a></li>
<li><a href="http://www.w3.org/blog/CSS/2013/11/23/resolutions116/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Minutes TPAC F2F Nov. 2013 Part II</a></li>
<li><a href="http://www.w3.org/blog/CSS/2013/11/23/resolutions117/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Minutes TPAC F2F Nov. 2013 Part III</a></li>
</ul>

<p><a href="http://dev.w3.org/csswg/css-shapes/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CSS Shapes</a>仕様では、CSSのシェイプとSVGのシェイプ構文や値の扱いが違いうことから構文を変更する話が出ていました。今回のF2Fで、<code>rectangle()</code>をLevel 2へ先送り、<code>circle()</code>の構文を<code>radial-gradient()</code>と類似したものへ変更することが決定しました。近日中にLast Callとなる予定です。</p>

<p>ピクセル密度比（<code>device-pixel-ratio</code>）についても議論がありました。現在広く使われている<code>device-pixel-ratio</code>媒体特性や<code>window.devicePixelRatio</code>プロパティは、2006年にAppleがWebKitに導入した仕組みです。iPhone 4のRetina Display対応から普及し、他のブラウザも互換性のために実装しましたが、そもそも仕様がないことやブラウザ内蔵のズーム機能・ピンチズーム時の関わりなどが決まっておらず、非互換が生まれています。今回、Appleが新しい機能を検討するという決定がなされました。既存機能の拡張や標準化とならなかったことが残念ですが、一方でピンチズームレベルや、ブラウザのズームレベルなど、取得できなかった値に対する言及もあり、今後の検討が気になります。</p>

<p>その他もフォーカスリングとフィルタとの関連性、他のプラットフォーム仕様のため属性を選択する擬似要素をセレクタ仕様に含めるか否か（CSSでは利用できませんが）など、興味深い議論が数多く行われています。</p>

<h3>WebApps WG F2F ― Web Componentsやテストの議論が</h3>

<p>WebApps WGのF2Fは、11月11日と11月12日の2日間にわたり開催されました。</p>

<ul>
<li><a href="http://www.w3.org/2013/11/11-webapps-minutes.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">WebApps F2F Meeting @ TPAC 2013 &#8212; 11 Nov 2013</a></li>
<li><a href="http://www.w3.org/2013/11/12-webapps-minutes.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">WebApps F2F Meeting @ TPAC 2013 &#8212; 12 Nov 2013</a></li>
</ul>

<p><a href="http://w3c.github.io/webcomponents/explainer/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Web Components</a>の現状や課題については、<a href="http://w3c.github.io/webcomponents/spec/shadow/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Shadow DOM</a>や<a href="http://w3c.github.io/webcomponents/spec/custom/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Custom Elements</a>についてはおおよそ仕様が固まりつつあることがEditorから示されました。<a href="http://w3c.github.io/webcomponents/spec/imports/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTML Imports</a>については、クロスオリジンなコンポーネントをインポートすることに関しAppleから意見があり、ES6のモジュールなども含めた大きな議論となりました。</p>

<p><a href="http://dev.w3.org/html5/workers/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Web Workers</a>においては、実装が乏しい<a href="http://dev.w3.org/html5/workers/#shared-workers-introduction" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Shared Workers</a>を削除するアクションが割り振られました。WHATWG HTML仕様では残ると思いますが、W3Cでの今後の動きは現在のところ不明です。</p>

<p>数多くの仕様を有するWebApps WGで急務なのが、仕様のテストです。実装は進んでいるもののテストケースがない、テストケースがレビューされていないといった問題があり、先に進められないという仕様がいくつかあるため、テストのレビューなどについてのセッションも設けられました。</p>

<h3>HTML WG F2F ― 粛々とバグ対応＆勧告に向けた作業を</h3>

<p>勧告まであと1年のHTML5を有するHTML WGのF2Fは、11月14日と11月15日の2日間にわたり開催されました。</p>

<ul>
<li><a href="http://www.w3.org/2013/11/14-html-wg-minutes.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTML Weekly Teleconference &#8212; 14 Nov 2013</a></li>
</ul>

<p>14日には、Media Source Extensions仕様やEncrypted Media Extensions仕様のバグに対する議論が主に行われたようです。</p>

<p><a href="http://www.w3.org/html/wg/drafts/2dcontext/html5_canvas_CR/Overview.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Canvas 2D</a>仕様については、フォーカスリング関連の機能にまだ問題があるとされ、拡張仕様への移動やLevel 2への見送りを含めた議論が行われました。</p>

<p>ルビ周りの要素については、Plenary Dayでの項でもお伝えしたとおりですが、ルビマークアップの拡張仕様をHTML5仕様に取り込むという話についての共有がなされました。</p>

<h3>WebPerf WG F2F ― 新しい機能について議論</h3>

<p>Web Performance WGのF2Fは11月14日と11月15日の2日間にわたり開催されました。</p>

<ul>
<li><a href="http://www.w3.org/2013/11/14-webperf-minutes.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Web Performance Working Group Teleconference &#8212; 14 Nov 2013</a></li>
</ul>

<p>まず興味深かったのが<code>rel=prerender</code>や<code>rel=dns-prefetch</code>といった、先読み関連の機能です。<a href="http://msdn.microsoft.com/en-us/library/ie/dn265039" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">IE11で幾つか対応した</a>こともあり、標準化という議題に再度あがったのでしょうか。<code>rel=prerender</code>はHTML5仕様に追加するという話も出て、HTML WGとのジョイントミーティングの場でも共有されています。</p>

<p>リソースの読み込み関連では、<code>lazyload</code>属性などを有する<a href="https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/ResourcePriorities/Overview.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Resource Priorities仕様</a>に関する議論も行われました。こちらもHTMLやSVGの要素に属性を追加するものなので、HTML WGやSVG WGとのジョイントミーティングで共有されています。</p>

<p>先日2nd editionが公開された<a href="https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/PageVisibility/Overview.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Page Visibility</a>ですが、現在は取得できない「要素が表示されているか否か」を知る機能について議論が行われました。</p>

<p>その他、Beacon, HAR, Navigation Error Loggingなど検討中の新しい仕様についても議論が行われました。</p>

<h3>SVG WG F2F ― SVG DOMの大改定がSVG2に？</h3>

<p>SVG WGのF2Fも、11月14日と11月15日の2日間にわたり開催されました。</p>

<ul>
<li><a href="http://www.w3.org/2013/11/14-svg-minutes.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">SVG Working Group Teleconference &#8212; 14 Nov 2013</a></li>
</ul>

<p>SVG DOMをHTML DOMに統合していく議論が盛り上がっていました。SVG DOMは現在HTML DOMと異なる名前空間に属していますが、これをHTMLと同じ名前空間にするといった提案が出ました。</p>

<ul>
<li><a href="http://dev.w3.org/SVG/proposals/improving-svg-dom/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">A proposal for improving the SVG DOM</a></li>
</ul>

<p>新しいDOMへの移行により懸念されるのが、既存のコンテンツとの後方互換性です。検討中の提案では、<code>graphics</code>というトップレベルの要素を導入し、そこでパーサの解釈を切り替えるというアイデアが提案されています。</p>

<p>DOMに関する変更はSVG2の後という流れでしたが、先送りすることで更に多くの旧SVG DOMに依存するコンテンツが増える懸念から、SVG2での検討対象とする流れになったようです。</p>

<p><a href="http://dev.w3.org/fxtf/web-animations/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Web Animations</a>などのアニメーション関連機能については、宣言的な仕組みとして<a href="http://dev.w3.org/fxtf/web-animations/animation-elements.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Animation Elements</a>が提案されました。<code>animate</code>要素など宣言的な仕組みはAppleが以前から求めていたもので、支持も取り付け、SVG WGの公式な仕様として今後策定が進むようです。</p>

<h2>11月に公開されたWeb標準</h2>

<p>TPACが開催され、忙しかったはずなのですが、数多くの仕様が公開・更新されています。<br />
気になったものを抜き出してみました。</p>

<ul>
<li>11月5日付けで新しい<a href="http://www.w3.org/TR/2013/WD-streams-api-20131105/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Streams API</a>仕様がWebApps WGより公開されました。DOM Promisesベースになるなど、APIの大きな変更が行われています。</li>
<li>11月7日付けで<a href="http://www.w3.org/TR/2013/WD-dom-20131107/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">W3C DOM4</a>仕様の草案がHTML WGより公開されました。<a href="http://dom.spec.whatwg.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">WHATWG DOM仕様</a>のスナップショットという位置づけは変わらずですが、今回からWebApps WGからHTML WGに移管され、W3C LicenseとCC-BY 3.0のデュアルライセンスのもと公開されています。</li>
<li>11月7日付けで、<a href="http://www.w3.org/TR/2013/NOTE-respimg-usecases-20131107/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Use Cases and Requirements for Standardizing Responsive Images</a>がHTML WGよりW3C WG Noteとして公開されました。Responsive Imagesに関するユースケースをまとめた文書で、<a href="http://responsiveimages.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Responsive Images Community Group</a>にて主に作業されていたものです。</li>
</ul>

<p>（Photo Credit: <a href="https://html5experts.jp/yusuke-naka/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">仲裕介</a>）</p>
]]></content:encoded>
		
		<series:name><![CDATA[WEB標準化動向]]></series:name>
	</item>
		<item>
		<title>テストを書いてWebを前進させよう！「Test the Web Forward Meetup (仮), Tokyo #1」</title>
		<link>/myakura/2704/</link>
		<pubDate>Mon, 30 Sep 2013 04:00:34 +0000</pubDate>
		<dc:creator><![CDATA[矢倉 眞隆]]></dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[TestTWF]]></category>
		<category><![CDATA[W3C仕様]]></category>
		<category><![CDATA[html5j]]></category>

		<guid isPermaLink="false">/?p=2704</guid>
		<description><![CDATA[連載： イベントレポート (4)こんにちは。html5jテスト部の部長を務めています矢倉です。 今回は9月14日に行われた「Test the Web Forward Meetup (仮), Tokyo #1」について報告...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/eventarchives/" class="series-159" title="イベントレポート" data-wpel-link="internal">イベントレポート</a> (4)</div><p>こんにちは。html5jテスト部の部長を務めています矢倉です。<br />
今回は9月14日に行われた「Test the Web Forward Meetup (仮), Tokyo #1」について報告します。</p>

<p><span id="more-2704"></span></p>

<h2>Test the Web Forwardとは</h2>

<p>今回のイベントをレポートするにあたり、まずはTest the Web Forward (TestTWF) について説明しないといけませんね。<a href="http://testthewebforward.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Test the Web Forward</a>とは、HTMLやCSSなどW3Cが策定している仕様のテストケースを、参加者で一緒に書こうというコミュニティイベントです。</p>

<p>W3Cの仕様が勧告されるには、仕様の実装が必要なのですが、その実装が正しいかを確かめるテストケースも必要です。しかし近年、これまでにないペースで数多くの仕様が公開され、また機能も複雑化していることから、テストが大きな課題となっています。そこで「Webプラットフォームを前進するために、みんなでテストを書いて協力しよう」というイベント、Test the Web Forwardが誕生しました。</p>

<ul>
<li><a href="http://www.w3.org/blog/2012/10/test-the-web-forward/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Test The Web Forward | W3C Blog</a></li>
<li><a href="http://aphall.com/2013/06/test-the-web-forward-tokyo/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Test The Web Forward とは？ ＆ 来られなくても参加できる方法</a></li>
</ul>

<p>TestTWFは世界各国で開催されており、<a href="http://testthewebforward.org/events/tokyo-2013.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">今年の6月には東京でも開催</a>されました。東京のイベントでは最終的に700を超えるテストが提出され、大成功を収めました。</p>

<ul>
<li><a href="http://blogs.adobe.com/webplatform/2013/06/26/test-the-web-forward-tokyo/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Test the Web Forward Tokyo! | Web Platform Team Blog</a></li>
<li><a href="http://www.atmarkit.co.jp/ait/articles/1306/25/news008.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">テストを通じて「より良いWebの実現」に貢献～Test the Web Forwardレポート &#8211; ＠IT</a></li>
<li><a href="http://gihyo.jp/news/report/2013/06/1701" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Webをより良いものにしよう！ HTML5/CSSの仕様のテストを書くハッカソン「Test The Web Forward Tokyo 2013」レポート｜gihyo.jp … 技術評論社</a></li>
<li><a href="http://plus.adobe-adc.jp/post-3208/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Web標準をテストするハッカソン –「Test The Web Forward」がついに東京に上陸 | ADC Plus</a></li>
<li><a href="http://fumit.blogspot.jp/2013/06/test-web-forward-testtwf.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Fumi&#8217;s Travelblog: Test the Web Forward を開催しました！ #testtwf</a></li>
</ul>

<h2>html5jテスト部とTestTWF Meetup (仮)</h2>

<p>Test the Web Forward Meetup (仮) は、<a href="http://html5j.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">html5j</a>のテスト部が主催するイベントです。6月のTestTWF後にhtml5jスタッフ内で「1回きりじゃもったいないから、継続開催していこう！」という話が発端となり、テスト部が立ち上がりました。</p>

<p>その際に筆者がテスト部の部長となったのですが、自分はW3CやWeb標準について少し知っているだけで、とくにテストについて明るいわけではありません。また、テスト部のスタッフにもテスト未経験者がいます。「じゃあまず、スタッフでテストの勉強会をしよう」という話になりました。</p>

<p>日程を調整して一段落したとき、TestTWFがW3Cの公式アクティビティとして取り込まれたことを知りました。これまでのコミュニティ活動が標準化団体にも認められたのです。素晴らしいことですね。</p>

<p>ではその流れに乗っかり、スタッフ勉強会をTestTWFにしようという話になり、今回のTestTWF Meetup (仮) の実現に至りました。今回はW3Cが主催するイベントではないので、「Test the Web Forward Meetup (仮)」と名前を変え、開催することに。「Meetup (仮)」とあるのは、W3C内でTestTWF関連イベントのブランディングを考えており、コミュニティで主催イベントの名前案に「TestTWF Meetup」があったので、「(仮)」とつけた上で使わせていただきました。</p>

<h2>TestTWF Meetup (仮), Tokyo #1レポート</h2>

<p>TestTWFについて簡単に説明するつもりが、だいぶ長くなってしまいました……。ここからようやく「TestTWF Meetup (仮), Tokyo #1」のレポートになります。</p>

<p>今回のイベントは、告知が開催1週間前になるなど急ごしらえ感の否めないものでしたが、20名近くの方に集まっていただきました。</p>

<h3>午前中はテストの書き方を勉強</h3>

<div id="attachment_2711" style="width: 310px" class="wp-caption alignright"><img src="/wp-content/uploads/2013/09/IMG_4608-300x199.jpg" width="300" height="199" class="size-medium wp-image-2711" srcset="/wp-content/uploads/2013/09/IMG_4608-300x199.jpg 300w, /wp-content/uploads/2013/09/IMG_4608-207x137.jpg 207w, /wp-content/uploads/2013/09/IMG_4608.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /><p class="wp-caption-text">TestTWF Meetup (仮) の説明をする筆者</p></div>

<p>まず、筆者による挨拶と今回のMeetup (仮) の説明、その後、どのようなフローでテストケースが取り込まれるのかなどを説明しました。</p>

<ul>
<li><a href="https://docs.google.com/presentation/d/1kNbHD956TedQ2K9L8YNMM9ZlPzGKJbwuyjd9Wj-RBPU/edit?usp=sharing" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Test the Web Forward Meetup (仮), Tokyo #1</a></li>
</ul>

<p>仕様のテストケースはW3CのGitHubアカウントが管理しており、レポジトリにPull Requestを送ることでテストを提出できます。テストのレビューは、レビュアーがいればその場でしてもらえます。レビュアーがいない場合はPull Requestを投げて、レビューを待ちます。</p>

<p>今回はレビュアーを呼べなかったので、Pull Requestを投げることをゴールとしました。ただしそれではテストが取り込まれませんので「帰ってからもTestTWF」になります。なかなかに厳しいイベントです。</p>

<p style="clear:both">続いて<a href="https://html5experts.jp/nakajmg/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTML5 Experts.jpコントリビューターの中島直博さん</a>に、CSSのテストケースのひとつ「リファレンステスト（reftest）」について説明していただきました。</p>

<div id="attachment_2722" style="width: 310px" class="wp-caption alignleft"><img src="/wp-content/uploads/2013/09/Screen-Shot-2013-09-24-at-21.09.43-300x225.jpg" width="300" height="225" class="size-medium wp-image-2722" srcset="/wp-content/uploads/2013/09/Screen-Shot-2013-09-24-at-21.09.43-300x225.jpg 300w, /wp-content/uploads/2013/09/Screen-Shot-2013-09-24-at-21.09.43-207x155.jpg 207w, /wp-content/uploads/2013/09/Screen-Shot-2013-09-24-at-21.09.43.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /><p class="wp-caption-text">テストとリファレンスを見比べ、一致したらPASS！</p></div>

<ul>
<li><a href="http://slid.es/nakajmg/reftest" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">リファレンステストの書き方</a></li>
</ul>

<p><a href="http://wiki.csswg.org/test/reftest" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Reftest</a>は、テストしたい仕様を使って書いたテストケースと、すでに使える仕様（CSS 2.1など）で再現した「リファレンス」、ふたつのHTMLドキュメントを書くというテストの形式です。</p>

<p>CSSのテストは、ほかにも「テストをパスしたらここが緑になるよ」などとHTML中に書くテスト（self-describing test）という仕組みも存在していますが、機械的にも比べられる点からreftestが好まれているようです。</p>

<p style="clear:both">最後に、HTML5 Experts.js編集長の白石さんによる、仕様のテスト用フレームワークtestharness.jsの説明です。</p>

<div id="attachment_2729" style="width: 310px" class="wp-caption alignright"><img src="/wp-content/uploads/2013/09/th_1-300x202.png" width="300" height="202" class="size-medium wp-image-2729" srcset="/wp-content/uploads/2013/09/th_1-300x202.png 300w, /wp-content/uploads/2013/09/th_1-207x139.png 207w, /wp-content/uploads/2013/09/th_1.png 640w" sizes="(max-width: 300px) 100vw, 300px" /><p class="wp-caption-text">非同期なテストのコード例</p></div>

<ul>
<li><a href="http://dl.dropboxusercontent.com/u/7571134/testharness-intro/index.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">testharness.jsでテストするには</a></li>
</ul>

<p><a href="https://github.com/w3c/testharness.js" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">testharness.js</a>は、HTMLやAPI仕様、CSSOMなど、DOM APIをテストする際に使用する、仕様のテストに特化したフレームワークです。「仕様のテストに特化」と書きましたが、QUnitなどJavaScriptのテストフレームワークに馴染みのある方にはそこまで難しくないと思います。白石さんも、なんと前日夜にスライドやコードを読んで話してくれました！</p>

<p>リンクしたtestharness.jsのスライドは作者本人による紹介スライドの翻訳なのですが、実際の仕様書の記述からテストに落としこむかたちで関数の使い方が説明されており、仕様書の読み方を知るとてもよい資料でもあります。リファレンスとしては、<a href="http://darobin.github.io/test-harness-tutorial/docs/using-testharness.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">using-testharness.js</a>という文書が便利です（現在翻訳中です）。</p>

<p>ひと通り説明が終わったところで、お昼の時間に。午後からテストを書くので、CSS、API、HTML5とテストを書きたい対象ごとにグループになってもらい、そのグループでお昼ごはんを食べることになりました。</p>

<h3>午後はテスト書き…探すのが難しい！</h3>

<p>午後からいよいよテストケースを書きます。CSS、API、HTML5と大きなグループに分かれたので、テストしたい仕様書や機能を選んでテストを書いてもらいます。</p>

<p>しかし…ここからが厄介でした。無印のTest the Web Forwardでは、仕様書のEditorやテストのレビュアーが数多く参加してくれるため、その人達が関わる仕様書のテストを書けばとてもスムーズですが、今回はそうではないので自分たちでテスト対象を決める必要がありました。自分が馴染みのある仕様を選べるという点は自由でよいのですが、すでにテストが書かれている場合もあります。これを調べるには仕様書のテストカバレッジを見ればよいのですが、仕様書のどの箇所に対してテストされているのか記載がなく、テストケースを見るしかありませんでした。</p>

<ul>
<li><a href="http://w3c-test.org/web-platform-tests/master/tools/coverage/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Test Suite Coverage Analysis</a> ― Webプラットフォーム仕様のテストカバレッジを知るツール</li>
<li><a href="http://test.csswg.org/shepherd/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CSS Test Suite Manager</a> ― CSS WGが利用する、テストスイートマネージャ</li>
<li><a href="http://www.w3.org/html/wg/tests-cr-exit.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Overview of testing in view of CR exit</a> ― HTML5仕様の目次を取り出し、テストのカバレッジや実装状況を大まかに色分けした上で表示したもの</li>
</ul>

<p>テストを書く時間もそこそこかかるのですが、今回いちばん難航したのが、このテスト対象を探すことだったように感じています。</p>

<h3>書いたらPull Request！テストの解説も</h3>

<p>テストを書き始めて3、4時間。いよいよ追い込みです。グループ内で分かる範囲でテストを確認して、コミット、push、そしてPull Requestをしました。今回は計12件のテストがPull Requestで提出されました。</p>

<p>それぞれのグループごとに分かれて作業していたため、最後に参加者のみなさんが書いたテストのコードについて、どういったテストなのかを説明させていただきました。</p>

<div id="attachment_2716" style="width: 801px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2013/09/IMG_4652.jpg" width="791" height="527" class="size-full wp-image-2716" srcset="/wp-content/uploads/2013/09/IMG_4652.jpg 640w, /wp-content/uploads/2013/09/IMG_4652-300x199.jpg 300w, /wp-content/uploads/2013/09/IMG_4652-207x137.jpg 207w" sizes="(max-width: 791px) 100vw, 791px" /><p class="wp-caption-text">謎のジェスチャをする筆者（たぶんCSSのテストについて説明していたのでしょう）</p></div>

<h2>おわりに</h2>

<p>今回は「一人ひとつはPull Request」という目標を立てていましたが、残念ながら達成できませんでした。カバレッジの調査や仕様の選定についてもう少し力を入れるべきだったと反省しています。次回は仕様を絞ったイベントとする、レビュアーの方に協力してもらうことなどを検討しています。</p>

<p>運営としては反省点が多かったのですが、イベントとしてはとても良いことがありました。6月のTestTWF参加者の方に、今回初参加の方にテストの書き方やPull Requestなどを助けてもらったことです。みんなで作り上げるというコミュニティイベントとして、これほど理想的なかたちはありません。</p>

<p>参加者のみなさん、会議室をお貸しいただいた<a href="http://www.geeplus.jp/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ジープラ株式会社</a>さま、本当にありがとうございました。また、AdobeのRebecca Hauckさんには、TestTWFやテスト全般について多くのことを教えていただきました。ありがとうございました。スタッフの皆さんも、おつかれさまでした。</p>

<p>GitHubでも、<a href="https://github.com/w3c/web-platform-tests/pull/337" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Pull Requestがひとつマージされました</a>。まだレビューされていないテストがほとんどですので、これからも動向を追いかけていくつもりです。</p>

<p>今後もTestTWF Meetup (仮) は開催したいと思っていますし、Test the Web Forward自体もまた日本で開催したいという野望があります。ぜひご期待ください！</p>

<p>（Photo Credit: <a href="https://html5experts.jp/nakajmg/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">中島直博</a>）</p>
]]></content:encoded>
		
		<series:name><![CDATA[イベントレポート]]></series:name>
	</item>
	</channel>
</rss>
