<?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>Mozilla &#8211; HTML5Experts.jp</title>
	<atom:link href="/tag/mozilla/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>Mozilla JapanはなぜWebDINOに？瀧田佐登子さんに聞くMozilla・オープンソースコミュニティ、そしてWebの未来</title>
		<link>/shumpei-shiraishi/23984/</link>
		<pubDate>Tue, 08 Aug 2017 01:00:24 +0000</pubDate>
		<dc:creator><![CDATA[白石 俊平]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[WebDINO]]></category>

		<guid isPermaLink="false">/?p=23984</guid>
		<description><![CDATA[編集長の白石です。 Web技術者であれば一度はその名を耳にしたことがあるであろうMozilla Japanが「WebDINO」と名前を変えた（プレスリリースへのリンク）ことを受け、WebDINOの代表である瀧田 佐登子さ...]]></description>
				<content:encoded><![CDATA[<p><style>
b.speaker:after {
  content: ': ';
}
</style></p>

<p><meta name="viewport" content="width=device-width,
initial-scale=1.0, user-scalable=yes, minimum-scale=1.0,
maximum-scale=2.0"></p>

<p><img src="/wp-content/uploads/2017/08/DSC02273.jpg" alt="" width="640" height="422" class="alignnone size-full wp-image-24009" srcset="/wp-content/uploads/2017/08/DSC02273.jpg 640w, /wp-content/uploads/2017/08/DSC02273-300x198.jpg 300w, /wp-content/uploads/2017/08/DSC02273-207x136.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>編集長の白石です。</p>

<p>Web技術者であれば一度はその名を耳にしたことがあるであろうMozilla Japanが<strong>「WebDINO」と名前を変えた</strong>（<a href="https://www.webdino.org/static/docs/20170630-MozillaJapanAnnoucement.pdf" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">プレスリリースへのリンク</a>）ことを受け、WebDINOの代表である瀧田 佐登子さんにいろいろと話を伺ってきました。</p>

<p>瀧田さんは<a href="https://ja.wikipedia.org/wiki/%E7%80%A7%E7%94%B0%E4%BD%90%E7%99%BB%E5%AD%90" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Wikipedia</a>にも紹介ページがあるように、日本のWebシーンを裏で支え続けていた立役者。90年代の第一次ブラウザ戦争時代にはNetscapeの開発者として活躍し、その後Mozilla Japanを設立して、Mozillaコミュニティを日本に根付かせた方でもあります。</p>

<p>本記事では、WebDINOへの名称変更の裏側のみならず、Netscape時代のエピソードやオープンソースコミュニティへのこだわり、そして今後のWebのビジョンまでお聞きしてきました。
読み応えのある対談になったかと思います。お楽しみください〜！</p>

<p><br>
<strong>■瀧田 佐登子さんのプロフィール</strong>
<br>
<img src="/wp-content/uploads/2017/08/takita.jpg" alt="" width="250" height="394" class="alignleft size-full wp-image-24010" srcset="/wp-content/uploads/2017/08/takita.jpg 250w, /wp-content/uploads/2017/08/takita-190x300.jpg 190w, /wp-content/uploads/2017/08/takita-131x207.jpg 131w" sizes="(max-width: 250px) 100vw, 250px" /><span style="font-size: 90%;">国内大手IT企業で UNIX・インターネット事業に従事した後、1996年より米国 Netscapeの開発現場でブラウザの国際化・日本語化を担当。Netscape日本法人撤退後も、米国本社所属のプロダクトマネージャとして国内の金融関連サポートおよびプロモーション業務を担う傍ら、Webブラウザ技術のエバンジェリストとして国内でのコミュニティ活動を行う。2004年、米国Mozilla Foundation の設立を機に、同財団の公式支部であるMozilla Japanを設立。代表理事としてMozilla製品・技術の普及活動、Web標準技術やオープンソースの推進、Webの新たな可能性の探求や人材育成などに取り組む。<br>2017年7月に、Mozilla Japanを一般社団法人WebDINO Japanへと社名変更。現在は、Webとオープンを軸にした、産官学・コミュニティをつなぐ非営利組織として、テクノロジーの普及とイノベーション拡大を目指す活動を行う。<br>2007年より慶應義塾大学非常勤講師。2009年より中央大学大学院 理工学研究科 兼任講師。日経ウーマン・オブ・ザ・イヤー 2009 リーダー部門受賞。2009年度日本OSS貢献者賞受賞。第9回北東アジアOSS推進フォーラム特別貢献者賞受賞。</span>
<br><br></p>

<h2>「Netscapeのオープンソース化」という事件の舞台裏</h2>

<p><b class="speaker siraisi">白石</b> こんにちは。瀧田さんにはずっとお会いしたかったので、お会いできて大変光栄です。</p>

<p><b class="speaker takita">瀧田</b> こちらこそ。</p>

<p><b class="speaker siraisi">白石</b> 今回は、Mozilla JapanがWebDINOに名称変更したということで、実際のところを伺いに来ました。いろんな憶測も飛んでいる中で、いろいろと率直にお話を伺えればと思います。</p>

<p><b class="speaker takita">瀧田</b> はい、ぜひ。なんでもお聞きください。</p>

<p><img src="/wp-content/uploads/2017/08/DSC02248.jpg" alt="" width="640" height="427" class="alignnone size-full wp-image-24011" srcset="/wp-content/uploads/2017/08/DSC02248.jpg 640w, /wp-content/uploads/2017/08/DSC02248-300x200.jpg 300w, /wp-content/uploads/2017/08/DSC02248-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石</b> 瀧田さんはNetscape社にいらっしゃったんですよね。</p>

<p><b class="speaker takita">瀧田</b> はい。元々は、日本企業でUNIXのエンジニアをしていたのですが、勤めていた会社がこれからはインターネット事業だ！ということで米国に視察に行ったんです。</p>

<p>そこでブラウザというものに初めて出会ったのですが、その頃のソフトウェアって当然のようにアメリカ中心で、国際化（Internationalization） のことなんかちっとも考えられていない。
インターネットってグローバルなものなのに、日本語対応とかが全然必要だとも思われていなくって。</p>

<p>「<strong>そんなんでインターネットを語るなよ</strong>」みたいな気持ちもあって(笑)、フィードバックを繰り返していたら、逆にNetscapeから「入社しないか」というオファーがあったんです。</p>

<p>その時は「Web」という言葉も一般に認知されていないような時代でしたが、「Webは爆発的に普及するな」という予感もあったので、そのオファーを受けて入社しました。それが1996年頃ですね。</p>

<p><b class="speaker siraisi">白石</b> その当時は<strong>第一次ブラウザ戦争</strong>と呼ばれる、Internet Explorerとの競争も激しかった時期ですよね。</p>

<p><b class="speaker takita">瀧田</b> そうですね。あの時はブラウザ間の互換性も低く、多くの批判もありました。ただ、今考えると、<strong>あの激しい競争があったからこそ、あれだけのスピードで技術が進歩した</strong>んだとも思っています。</p>

<p><b class="speaker siraisi">白石</b> その後、<strong>1998年にNetscapeのソースコードが公開されるという大事件がありました</strong>ね。その時の様子はどんな感じだったんですか？</p>

<p><b class="speaker takita">瀧田</b> あれは実は、当時現場で働いていた私たちにとっても突然の出来事だったんです。社内でもごく一部の人間にしか知らされていませんでした。ある時カフェテリアに集まるように言われたので行ってみると、<strong>ソースコードをコピーした紙が高く積んであって、それを撒き散らし始めた</strong>んです。そうして、全社員に対してオープンソース化の件が発表されました。ものすごくびっくりしましたね(笑)。</p>

<p><img src="/wp-content/uploads/2017/08/DSC02127.jpg" alt="" width="640" height="427" class="alignnone size-full wp-image-24012" srcset="/wp-content/uploads/2017/08/DSC02127.jpg 640w, /wp-content/uploads/2017/08/DSC02127-300x200.jpg 300w, /wp-content/uploads/2017/08/DSC02127-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石</b> それは面白い(笑)。</p>

<p><b class="speaker takita">瀧田</b> この時公開されたソースコードは公開用に準備されていたものでした。というのも、Netscapeには、サードパーティー製のコードもたくさん含まれていたのですが、さすがにそれを一緒に公開するわけにはいかない。なので、そうした部分が取り除かれたものが用意されたのですが、コードが歯抜け状態だとちゃんと動かないわけです。ダウンロードしたユーザーからは多くの不満が寄せられました。</p>

<p><b class="speaker siraisi">白石</b> そんなこともあったんですね！<strong>Netscapeのコード公開が、「オープンソース」という単語と文化の誕生に大きく寄与した</strong>…なんて知識しかないものですから、裏にそんな苦労があったとは知りませんでした。</p>

<p><b class="speaker takita">瀧田</b> 大変でしたよー！そもそも公開する前提なんかで書いてないコードでしたから、Netscape Communicator 4 当時はコードもかなり汚かったんじゃないかな。使ってない関数がそのまま残っていて、誤って呼び出しちゃうなんてバグもざらにあったし。そんなコードを世の中に晒すのは、<strong>はっきり言って恥ずかしかった</strong>ですね(笑)。</p>

<p><b class="speaker siraisi">白石</b> なるほど。ただ、今だからお聞きしたいのですが、Netscapeのオープンソース化は、IEに対して負けを認めての半ばヤケクソだったのか、それともシェアを奪還するための「勝とう」という動機からのものだったのか、どちらだったのでしょう？</p>

<p><b class="speaker takita">瀧田</b> 当時のNetscapeは独立した営利企業ですし、やはり勝つための行動だったとは思います。</p>

<p>ただ同時に、コードをオープンにすることが、多くの不確実性を呼び込むということもわかっていたとは思います。 あとは、社内のエンジニアだけでは得られない社外の多くの人の叡智に賭ける（そしてシェアを奪還する）という思いも大きかったのではないでしょうか。</p>

<h2>Mozilla Japanの立ち上げ</h2>

<p><b class="speaker siraisi">白石</b> 98年のオープンソース化から、瀧田さんが2004年にMozilla Japanを立ち上げるまでの経緯はどんなものだったのでしょうか？</p>

<p><b class="speaker takita">瀧田</b> NetscapeのAOLによる買収などを経て2001年には日本法人も撤退し、一時はもうブラウザをやめようかと思った時期もあります。ただ、Web標準の重要性を日本の企業に説明に行ったり、個人的にNetscapeの広報活動をしたり、オープンソースコミュニティと一緒に行うイベントなどの活動は続けていたんです。</p>

<p>そして、2003年にAOLが Netscapeなどのクライアント事業を完全に分離し、Mozilla Foundationが誕生したのをきっかけに、日本でコミュニティ活動をスケールさせるためには母体となる組織が必要だと感じ、Mozilla Foundationの公式アフィリエイト（支部）として、2004年にMozilla Japanを設立しました。</p>

<p><img src="/wp-content/uploads/2017/08/DSC02169-1.jpg" alt="" width="640" height="417" class="alignnone size-full wp-image-24026" srcset="/wp-content/uploads/2017/08/DSC02169-1.jpg 640w, /wp-content/uploads/2017/08/DSC02169-1-300x195.jpg 300w, /wp-content/uploads/2017/08/DSC02169-1-207x135.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石</b> <strong>コミュニティのためにMozilla Japanを設立した、と言っても過言ではない</strong>わけですね。</p>

<p><b class="speaker takita">瀧田</b> はい、日本はもともと世界的に見ても Mozilla のコミュニティ活動が特に活発でした。当時の状況だと、非営利の法人が存在した方が、そうしたコミュニティ活動やオープンソースプロダクトの信頼性の確保につながると考えたんですね。もちろん、インターネットを健全で開かれた場所にするという Mozilla Foundation のミッションに強く共感したということもあります。</p>

<p>その後Firefoxがリリースされてからは、国際化はもちろんのこと、オープンソースを活用した人材育成だけでなく、Webの可能性の探求をはじめとする日本発のイノベーションを世界に伝えたいと思って活動していました。 やはり、日本人が持つこだわりや繊細さは、世界に通用するものだと思っていますから。</p>

<p><strong>Mozilla Japan設立から13年経ちますが、いまだにそうした想いは変わらない</strong>ですね。</p>

<h2>Mozilla JapanはなぜWebDINOに？</h2>

<p><b class="speaker siraisi">白石</b> ではその13年後である現在、瀧田さんはMozilla JapanをWebDINOに名称変更されました。<strong>WebDINOという名称には、どういう意味が込められているんですか？</strong></p>

<p><b class="speaker takita">瀧田</b> Webは私たちにとって欠かせないものです。そしてDINOはWebに対して私たちが重視してきた、そしてこれからも重視する価値観を表しています。</p>

<p>DはDiversity (多様性)。<br />
Iは私たちがずっと注力してきたInternationalization (国際化)ですが、人によってInternetだったり、Innovationだったりしてもいいと思っています。<br />
NはNeutrality (中立性)。<br />
OはOpenness (公開性)です。</p>

<p>この4つの要素をつなげたらDINOになったわけです。</p>

<p><img src="/wp-content/uploads/2017/08/DSC02231.jpg" alt="" width="640" height="427" class="alignnone size-full wp-image-24015" srcset="/wp-content/uploads/2017/08/DSC02231.jpg 640w, /wp-content/uploads/2017/08/DSC02231-300x200.jpg 300w, /wp-content/uploads/2017/08/DSC02231-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石</b> なるほど、様々な意味と想いが込められた名前なのですね。WebDINOに名前を変えるまでに、どういう経緯があったのでしょう？</p>

<p><b class="speaker takita">瀧田</b> 昨年末、Mozilla Japanの今後について深く考える機会がありました。</p>

<p>まずMozillaという組織についてお話しますと、最初にできた母体であるMozilla Foundationとその後2005年に設立されたMozilla Corporationから構成されています。 
非営利法人であるMozilla Foundationが、営利企業であるMozilla Corporationを子会社として所有しているという形になっています。</p>

<p>Firefoxは、検索エンジンへの窓口として収入を得ていますが、その収入が非常に大きくなってきたことでNPOであるFoundationで扱える範囲を超えるため、財団の下に営利企業を作って運営するという形を取っているんですね。</p>

<p><b class="speaker siraisi">白石</b> 営利企業が非営利団体の子会社、って面白い構図ですね。知りませんでした。</p>

<p><b class="speaker takita">瀧田</b>  Mozilla Japanは、Mozillaの中ではちょっと特殊な立ち位置だったのです。Mozilla Corporation ができる前にMozilla Foundationの公式支部としてできた組織で、日本の独立した法人ですから。そういう特殊な立ち位置のまま13年経過した。</p>

<p>しかし今は、グローバルに向けた業務はMozilla Corporation に所属するスタッフが行うことになっているので、特定の地域に向けてのみ活動する組織というのは、Mozillaの中では認められていないんです。そこでこの状況をどう整理するかという時期に来て、組織としてどうあるべきかをあらためて考えた時、私たちがしたかったこと、してきたことを見直すきっかけになりました。</p>

<p><img src="/wp-content/uploads/2017/08/DSC02141.jpg" alt="" width="640" height="427" class="alignnone size-full wp-image-24016" srcset="/wp-content/uploads/2017/08/DSC02141.jpg 640w, /wp-content/uploads/2017/08/DSC02141-300x200.jpg 300w, /wp-content/uploads/2017/08/DSC02141-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>企業体としてのMozilla Corporationは、当然ながらプロダクトにフォーカスしています。 組織としてどうあるべきかをあらためて考えた時、私たちがしたかったこと、してきたことって、プロダクトを通じてMozillaの理念を伝えることもそうですが、日本の状況に寄り添ったMozillaの理念を軸にしたチャレンジングな活動だったはず。</p>

<p><strong>だから、私には、Mozillaプロダクトのマーケティングだけを行っていくという選択肢はあり得なかったのです。</strong> というのも、私たちはMozillaのユーザーはもちろん、すべてのWeb、インターネットを使う人たちのために何をすべきかを考えたいと思っていたので。</p>

<p>なので、組織体制的にMozilla Japanをどういう位置づけにするべきかという選択の中で、Mozilla Foundationの公式支部という立場を離れ、外部組織として連携を図っていくことにしたというわけです。</p>

<p><b class="speaker siraisi">白石</b> 元々ががミッションやコミュニティ、オープンソーススケールのために作ったのだから、プロダクトのマーケティングのみを行う組織には甘んじたくなかったと。</p>

<p><b class="speaker takita">瀧田</b> というより、もともとAOLから離れて100％NPOとしてコミュニティ主導に変わり、Mozilla Foundationができた時に賛同して作った組織なので、その頃からの志は変えたくないというか。例えばMozilla Europeなんかは、Mozilla Corporationが設立された時点で、その傘下に入りました。Mozilla Japanにも、当時そういう選択肢はあったのですが、そうしなかったという経緯もある。</p>

<p>そういう歴史も踏まえつつ、<strong>これから5年10年先を見据えて「Mozilla Japanはどうすべきか」と考えているうち、自然と「Webはどうあるべきか」を考えていた</strong>のです。それに気づいた時、Mozilla組織内という立場にとらわれず、逆にもっと大きな視野でWebを考える立場として活動する方がフィットするのだと判断しました。</p>

<p><img src="/wp-content/uploads/2017/08/DSC02202.jpg" alt="" width="640" height="412" class="alignnone size-full wp-image-24017" srcset="/wp-content/uploads/2017/08/DSC02202.jpg 640w, /wp-content/uploads/2017/08/DSC02202-300x193.jpg 300w, /wp-content/uploads/2017/08/DSC02202-207x133.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石</b> それは大きな決断ですね。今後、Mozillaとの関わりはどうなっていくのでしょう？</p>

<p><b class="speaker takita">瀧田</b> もともと特殊な立場だったので、当面はそれほど大きな変化はないですね。Mozillaのプロダクトマーケティングだけをやってきたわけではないのでスタンスも変わりませんし、引き続きMozilla Foundationの活動には協力していくことになっているので。 活動資金という面から言うと、これまではMozilla Corporationからマーケティング活動に対して予算を割り当てられていましたが、今後は外部組織という立場から、Mozilla Foundationにプロジェクトベースで相談していくことになります。</p>

<p><b class="speaker siraisi">白石</b> なるほど、運営面では当面大きな変化はないと。ただ、その先もサステナブル（持続可能）な活動が可能なのでしょうか？</p>

<p><b class="speaker takita">瀧田</b> Mozillaのマーケティング以外に行ってきた様々な事業も引き続き行いますし、今後も色々と構想しています。チャレンジであることは認めます。しかし実は数年前から、ブラウザという枠を出たい、もっと外からWebを眺めたいと思って活動していたんです。</p>

<p>現在、技術という面ではWebは多少停滞しているのでは、という思いがあります。だからこそ、Webをブラウザという枠の外にどんどん広げたいと思っています。IoT/WoTの活動や、<a href="https://chirimen.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CHIRIMEN OPEN HARDWARE</a> のコミュニティ活動支援なども引き続き行っていきたいと思っています。そういうチャレンジに正面から向き合えることは、正直ワクワクしていますね。</p>

<h2>オープンソースコミュニティとしてのMozilla、企業としてのMozilla</h2>

<p><b class="speaker siraisi">白石</b> ところで、Mozilla JapanがWebDINOに変わったように、Mozillaという組織やコミュニティ自体にも、何がしかの変化が起きているのでしょうか。</p>

<p><b class="speaker takita">瀧田</b> Mozillaに限ったことではありませんが、企業体が大きくなったことで、<strong>企業体とコミュニティのバランスが難しいところに来ているとは感じています</strong>。</p>

<p>Mozilla Corporation内で給与をもらってエンジニアリングをしている人もいれば、コミュニティには純粋にボランタリーな人もたくさんいるわけです。そうした多様な開発者と、分け隔てなく接していけるかどうか。難しくも繊細な問題です。</p>

<p><b class="speaker siraisi">白石</b> 例えば、Mozillaが開発方針や優先順位を定めたとしても、善意や関心で関わっているコミュニティの人々は、Mozillaのリードに従う義務はないはずです。そこのバランスをどう取って、開発を進めているのかは、ずっと誰かに聞いてみたいと思っていました。</p>

<p><b class="speaker takita">瀧田</b> Mozilla Corporationは、MozillaやFirefoxというブランドを保持している以上、そのブランドの価値を高めていく必要があります。そこで、開発全体を管理しようという欲求が生じるのはある意味やむを得ないところです。</p>

<p>それが、コミュニティ的な自由とのせめぎ合いになるところなのは間違いないですね。Mozilla Japanのメンバーは、Mozillaの組織がまだ小さかった頃から関わってきたので、そうしたせめぎ合いの中でも、常に「Mozillaらしさ」を意識して行動するようにしていました。</p>

<p><img src="/wp-content/uploads/2017/08/DSC02177.jpg" alt="" width="640" height="427" class="alignnone size-full wp-image-24019" srcset="/wp-content/uploads/2017/08/DSC02177.jpg 640w, /wp-content/uploads/2017/08/DSC02177-300x200.jpg 300w, /wp-content/uploads/2017/08/DSC02177-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石</b> なるほど、やはりそういうせめぎ合いはあって、バランスを取って進めていたのですね。</p>

<p>ではもう一つ、前から疑問に思っていたことを聞かせてください。Firefoxのシェアが下降しているというデータがありますが、それについてMozillaやMozilla Japanはどう捉えていたのでしょうか。</p>

<p>というのも、非営利組織であり、ミッションを重視するという立場からすると、競合と言えども「Webを盛り上げる仲間」という捉え方もできるわけです。そうなると、<strong>シェアを伸ばそうという強いモチベーションは生まれにくいのではないか</strong>と想像していました。</p>

<p><b class="speaker takita">瀧田</b> おっしゃる通り、何が何でもマーケットシェアを拡大していこうという貪欲さは、Mozillaには馴染みがないものだと思います。ただ個人的には、ある程度のシェアを確保しておく必要はあると感じています。</p>

<p>というのも、Firefoxが登場して間もないころはInternet Explorerの独占状態で、私たちが何を言っても「なぜいまさらブラウザなのか」という扱いで、誰にも相手にされないような状態でした。目標とするマーケットシェアを尋ねられた時に「25%を目指します」と答えたら、あまりに非現実的だと受け止められて、鼻で笑われたものです。</p>

<p>しかし、シェアが10%を超えたあたりから明らかに周りの反応が変わってきて、実際に25%に近づいたときには、私たちの言うことにみな耳を傾けてくれるようになりました。そういう経験から言うと、発信力や発言力を保っておくためにも、シェアは少なくとも10%以上はキープしておかないと、という思いがあります。いくら崇高なミッションを掲げていても、耳を傾けてもらえなければ意味がありませんから。</p>

<p>ただし、シェアが高いだけではだめで、そのシェアを持つことで何を伝えるかが重要だと思っています。シェアを持ったベンダーは、マーケットに対して何を貢献するのか、Webの標準の重要性だったり、Webのエコシステムだったりと、ミッションとシェアの両方があることが重要なのだと思います。</p>

<p>あとは、製品を提供する企業が一社では良くないという想いもあります。先程も申し上げましたが、第一次ブラウザ戦争は痛みももたらしましたが、技術の急激な進歩を後押ししました。
<strong>技術革新の健全な競争は、Webの発展のためにも必要だと思います</strong>。</p>

<p><img src="/wp-content/uploads/2017/08/DSC02208.jpg" alt="" width="640" height="427" class="alignnone size-full wp-image-24020" srcset="/wp-content/uploads/2017/08/DSC02208.jpg 640w, /wp-content/uploads/2017/08/DSC02208-300x200.jpg 300w, /wp-content/uploads/2017/08/DSC02208-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石</b> 発言力という点で言うと、シェアの変化に伴い、W3C内でのMozillaの発言力に変化はありますか？また、WebDINOになってW3Cとの関わり方に変化はあるのでしょうか？</p>

<p><b class="speaker takita">瀧田</b> 国内の話で言うと、これまでもW3C/Keioさんとは、日本独自のイベントなどをいろいろとコラボレーションをさせていただいてきました。日本のWeb発展のためにも、できればそうした関係はこれからも続けていきたいと思っています。</p>

<p>W3CでのMozillaの発言力という点については、それほど影響は出ていないのではないでしょうか。HTML5で最も話題になっていた頃に比べると、標準化の活動が落ち着いているな、という感はありますが<strong>Web技術はどちらかというと発展のフェーズから活用のフェーズに入ったのではないかと思います</strong>。</p>

<h2>これからのwebはどうなるか、どうあるべきか</h2>

<p><b class="speaker siraisi">白石</b> では瀧田さんは、今後のWebはどうなるとお考えですか？</p>

<p><b class="speaker takita">瀧田</b> <strong>Webは、ブラウザの枠を出なくては…という思いはあります</strong>ね。</p>

<p>Firefox OSの開発中止が発表されたあたりでしょうか、今後のコミュニティ、Web、そしてインターネットはどうあるべきか、よく考えたんです。その時感じたのは、<strong>ブラウザという枠から出ることのできないMozillaのままではいけない、一旦外に出てWebを見直さなければいけない</strong>ということです。</p>

<p>そうして実際に、ブラウザの枠を超えた活動を通じて、実際に触ることのできるリアルなものとWebがつながることが大事だという想いを深めました。すべてのものにURLが振られ、触れるものすべてがWebとつながっている世界。そこには、今のブラウザが想定しているようなビジュアルなUIはありません。<strong>ブラウザは空気のようにならなくてはならない</strong>。</p>

<p><img src="/wp-content/uploads/2017/08/DSC02187.jpg" alt="" width="640" height="407" class="alignnone size-full wp-image-24024" srcset="/wp-content/uploads/2017/08/DSC02187.jpg 640w, /wp-content/uploads/2017/08/DSC02187-300x191.jpg 300w, /wp-content/uploads/2017/08/DSC02187-207x132.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石</b> そうなった時、もはやそれを「ブラウザ」とは呼ばないでしょうね。ブラウジングじゃありませんから。</p>

<p><b class="speaker takita">瀧田</b> そうです。ブラウザは、この先もずっとブラウザと呼ばれているようではダメだと思います。</p>

<p><b class="speaker siraisi">白石</b> すごく進んだ考え方だと思います。</p>

<p><b class="speaker takita">瀧田</b> はい、もしかすると私はいつも早すぎるのかもしれません。</p>

<p>この間部屋を片付けていたら過去の講演資料が出てきたんですが、2004年くらいの時点で、Webはコミュニケーションとアプリケーションの基盤になるということや、モバイルWebについても語っているんです。</p>

<p>そしてMozillaがFirefox OS、つまりモバイルを語り始めた頃には、IoTとWebについて語っていた。技術というのは10年くらいで一つの区切りがあると考えているのですが、<strong>一区切り先を語ってしまっているのかもしれない</strong>な、と思います。</p>

<p>ただ、そういう人もいていいのかな、とは最近思うんです。私は鉄腕アトムが好きなんですが、その世界観が多くの人に影響を与えて、実際の世界にも近づいてきていると感じています。そういう、未来に関するビジョンを示すという役割も世の中には必要なんじゃないかな…と考えています。</p>

<p>ちなみに、白石さんはWebの未来について、今後どうなるとお考えですか？</p>

<p><img src="/wp-content/uploads/2017/08/DSC02239.jpg" alt="" width="640" height="427" class="alignnone size-full wp-image-24021" srcset="/wp-content/uploads/2017/08/DSC02239.jpg 640w, /wp-content/uploads/2017/08/DSC02239-300x200.jpg 300w, /wp-content/uploads/2017/08/DSC02239-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石</b> うーん…ぼくは、瀧田さんほどビジョンめいたものは抱いていません。が、最近ぼくは<strong>コミュニティというものに改めて価値を感じている</strong>んです。</p>

<p><b class="speaker takita">瀧田</b> 改めて、ですか？</p>

<p><b class="speaker siraisi">白石</b> はい。ぼくがコミュニティ（html5j）を運営していた頃って、実はコミュニティというものにそこまで価値を感じていなかったんです。感じないようにしていたというか。それは、「自分の行っている活動に価値がある」なんて思い上がりをしないよう、自分の中でブレーキをかけていたのが大きいんですが。</p>

<p>コミュニティって、明確に形があるわけじゃないから、とらえどころがない。資本主義的な価値観から言っても、価値はそれほど感じられない。お金が儲かるかというと、そうではありませんから。</p>

<p><b class="speaker takita">瀧田</b> そうですね(笑) 。お金を儲ける道具と考えてしまうと、コミュニティってうまくいきません。</p>

<p><img src="/wp-content/uploads/2017/08/DSC02203.jpg" alt="" width="640" height="416" class="alignnone size-full wp-image-24014" srcset="/wp-content/uploads/2017/08/DSC02203.jpg 640w, /wp-content/uploads/2017/08/DSC02203-300x195.jpg 300w, /wp-content/uploads/2017/08/DSC02203-207x135.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石</b> そういう意識を常日頃から持ち続けることで、コミュニティというものに価値を感じるという感覚を封じてたんですね。でも、自分がコミュニティリーダーを離れて、少し離れたところからコミュニティというものを考えられるようになって、ようやく価値を実感し始めたというところなんです。</p>

<p>なくてはならないものというか、価値うんぬんは関係なく、人間がたくさんいる限り自然に発生するものというか。そしてそういうコミュニティを作り、運営するという点については確実にスキルや経験が問われる要素がある。</p>

<p>そういう点では、瀧田さんがMozilla Japanを通じてオープンソースコミュニティを支えてきたという経験は、何物にも代えがたいものなのではないか…なんて思いながら聞いていました。</p>

<p><b class="speaker takita">瀧田</b> <strong>Webの価値って、結局人なんですよね</strong>。人と人がWebを通じて繋がっている、そこにこそWebやインターネットの価値があるんです。Mozillaはブラウザというプロダクトを通じて、またオープンソースコミュニティを通じて、人と人を結びつけました。そこにはきっと、テクノロジーの流行り廃りを超えた普遍的な価値があると思います。</p>

<p><b class="speaker siraisi">白石</b> そうした価値こそが、WebDINOが体現していくものなのかもしれませんね。お忙しいところ、本日はどうもありがとうございました。大変楽しかったです。</p>

<p><img src="/wp-content/uploads/2017/08/DSC02151.jpg" alt="" width="640" height="427" class="alignnone size-full wp-image-24023" srcset="/wp-content/uploads/2017/08/DSC02151.jpg 640w, /wp-content/uploads/2017/08/DSC02151-300x200.jpg 300w, /wp-content/uploads/2017/08/DSC02151-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>
]]></content:encoded>
			</item>
		<item>
		<title>ブラウザ戦争は終わった！Webの最先端と未来を、ブラウザエバンジェリストたちが語る</title>
		<link>/shumpei-shiraishi/23666/</link>
		<pubDate>Tue, 06 Jun 2017 01:00:55 +0000</pubDate>
		<dc:creator><![CDATA[白石 俊平]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[de:code2017]]></category>
		<category><![CDATA[ブラウザ]]></category>

		<guid isPermaLink="false">/?p=23666</guid>
		<description><![CDATA[連載： de:code 2017 特集 (3) 本記事は、2017/5/23, 24に開催された「de:code 2017」の1セッション、「War is over : ブラウザエバンジェリスト達とWebの未来を語ろう」...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/ms-decode2017/" class="series-449" title="de:code 2017 特集" data-wpel-link="internal">de:code 2017 特集</a> (3)</div><p><style>
b.speaker:after {
  content: ': ';
}
</style>
本記事は、2017/5/23, 24に開催された「<a href="https://www.microsoft.com/ja-jp/events/decode/2017/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">de:code 2017</a>」の1セッション、「War is over : ブラウザエバンジェリスト達とWebの未来を語ろう」を聴講したレポートです。</p>

<p>GoogleやMozillaのエバンジェリストたちがマイクロソフトのセッションで仲良くお話、って光景を見るだけでも楽しいセッションでした<img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f60a.png" alt="😊" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>

<p><img src="/wp-content/uploads/2017/06/IMG_0542-640x427.jpg" alt="" width="640" height="427" class="aligncenter size-large wp-image-23668" srcset="/wp-content/uploads/2017/06/IMG_0542.jpg 640w, /wp-content/uploads/2017/06/IMG_0542-300x200.jpg 300w, /wp-content/uploads/2017/06/IMG_0542-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<div id="attachment_23667" style="width: 650px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/06/IMG_0570-640x427.jpg" alt="左からMozilla Japan 技術戦略マネージャ 浅井智也氏、Google デベロッパーアドボケート 北村英志氏、日本マイクロソフト デベロッパーエヴァンジェリズム統括本部 物江修氏" width="640" height="427" class="size-large wp-image-23667" srcset="/wp-content/uploads/2017/06/IMG_0570.jpg 640w, /wp-content/uploads/2017/06/IMG_0570-300x200.jpg 300w, /wp-content/uploads/2017/06/IMG_0570-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /><p class="wp-caption-text">左からMozilla Japan 技術戦略マネージャ 浅井智也氏、Google デベロッパーアドボケート 北村英志氏、日本マイクロソフト デベロッパーエヴァンジェリズム統括本部 物江修氏</p></div>

<div id="attachment_23669" style="width: 650px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/06/IMG_0552-640x427.jpg" alt="Web Payments, WebVR, Web Assembly, Progressive Web Appsについてエバンジェリストたちが語る" width="640" height="427" class="size-large wp-image-23669" srcset="/wp-content/uploads/2017/06/IMG_0552.jpg 640w, /wp-content/uploads/2017/06/IMG_0552-300x200.jpg 300w, /wp-content/uploads/2017/06/IMG_0552-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /><p class="wp-caption-text">Web Payments, WebVR, Web Assembly, Progressive Web Appsについてエバンジェリストたちが語る</p></div>

<h2>Web Payments</h2>

<p><b class="speaker monoe">物江</b> まず、<strong>Web Payments</strong>についてお聞かせ願いたいのですが、こちら北村さんご説明をお願いできますか？</p>

<p><b class="speaker kitamura">北村</b> まず前提として、インターネットを利用する際に私たちがクレジットカードを利用するようになってから、それなりに時間が経過しましたね。そして現在転換期が訪れているといっていいのではないかと思います。これまでのように、フォームにクレジットカードの情報を生で入れて送信するというので、本当にいいのだろうか。</p>

<p>そうした問題を解決すべく提案されているのが、Payment Request APIです。他のサードパーティ製アプリに遷移して戻ってくるなどのUIを通じて、決済に必要な情報を、スムーズにユーザーに対して問い合わせることができます。</p>

<p>（筆者注: <a href="https://developers.google.com/web/updates/2016/07/payment-request?hl=ja" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Payment Request APIの日本語による解説記事</a>）
（筆者注: <a href="https://blogs.msdn.microsoft.com/msedgedev_japan/2016/12/20/simpler-web-payments-introducing-the-payment-request-api/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">よりシンプルな Web の決済方法 : Payment Request API の紹介</a>）
<div id="attachment_23672" style="width: 650px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/06/IMG_0555-640x427.jpg" alt="Google デベロッパーアドボケート 北村英志氏" width="640" height="427" class="size-large wp-image-23672" srcset="/wp-content/uploads/2017/06/IMG_0555.jpg 640w, /wp-content/uploads/2017/06/IMG_0555-300x200.jpg 300w, /wp-content/uploads/2017/06/IMG_0555-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /><p class="wp-caption-text">Google デベロッパーアドボケート 北村英志氏</p></div></p>

<p><b class="speaker monoe">物江</b> なるほど。このPayment Request APIですが、<strong>Edgeではバージョン15からサポート</strong>していまして、Creators Updateを適用したWindows 10上ではすでに利用可能です。Firefoxでのサポートは行われる予定があるんでしょうか？</p>

<p><b class="speaker asai">浅井</b> はい、時期はまだ言えないのですが、<strong>サポートするのは確定</strong>しています。</p>

<p><b class="speaker kitamura">北村</b> <strong>Chromeは現在Android版のみ対応していて、デスクトップ版は開発中</strong>です。</p>

<p><b class="speaker monoe">物江</b> あと、iOS版のChromeについても教えていただけますか？</p>

<p><b class="speaker kitamura">北村</b> iOS版Chromeは、iOSのWebViewを使っていて、iOSのWebViewはPayment Request APIに対応していません。なので、<strong>そのままだとiOS ChromeではPayment Request APIは使えないのですが、実はこれを無理やり使えるようにしてしまおうという計画がありまして</strong>。</p>

<p>どう実現するかというと、ChromeからWebViewに対して機能を注入してしまうんですね。WebViewで通常使えないJavaScript APIを使えるようにしてしまう。Cordovaとかでは以前から普通に行われていたことです。</p>

<p>これまではiOSのWebViewに対してJavaScriptをインジェクトして、新しいAPIを使えるようにするということはしてきませんでした。なので、iOS版のChromeにとっては大きな方針転換でもあります。</p>

<p><b class="speaker monoe">物江</b> このように、各種のプラットフォームでサポートがすでに始まっていますので、<strong>今年中か、もしくは来年の初めくらいには、一般的に使えるAPIになってそう</strong>ですね。</p>

<p><b class="speaker asai">浅井</b> 個人的には、（Mozillaの前身である）Netscapeが切り開いた商用インターネットの世界が、ようやくここまで来たか…と感慨深いものがあります。</p>

<h2>WebVR</h2>

<p><b class="speaker monoe">物江</b> では次はWebVRについてお聞きしていきましょう。WebVRについては、先日のCreators Updateから、1.1のAPIをサポートしはじめました。また、<a href="http://www.babylonjs.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Babylon.js</a>や<a href="https://aframe.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">A-Frame</a>といったライブラリを使うと、WebVRを簡単に扱うことができると。</p>

<p>浅井さん、A-Frameについて教えていただけますか？</p>

<p><b class="speaker asai">浅井</b> A-Frameは、Web上で簡単にVRを扱えるようにすることを目指すライブラリです。例えば、HTMLタグを一つぽんと置くだけで360度画像を表示できるようにするとか。</p>

<p>Unityだとアセットストアがあって、アセットを購入したりすることができるのですが、<a href="https://aframe.io/aframe-registry/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">それと同じようなエコシステムがコミュニティ主導で進められている</a>のも特徴です。非常に簡単に3Dコンテンツを作れて、売り買いしながら作っていけるエコシステムができていくだろうと期待しています。</p>

<div id="attachment_23673" style="width: 650px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/06/IMG_0559-640x427.jpg" alt="Mozilla Japan技術戦略マネージャ 浅井智也氏" width="640" height="427" class="size-large wp-image-23673" srcset="/wp-content/uploads/2017/06/IMG_0559.jpg 640w, /wp-content/uploads/2017/06/IMG_0559-300x200.jpg 300w, /wp-content/uploads/2017/06/IMG_0559-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /><p class="wp-caption-text">Mozilla Japan技術戦略マネージャ 浅井智也氏</p></div>

<p><b class="speaker monoe">物江</b> コンテンツで思い出したんですが、意外とWeb上で3Dを扱うような仕事ってまだ少ないらしいんですよね。WebGLがモダンブラウザ全部でサポートされるようになってから結構経つのに、WebGLってどこかゲーム用途のイメージも強いみたいで。</p>

<p>ただ<strong>WebGLって、本来ゲーム以外の用途もたくさんあるはず</strong>なんです。例えば<a href="https://grimoire.gl/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Grimoire.js</a>っていうライブラリがあるんですが、これは様々な3Dコンテンツを、簡単にWeb上で扱えるようにすることを目的としていて、こういう動きが盛り上がると、WebGLってもっと活用されるんじゃないかと思う。</p>

<p><b class="speaker asai">浅井</b> その点VRは、コンテンツを中心とした盛り上がりも活発で、結構未来があるんじゃないかな、と思いますね。</p>

<p><b class="speaker monoe">物江</b> ちなみに、VRではなくてMR (Mixed Reality) でいうと<a href="https://github.com/Microsoft/HoloJS" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HoloJS</a>っていうのもあって、HoloLens用のアプリを作ることもできます…すごく大変なんですけどね(笑)。</p>

<p>ところでChromeも、WebVRには対応済みですよね。何か最近の動きとかを教えていただけますか？</p>

<p><b class="speaker kitamura">北村</b> そうですねー、Daydream上でChromeを立ち上げることができるようにする、というのは聞きましたね（筆者注: VR/AR空間内でChromeを立ち上げられるように、ということだと思われる。参考: <a href="https://techcrunch.com/2017/05/18/chrome-is-coming-to-augmented-reality-and-google-daydream/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Chrome is coming to augmented reality and Google Daydream (TechCrunch)</a>）。</p>

<h2>WebAssembly</h2>

<p><b class="speaker monoe">物江</b> では次は、WebAssemblyのお話を聞かせてください。やはりここは、（WebAssemblyの元になったasm.jsの開発元である） Mozillaの浅井さんにお聞きしようかと。</p>

<p><b class="speaker asai">浅井</b> はい、WebAssemblyの元になったのはasm.jsという技術です。
もともと、JavaScriptは動的な言語なので、パフォーマンスの向上にも限界がある。そこで、JavaScriptのサブセットとしてasm.jsが提案されたんです。
変数の型が厳密に定義されており、さらに実行に先立ってコンパイルが可能なので、相当に速かった。</p>

<p><img src="/wp-content/uploads/2017/06/IMG_0536-640x427.jpg" alt="" width="640" height="427" class="aligncenter size-large wp-image-23674" srcset="/wp-content/uploads/2017/06/IMG_0536.jpg 640w, /wp-content/uploads/2017/06/IMG_0536-300x200.jpg 300w, /wp-content/uploads/2017/06/IMG_0536-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>WebAssemblyは、さらにそれをコンパイル済みのバイナリとして配布できるようにする技術です。そのバイナリフォーマットに関する仕様がWebAssemblyです。<strong>実行速度は相当なもので、現在でもC言語の速度まであと20%というところまで迫っています</strong>。</p>

<p><b class="speaker monoe">物江</b> FirefoxやChromeではすでに対応済みなんですよね。Edgeでも、フラグをONにすると使えるようになります。
個人的にはJavaScriptを置き換えるようなものではなく、高機能な計算が必要なところに使うものだと思っていますが、合ってますか？</p>

<p><b class="speaker asai">浅井</b> はい、そうだと思います。WebAssemblyに出力するのも、基本的にはC/C++やRust言語で書かれたものになりますし。</p>

<p><b class="speaker monoe">物江</b> ちなみに、WebAssemblyへのコンパイルって具体的にはどうやるんですか？</p>

<p><b class="speaker asai">浅井</b> <a href="http://kripken.github.io/emscripten-site/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Emscripten</a>と<a href="https://github.com/WebAssembly/binaryen" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Binaryen</a>というツールを組み合わせて、C/C++のコードをWebAssemblyに変換する…というのが一般的ですね。基本的には、LLVMの中間言語が出力できれば、そこからEmscriptenを使ってasm.jsに変換でき、更にBinaryenでWebAssembly化できます。</p>

<p>（筆者注: <a href="https://github.com/kripken/emscripten/wiki/WebAssembly" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">https://github.com/kripken/emscripten/wiki/WebAssembly</a> も参考のこと）</p>

<h2>Progressive Web Apps</h2>

<p><b class="speaker monoe">物江</b> 昨今のWebの重要キーワード、Progressive Web Appsですが、これは北村さん説明をお願いできますか？</p>

<p><b class="speaker kitamura">北村</b> はい。その前に、Progressive Web Appsって、ご存じの方どれくらいいます？…思ったより浸透してないですね。まだまだだな。</p>

<p><strong>Progressive Web Appsっていうのは、一言で言うとモバイルウェブの新しい形</strong>です。</p>

<ul>
<li>Webサイトがホーム画面から起動できる</li>
<li>プッシュ通知</li>
<li>オフラインで動く</li>
</ul>

<p><img src="/wp-content/uploads/2017/06/IMG_0567-640x427.jpg" alt="" width="640" height="427" class="aligncenter size-large wp-image-23680" srcset="/wp-content/uploads/2017/06/IMG_0567.jpg 640w, /wp-content/uploads/2017/06/IMG_0567-300x200.jpg 300w, /wp-content/uploads/2017/06/IMG_0567-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker kitamura">北村</b> 百聞は一見にしかずで、<a href="http://mobile.twitter.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">twitter.com</a>をAndroid 版 Chromeで開いてみるというのが一番わかりやすいと思います。
これは<strong>Twitter Lite</strong>と呼ばれていて、動作も素早いし、モバイルアプリと使い勝手はほとんど変わりません。</p>

<p><b class="speaker asai">浅井</b> PWAは、アプリに比べてデータ通信量も抑えめになるそうです。例えばTwitter Liteではアプリに比べて70%データが削減できるとか。なので、ブラジル、インド、インドネシアといった、ネットワークインフラの整っていない新興国では、アプリよりもユーザのコンバージョン率が高く、採用も広まっているようです。</p>

<p><b class="speaker monoe">物江</b> Firefoxでの、PWA対応はいかがでしょう？</p>

<p><b class="speaker asai">浅井</b> 現在でもホーム画面へのインストールなど基本機能は対応していますし、今後フルスクリーン起動なども順次実装を進めていくそうです</p>

<p><b class="speaker monoe">物江</b> モバイルといえばネイティブアプリ、という印象はいまだに根強いですが、モバイルサイトも同時に構築できてしまうので、環境が整って利点が正しく理解されさえすれば、一気に広まりそうですよね。<strong>PWA対応していないブラウザでアクセスしたとしても、通常のWebアプリとして使えますし</strong>。</p>

<p>ちなみにEdgeでは、今年の夏頃から開発者向けのビルドでPWAを試せるようになります。<strong>年末ぐらいまでには、メジャーブラウザでは全体的にPWAが使えるようになりそう</strong>ですね。</p>

<p><b class="speaker kitamura">北村</b> ちなみにマイクロソフトさんの検索エンジンの<strong>Bingが、PWAを見つけたらWindows Storeに並べてしまうようになる</strong>というのを最近知って、すごい荒業だけどこれは面白いなと思いました。</p>

<p>PWAって捉えどころがないふわっとした用語ではありますが、実際には個々の技術それぞれにもすごく価値があります。オフラインやプッシュ通知がWebアプリで行えるというのは、<strong>Ajax以来の技術的な革命じゃないかと思います</strong>ね。</p>

<h2>Web Components</h2>

<p><b class="speaker monoe">物江</b> そろそろお時間も迫ってまいりましたので、最後のトピックです。
Web Componentsについて語りたいのですが、北村さん、Web Componentsのご説明をお願いできますか？</p>

<p><b class="speaker kitamura">北村</b> Web Componentsっていうのは、一言で言うと、<strong>自分でHTMLタグを作れるという技術</strong>です。そして、自作したタグ（コンポーネント）を配布できる。</p>

<p>Web Componentsは、最近だとSafariに搭載されたのが大きいですね。iOSを含め、割とどこでも使えるメジャーな技術になりました。</p>

<p>あともう一つ、<strong>AMP (Accellalated Mobile Pages）も実はWeb Componentsを使っています</strong>。AMPに対応しているサイトは、現時点でもかなりの数に上りますので、実際にはWeb Componentsはすごい勢いで広まっていると言っていいんじゃないかと思います。</p>

<p><b class="speaker monoe">物江</b> <a href="https://www.polymer-project.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Polymer</a>というライブラリもあるそうですが、それとWeb Componentsの関係はどのようなものでしょうか？
<div id="attachment_23676" style="width: 650px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/06/IMG_0556-640x427.jpg" alt="日本マイクロソフト株式会社 デベロッパーエヴァンジェリズム統括本部 物江修氏" width="640" height="427" class="size-large wp-image-23676" srcset="/wp-content/uploads/2017/06/IMG_0556.jpg 640w, /wp-content/uploads/2017/06/IMG_0556-300x200.jpg 300w, /wp-content/uploads/2017/06/IMG_0556-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /><p class="wp-caption-text">日本マイクロソフト株式会社 デベロッパーエヴァンジェリズム統括本部 物江修氏</p></div></p>

<p><b class="speaker kitamura">北村</b> Web Componentsっていうのは、W3Cで標準化が進められている技術なんです。具体的には4つの技術から構成されています。</p>

<p><strong>Custom Element</strong>は、先程申し上げたように独自のタグを作ることのできる技術です。</p>

<p><strong>Shadow DOM</strong>は、DOMのカプセル化を行えるようにする技術。</p>

<p><strong>Template Element</strong>っていうのは、「テンプレートである」という意味合い以外持たないHTML要素です。</p>

<p><strong>HTML Import</strong>というのは、JSやCSSのように、HTMLもインポート可能にするという技術です。</p>

<p>一方で<strong>Polymerというのは、Web Componentsの上に構築されたライブラリ</strong>です。</p>

<p>Web Components標準はそれほど高いレベルのAPIを提供しません。なので、実際にコンポーネントを作ろうとすると、実装の重複が多くなります。その重複を排除して、最小限のコードでコンポーネントを作れるようにするのがPolymerです。</p>

<p><b class="speaker monoe">物江</b> ちなみにEdgeは、Web Componentsについては長いこと意識しているようですが、まだ詳細は未定です。Polymerを使うと、現在のEdgeでもWeb Componentsが動作したりするんでしょうか？</p>

<p><b class="speaker kitamura">北村</b> はい、PolymerはPolyfill（対応していないブラウザ上でAPIのエミュレーションを行うライブラリ）も含んでいますので、動作しますね。<strong>実は、現在のYouTubeサイトはWeb ComponentsベースのHTMLに全て書き換えられている</strong>んです。コードを見てみると面白いと思いますよ。</p>

<p>あと、Polymerはライブラリだけじゃなくてコンポーネントも提供しているんです。 <a href="http://webcomponents.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">http://webcomponents.org/</a> を見てみると、すでにいろんなコンポーネントが利用できるのを確認できると思います。</p>

<h2>まとめ</h2>

<p><img src="/wp-content/uploads/2017/06/IMG_0572-640x427.jpg" alt="" width="640" height="427" class="aligncenter size-large wp-image-23677" srcset="/wp-content/uploads/2017/06/IMG_0572.jpg 640w, /wp-content/uploads/2017/06/IMG_0572-300x200.jpg 300w, /wp-content/uploads/2017/06/IMG_0572-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker monoe">物江</b> では、このディスカッションの締めくくりとして、Webの今後について一言ずついただけますでしょうか？</p>

<p><b class="speaker asai">浅井</b> はい、モバイル時代は長らくネイティブアプリが中心でしたが、ここに来て<strong>Webの力が盛り返してきているのを感じています</strong>。ネイティブアプリと遜色ない機能を提供できるだけではなく、ユーザーにリーチするのも、アプリストアよりもWebのほうがハードルが低い。リンクを送るだけでプロモーションできますしね。そういう点で、PWAには期待しています。</p>

<p><b class="speaker kitamura">北村</b> PWAについては、ぼくも同じく期待しています。とりあえずTwitter Liteを触ってみてほしいですね。</p>

<p>あとWebの今後という点で思いついたのですが、<strong>企業の枠組みを超えた合意形成の方法としては、Webはかなり進んでいるんじゃないかと思います</strong>。ディスカッションの場作りとか、標準化を行う上で蓄積されたノウハウはかなり貴重で、他の場面や業界にも活かされていくんじゃないかな…と考えています。</p>

<p><b class="speaker monoe">物江</b> ではそろそろお時間ですので、本セッションを終わりとしたいと思います。みなさま、本日は大変興味深いお話を、どうもありがとうございました。</p>
]]></content:encoded>
		
		<series:name><![CDATA[de:code 2017 特集]]></series:name>
	</item>
		<item>
		<title>HTMLとJavaScript、CSSだけで作ろう！Firefox OSアプリ</title>
		<link>/chikoski/13697/</link>
		<pubDate>Thu, 16 Apr 2015 03:00:15 +0000</pubDate>
		<dc:creator><![CDATA[清水智公]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Webアプリ]]></category>

		<guid isPermaLink="false">/?p=13697</guid>
		<description><![CDATA[連載： HTML5 Conference 2015 特集 (5)こんにちは、清水です。先日のHTML5 ConferenceでFirefox OS上で動作するアプリの開発と、Firefox Marketplaceの公開に...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/h5conf2015/" class="series-257" title="HTML5 Conference 2015 特集" data-wpel-link="internal">HTML5 Conference 2015 特集</a> (5)</div><p>こんにちは、清水です。先日のHTML5 ConferenceでFirefox OS上で動作するアプリの開発と、Firefox Marketplaceの公開に関する講演をさせていただきました。今回はその講演内容のうち、アプリ作成に関する部分を重点的に説明します。</p>

<h2>すべてWeb技術で</h2>

<p>Firefox OSの特徴は、ユーザの目にする部分は全てHTML5で実装されている点にあります。音楽アプリ、カメラ、ギャラリーといったプリインストールされているものはもちろん、ダイヤラーや、SMS、スマホのロックスクリーンや、ホーム画面といったシステムよりのアプリもすべてHTMLとJavaScript、CSSだけで実装されています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/01-html5.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/01-html5-300x225.png" alt="Firefox OSのアプリ、UIはWeb技術のみでできています" width="300" height="225" class="aligncenter size-medium wp-image-13700" srcset="/wp-content/uploads/2015/03/01-html5-300x225.png 300w, /wp-content/uploads/2015/03/01-html5.png 640w, /wp-content/uploads/2015/03/01-html5-207x155.png 207w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h2>Firefoxをインストールして、開発スタート</h2>

<p>Firefox OSのアプリ開発に必要なことはただ一つ、Firefoxのインストールです。開発者アカウントの作成も、ディベロッパープログラムへの登録も、専用SDKのインストールも必要ありません。</p>

<p>FirefoxにはWebIDEという機能があります。これはアプリ開発ツールとして必要な機能を一通り持っています：</p>

<ul>
<li>ファイルの作成・編集機能、シンタックスハイライト</li>
<li>デバッガ、インスペクタ</li>
<li>シミュレータの起動、</li>
<li>実機との接続管理、アプリの転送機能</li>
</ul>

<p>リリース版のFirefoxでも十分開発に耐えますが、開発をするなら <a href="https://www.mozilla.org/firefox/developer/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Firefox Developer Edition</a>の利用をお勧めします。Mozillaの提供する開発者向けの機能をいち早く利用できる点が特徴です。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/02-fireox-developer-edition.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/02-fireox-developer-edition-300x210.png" alt="Firefox Developer Editionの起動画面" width="300" height="210" class="aligncenter size-medium wp-image-13699" srcset="/wp-content/uploads/2015/03/02-fireox-developer-edition-300x210.png 300w, /wp-content/uploads/2015/03/02-fireox-developer-edition.png 640w, /wp-content/uploads/2015/03/02-fireox-developer-edition-207x145.png 207w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>Firefox Developer Editionは、リリース版とは異なる場所にインストールされます。また初回起動時に開発用のプロファイルを作成するため、リリース版との併用が可能です。<a href="https://mozilla.org/firefox/sync/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Firefox Sync</a>を利用して同期しておけば、ブックマークや履歴、パスワードは通常利用しているものと共有できます。</p>

<h2>Hello World!</h2>

<p>ではさっそく、WebIDEを利用してHello Worldしてみましょう。Firefoxのメニューから「Web 開発」→「Web IDE」と進んでWeb IDEを起動します。起動すると次のような画面が表示されます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/04-webide.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/04-webide-300x241.png" alt="04-webide" width="300" height="241" class="aligncenter size-medium wp-image-14196" srcset="/wp-content/uploads/2015/03/04-webide-300x241.png 300w, /wp-content/uploads/2015/03/04-webide.png 640w, /wp-content/uploads/2015/03/04-webide-207x167.png 207w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>画面の左上にある「アプリを開く」をクリックすると展開されるメニューから「新規アプリ」を選びます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/05-newapp.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/05-newapp-300x145.png" alt="05-newapp" width="300" height="145" class="aligncenter size-medium wp-image-14197" srcset="/wp-content/uploads/2015/03/05-newapp-300x145.png 300w, /wp-content/uploads/2015/03/05-newapp.png 640w, /wp-content/uploads/2015/03/05-newapp-207x100.png 207w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>選ぶとテンプレートの選択を求められます。「HelloWorld」テンプレートを選び、プロジェクト名にアプリの名前を入力して、「OK」ボタンを押すとアプリのテンプレートが作成されます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/06-helloworld.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/06-helloworld-300x232.png" alt="HelloWorldテンプレートを利用して新規にアプリを作成する例" width="300" height="232" class="aligncenter size-medium wp-image-14198" srcset="/wp-content/uploads/2015/03/06-helloworld-300x232.png 300w, /wp-content/uploads/2015/03/06-helloworld.png 640w, /wp-content/uploads/2015/03/06-helloworld-207x160.png 207w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h2>シミュレータのインストール</h2>

<p>次にシミュレータをインストールします。シミュレータはブラウザのアドオンとして提供されています。画面右上のメニューから「シミュレータをインストール」を選び、表示された画面の中から開発を行う Firefox OSのバージョンに合わせたシミュレータをインストールします。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/07-simulator-installation.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/07-simulator-installation-300x232.png" alt="シミュレータのインストール画面" width="300" height="232" class="aligncenter size-medium wp-image-14199" srcset="/wp-content/uploads/2015/03/07-simulator-installation-300x232.png 300w, /wp-content/uploads/2015/03/07-simulator-installation.png 640w, /wp-content/uploads/2015/03/07-simulator-installation-207x160.png 207w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>KDDIから販売されているFirefox OS端末、Fx0はFirefox OS 2.0で動作しています。国内向けにアプリを書く場合は、Firefox OS 2.0のシミュレータをインストールするとよいでしょう。</p>

<h2>アプリの起動と修正の反映</h2>

<p>作成したテンプレートを、インストールしたシミュレータ上で実行します。WebIDE上部にある「実行ボタン」を押すと、実行できます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/08-app-execution.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/08-app-execution-300x75.png" alt="08-app-execution" width="300" height="75" class="aligncenter size-medium wp-image-14200" srcset="/wp-content/uploads/2015/03/08-app-execution-300x75.png 300w, /wp-content/uploads/2015/03/08-app-execution.png 640w, /wp-content/uploads/2015/03/08-app-execution-207x52.png 207w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>実行すると、次のような画面が表示されます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/09-helloworld.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/09-helloworld-180x300.png" alt="09-helloworld" width="180" height="300" class="aligncenter size-medium wp-image-14201" srcset="/wp-content/uploads/2015/03/09-helloworld-180x300.png 180w, /wp-content/uploads/2015/03/09-helloworld.png 385w, /wp-content/uploads/2015/03/09-helloworld-125x207.png 125w" sizes="(max-width: 180px) 100vw, 180px" /></a></p>

<p>このテンプレートでは、起動時にindex.htmlが表示されます。これを次のように修正します。</p>

<p></p><pre class="crayon-plain-tag">&lt;!DOCTYPE html&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;meta charset="utf-8"&gt;
    &lt;meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1"&gt;
    &lt;title&gt;Hello World&lt;/title&gt;
    &lt;link rel="stylesheet" href="app.css"&gt;
    &lt;script src="app.js" defer&gt;&lt;/script&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h1&gt;こんにちは世界！&lt;/h1&gt;
  &lt;/body&gt;
&lt;/html&gt;</pre><p></p>

<p>また、app.jsを次のように修正すると、アプリのロードが終了した時点でアラートダイアログが表示されます。</p>

<p></p><pre class="crayon-plain-tag">window.addEventListener("load", function() {
  alert("Hello World!");
});</pre><p></p>

<p>WebIDEの実行ボタンをもう一度押すと、これらの修正が実行中のアプリに反映されます。</p>

<h2>アプリの構造</h2>

<p>テンプレートに従って作成されるファイルは以下のような構造をしています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/03-files-of-helloworld.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/03-files-of-helloworld-300x251.png" alt="Hello World テンプレートによって展開されたファイル" width="300" height="251" class="aligncenter size-medium wp-image-13698" srcset="/wp-content/uploads/2015/03/03-files-of-helloworld-300x251.png 300w, /wp-content/uploads/2015/03/03-files-of-helloworld-207x173.png 207w, /wp-content/uploads/2015/03/03-files-of-helloworld.png 600w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>HTMLやJavaScriptに加えて、&#8221;manifest.webapp&#8221;というファイルがあります。これはアプリに関するメタデータで、これはアプリのインストールや、Mozillaの提供するアプリストアであるFirefox Maretplaceにアプリを登録時に参照されます。</p>

<p>manifest.webappの実体は次のようなJSONファイルです。</p>

<p></p><pre class="crayon-plain-tag">{
  "name": "こんにちは世界",
  "description": "A Hello World app",
  "launch_path": "/index.html",
  "icons": {
    "16": "/icons/icon16x16.png",
    "48": "/icons/icon48x48.png",
    "60": "/icons/icon60x60.png",
    "128": "/icons/icon128x128.png"
  },
  "type": "privileged",
  "permissions": {}
}</pre><p></p>

<p>各項目の詳細については、<a href="https://developer.mozilla.org/Apps/Manifest" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Mozilla Developer Networkのアプリマニフェスト</a>
をご覧いただくのが確実ですが、上記の例にある項目は以下のような意味を持ちます。</p>

<table>
<thead>
<tr>
  <th>項目名</th>
  <th>説明</th>
</tr>
</thead>
<tbody>
<tr>
  <td>name</td>
  <td>人間が読むための、アプリ名。最長 128 文字</td>
</tr>
<tr>
  <td>description</td>
  <td>人間のためのアプリ説明文。最長 1024 文字</td>
</tr>
<tr>
  <td>launch_path</td>
  <td>アプリ起動時に読み込まれるHTMLファイルのパス。上記の例では、manifest.webappと同じフォルダにあるindex.htmlが読み込まれる</td>
</tr>
<tr>
  <td>icons</td>
  <td>アイコンのリスト。128ピクセルx128ピクセルのアイコンは必須。また 512ピクセルx512ピクセルのものも含めることが推奨されている</td>
</tr>
<tr>
  <td>type</td>
  <td>アプリの種別。特権アプリの場合は、privilegedと記入する。一般アプリの場合は省略可能だが、明示する場合はwebと記入する</td>
</tr>
<tr>
  <td>permissions</td>
  <td>Camera APIやDevice Storage APIのように、注意が必要なAPIを利用する場合は、ここに列挙する</td>
</tr>
</tbody>
</table>

<p>以上のように、HTML、CSS、JavaScriptにmanifest.webappを足したものが、Firefox OSアプリの最小構成となります。</p>

<h2>Firefox OS で利用できる API</h2>

<p>Firefox OS のアプリは、すべてJavaScriptで記述します。そのため カメラやGPSといったセンサー類へのアクセスや、バイブのコントロール、SDカードへのデータ保存などは、HTML5で利用できるAPIを通して行います。利用できるAPIの一部分を挙げると、以下のようになります。</p>

<ul>
<li>Ambient Light Sensor API：環境光センサーを利用して周囲の照度を取得できる</li>
<li>Geolocation API：端末の物理的な位置を取得できる</li>
<li>Vibration API：ゲームなどのフィードバックのために、バイブレーションをコントロールできる</li>
<li>Camera：デバイスに内蔵されたカメラを利用して動画や、写真を撮影できる</li>
<li>Contacts：連絡先データベースへのアクセスが可能になる</li>
<li>Device Storage：SD カードなど、端末の持つストレージに対して読み書きが行える</li>
</ul>

<p>例えばDevice Storage APIを利用して、SDカード中のファイルをすべてコンソールに出力するプログラムは、次のようになります。</p>

<p></p><pre class="crayon-plain-tag">var sdcard = navigator.getDeviceStorage("sdcard");
var cursor = sdcard.enumerate();
cursor.onsuccess = function(){
  var file = this.result;
  console.log(file.name);
  if(!this.done){
    this.continue();
  }
};</pre><p></p>

<h2>WebActivities：アプリの機能を利用する API</h2>

<p>音楽のライブラリや、写真のギャラリー、カメラでの撮影といった機能を実装する方法は2つあります。1つは上記にあげたAPIを利用して1から機能を作る方法、もう1つはWebActivitiesを利用して他のアプリを呼び出す方法です。</p>

<p>標準でインストールされている音楽アプリや、ギャラリー、カメラアプリは、「ライブラリから音楽の選択する」「ギャラリーから写真を選ぶ」「写真を撮る」といったアプリの機能の一部を他のアプリから利用できるようになっています。</p>

<p>これを利用しているアプリの例には、<a href="https://marketplace.firefox.com/app/cameran" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Cameran</a> があります。Cameranは写真にフィルタや効果を追加するアプリなのですが、自分で写真撮影や管理機能を実装しているのではなく、インストールされている他のアプリの提供する「画像を選ぶ機能」を利用しています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/10-webactivities.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/10-webactivities-169x300.png" alt="10-webactivities" width="169" height="300" class="aligncenter size-medium wp-image-14203" srcset="/wp-content/uploads/2015/03/10-webactivities-169x300.png 169w, /wp-content/uploads/2015/03/10-webactivities.png 360w, /wp-content/uploads/2015/03/10-webactivities-116x207.png 116w" sizes="(max-width: 169px) 100vw, 169px" /></a></p>

<p>他のアプリが提供している機能を、自分のアプリから呼び出して利用するためのAPIが、WebActivitiesです。例えば、他のアプリが提供するJPEG形式の画像を選択する機能の呼び出しは、次のようにWebActivitiesを利用して実現できます。</p>

<p></p><pre class="crayon-plain-tag">var activity = new MozActivity({
  name: "pick",
  data: {
    type: "image/jpeg"
  }
});
activity.onsuccess = function() {
  var picture = this.result;
  console.log("A picture has been retrieved");
};</pre><p></p>

<p>尚、WebActivitiesを利用して呼び出せるのは機能の名前であって、アプリではありません。おなじ名前の機能が複数のアプリから提供されている場合、どのアプリを利用するかはユーザの選択に任されます。</p>

<p>WebActivitiesの詳細、特に標準でインストールされているシステムアプリが提供する機能名については、<a href="https://developer.mozilla.org/docs/Web/API/Web_Activities" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Mozilla Developer Network の Web アクティビティ</a>をご覧ください。</p>

<h2>アプリケーションの権限</h2>

<p>上記のAPIすべてを、アプリから利用できるわけではありません。強力なAPIの利用には、それに見合った権限が必要となります。</p>

<p>Firefox OSのアプリは権限に応じて次の3つに分類されます。</p>

<ul>
<li>一般のアプリ (type:web)</li>
<li>特権アプリ (type: privileged)</li>
<li>内部アプリ (type: certified / internal)</li>
</ul>

<p>最後の内部アプリ、以前は認定アプリ (Certified App)と呼ばれていたアプリは、キャリアもしくはそれに準じるベンダしか作成を許されていません。そのため私たちが作成するアプリは、一般アプリもしくは特権アプリのどちらかになります。</p>

<p>権限と、利用できるAPIの対応関係は、OSのバージョンによって異なります。対応関係はWebIDEの「許可設定一覧」で確認できます。</p>

<p>許可設定一覧は以下のようになっています。</p>

<p>✓は利用可能、✕ は不可能、! は利用可能だが利用時にユーザに対して通知されることを表しています。</p>

<p>以下の例では、Camera APIを利用するためには、アプリを特権アプリとしなければならないことがわかります。</p>

<table>
<thead>
<tr>
  <th>名前</th>
  <th>type:web</th>
  <th>type:privileged</th>
</tr>
</thead>
<tbody>
<tr>
  <td>geolocation</td>
  <td>!</td>
  <td>!</td>
</tr>
<tr>
  <td>camera</td>
  <td>✕</td>
  <td>!</td>
</tr>
<tr>
  <td>alarms</td>
  <td>✓</td>
  <td>✓</td>
</tr>
</tbody>
</table>

<h2>実際に作ってみよう</h2>

<p>以上がFirefox OSアプリの概要でした。これを踏まえて、ボイスレコーダーアプリの作成を例に、アプリの作成例をみてみましょう。</p>

<p>今回作成するアプリは次のような1画面のアプリとなります。画面をタップすると録音を開始し、もう1度のタップで録音を終了します。録音した音声は ogg ファイルとして音楽ライブラリに保存されるものとします。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/03/11-recorder.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/03/11-recorder-169x300.png" alt="作成するボイスレコーダーアプリの実行画面" width="169" height="300" class="aligncenter size-medium wp-image-14202" srcset="/wp-content/uploads/2015/03/11-recorder-169x300.png 169w, /wp-content/uploads/2015/03/11-recorder.png 360w, /wp-content/uploads/2015/03/11-recorder-116x207.png 116w" sizes="(max-width: 169px) 100vw, 169px" /></a></p>

<p>なお今回作成したサンプルは、 <a href="https://gist.github.com/chikoski/00bbcb2cff65293869a0" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">gist</a>で公開しています。
こちらもご利用ください。</p>

<h2>使用するAPIとアプリの権限</h2>

<p>今回は次のAPIを利用します。</p>

<table>
<thead>
<tr>
  <th>API名</th>
  <th>目的</th>
  <th>Firefox OS 2.0で必要な権限</th>
</tr>
</thead>
<tbody>
<tr>
  <td>GetUserMedia</td>
  <td>マイクからの音声入力を扱うため</td>
  <td>通常</td>
</tr>
<tr>
  <td>MediaRecorderAPI</td>
  <td>音声を録音するため</td>
  <td>通常</td>
</tr>
<tr>
  <td>Web Audio API</td>
  <td>音声の分析を行うため</td>
  <td>通常</td>
</tr>
<tr>
  <td>DeviceStorage API</td>
  <td>音声をファイルとして保存するため</td>
  <td>特権</td>
</tr>
</tbody>
</table>

<p>DeviceStorage APIを利用するためには、アプリの種別を特権アプリとする必要があります。またいくつかのAPIを利用するためには、manifest.webappのpermissionsの項目に記述を行う必要があります。そのため manifest.webappを以下のように記述します。typeと permissionsの項目が、それぞれ設定されていることを確認してください。</p>

<p></p><pre class="crayon-plain-tag">{
  "name": "audio-caputre-sample",
  "description": "An sample app to capture audio through microphone",
  "launch_path": "/index.html",
  "icons": {
    "16": "/icons/icon16x16.png",
    "48": "/icons/icon48x48.png",
    "60": "/icons/icon60x60.png",
    "128": "/icons/icon128x128.png"
  },
  "type": "privileged",
  "permissions": {
    "audio-capture": {
      "description": "To record audio"
    },
    "device-storage:music": {
      "description": "To store captured audio",
      "access": "readwrite"
    }
  }
}</pre><p></p>

<h2>HTML と CSS の記述</h2>

<p>アプリのビューは HTML と CSS で定義します。今回のアプリでは次のものを利用しました。</p>

<p></p><pre class="crayon-plain-tag">&lt;!DOCTYPE html&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;meta charset="utf-8"&gt;
    &lt;meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1"&gt;
    &lt;title&gt;audio capture test&lt;/title&gt;
     &lt;script src="app.js" defer&gt;&lt;/script&gt;
    &lt;link rel="stylesheet" href="app.css"&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;canvas id="canvas"&gt;&lt;/canvas&gt;
    &lt;p id="recording"&gt;●REC&lt;/p&gt;
  &lt;/body&gt;
&lt;/html&gt;</pre><p></p>

<p>CSS は以下のようになっています。</p>

<p></p><pre class="crayon-plain-tag">body{
   margin: 0;
   padding: 0;
 }
 #canvas{
   width: 100%;
   height: 400px;
   margin: 0;
   padding: 0;
   box-sizing: border-box;
 }
 #recording{
   color: red;
   position: fixed;
   top: .5em;
   left: .5em;
   display: none;
 }</pre><p></p>

<h2>JavaScript を使った録音</h2>

<p>コードの全体像は <a href="https://gist.github.com/chikoski/00bbcb2cff65293869a0" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">gist に公開したもの</a>をご覧いただくこととして、
ここではマイクからの入力ストリームの取得、録音、そしてファイルへの出力部分について解説します。</p>

<p>まずは、マイクからの入力ストリームの取得方法です。manifest.webapp中のpermissionsの項目に&#8221;audio-capture&#8221;を追加すると、
つぎのようにGetUserMediaを使っ、てマイクからの入力を扱うための入力ストリームを取得できます。</p>

<p></p><pre class="crayon-plain-tag">navigator.getUserMedia({video: false, audio: true}, 
                       streamAquired, 
                       error =&gt;{
                         console.log(error);
                       });</pre><p></p>

<p>この実行が成功すると、コールバック関数が呼ばれます。取得した入力ストリームは、関数の第1引数として与えられます。上記の例では streamAquired という関数が呼ばれます。この関数は入力ストリームを利用する様々なオブジェクトの初期化を行います。</p>

<p>ここで初期化されるオブジェクトの中には MediaRecorder オブジェクトがあります。初期化は次の様に行われています。</p>

<p></p><pre class="crayon-plain-tag">var initRecorder = function(stream){
  recorder = new MediaRecorder(stream);
  recorder.ondataavailable = (event) =&gt; {
    console.log(event); 
    if(storage != null){
      var filename = createFileName(event);
      console.log("attempt to save as " + filename);
      var req = storage.addNamed(event.data, filename);
      req.onsuccess = function(){
        console.log("saved as " + this.result);
      };
      req.onerror = function(){
        console.log(this.error.name);
      };
    }
  };
};</pre><p></p>

<p>MediaRecorderオブジェクトは、その名の通りメディアデータの記録を行うオブジェクトです。startメソッドを実行すると記録を開始し、stopメソッドを実行すると記録を停止し、記録したデータを用意します。データの用意できると、dataavailableイベントが発生します。用意されたデータは、dataavailableのdata属性でBlobとして参照できます。</p>

<p>上記の例では取得したBlobオブジェクトを、DeviceStorage APIのaddNamedメソッドを使って保存をしています。ここで利用しているstorageオブジェクトは次の様に作成されています。</p>

<p></p><pre class="crayon-plain-tag">var storage = navigator.getDeviceStorage("music");</pre><p></p>

<p>これは音楽データ用のストレージを取得しています。取得できるストレージの種類は次の4種類です。これ以外にもappsというアプリ用ストレージがありますが、これはシステムアプリからのみアクセスが許可されており、我々の作成するアプリは操作できません。</p>

<table>
<thead>
<tr>
  <th>ストレージ名</th>
  <th>役割</th>
</tr>
</thead>
<tbody>
<tr>
  <td>music</td>
  <td>音楽データ用ストレージ</td>
</tr>
<tr>
  <td>pictures</td>
  <td>写真データ用ストレージ</td>
</tr>
<tr>
  <td>videos</td>
  <td>動画データ用ストレージ</td>
</tr>
<tr>
  <td>sdcard</td>
  <td>汎用データストレージ</td>
</tr>
</tbody>
</table>

<p>取得したストレージに対してメソッド呼び出しを行うと、DOMRequestオブジェクトを返します。このオブジェクトのonsuccess属性やonerror属性に関数を登録することで、その操作が成功したか、失敗したかを知ることができます。上記の例では単に成否をログに出力しているだけですが、エラー処理が必要な場合などは、こちらにその処理を記述することになります。</p>

<h2>気軽に作ろう！</h2>

<p>以上 Firefox OSアプリの構成と作成方法について概観しました。</p>

<p>Firefox OSに向けたアプリの作成についてまとめると、次の3点になるかと思います。</p>

<ul>
<li>Firefoxがあれば開発をはじめられる</li>
<li>Firefox OSアプリ = HTML + JS + CSS + manifest.webapp </li>
<li>ライブラリの追加なしで、ハードウェアをコントロールできる</li>
</ul>

<p>とにかく開発を始めるための敷居が低く、HTMLや CSS、JavaScriptといったWeb標準技術のみで、ハードウェアへアクセスし、コントロールするようなアプリが作れます。</p>

<p>しかもブラウザエンジンがOSに組み込まれているため、作成したアプリのコンパイルやビルドが必要ありません。Webページを作るように、修正したアプリを再読み込みして即座に実行できます。また本文中では解説しませんでしたが、実機へのアプリの転送やデバッグもシミュレータと同様の手順で行えます。</p>

<p>このように開発の敷居が低く、簡単にアプリを作り始められるFirefox OSで、みなさんも作る自由を謳歌してください。</p>

<p>当日のセッションの動画・スライドは、こちらからご覧ください。</p>

<div class="aligncenter">

<!-- iframe plugin v.4.3 wordpress.org/plugins/iframe/ -->
<iframe width="560" height="315" src="https://www.youtube.com/embed/zi4u7eMfmKY" frameborder="0" 0="allowfullscreen" scrolling="yes" class="iframe-class"></iframe>

</div>

<p><a href="https://www.youtube.com/watch?v=zi4u7eMfmKY" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Youtube</a> /
<a href="http://www.slideshare.net/chikoski/firefox-os-43867933" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Slideshare</a></p>

<h2>参考資料</h2>

<ul>
<li><a href="https://www.mozilla.org/firefox/developer" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Firefox Developer Edition</a></li>
<li><a href="https://mozilla.org/firefox/os/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Firefox OS</a></li>
<li><a href="https://developer.mozilla.org/Apps" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Mozilla Developer Networkのアプリセンター</a></li>
<li><a href="https://developer.mozilla.org/docs/WebAPI" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">WebAPI</a></li>
<li><a href="https://developer.mozilla.org/docs/Web/API/Navigator/getUserMedia" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">GetUserMedia</a></li>
<li><a href="https://developer.mozilla.org/docs/Web/API/Device_Storage_API" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">DeviceStorage API</a></li>
<li><a href="https://developer.mozilla.org/docs/Web/API/MediaRecorder_API" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">MediaRecorder API</a></li>
<li><a href="https://developer.mozilla.org/docs/Web/API/Web_Audio_API" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Web Audio API</a></li>
<li><a href="https://developer.mozilla.org/Apps/Manifest" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">アプリマニフェスト</a></li>
</ul>
]]></content:encoded>
		
		<series:name><![CDATA[HTML5 Conference 2015 特集]]></series:name>
	</item>
		<item>
		<title>Firebugだけじゃないぞ、Firefoxの開発ツール入門</title>
		<link>/chikoski/6671/</link>
		<pubDate>Mon, 19 May 2014 03:25:38 +0000</pubDate>
		<dc:creator><![CDATA[清水智公]]></dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[開発ツール]]></category>

		<guid isPermaLink="false">/?p=6671</guid>
		<description><![CDATA[連載： Mozilla Japan直伝、Firefoxを使いこなす！ (1)Firefoxで使えるWeb開発用のツールといえば、Firebugが有名です。FirebugはFirefoxのアドオンとして提供されており、利用...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/firefox-dev/" class="series-164" title="Mozilla Japan直伝、Firefoxを使いこなす！" data-wpel-link="internal">Mozilla Japan直伝、Firefoxを使いこなす！</a> (1)</div><p>Firefoxで使えるWeb開発用のツールといえば、Firebugが有名です。FirebugはFirefoxのアドオンとして提供されており、利用するためには追加のインストールが必要です。ところで、インストールの必要がない開発ツールがFirefoxに付属していることをご存知でしたか？</p>

<p>今回から3回にわたって、Firefoxに標準付属の開発ツールをご紹介します。初回は開発ツールの持っている機能を概観します。</p>

<h2>起動方法</h2>

<p>まずは起動方法からご説明します。画面の左上にあるハンバーガーアイコンをクリックして表示されるメニューの中に開発ツールがあります。これをクリックすると、メニューがスライドします。この中から「開発ツールを表示」を選ぶと開発ツールが起動します。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/05/menu.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/05/menu-159x300.png" alt="メニューから開発ツールを選ぶことで起動できる。" width="159" height="300" class="aligncenter size-medium wp-image-6674" srcset="/wp-content/uploads/2014/05/menu-159x300.png 159w, /wp-content/uploads/2014/05/menu-109x207.png 109w, /wp-content/uploads/2014/05/menu.png 339w" sizes="(max-width: 159px) 100vw, 159px" /></a></p>

<p>起動すると以下のような画面が表示されます。上部にあるタブを切り替えることで、個々の機能を利用できます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/05/devtool.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/05/devtool-300x179.png" alt="開発ツール起動時の画面" width="300" height="179" class="aligncenter size-medium wp-image-6673" srcset="/wp-content/uploads/2014/05/devtool-300x179.png 300w, /wp-content/uploads/2014/05/devtool-1024x613.png 1024w, /wp-content/uploads/2014/05/devtool-207x123.png 207w, /wp-content/uploads/2014/05/devtool.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>タブの左右にはいくつかのボタンが配置されています。設定に関するものは左側、機能に関するものは右側にまとめられています。</p>

<h2>開発ツールの持つ機能</h2>

<p>開発ツールはさまざまな機能を持っています。</p>

<table>
  <thead>
    <tr><th>カテゴリ</th><th>機能</th></tr>
  </thead>
  <tbody>
    <tr><td>コンテンツの作成</td><td>スクラッチパッド,スタイルエディタ</td></tr>
    <tr><td>調査とデバッグ</td><td>Webコンソール,ページインスペクタ,JavaScriptデバッガ,ネットワークモニタ,開発ツールバー,3Dビュー</td></tr>
    <tr><td>モバイル開発</td><td>アプリマネージャ,Firefox OSシミュレータ,レスポンシブデザインビュー,リモートデバッガ</td></tr>
    <tr><td>パフォーマンスチューニング</td><td>JavaScript プロファイラ,Paint Flashing Tool,リフローイベントのログ記録,ネットワークパフォーマンス</td></tr>
  </tbody>
</table>

<p>上記の機能の中から、今回は代表的なもの4つを取り上げ、簡単にご紹介します。</p>

<h2>ページインスペクタ</h2>

<p>開発ツールで必要とされる機能といえば、まずDOMのインスペクタです。「インスペクタ」と書かれたタブをクリックすることで、表示できます。</p>

<p>DOMツリーの表示、適用されているCSSの表示、計算済みの値の一覧といった基本的なことはもちろんできます。ボックスの幅や高さ、マージンといったサイズに関する情報は「ボックスモデル」として確認できます。ボックスモデルは開発ツールの中で見ることもできます。また描画されたページにオーバレイする形でも表示されます（2014年5月の時点ではベータ版で利用可能）。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/05/inspector-boxmodel.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/05/inspector-boxmodel-300x192.png" alt="ボックスモデルが描画結果にオーバレイ表示されている" width="300" height="192" class="aligncenter size-medium wp-image-6676" srcset="/wp-content/uploads/2014/05/inspector-boxmodel-300x192.png 300w, /wp-content/uploads/2014/05/inspector-boxmodel-1024x658.png 1024w, /wp-content/uploads/2014/05/inspector-boxmodel-207x132.png 207w, /wp-content/uploads/2014/05/inspector-boxmodel.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>使用されているフォントや、色が実際に目で見て確認できるというのも、細かいことながら便利な機能です。色サンプルをクリックすることで、カラーピッカーが表示されます。カラーピッカーで選んだ色が、ページの描画結果へ動的に反映されます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/05/inspector-colorpicker.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/05/inspector-colorpicker-300x225.png" alt="カラーピッカーで色を選択している" width="300" height="225" class="aligncenter size-medium wp-image-6683" srcset="/wp-content/uploads/2014/05/inspector-colorpicker-300x225.png 300w, /wp-content/uploads/2014/05/inspector-colorpicker-207x155.png 207w, /wp-content/uploads/2014/05/inspector-colorpicker.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h2>スタイルエディタ</h2>

<p>ページの描画結果を確認しながら、要素やスタイルを編集できるのがFirefoxの大きな特徴です。その特徴がよく現れているツールがスタイルエディタです。CSS向けのエディタですが、編集内容が表示中のページの描画結果へ即座に反映されます。</p>

<p>コード補完も強力です。CSSのプロパティだけでなく、whiteやblackといった値も文脈に応じて補完します。またセレクタも補完します。タグ名はもちろんですが、表示しているページのid属性値やclass属性値などを使ってセレクタを補完できます。　</p>

<p>編集結果はファイルへ出力できます。既にあるCSSファイルを、レンラリング結果を見ながら修正しファイルへ出力、といった流れでスタイルの修正が効率的に行えます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/05/styleeditor-autocompletion.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/05/styleeditor-autocompletion-300x206.png" alt="CSSの属性、値、セレクタが自動補完される" width="300" height="206" class="aligncenter size-medium wp-image-6682" srcset="/wp-content/uploads/2014/05/styleeditor-autocompletion-300x206.png 300w, /wp-content/uploads/2014/05/styleeditor-autocompletion-207x142.png 207w, /wp-content/uploads/2014/05/styleeditor-autocompletion.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h2>Webコンソール</h2>

<p>ページインスペクタと同程度よく使われる機能がWebコンソールだと思います。</p>

<p>ここには様々なログが出力されます。console.log経由で出力されるもの以外にも、CSSやJavaScriptのエラー、通信の状況などが出力されます。出力するログは画面上部、ツールバー中のボタンをトグルすることで、フィルターできます。</p>

<p>要素の追加、削除、:hoverのような疑似クラスのアクティブ化といったことで起きるページの再秒にかかった時間も出力されます。ツールバーのCSSボタンををクリックして、ログを選択することで再描画時間が表示されます。この再描画がJavaScriptによって発生した場合、発生源のコード行へのリンクも表示されます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/05/console-reflow.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/05/console-reflow-300x87.png" alt="画面の再描画が置きたことと、その処理時間が表示される。" width="300" height="87" class="aligncenter size-medium wp-image-6677" srcset="/wp-content/uploads/2014/05/console-reflow-300x87.png 300w, /wp-content/uploads/2014/05/console-reflow-1024x299.png 1024w, /wp-content/uploads/2014/05/console-reflow-207x60.png 207w, /wp-content/uploads/2014/05/console-reflow.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h2>JavaScriptデバッガ</h2>

<p>JavaScriptデバッガはその名の通り、JavaScriptをデバッグするツールです。デバッガタブをクリックして利用できます。一般のデバッガ同様、ブレークポイントの設定や、ステップ実行、各スコープ内の変数値の確認、ウオッチ式の設定などが可能です。</p>

<p>ブレークポイントは行に対して設定できるほか、DOMイベントに対しても設定できます。以下のようにリスナが割り当てられているイベントの一覧の中から、ブレークさせたいイベントにチェックを入れます。チェックが入ったイベントが発生すると、そのリスナの視点で実行がブレークされます。</p>

<p>ミニファイされたJavaScriptファイルをデバッグする際には、ファイルの整形機能が便利です。画面左下にある大括弧の書かれたペアをクリックすると、ミニファイされたファイルがが読みやすく整形されます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/05/debugger-breakpoint-event.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/05/debugger-breakpoint-event-300x85.png" alt="リストの中からブレークポイントを設定するDOMイベントを選択する" width="300" height="85" class="aligncenter size-medium wp-image-6680" srcset="/wp-content/uploads/2014/05/debugger-breakpoint-event-300x85.png 300w, /wp-content/uploads/2014/05/debugger-breakpoint-event-1024x293.png 1024w, /wp-content/uploads/2014/05/debugger-breakpoint-event-207x59.png 207w, /wp-content/uploads/2014/05/debugger-breakpoint-event.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h2>まとめ</h2>

<p>Firefoxで利用可能な開発ツールは、<a href="http://getfirebug.com/" title="Firebug" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Firebug</a>が有名です。こちらもMozillaの製品で、<a href="http://getfirebug.com/wiki/index.php/Firebug_Extensions" title="Firebugのプラグイン" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">豊富なプラグイン</a>が特徴です。特定のライブラリに対する開発を行うなら、Firebugとそのプラグインを利用する方が効率的に行える場合もあります。</p>

<p>これに対し、今回ご紹介した開発ツールは、オーサリングツールという側面も持っている点が大きな特徴です。編集が描画内容にその場で反映されるだけでなく、コード補完機能やシンタックスハイライト、行番号の表示と言ったエディタとして必要とされる機能も備えているため、単なる修正だけでなく、スクラッチからの作成にも耐えるものとなっています。</p>

<p>Firefoxの開発ツールの概要を、駆け足で見てきました。今回ご紹介したもの以外にも様々な機能を持っています。詳細な情報、使い方については<a href="https://developer.mozilla.org/docs/Tools" title="開発ツールのドキュメント" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"> Mozilla Developers Network (MDN) 内の記事</a>をご覧ください。今回の記事をきっかけに、Firefoxを開発ツールの選択肢に入れていただければ（そしてメインの開発ツールにしていただければ！）幸いです。</p>
]]></content:encoded>
		
		<series:name><![CDATA[Mozilla Japan直伝、Firefoxを使いこなす！]]></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>FirefoxにCSS Variables機能拡張etc.──2013年12月のブラウザ動向</title>
		<link>/myakura/4530/</link>
		<pubDate>Mon, 20 Jan 2014 01:00:44 +0000</pubDate>
		<dc:creator><![CDATA[矢倉 眞隆]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[デザイン]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[ブラウザ]]></category>

		<guid isPermaLink="false">/?p=4530</guid>
		<description><![CDATA[連載： WEB標準化動向 (2)今月より、ブラウザ関連のニュース、とりわけレンダリングエンジンに実装されたWebプラットフォーム機能について取り上げる月一の連載を開始したいと思います。1月も後半ですが、2013年12月の...]]></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> (2)</div><p>今月より、ブラウザ関連のニュース、とりわけレンダリングエンジンに実装されたWebプラットフォーム機能について取り上げる月一の連載を開始したいと思います。1月も後半ですが、2013年12月の話題を取り上げます。</p>

<p>注：MozillaやChromeのコミットログを主な情報元としているため、ここで紹介する機能がすぐに使えるとは限りません。</p>

<h2>Firefox ― CSS Variablesをはじめ、機能拡張いろいろ</h2>

<p>12月に「おおっ」と思ったのは、Firefoxでした。CSS Variablesなど目を引く機能が追加されました。Multiline Flexboxや開発者ツールのCSS Source Mapsなど、これが入ってくれたら助かると思った機能もサポートされました。</p>

<h3>CSS Variablesがサポート</h3>

<p>CSS Variablesがサポートされました。Firefox 29以降で<code>layout.css.variables.enabled</code>を有効にすると利用できます。</p>

<ul>
<li><a href="https://hacks.mozilla.org/2013/12/css-variables-in-firefox-nightly/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CSS Variables in Firefox Nightly ✩ Mozilla Hacks – the Web developer blog</a></li>
<li><a href="http://mcc.id.au/blog/2013/12/variables" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CSS Variables in Firefox 29 • Cameron McCormack&#8217;s blog</a></li>
</ul>

<p><a href="http://dev.w3.org/csswg/css-variables/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CSS Variables</a>は、変数として利用可能なカスタムプロパティを定義する仕組みです。カスタムプロパティは<code>var-</code>接頭辞付きのプロパティに値を設定し定義できます。カスタムプロパティの値は、<code>var()</code>内にプロパティ名を入れることで参照できます。</p>

<p><code>:root {
    var-foreground: #222;
    var-background: #eee;
}</p>

<p>body {
    color: var(foreground);
    background-color: var(background);
}</code></p>

<p>名前の通り「プロパティ」ですので、SassやLESSなどのCSSプリプロセッサの変数とは違い、宣言として書かなければいけません。定義と参照で表記が違う点も含めて、少しクセがありますね。宣言として書く都合上、グローバルな変数は<code>:root</code>セレクタのブロックにでも定義するとわかりやすいかもしれません。</p>

<p>CSS VariablesはBlinkでもすでに実装されていますが、仕様が未成熟なため、フラグを有効にしなければ利用できません。またコードが管理されていないことから、先日<a href="http://trac.webkit.org/changeset/159842" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">WebKitから削除された</a>など、対応状況もよくありません。</p>

<p>また、Mozilla Hacksのポストなどには、構文への不満や「Sassがあるのになぜ必要？」といったコメントも寄せられています。DOMからのアクセスができることや継承するなど、プリプロセッサの変数にはない優位性もあるのですが、なかなか理解されるのは難しいかもしれません。</p>

<p>スタイルの継承については、<a href="https://html5experts.jp/hiloki/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">エキスパートの谷さん</a>が書かれたCSS Variablesのエントリでも触れられています。</p>

<ul>
<li><a href="http://inkdesign.jp/posts/notes/css-custom-property/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CSSカスタムプロパティとMythの話 | inkdesign</a></li>
</ul>

<h3><code>input</code>要素の<code>number</code>型が有効に</h3>

<p><code>input</code>要素の<code>number</code>型（<code>type="number"</code>）がAuroraとNightlyで有効になりました。問題なければFirefox 28から利用可能になります。</p>

<ul>
<li><a href="https://jwatt.org/2013/12/11/input-type-number-coming-to-mozilla" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">input type=number coming to Mozilla | jwatt.org</a></li>
</ul>

<p><code>number</code>型は数値入力用のinput型です。実装されているデスクトップブラウザでは、入力ボックスの右側にスピナーコントロールが付き、値を増減できます。</p>

<div id="attachment_4539" style="width: 547px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2014/01/Screen-Shot-2014-01-17-at-14.06.57.png" width="537" height="130" class="size-full wp-image-4539" srcset="/wp-content/uploads/2014/01/Screen-Shot-2014-01-17-at-14.06.57.png 537w, /wp-content/uploads/2014/01/Screen-Shot-2014-01-17-at-14.06.57-300x72.png 300w, /wp-content/uploads/2014/01/Screen-Shot-2014-01-17-at-14.06.57-207x50.png 207w" sizes="(max-width: 537px) 100vw, 537px" /><p class="wp-caption-text">Firefoxでのinput要素のnumber型。他のブラウザと同じくスピナーコントロールが用意されている</p></div>

<p>さて、今回の実装を担当した<a href="https://jwatt.org/2013/12/11/input-type-number-coming-to-mozilla" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Jonathan Watt氏のエントリ</a>において、小数点がドット（<code>.</code>）のままでローカライズされないことが触れられています。HTML仕様では小数点はドットとなっているものの、小数点をカンマ（<code>,</code>）で表記する地域もあります。Watt氏のエントリには、チェコなどではカンマを使うため、現在の実装では使いものにならないといったコメントも寄せられています。フォームのローカライズは<a href="http://www.w3.org/html/wg/drafts/html/CR/forms.html#input-impl-notes" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTML仕様で推奨されている</a>ものの、その仕組みは定義されていません。まだまだ検討が必要ですね。</p>

<h3>開発者ツールがCSSのSource Mapsをサポート</h3>

<p>開発者ツールでCSSのSource Mapsがサポートされました。Firefox 29以降で<code>devtools.styleeditor.source-maps-enabled</code>を有効にすると利用できます。Source MapsのサポートはChrome DevToolsでJavaScript, CSSどちらも対応していますが、Firefoxの開発者ツールでは、これまでJavaScriptのみの対応となっていました。</p>

<div id="attachment_4535" style="width: 714px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2014/01/Screen-Shot-2013-12-12-at-6.03.43-AM.png" width="704" height="527" class="size-full wp-image-4535" srcset="/wp-content/uploads/2014/01/Screen-Shot-2013-12-12-at-6.03.43-AM.png 640w, /wp-content/uploads/2014/01/Screen-Shot-2013-12-12-at-6.03.43-AM-300x224.png 300w, /wp-content/uploads/2014/01/Screen-Shot-2013-12-12-at-6.03.43-AM-207x154.png 207w" sizes="(max-width: 704px) 100vw, 704px" /><p class="wp-caption-text">Firefoxの開発者ツールでCSSをインスペクトすると、Source mapsによってlessファイルにリンクされる</p></div>

<ul>
<li><a href="http://hg.mozilla.org/mozilla-central/rev/4204ff8d0234" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">mozilla-central: changeset 159842— Bug 926014 &#8211; Support CSS source maps</a></li>
</ul>

<p>ブラウザの開発者ツールは、該当するスクリプトやスタイルのファイル・行数などを表示してくれますが、minify/compact化されたソースにはあまり役立ちませんでした。Source Mapsは、CoffeeScriptやSass/LESSなどでコンパイルされたJavaScript/CSSファイルと、もとのファイルの行数・桁目を対応させるマッピングの仕組みです。詳しい仕組みはHTML5 Rocksなどの記事をご覧ください。</p>

<ul>
<li><a href="http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Introduction to JavaScript Source Maps &#8211; HTML5 Rocks</a></li>
<li><a href="http://net.tutsplus.com/tutorials/tools-and-tips/source-maps-101/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">An Introduction to Source Maps | Nettuts+</a></li>
<li><a href="http://blog.teamtreehouse.com/introduction-source-maps" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">An Introduction to Source Maps &#8211; Treehouse Blog</a></li>
</ul>

<p>CSSのSource Maps出力は<a href="http://sass-lang.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Sass</a>, <a href="http://www.lesscss.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">LESS</a>といったCSSプリプロセッサのほか、CSSポストプロセッサの<a href="https://github.com/ai/autoprefixer" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Autoprefixer</a>なども対応しています。</p>

<h3>Multi-line Flexboxがサポート</h3>

<p>Multi-line Flexboxは、複数行にまたがるFlexboxです。FirefoxでのサポートはFirefox 22からですが、Multi-line Flexboxのサポートが行われない限定的なものでした。今回サポートされたことによりかなり使えるものになりました。</p>

<ul>
<li><a href="http://blog.dholbert.org/2013/12/multi-line-flexbox-support-in-nightly.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">The Holbert Report: Multi-line flexbox support in Nightly and Aurora 28</a></li>
</ul>

<p>Flexboxでは、flexアイテムの幅・高さがflexコンテナのそれよりも大きくなってしまう場合、そのままではFlexコンテナの幅・高さが自動的に調整されたり、overflowを引き起こしたりします。しかし<code>flex-wrap</code>などのプロパティを使えば、複数行にまたがります。</p>

<div id="attachment_4542" style="width: 450px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2014/01/multi-line_flexbox.png" width="440" height="300" class="size-full wp-image-4542" srcset="/wp-content/uploads/2014/01/multi-line_flexbox.png 440w, /wp-content/uploads/2014/01/multi-line_flexbox-300x204.png 300w, /wp-content/uploads/2014/01/multi-line_flexbox-207x141.png 207w" sizes="(max-width: 440px) 100vw, 440px" /><p class="wp-caption-text">ふつうのFlexboxとMulti-line Flexboxの違い。Multi-line Flexboxはflexアイテムの幅に応じて行送りがなされる（<a href="http://jsdo.it/myakura/76Bn" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">jsdo.itで見てみる</a>）</p></div>

<p>他のエンジンでは、Blink, Tridentで接頭辞なしのサポート、Safariでは接頭辞つきのサポートが行われています。Firefoxの実装も接頭辞なしですので、Safari以外では接頭辞なしで利用可能です。バージョンごとの対応状況は、<a href="http://caniuse.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">caniuse.comのFlexbox対応状況</a>をご覧ください。</p>

<h2>Chrome, Opera ― Element.matches()、DevToolsのUI改善</h2>

<p>12月のBlinkは一足早く冬休みモードだったのか、そこまでコミットもなくおとなしい感じでした。</p>

<h3><code>Element.matches()</code>が実装</h3>

<p>DOM仕様では、要素が特定のセレクタにマッチしているかを確かめる<a href="http://dom.spec.whatwg.org/#dom-element-matches" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><code>Element.matches()</code></a>というメソッドが定義されています。何に使うのかというと、イベントのデリゲーションに使えます。地味ですね。これがBlinkに導入されました。Chrome 34から利用できます。</p>

<ul>
<li><a href="https://chromium.googlesource.com/chromium/blink/+/23ee357" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">23ee357 (@163442) &#8211; chromium/blink — Implement Element.matches(selectors)</a></li>
</ul>

<p>とはいってもこのAPI、もともとSelectors API Level 2仕様で<code>Element.matchesSelector()</code>として定義されており、各ブラウザもベンダー接頭辞付きで実装しています。ただ標準の<code>Element.matches()</code>はこれまで実装されていませんでした。Blinkは実装しましたが他のエンジンではとくに動きはなさそうで、引き続きベンダー接頭辞に悩まされそうです。</p>

<p>（注：上記のパッチはその後取り下げられましたが、1月13日に再び導入されました。）</p>

<h3>DevToolsのネットワークパネル、コンソールで改善</h3>

<p>DevToolsのネットワークパネルで表示されるバーが、画像ではなくCSSでの表示になり、Retina Displayをはじめとする高密度なディスプレイでの見栄えがよくなりました。Chrome 34から導入されます。</p>

<ul>
<li><a href="https://chromium.googlesource.com/chromium/blink/+/65b0dbf" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">65b0dbf (@164362) &#8211; chromium/blink — DevTools: network log bars use CSS instead of pre-rendered images.</a></li>
</ul>

<div id="attachment_4547" style="width: 933px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2014/01/devtools_network_css.png" width="923" height="551" class="size-full wp-image-4547" srcset="/wp-content/uploads/2014/01/devtools_network_css.png 640w, /wp-content/uploads/2014/01/devtools_network_css-300x179.png 300w, /wp-content/uploads/2014/01/devtools_network_css-207x123.png 207w" sizes="(max-width: 923px) 100vw, 923px" /><p class="wp-caption-text">DevToolsのネットワークパネルを拡大。アイコンなど画像はぼけているが、バーはくっきりと表示されている</p></div>

<p>また、<code>async</code>属性付きで読み込まれたJavaScriptファイル内で<code>document.write()</code>を使っている場合、その<code>document.write()</code>は実行できませんが、今回コンソールにエラーが表示されるようになりました。Firefoxの開発者ツールに倣ったようです。</p>

<ul>
<li><a href="https://chromium.googlesource.com/chromium/blink/+/eaecd0c" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">eaecd0c (@164310) &#8211; chromium/blink — DevTools: added console warning when call to document.write() from async script is ignored</a></li>
</ul>

<div id="attachment_4549" style="width: 644px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2014/01/devtools_async_documentwrite.png" width="634" height="150" class="size-full wp-image-4549" srcset="/wp-content/uploads/2014/01/devtools_async_documentwrite.png 634w, /wp-content/uploads/2014/01/devtools_async_documentwrite-300x70.png 300w, /wp-content/uploads/2014/01/devtools_async_documentwrite-207x48.png 207w" sizes="(max-width: 634px) 100vw, 634px" /><p class="wp-caption-text"><code>async</code>属性で読み込まれたJavaScriptファイル内で<code>document.write()</code>がある場合エラーが出るように</p></div>

<h2>そのほか</h2>

<p>機能追加だけではなんですので、その他のブラウザ関連の話題も取り上げてみます。</p>

<h3>Advent Calendar</h3>

<p>技術系のAdvent Calendarが今年もたくさん作られました。CSSプロパティやFrontrend、HTML5などWeb開発に関するものはどれも面白かったです。矢倉もいくつか寄稿させていただきました。</p>

<ul>
<li><a href="http://www.adventar.org/calendars/57" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CSS Property Advent Calendar 2013 &#8211; Adventar</a></li>
<li><a href="http://www.adventar.org/calendars/62" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Frontrend Advent Calendar 2013 &#8211; Adventar</a></li>
<li><a href="http://www.adventar.org/calendars/125" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTML5 Advent Calendar 2013 &#8211; Adventar</a></li>
<li><a href="http://www.adventar.org/calendars" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">その他Adventarに登録されているAdvent Calendar</a>（技術系じゃないものも多いです）</li>
</ul>

<p>さて、ブラウザ関連ではInternet ExplorerのAdvent Calendarが異彩を放っていました。IEに特化したAdvent Calendarなんと2つも立てられたのです。</p>

<ul>
<li><a href="http://www.adventar.org/calendars/218" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Internet Explorer Advent Calendar 2013 &#8211; Adventar</a></li>
<li><a href="http://www.adventar.org/calendars/235" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Yet Another Internet Explorer Advent Calendar 2013 &#8211; Adventar</a></li>
</ul>

<p>他にブラウザ関連のAdvent Calendarは<a href="http://www.adventar.org/calendars/103" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Firefox OS Advent Calendar 2013</a>しかなかったです。Chromeとかがあってもおかしくなさそうなのに、ちょっと意外でした。</p>

<h3>Operaのへんてこプレスリリース</h3>

<p>Operaの<a href="http://coastbyopera.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Coast</a>というiPad専用のブラウザが新しくなったようなのですが、その「プレスリリース」が面白かったです。</p>

<ul>
<li><a href="http://www.operasoftware.com/press/theprmachine" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Coast by Opera, now updated &#8211; Opera Software</a></li>
</ul>

<p>プレスリリース本文の上にスライダーがあり、それを動かすことで文章量が変化し「プレスリリース風」になります。また「Geek edition」を押すと変更履歴風になったり、「Go full Corp!」を押すとバズワードわんさかなプレスリリースになったりもします。スライダーを動かすと単語がフェードインで現れたり、なかなか手が込んでますし、文章も書くのは大変ではなかったかと思います。しかしこういったユーモラスなものが、なぜこのタイミングで紹介されたのかはわからないです。</p>
]]></content:encoded>
		
		<series:name><![CDATA[WEB標準化動向]]></series:name>
	</item>
		<item>
		<title>W3CのEME標準化、ServiceWorker解説、RespImgシンタックスはレスポンシブ画像問題など海外WEBテク20本を一挙公開</title>
		<link>/cssradar/3176/</link>
		<pubDate>Tue, 05 Nov 2013 03:00:08 +0000</pubDate>
		<dc:creator><![CDATA[斉藤 祐也]]></dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[デザイン]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[W3C]]></category>
		<category><![CDATA[海外]]></category>

		<guid isPermaLink="false">/?p=3176</guid>
		<description><![CDATA[連載： 海外WEBテク最新動向 (10)斉藤祐也の海外WEBテク定点観測＜Issue.7: 2013/10/01-2013/10/31＞ 今月の定点観測はW3CがEMEをなぜ標準化したのか、その動きに対する反対と賛成意見...]]></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> (10)</div><p><strong>斉藤祐也の海外WEBテク定点観測＜Issue.7: 2013/10/01-2013/10/31＞</strong></p>

<p>今月の定点観測はW3CがEMEをなぜ標準化したのか、その動きに対する反対と賛成意見を紹介し、AppCacheが解決できなかったオフラインに対する問題を解決すべく立ち上がったServiceWorkerの解説、突如として現れたかに見えるレスポンシブ・イメージに対する解決であるRespImgなど、合計20件の記事や動画などを紹介します。</p>

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

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

<h3>W3CによるEncrypted Media Extensionの標準化について</h3>

<p><img src="/wp-content/uploads/2013/11/perspectives-on-encrypted-media-extension-reaching-first-public-working-draft-w3c-blog-1024x768-300x190.png" alt="perspectives-on-encrypted-media-extension-reaching-first-public-working-draft-|-w3c-blog-1024x768" width="300" height="190" class="aligncenter size-medium wp-image-3178" srcset="/wp-content/uploads/2013/11/perspectives-on-encrypted-media-extension-reaching-first-public-working-draft-w3c-blog-1024x768-300x190.png 300w, /wp-content/uploads/2013/11/perspectives-on-encrypted-media-extension-reaching-first-public-working-draft-w3c-blog-1024x768-207x131.png 207w, /wp-content/uploads/2013/11/perspectives-on-encrypted-media-extension-reaching-first-public-working-draft-w3c-blog-1024x768.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></p>

<p>今年5月にEncrypted Media Extension(EME)という仕様が<a href="https://dvcs.w3.org/hg/html-media/raw-file/tip/encrypted-media/encrypted-media-fpwd.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ワーキング・ドラフトとなり公開</a>されました。<br />
この仕様はなぜW3Cによって標準化されるべきものだったのでしょうか。あるいはW3Cの勇み足だったのでしょうか。<br />
この一ヶ月、MozillaのCTOであるBrendan Eichも氏の<a href="https://brendaneich.com/2013/10/the-bridge-of-khazad-drm/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">立場を明らかにした</a>りと多くの議論が展開されました。
10月の議論の火付けとなったと思われるAmelia Andersdotter氏の記事を含め、EMEに関する記事を集約したので参考にしてください:</p>

<ul>
<li><a href="http://hsivonen.fi/eme/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">What is EME?</a></li>
<li><a href="https://ameliaandersdotter.eu/2013/10/13/drmeme-html5-american-thing" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">DRM/EME in HTML5 &#8211; an American thing</a> by Amelia Andersdotter</li>
<li><a href="http://blog.does-not-exist.org/2013/10/15/a-hitchhikers-guide-to-the-htm5-eme-maze/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">A hitchhiker’s guide to the HTML5 + EME maze</a> by No Such Weblog</li>
<li><a href="https://brendaneich.com/2013/10/the-bridge-of-khazad-drm/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">The Bridge of Khazad-DRM</a> by Brendan Eich</li>
<li><a href="http://www.w3.org/blog/2013/05/perspectives-on-encrypted-medi/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Perspectives on Encrypted Media Extension Reaching First Public Working Draft</a> by W3C Blog</li>
<li><a href="http://longtermlaziness.wordpress.com/2013/10/08/the-w3c-is-a-restaurant/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">The W3C is a restaurant</a> by Long-term laziness
&#8211;<a href="http://arstechnica.com/business/2013/05/drm-in-html5-is-a-victory-for-the-open-web-not-a-defeat/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">DRM in HTML5 is a victory for the open Web, not a defeat</a> by Ars Technica</li>
</ul>

<h2><a href="https://github.com/slightlyoff/ServiceWorker/blob/master/explainer.md" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ServiceWorkerとは何か</a></h2>

<p><img src="/wp-content/uploads/2013/11/b0eef5160ffb5891bd5b659698ae3c69-300x190.png" alt="serviceworker-·-github-1024x768" width="300" height="190" class="aligncenter size-medium wp-image-3180" srcset="/wp-content/uploads/2013/11/b0eef5160ffb5891bd5b659698ae3c69-300x190.png 300w, /wp-content/uploads/2013/11/b0eef5160ffb5891bd5b659698ae3c69-207x131.png 207w, /wp-content/uploads/2013/11/b0eef5160ffb5891bd5b659698ae3c69.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></p>

<p>原題: ServiceWorkers Explained</p>

<p>多くのデバイスが常時接続を保証されない状態になりうる状況の中、オフライン・ファーストという視点での開発が急務になりがらも<a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/offline.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTML5 Application Cache</a>には多くの問題があることが明らかになってきています。そんな中、このドキュメントには次世代の仕様として模索されているServiceWorkersに関する詳細について紹介されています。</p>

<h2><a href="http://tabatkins.github.io/specs/respimg/Overview.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">RespImgシンタックスの提案</a></h2>

<p><img src="/wp-content/uploads/2013/11/proposal-for-respimg-syntax-1024x768-300x190.png" alt="proposal-for-respimg-syntax-1024x768" width="300" height="190" class="aligncenter size-medium wp-image-3179" srcset="/wp-content/uploads/2013/11/proposal-for-respimg-syntax-1024x768-300x190.png 300w, /wp-content/uploads/2013/11/proposal-for-respimg-syntax-1024x768-207x131.png 207w, /wp-content/uploads/2013/11/proposal-for-respimg-syntax-1024x768.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></p>

<p>原題: Proposal for RespImg Syntax</p>

<p>Apple社のRetinaディスプレイを始めとする、高解像度のディスプレイと旧来の標準的なディスプレイが混在する中、また様々なサイズのデバイスが利用者の好みによって選択できる世の中で、これまで&#8221;レスポンシブ・イメージ&#8221;に対する唯一の答えが提案されてこなかったのが現状だ。このRespImageシンタックスはこの問題に対する新しい視点による解決案となるかも知れません。John Mellor氏による<a href="http://lists.w3.org/Archives/Public/public-respimg/2013Sep/0087.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">こちらのメーリングリストへの投稿もあわせて</a>読んでおくとよいでしょう。</p>

<h2><a href="http://domenic.me/2013/10/07/the-extensible-web/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">拡張可能なWebへ &#8211; Domenic Denicola</a></h2>

<p><img src="/wp-content/uploads/2013/11/the-extensible-web-1024x768-300x190.png" alt="the-extensible-web-1024x768" width="300" height="190" class="aligncenter size-medium wp-image-3181" srcset="/wp-content/uploads/2013/11/the-extensible-web-1024x768-300x190.png 300w, /wp-content/uploads/2013/11/the-extensible-web-1024x768-207x131.png 207w, /wp-content/uploads/2013/11/the-extensible-web-1024x768.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></p>

<p>原題: The Extensible Web</p>

<p>Webがこれまでと同じように数ヶ月、あるいは数年にもわたるメーリングリストを使った標準化のプロセスのままでよいのか。そんな疑問から始まった<a href="http://extensiblewebmanifesto.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">&#35;extendthewebforward</a>というムーブメントの共同エディタであるDomenic Denicola氏によるJS Conf EU 2013での発表<a href="http://www.youtube.com/watch?v=8LZ5Lxrs0E0" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">The Extensible Web: JavaScript All the Way Down</a>に関する本人による詳細の解説。</p>

<h2><a href="http://adactio.com/journal/6537/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CSSセレクタの命名規則に関する私見 &#8211; Adactio</a></h2>

<p><img src="/wp-content/uploads/2013/11/193a913a19926f0df919d920fe60bbd1-300x190.png" alt="adactio:-journal—classy-values-1024x768" width="300" height="190" class="aligncenter size-medium wp-image-3177" srcset="/wp-content/uploads/2013/11/193a913a19926f0df919d920fe60bbd1-300x190.png 300w, /wp-content/uploads/2013/11/193a913a19926f0df919d920fe60bbd1-207x131.png 207w, /wp-content/uploads/2013/11/193a913a19926f0df919d920fe60bbd1.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></p>

<p>原題: Classy values</p>

<p>複雑化、巨大化の一途を突き進む&#8221;ウェブサイト&#8221;の中でボトルネックになりつつあるCSSの存在。Nicole Sullivan氏による<a href="https://github.com/stubbornella/oocss" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">OOCSS</a>、Jonathan Snook氏による<a href="http://smacss.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">SMACSS</a>、そしてYandex社の提唱する<a href="http://bem.info/method/definitions/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">BEM</a>とこの問題に対する解決への提案は数多くあります。そんな中、米Yahoo!で働くThierry Koblentz氏によりSmashing Magazineに寄稿された<a href="http://coding.smashingmagazine.com/2013/10/21/challenging-css-best-practices-atomic-approach/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Challenging CSS Best Practices</a>、そしてその記事に真っ向から反対を表明するBen Darlow氏による<a href="http://www.kapowaz.net/articles/cargo-cult-css" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Cargo Cult CSS</a>。今回紹介する記事は、その2つの意見を踏まえてのJeremy Keith氏によるまとめ。CSSアーキテクチャに興味がある方はこの3本の記事と合わせて、Heydon Pickering氏による<a href="http://www.youtube.com/watch?v=u63Sq2Sq3LI" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">The Problem With CSS Classes</a>も要チェック。</p>

<h2><a href="http://www.quirksmode.org/blog/archives/2013/10/viewport_resear.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Viewportに関するリサーチ報告: heightと@viewportについて &#8211; QuirksBlog</a></h2>

<p><img src="/wp-content/uploads/2013/11/d22dfad2677a6f7f12b8cdef5dba9459-300x190.png" alt="viewport-research-addendum:-height-and-@viewport---quirksblog-1024x768" width="300" height="190" class="aligncenter size-medium wp-image-3182" srcset="/wp-content/uploads/2013/11/d22dfad2677a6f7f12b8cdef5dba9459-300x190.png 300w, /wp-content/uploads/2013/11/d22dfad2677a6f7f12b8cdef5dba9459-207x131.png 207w, /wp-content/uploads/2013/11/d22dfad2677a6f7f12b8cdef5dba9459.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></p>

<p>原題: Viewport research addendum: height and @viewport</p>

<p>今さらViewportの何を調べる必要があるのか。誰もがそう思っている最中、Peter-Paul Koch氏が改めてViewportの指定が実機でどのような作用をするのかをリサーチした結果がこちらです。<br />
彼のリサーチに<a href="http://www.quirksmode.org/blog/archives/2013/10/initialscale1_m.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ミスがあったこと</a>、それを<a href="http://www.quirksmode.org/blog/archives/2013/10/more_about_scal.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">訂正するリサーチ</a>、そして、<a href="http://www.quirksmode.org/blog/archives/2013/10/preliminary_met.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">初期調査の結果</a>とあわせて読むと氏の一連のプロセスが見えてくるのでおすすめです。</p>

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

<h3><a href="http://entropymine.com/resamplescope/notes/browsers/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ブラウザがどのように画像をリサイズするか知っていますか？ &#8211; Jason Summers</a></h3>

<p>原題: How web browsers resize images</p>

<p>Jason Summers氏が本人が作成した<a href="http://entropymine.com/resamplescope/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ResampleScope</a>というツールを使って、モダンブラウザが画像をどんなアルゴリズムでリサイズしているかについての調査の報告しています。ブラウザ間で異なるアルゴリズムを使っていることはもちろん、バージョン間でも、拡大、縮小時にも異なるアルゴリズムが利用されているらしいことがここから分かります。</p>

<h3><a href="https://github.com/ianvollick/animation-proxy/blob/master/Explainer.md" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Animation-Proxy: JavaScriptによるアニメーション操作への問題解決</a></h3>

<p>原題: JavaScript-Driven Accelerated Animations</p>

<p>JavaScriptを使ってのアニメーションは非常に柔軟であり、強力ですが、弱点があります。それはJavaScriptが基本的に1つのスレッドしか持たないため、常にアニメーションとは別の処理と競合してしまう可能性があることです。<br />
Animation Proxyは、その弱点に対する解決としてWeb Workerをプロキシのように扱いJavaScriptからCSSのプロパティを操作することを可能にする提案です。</p>

<h3><a href="http://www.html5rocks.com/en/tutorials/webcomponents/yeoman/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Yeomanを使ってPolymerでウェブアプリを最速構築する &#8211; HTML5 Rocks</a></h3>

<p>原題: Building Web Apps With Yeoman And Polymer: Scaffold your webapps with modern tooling</p>

<p>Addy Osmani氏による<a href="http://www.polymer-project.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Polymer</a>と<a href="http://yeoman.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Yeoman</a>を使ったウェブアプリの使い方指南。<br />
Web Componentsはまだまだ実践で利用するには早すぎる存在ではあるかもしれませんが、試しておく価値のあるものです。Yeomanを使って事前の準備を素早く終わらせることができるので試してみてください。</p>

<h3><a href="http://blogs.msdn.com/b/eternalcoding/archive/2013/09/04/reducing-the-pressure-on-the-garbage-collector-by-using-the-f12-developer-bar-of-internet-explorer-11.aspx" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">IE11の開発者ツールを使ってガベージコレクションを減らす方法 &#8211; MSDN Blogs</a></h3>

<p>原題: Reducing the pressure on the garbage collector by using the F12 developer bar of Internet Explorer 11</p>

<p>ウェブサイト制作におけるパフォーマンス解析といえば、Googleの開発ツールがよく知られていますが、Internet Explorer 11に搭載されているツールもまたかなり優れた機能を有するツールです。この記事ではWebGLを使ったサイトを実際にツールを使ってパフォーマンスのボトルネックの1つであるガベージコレクションを少なくする方法を紹介しています。</p>

<h3><a href="https://gist.github.com/grorg/6732841" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Translateプロパティはなぜアニメーションのパフォーマンスをよくするのか？</a></h3>

<p>原題: Why is animating left paint more often than translateX?</p>

<p>アニメーションを高速化するために知っておきたいことの1つに、leftやtopなどのプロパティを操作するよりも、translateを利用するほうが高速であるというのがあります。それでは、それがなぜなのか。<br />
簡単な解答は後者のほうがペイントプロセスが少ないからなのですが、この記事でより詳しく解説されている&#8221;なぜ&#8221;を知ることはより正確に最適化への道のりで役立つツールとなるでしょう。</p>

<h3><a href="http://www.mobify.com/blog/beginners-guide-to-perceived-performance/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">&#8220;速さ&#8221;を演出するために知っておきたい4つのこと &#8211; Mobify</a></h3>

<p>原題: A Beginner&#8217;s Guide to Perceived Performance: 4 Ways to Make Your Mobile Site Feel Like a Native App</p>

<p>一般的なデスク/ラップトップマシンと比べ、どうしても非力なモバイルデバイスにおけるパフォーマンスの最適化手法の1つとして欠かすことができないのが、&#8221;速さ&#8221;の演出です。英語では&#8221;Perceived Performance&#8221;と呼ばれることが多いこの領域において知っておきたい4つのことを紹介しています。</p>

<h3><a href="http://blog.paciellogroup.com/2013/10/using-html5-section-element/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">知ってますか？ section要素の正しい使い方 &#8211; The Paciello Group Blog</a></h3>

<p>原題: Using the HTML5 section element</p>

<p>section要素の正しい使い方はもしかするとHTML5がもたらした最大の頭痛の種かもしれません。そんなsectionの正しい使いどころをThe Paciello Groupでアクセシビリティエンジニアとして働くLéonie Watson氏が解説。</p>

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

<h3><a href="http://www.youtube.com/watch?v=ldx4ZFxMEeo" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">よりよいCSSを作る為にデザイナに知っておいてほしいこと &#8211; Harry Roberts / CSSconf.eu 2013</a></h3>

<p>原題: Normalising designs for better quality CSS</p>

<p>Harry Roberts氏によるCSSconf EUでのデザイナとフロントエンド開発者、特にUIレイヤに責任を持つ人間との関係について。巨大なメディアを預かっていた彼ならでは視点が多いが、中大規模でスケーラブルに開発を行うことがある場面で必ず役に立つアドバイスばかり。</p>

<h3><a href="https://vimeo.com/75277110" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Appurifyを使って実機のモバイル端末でデバッグ、最適化、そしてテストをする</a></h3>

<p>原題: Seamless Debugging, Optimization and Testing on Real Devices with Sencha and Appurify</p>

<p>モバイルウェブ開発で大きな課題となっている実際のデバイスを使ったデバッグ、テスト、パフォーマンス解析を解決しようとしているAppurifyというサービスをSenchaチームが実際に利用し紹介しています。</p>

<h3><a href="http://soledadpenades.com/files/t/2013ota/#0" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Mozilla Brickでウェブアプリを構築してみよう</a></h3>

<p>原題: Building web apps, one brick at a time! (with Mozilla Brick)</p>

<p>MozillaからのWeb Componentsに対するアプローチである<a href="http://mozilla.github.io/brick/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Mozilla Brick</a>を使ったウェブアプリの作り方に関するスライドです。豊富なコード例もしっかりあり、ありがたいことに<a href="https://github.com/sole/ota2013" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">例は公開されています</a>。Brickのロードマップもあるので興味がある方はぜひ。</p>

<h3><a href="http://kripken.github.io/mloc_emscripten_talk/sloop.html#/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">asm.js: Webにネイティブの速度を</a></h3>

<p>原題: asm.js: Native Speed on the Web</p>

<p>ネイティブ VS ブラウザの戦いに終止符を打つべくしてMozillaが開発しているasm.js。その存在そのものについてはもうご存知のことでしょうが、このスライドでは、そもそもなぜJavaScriptが&#8221;遅い&#8221;のか、そしてasm.jsが何を解決するのかについてのオーバービューがまとまっています。<br />
本スライドとは無関係ですが、Felix Dahlke氏による<a href="http://ubercode.de/blog/why-asm-js-is-a-big-deal-for-game-developers" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Why asm.js is a big deal for game developers</a>もあわせて読んでみてはいかがでしょうか。</p>

<h3><a href="https://github.com/Integralist/Grunt-Boilerplate" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Grunt Boilerplate &#8211; Mark McDonnell</a></h3>

<p>好き嫌いはあれど、Gruntはウェブ開発におけるビルドプロセスで大きな役割を持ってきはじめています。もはやデファクトスタンダードともいえるくらいの存在でしょう。そんなGruntをこれから使う方にも、もうすっかり使いこなしている方にもおすすめのソースコード。<br />
作者であるMark McDonnell氏による<a href="http://www.integralist.co.uk/posts/grunt-boilerplate/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">本ツールに関するこちらの記事</a>も一読ください。</p>

<h3><a href="http://snapsvg.io/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Snap.svg</a></h3>

<p>SVGに関するデファクトスタンダードとなっているライブラリであるRaphaëlをゼロから、Raphaëlの作者であるDmitry Baranovskiy氏本人が作成し、公開したのがこのSnap.svg。モダンブラウザのみをターゲットとすることで、より小さなコードベースでありながら、より豊富な機能を搭載し、SVGのjQueryとなるべくしてオープンソース化しています。<br />
Adobe社の<a href="http://blogs.adobe.com/webplatform/2013/10/23/snap-the-javascript-svg-library-for-the-modern-web/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Web Platform Teamブログの記事</a>も合わせて要チェック。</p>

<h3><a href="http://heydonworks.com/practical_aria_examples/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">実践! ARIAを使ってフォーム入力をサポート</a></h3>

<p>原題: Practical ARIA Examples</p>

<p>ARIA(Accessible Rich Internet Applications)を使ったアクセシブルなウェブサイトの制作は見方によっては時間の無駄に思えるかも知れません。しかし、Heydon Pickering氏によって作られたこのデモページを見れば、ARIAが非常に実利的な問題解決を行う手法でもあることがわかると思います。</p>

<p>★次回の「斉藤祐也の海外WEBテク定点観測」は12月6日にお届け予定です。★</p>
]]></content:encoded>
		
		<series:name><![CDATA[海外WEBテク最新動向]]></series:name>
	</item>
	</channel>
</rss>
