<?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>Google I/O 2014 &#8211; HTML5Experts.jp</title>
	<atom:link href="/tag/google-io-2014/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>WebRTCの最新動向が満載！WebRTC Update（Google I/O 2014番外編）</title>
		<link>/mganeko/7897/</link>
		<pubDate>Wed, 06 Aug 2014 00:00:54 +0000</pubDate>
		<dc:creator><![CDATA[がねこまさし]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Google I/O 2014]]></category>
		<category><![CDATA[WebRTC]]></category>

		<guid isPermaLink="false">/?p=7897</guid>
		<description><![CDATA[連載： Google I/O 2014 特集 (10)Google I/Oの後で Google I/Oの後に、技術者が集結したサンフランシスコで様々なイベントが開催されたようです。WebRTC関連として、Kranky G...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/google-io-2014-2/" class="series-191" title="Google I/O 2014 特集" data-wpel-link="internal">Google I/O 2014 特集</a> (10)</div><h2>Google I/Oの後で</h2>

<p>Google I/Oの後に、技術者が集結したサンフランシスコで様々なイベントが開催されたようです。WebRTC関連として、<a href="http://www.meetup.com/sfhtml5/events/186651012/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Kranky Geek WebRTC Event</a> というものがあり、そこでGoogleから<a href="https://www.youtube.com/watch?v=GBAEG_RuqeE" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">WebRTC Update</a>と題した発表がありました。今回はその50分のセッション映像から、ハイライトをご紹介します。</p>

<h2>掴みはcardboard</h2>

<p>最初の掴みは、DataChannelで制御できるローバー（自走車）です。キーノートで配布されたcardboardに装着したAndroidでローバーの首を振ってカメラの向きを制御できます。カメラの映像は当然WebRTCで伝達され、cardborad越しに見ることができます。(<a href="https://www.youtube.com/watch?v=GBAEG_RuqeE&amp;t=3m40s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">3分40秒あたり</a>）
<br />
※ぜひ体験してみたいですね。ちなみにcardboradはキーノートの最後に配布された、<a href="https://www.youtube.com/watch?v=DFog2gMnm44&amp;t=01m00s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">段ボールで組み立てるVRツール</a>です。今回のI/Oの真の目玉とも言われています。
<a href="https://html5experts.jp/wp-content/uploads/2014/07/cardboard_20140713_122555.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/cardboard_20140713_122555-300x225.jpg" alt="cardboard_20140713_122555" width="300" height="225" class="alignnone size-medium wp-image-8879" srcset="/wp-content/uploads/2014/07/cardboard_20140713_122555-300x225.jpg 300w, /wp-content/uploads/2014/07/cardboard_20140713_122555-1024x768.jpg 1024w, /wp-content/uploads/2014/07/cardboard_20140713_122555-207x155.jpg 207w, /wp-content/uploads/2014/07/cardboard_20140713_122555.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></a><a href="https://html5experts.jp/wp-content/uploads/2014/07/cardboard_20140713_123358.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/cardboard_20140713_123358-300x225.jpg" alt="cardboard_20140713_123358" width="300" height="225" class="alignnone size-medium wp-image-8880" srcset="/wp-content/uploads/2014/07/cardboard_20140713_123358-300x225.jpg 300w, /wp-content/uploads/2014/07/cardboard_20140713_123358-1024x768.jpg 1024w, /wp-content/uploads/2014/07/cardboard_20140713_123358-207x155.jpg 207w, /wp-content/uploads/2014/07/cardboard_20140713_123358.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h2>Chromeのロードマップ</h2>

<p>次に、ChromeにおけるWebRTCのロードマップの説明が始まりました。（<a href="https://www.youtube.com/watch?v=GBAEG_RuqeE&amp;t=6m20s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">6分20秒あたりから</a>）。<a href="https://www.youtube.com/watch?v=GBAEG_RuqeE&amp;t=10m00s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">10分ぐらいには</a>、対応予定の一覧が出てきます。<br />
<a href="https://html5experts.jp/wp-content/uploads/2014/07/afterio01.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/afterio01-300x169.png" alt="afterio01" width="300" height="169" class="alignnone size-medium wp-image-7904" srcset="/wp-content/uploads/2014/07/afterio01-300x169.png 300w, /wp-content/uploads/2014/07/afterio01-1024x576.png 1024w, /wp-content/uploads/2014/07/afterio01-207x116.png 207w, /wp-content/uploads/2014/07/afterio01.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h3>Chrome 36</h3>

<ul>
<li>Chrome 36 （2～3週間でリリース予定）では、Bandwidth Estimationを搭載</li>
<li>帯域推定、帯域制御を行い、HD映像も含めて圧縮を最適化</li>
</ul>

<h3>Chrome 37</h3>

<ul>
<li>Chrome 37 （3Qリリース予定）では、カメラへのアクセス許可を求めるUIを分かりやすく改善</li>
<li>カメラ/マイクへのアクセスだけでなく、位置情報や、ローカルストレージへのアクセスなど、ユーザの許可を得るためのUI全般を改善予定</li>
<li>Opus改善、MacでのQTKitからAVFoundationへの変更</li>
<li>Bitrate制御のための新しいAPIを導入。ストリーム毎に指定できるようにする予定</li>
</ul>

<h3>その先</h3>

<ul>
<li>2014年末までに、RTCSender/Receiverを導入。WebRTC 1.1や、ORTCにも繋がる仕様</li>
<li>2014年末までに、改善された動画コーデックVP9を導入。DataChannelでQUICサポートを追加</li>
<li>2014年末までに、録画/録音用のRecorderをサポートしたい</li>
</ul>

<p>※個人的には、WebRTC1.1への準備と、録画機能のサポートに注目しています。</p>

<h2>モバイルでの改善</h2>

<p><a href="https://www.youtube.com/watch?v=GBAEG_RuqeE&amp;t=20m50s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">20分50秒あたり</a>からは、モバイルサポートのロードマップです。<br />
<a href="https://html5experts.jp/wp-content/uploads/2014/07/afterio02.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/afterio02-300x169.png" alt="afterio02" width="300" height="169" class="alignnone size-medium wp-image-7911" srcset="/wp-content/uploads/2014/07/afterio02-300x169.png 300w, /wp-content/uploads/2014/07/afterio02-1024x576.png 1024w, /wp-content/uploads/2014/07/afterio02-207x116.png 207w, /wp-content/uploads/2014/07/afterio02.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h3>Androidから</h3>

<ul>
<li>Android &#8220;L&#8221; のWebViewがChromeベースになり、WebAudioと、WebRTCをフルサポート</li>
<li>Bandwidth Estimation をモバイル用に改善(LTEなどを考慮）</li>
<li>64bit版に対応</li>
<li>映像のエンコーディングにGPUを活用</li>
<li>低価格のAndroid One でもWebRTCを使える様に</li>
</ul>

<p>※WebViewからWebRTCが使えると、ネイティブアプリに組み込むのも容易になりますね。</p>

<h3>iOSの話も</h3>

<p>ネイティブアプリ用のライブラリが公開されていますが、その改善の話もありました。</p>

<ul>
<li>現在は欠落しているDataChannelをサポート</li>
<li>Bandwidth Estimation をモバイル用に改善(LTEなどを考慮）</li>
<li>GPUを利用</li>
</ul>

<p>※iOSでもAppleで公式にサポートしてほしいのですが、まずはオープンソース側で着実に前進することが重要だと思います。</p>

<h3>AppRTCなど</h3>

<ul>
<li>リファレンスであるAppRTCも、モバイル向けにUIなどを改善</li>
<li>TURNサーバーを<a href="https://www.youtube.com/watch?v=GBAEG_RuqeE&amp;t=25m40s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Google Compute Engineで動かす</a>プロジェクトを<a href="https://github.com/juberti/computeengineondemand" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">githubで公開中</a></li>
<li>ネットワーク負荷を見てオートスケールさせる仕組みを盛り込むべく、GCEチームと協議中</li>
</ul>

<p>※Google Compute Engineと言いながら、Google App Engine用です。良くみたら、&#8221;start and stop Google Compute Engine instances on demand&#8221; ということで、GCEのインスタンスを制御する、GAEのアプリでした。</p>

<h2>WebRTC1.0、そして1.1に向けて</h2>

<ul>
<li><a href="https://www.youtube.com/watch?v=GBAEG_RuqeE&amp;t=28m52s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">WebRTC 1.0では</a>完結した安定なAPIセットを提供する</li>
<li><a href="https://www.youtube.com/watch?v=GBAEG_RuqeE&amp;t=29m25s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">WebRTCは1.1へ進化する</a>。1.0との互換性を維持しながら、新しい要素を取り込む</li>
<li>ORTCで提唱されている新しい要素（RTPSender/Receiverなど）も取り込み、相互接続を実現する予定</li>
<li>面倒なことは裏側で自動的に処理されるが、自分でフルにコントロールできるAPIも同時に提供する</li>
</ul>

<h2>コーデックの話</h2>

<ul>
<li>Googleは現時点では<a href="https://www.youtube.com/watch?v=GBAEG_RuqeE&amp;t=31m15s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">VP8がベストだと考えている</a></li>
<li>H.264用のパッチをサブミットするのは拒否しないし、自分で組み込めば使える。Chromeには入れないけどね</li>
<li>年末にVP9に対応する。来年はVP9がベストな選択肢になると思う</li>
</ul>

<h3>VP9について</h3>

<ul>
<li>インターネットのトラフィックの61%が動画のストリーム</li>
<li>動画の伸び率ほど、ネットワークの帯域の伸びはない。そのためより効率がよいコーデックが必要</li>
<li>Chromeで再生されるYoutubeのストリームの60%が既にVP9になっている（人気のある動画から変換している）</li>
<li>VP9のエンコード速度は大きく改善されてきている</li>
<li>AndroidではKitkatからVP9コーデックをサポート</li>
</ul>

<h2>One more thing&#8230;</h2>

<p>最後に<a href="https://www.youtube.com/watch?v=GBAEG_RuqeE&amp;t=50m00s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">One more thing..</a>として、アナウンスがありました。</p>

<ul>
<li>Google Hangoutで、WebRTCを利用するようになる</li>
<li>まずはChromeのDev版、そしてベータ版に入れる。ゆっくりロールアウトさせる</li>
<li>多人数での会議など、既存の機能を落とさないように慎重に取り組んでいる</li>
</ul>

<p>※WebRTCのPeer-to-Peer構成で問題になるコネクション爆発を、何らかのサーバー(MCU)で解決しているのでしょう。それをGoogle Compute Engineで公開して欲しい……</p>

<h2>他にも</h2>

<p>Kranky Geek WebRTC Eventからは<a href="https://www.youtube.com/playlist?list=PLOU2XLYxmsILM4q-aaVpYgRM5XTCnQuVt" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">多くのセッション動画が公開</a>されています。</p>

<ul>
    <li><a href="https://www.youtube.com/watch?v=VvOLw8sv-ck&amp;index=1&amp;list=PLOU2XLYxmsILM4q-aaVpYgRM5XTCnQuVt" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">A brief history of WebRTC</a>: WebRTCが登場するまでの流れ</li>
    <li><a href="https://www.youtube.com/watch?v=5ci91dfKCyc&amp;index=2&amp;list=PLOU2XLYxmsILM4q-aaVpYgRM5XTCnQuVt" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">WebRTC tutorial</a>: WebRTCとは何か。技術的なTutorialではなく概要の話</li>
    <li><a href="https://www.youtube.com/watch?v=7GuLKRg3AuM" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">WebRTC cookbook</a>: IE/Sarafi向けのWebRTCプラグインで知られるTemasysのCTOによる、AWSでサーバーを動かす時の苦労話</li>
    <li><a href="https://www.youtube.com/watch?v=m9QxBc0OeoI&amp;index=4&amp;list=PLOU2XLYxmsILM4q-aaVpYgRM5XTCnQuVt" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Architectures for a kickass WebRTC application</a>: リモートワーク用コミュニケーションツールのSqwiggleのコファウンダーによる、サービスの作り方</li>
    <li><a href="https://www.youtube.com/watch?v=21xbsbF4mJI&amp;index=5&amp;list=PLOU2XLYxmsILM4q-aaVpYgRM5XTCnQuVt" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Scaling WebRTC audio for gaming</a>: オンラインゲーム用のVoIPの仕組みをWebRTCで構築した話。フルメッシュではなくスター型にするため、自社開発のMCUを利用</li>
    <li><a href="https://www.youtube.com/watch?v=rb46OzNB1k4&amp;index=6&amp;list=PLOU2XLYxmsILM4q-aaVpYgRM5XTCnQuVt" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">WebRTC in the real world</a>: TokBokのCTOによる、実はWebRTCを利用しているハード、アプリ、サービスの紹介</li>
    <li><a href="https://www.youtube.com/watch?v=_wSqjXwOB_M&amp;index=7&amp;list=PLOU2XLYxmsILM4q-aaVpYgRM5XTCnQuVt" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">WebRTC and Firefox OS for mobile</a>: Firefox OS 2.0ではWebRTCをサポートする</li>
    <li><a href="https://www.youtube.com/watch?v=YJgxbbvANRI&amp;index=8&amp;list=PLOU2XLYxmsILM4q-aaVpYgRM5XTCnQuVt" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Integrating WebRTC with your app</a>: HipChatに1to1 ビデオチャットを組み込んだ体験談</li>
    <li>WebRTC Update: WebRTC 最新動向(今回の記事)</li>
    <li><a href="https://www.youtube.com/watch?v=1w95PJLr8V4&amp;index=10&amp;list=PLOU2XLYxmsILM4q-aaVpYgRM5XTCnQuVt" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Google Glass and WebRTC</a>: WebRTCのネイティブアプリをGoogle Glassで動かす話</li>
    <li><a href="https://www.youtube.com/watch?v=d7NsiFXcc5A&amp;index=11&amp;list=PLOU2XLYxmsILM4q-aaVpYgRM5XTCnQuVt" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Building a WebRTC app &#8211; LIVE!</a>: WebRTCを使ったビデオチャットを(半)ライブコーディング</li>
</ul>

<p>Google I/O本体にはWebRTCのセッションはありませんでしたが、サンフランシスコは盛り上がったようです。参加したかった……</p>
]]></content:encoded>
		
		<series:name><![CDATA[Google I/O 2014 特集]]></series:name>
	</item>
		<item>
		<title>話題のMaterial DesignをWebで実現！Polymerで「Paper Elements」を試そう</title>
		<link>/ahomu/9307/</link>
		<pubDate>Tue, 05 Aug 2014 00:00:12 +0000</pubDate>
		<dc:creator><![CDATA[佐藤歩]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Google I/O 2014]]></category>
		<category><![CDATA[Material Design]]></category>
		<category><![CDATA[Paper Elements]]></category>
		<category><![CDATA[Polymer]]></category>

		<guid isPermaLink="false">/?p=9307</guid>
		<description><![CDATA[連載： Google I/O 2014 特集 (9)この記事では2014年7月にGoogle I/Oで発表されたMaterial Designについて、どのようなコンセプトなのか、これまでのデザインガイドラインと何が違う...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/google-io-2014-2/" class="series-191" title="Google I/O 2014 特集" data-wpel-link="internal">Google I/O 2014 特集</a> (9)</div><p>この記事では2014年7月にGoogle I/Oで発表されたMaterial Designについて、どのようなコンセプトなのか、これまでのデザインガイドラインと何が違うのか、ポイントをおさえて紹介します。記事の後半では、Material DesignをWebで実現するためのPolymerとPaper Elementsに関しても説明します。</p>

<h2>Material Designという視覚的言語</h2>

<p><a href="http://www.google.com/design/spec/material-design/introduction.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Material Design</a>の目的は、ひとつの視覚的な言語（Visual Language）によって、あらゆるプラットフォーム、あらゆるスクリーンサイズのデバイスで、一貫性のある体験を提供することです。</p>

<p>それを実現するため、伝統的なグラフィックデザインとテクノロジーによる可能性を引き出して開発に取り組み、ガイドラインは生きたドキュメントとして更新され続けるとしています。</p>

<h3>フラットな中に、自然な影や動きを取り入れた</h3>

<p>Material Designは、フラットデザインを取り入れた他のデザインガイドラインと同様に、伝統的なグラフィックデザイン、たとえばタイポグラフィーやレイアウトの原則を取り込んでいます。文字やグラフィックを中心に構成された現在のアプリやWebに、はるか昔から積み重ねられてきたノウハウを融和させることで、優れたビジュアルが得られます。</p>

<p>しかし、単なるビジュアルのルールだけでは、スクリーンサイズの多様性の中で、UIや体験の一貫性を保つのはどこかで限界があるのかもしれません。そこでMaterial Designは、「Material is the Metaphor」というコンセプトを取り込んでいます。</p>

<div id="attachment_9352" style="width: 650px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/layering.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/layering.png" alt="Layering" width="640" height="360" class="size-full wp-image-9352" srcset="/wp-content/uploads/2014/07/layering.png 640w, /wp-content/uploads/2014/07/layering-300x168.png 300w, /wp-content/uploads/2014/07/layering-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">http://googledevelopers.blogspot.jp/2014/06/this-is-material-design.html</p></div>

<p>規則性のある影や、連続性のあるモーションなどを、現実世界のメタファとして細部に取り込むことで、深いレベルで一貫性をもった世界を構築しようとしています。これらの表現に、現実の物質世界と同じ物理的性質をもたせることで、認知的な負担を少なくし、より自然にアフォーダンスを受け取れるようにしています。</p>

<p>例えば、フラットな面に影の表現を加えることで、オブジェクトの重なりやヒエラルキーが表現できます。強く影をつけた大きなボタンは、ユーザーの目にひときわ浮き立つプライマリなアクションとして認識されます。</p>

<p>このような影について、Android Lではリアルタイムソフトシャドウとして、現実世界のメタファを通して、より自然な振る舞いになるようエンジニアリングが発揮されています。モーションについても、直線的な動きではなく、現実世界の慣性に従った動きになるようにガイドラインで定められています。</p>

<div id="attachment_9356" style="width: 650px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/14803538523_b7b20a90bd_z.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/14803538523_b7b20a90bd_z.jpg" alt="Material Design Paper" width="640" height="360" class="size-full wp-image-9356" srcset="/wp-content/uploads/2014/07/14803538523_b7b20a90bd_z.jpg 640w, /wp-content/uploads/2014/07/14803538523_b7b20a90bd_z-300x168.jpg 300w, /wp-content/uploads/2014/07/14803538523_b7b20a90bd_z-207x116.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">Material Design Paper</p></div>

<p>Material Designのコンセプトについて詳しくは、<a href="https://www.google.com/design/material-design.pdf" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">PDF</a>で9つの特徴にまとまっています。Google I/Oのデザインブースでは、このPDFの図画が、実際の紙にインクで印刷されたものが頒布されていました。</p>

<h3>「具体的な」デザインガイドライン</h3>

<p>Material Designの<a href="http://www.google.com/design/spec/animation/authentic-motion.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ガイドライン</a>として、具体的にどのようなデザインを実現すれば良いかのドキュメントは、プレビュー版としてすでに公開されています。</p>

<p>以前の<a href="https://developer.android.com/design/index.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Android Design</a>においても詳細な項目が用意されていましたが、今回のガイドラインでは、そこにアニメーションや陰影の深度に関する項目をはじめとして、多岐にわたり詳細な情報が掲載されています。特徴的なのは、文字のレイアウト、アニメーション、陰影の表現、画像のフェード効果など細部に至るまで、具体的な数値とサンプルをもって表現していることです。</p>

<div id="attachment_9350" style="width: 1290px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/Authentic-Motion-Animation-Google-design-guidelines.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/Authentic-Motion-Animation-Google-design-guidelines.png" alt="ガイドラインの一例" width="1280" height="728" class="size-full wp-image-9350" srcset="/wp-content/uploads/2014/07/Authentic-Motion-Animation-Google-design-guidelines.png 640w, /wp-content/uploads/2014/07/Authentic-Motion-Animation-Google-design-guidelines-300x170.png 300w, /wp-content/uploads/2014/07/Authentic-Motion-Animation-Google-design-guidelines-1024x582.png 1024w, /wp-content/uploads/2014/07/Authentic-Motion-Animation-Google-design-guidelines-207x117.png 207w" sizes="(max-width: 1280px) 100vw, 1280px" /></a><p class="wp-caption-text">ガイドラインの一例</p></div>

<p>さらにAndroidの開発ライブラリはもちろん、後半で紹介するPaper Elementsが、ガイドラインを体現した実装として存在しています。具体的なガイドラインと、それを反映した実装の2つが揃うことによって、Material Designのガイドラインは、他のデザインガイドラインよりも確かで、強固なものになっています。</p>

<h3>Google I/O でのセッション</h3>

<ul>
<li><a href="https://www.youtube.com/watch?v=isYZXwaP3Q4" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Google I/O 2014 &#8211; Material design principles &#8211; YouTube</a></li>
<li><a href="https://www.youtube.com/watch?v=dZqzz5lZFvo" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Google I/O 2014 &#8211; Material design: Structure and components &#8211; YouTube</a></li>
<li><a href="https://www.youtube.com/watch?v=ctzWKRlTYHQ" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Google I/O 2014 &#8211; Material design: Visual style and imagery &#8211; YouTube</a></li>
<li><a href="https://www.youtube.com/watch?v=FBD0VlcVS1E" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Google I/O 2014 &#8211; Material design: Motion &#8211; YouTube</a></li>
</ul>

<p>キーノートの中で紹介されたMaterial Designですが、その後のセッションでもテーマごとに、詳細な内容の紹介がありました。より深く理解したい方は、これらの動画もチェックしてみると面白い話が聞けるはずです。（YouTubeでは英語字幕が表示されるので、聞きやすいです）</p>

<h2>Webで実現するためのPolymerとPaper Elements</h2>

<p>ここまでMaterial Designについて紹介しましたが、いよいよこのデザイン原則をWebの世界に取り込むため、PolymerとPaper Elementsについて説明します。</p>

<p>はじめに<a href="http://www.polymer-project.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Polymer</a>とは、<a href="https://html5experts.jp/1000ch/8906/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Web Componentsが変えるWeb開発の未来</a>で説明されたWeb Componentsをより強力に、より柔軟に使えるようにGoogleで開発されているラッパーライブラリです。Web Componentsが注目を集め始めたのと同時に、Polymerの話題も多く目にするようになっています。</p>

<p>Polymerには、そのラッパーとしての機能を活かして作成された、汎用コンポーネント群があります。それが<a href="http://www.polymer-project.org/docs/elements/core-elements.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Core Elements</a>と<a href="http://www.polymer-project.org/docs/elements/paper-elements.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Paper Elements</a>です。このうち、Paper ElementsがMaterial DesignをWebで表現するための鍵になりますが、実際に開発するにはPolymer本体に、これらCore ElementsとPaper Elementsを組み合わせて利用します。</p>

<p>ここでは、Rob Dodsonによる<a href="https://www.youtube.com/watch?v=HKrYfrAzqFA" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Unlock the next era of UI development with Polymer</a>というセッション（<a href="http://www.slideshare.net/rob_dodson/unlock-the-next-era-of-ui-design-with-polymer" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">SlideShare</a>）の内容を参考に紹介していきます。</p>

<h3>レイアウトを構築する</h3>

<p>はじめにCore Elementsを使ったアプリケーションのレイアウトについて紹介します。Core Elementsには、一般的なナビゲーションパターンのレイアウトを、手軽に制御できるコンポーネントが用意されています。</p>

<p>たとえば<a href="http://www.polymer-project.org/docs/elements/core-elements.html#core-header-panel" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><code>core-header-panel</code></a>を利用すると、よくある固定ヘッダーとコンテンツ部分の管理ができます。これまで、普通にHTMLとCSSでレイアウトして、インナースクロール用のJavaScriptライブラリを組み込んで実現していたUIが、ひとつのコンポーネントをHTML内に取り込むだけで作れるようになります。</p>

<div id="attachment_9347" style="width: 648px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-27-638.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-27-638.jpg" alt="core-drawer-panel (参考スライドP27から引用)" width="638" height="359" class="size-full wp-image-9347" srcset="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-27-638.jpg 638w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-27-638-300x168.jpg 300w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-27-638-207x116.jpg 207w" sizes="(max-width: 638px) 100vw, 638px" /></a><p class="wp-caption-text">core-drawer-panel (参考スライドP27から引用)</p></div>

<p>上図のようなドロワーメニューを内包したレスポンシブなレイアウトも、<a href="http://www.polymer-project.org/docs/elements/core-elements.html#core-drawer-panel" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><code>core-drawer-panel</code></a>を利用すると、<code>drawer</code>と<code>main</code>という属性をそれぞれ持った要素を、子要素として追加すれば容易に制御できます。</p>

<p>もうひとつレイアウトするための強力な機能が存在します。それが<a href="http://www.polymer-project.org/docs/polymer/layout-attrs.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Layout attributes</a>です。これはPolymer本体に備えられた機能です。</p>

<div id="attachment_9348" style="width: 648px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-35-638.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-35-638.jpg" alt="layout属性 (参考スライドP35から引用)" width="638" height="359" class="size-full wp-image-9348" srcset="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-35-638.jpg 638w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-35-638-300x168.jpg 300w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-35-638-207x116.jpg 207w" sizes="(max-width: 638px) 100vw, 638px" /></a><p class="wp-caption-text">layout属性 (参考スライドP35から引用)</p></div>

<p>このように、<code>layout</code>属性を付与して、要素を並べる方向（<code>vertical</code>, <code>horizontal</code>）や、子要素に<code>flex</code>などの指定を行うことで、CSSを使わずにHTML側で基本的なレイアウトを制御できます。ここでは一例を紹介しましたが、詳細はPolymerのドキュメントを確認してみてください。</p>

<h3>Material Designを使う</h3>

<p>いよいよPaper Elementsが登場します。Core Elementsが基本的な機能と素朴な見た目しか持たない汎用コンポーネント群であるのに対して、Paper Elementsは<a href="http://www.google.com/design/spec/components/bottom-sheets.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Material Designのガイドライン</a>におけるUIコンポーネントを、ビジュアルとインタラクションの両面において実装しています。</p>

<p>たとえば<code>paper-tabs</code>は、次の画像のようなマークアップでMaterial Designで表現されたタブのUIを組み込むことができます。</p>

<div id="attachment_9346" style="width: 648px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-44-638.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-44-638.jpg" alt="paper-tabs (参考スライドP44から引用)" width="638" height="359" class="size-full wp-image-9346" srcset="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-44-638.jpg 638w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-44-638-300x168.jpg 300w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-44-638-207x116.jpg 207w" sizes="(max-width: 638px) 100vw, 638px" /></a><p class="wp-caption-text">paper-tabs (参考スライドP44から引用)</p></div>

<p>このようなPaper ElementsのUIコンポーネントは<a href="http://www.polymer-project.org/components/paper-elements/demo.html#paper-checkbox" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Paper Elements Sampler</a>で動作デモを確認できます。</p>

<p>Material Designは影や波紋のようなエフェクトといったインタラクションも重要です。Paper Elementsの中にはそのような、特定のUIを表現するものではなく、エフェクトを適用するための要素も用意されています。</p>

<div id="attachment_9345" style="width: 648px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-47-638.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-47-638.jpg" alt="paper-shadow (参考スライドP47から引用)" width="638" height="359" class="size-full wp-image-9345" srcset="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-47-638.jpg 638w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-47-638-300x168.jpg 300w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-47-638-207x116.jpg 207w" sizes="(max-width: 638px) 100vw, 638px" /></a><p class="wp-caption-text">paper-shadow (参考スライドP47から引用)</p></div>

<p><a href="http://www.polymer-project.org/docs/elements/paper-elements.html#paper-shadow" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><code>paper-shadow</code></a>は親要素に、<code>z</code>属性で指定されたコンテンツの深度に応じて、適切な影の表現をつけられます。Material Designでは、影を表現するために、深さを表現するKey Shadowと、オブジェクトの形態を示すAmbient Shadowの2つが使われています。この<code>paper-shadow</code>もCSSの<code>box-shadow</code>で2種類の影をかさねて表現しています。</p>

<p>前半で説明したとおり、Material Designにおける影は、ただの装飾ではなく、オブジェクトの階層やユーザーのフォーカスを得るための、意図的な表現です。多くのオブジェクトに、このようなエフェクトを積極的に使っていくことになります。</p>

<div id="attachment_9344" style="width: 648px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-46-638.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-46-638.jpg" alt="paper-ripple (参考スライドP46から引用)" width="638" height="359" class="size-full wp-image-9344" srcset="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-46-638.jpg 638w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-46-638-300x168.jpg 300w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-46-638-207x116.jpg 207w" sizes="(max-width: 638px) 100vw, 638px" /></a><p class="wp-caption-text">paper-ripple (参考スライドP46から引用)</p></div>

<p><a href="http://www.polymer-project.org/docs/elements/paper-elements.html#paper-ripple" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><code>paper-ripple</code></a>は親要素に、clickやtouchしたときのエフェクトを適用できます。<a href="http://www.polymer-project.org/components/paper-ripple/demo.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">デモ</a>を見ると、それがどのような効果か分かりやすいはずです。このエフェクトは、親の要素と同じサイズの<code>canvas</code>を展開して、その上で波紋のようなエフェクトを表現しています。</p>

<h3>スタイルを適用する</h3>

<p>Polymerの要素は、Shadow DOMが使われているため、従来どおりのCSSセレクタでは、内側の要素にスタイルを適用できません。ここでは<a href="http://dev.w3.org/csswg/css-scoping/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CSS Scoping Module</a>として定義されている、<code>::shadow</code>と<code>/deep/</code>セレクタを紹介します。</p>

<p><code>::shadow</code>は、疑似要素としてShadow DOMのルートにアクセスできます。次の例では、Polymerで作られた<code>x-foo</code>が持つShadow DOM内の<code>span</code>にアクセスして、<code>color: red</code>を指定しています。</p>

<p></p><pre class="crayon-plain-tag">&lt;style&gt;
x-foo::shadow span {
  color: red;
}
&lt;/style&gt;

&lt;polymer-element name="x-foo" noscript&gt;
  &lt;template&gt;
    &lt;span&gt;Hi!&lt;/span&gt; &lt;!-- color: red --&gt;
  &lt;/template&gt;
&lt;/polymer-element&gt;

&lt;x-foo&gt;&lt;/x-foo&gt;</pre><p></p>

<p><code>/deep/</code>は、<code>::shadow</code>と同じくShadow DOM内へのアクセスを可能にしますが、より強力にネストしたShadow DOMの奥深くまで適用できます。次の例では、<code>x-hello</code>の中にあるすべての<code>span</code>に<code>color:blue</code>を適用しています。<code>::shadow</code>の場合だと、<code>x-world</code>の中の<code>span</code>にはネストしたShadow DOMの境界を越えられず適用されません。</p>

<p></p><pre class="crayon-plain-tag">&lt;style&gt;
x-hello /deep/ span {
  color: blue;
}
&lt;/style&gt;

&lt;polymer-element name="x-hello" noscript&gt;
  &lt;template&gt;
    &lt;span&gt;Hello&lt;/span&gt; &lt;!-- color: blue --&gt;
    &lt;x-world&gt;&lt;/x-world&gt;
  &lt;/template&gt;
&lt;/polymer-element&gt;

&lt;polymer-element name="x-world" noscript&gt;
  &lt;template&gt;
    &lt;span&gt;World&lt;/span&gt;  &lt;!-- color:blue --&gt;
  &lt;/template&gt;
&lt;/polymer-element&gt;

&lt;x-hello&gt;&lt;/x-hello&gt;</pre><p></p>

<p>一方、Core ElementsにはPolymerの要素間でスタイルを共有するために、<a href="http://www.polymer-project.org/docs/elements/core-elements.html#core-style" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><code>core-style</code></a>というコンポーネントが用意されています。</p>

<div id="attachment_9341" style="width: 648px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-58-638.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-58-638.jpg" alt="core-style (参考スライドP58から引用)" width="638" height="359" class="size-full wp-image-9341" srcset="/wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-58-638.jpg 638w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-58-638-300x168.jpg 300w, /wp-content/uploads/2014/07/unlock-the-next-era-of-ui-design-with-polymer-58-638-207x116.jpg 207w" sizes="(max-width: 638px) 100vw, 638px" /></a><p class="wp-caption-text">core-style (参考スライドP58から引用)</p></div>

<p><code>core-style</code>を使って<code>id</code>属性が指定されたStyle Producerで定義されたスタイルを、<code>ref</code>属性を指定してStyle Consumerから参照することで、コンポーネントをまたいで特定のスタイルを共有できます。</p>

<h3>トランジションを利用する</h3>

<p><a href="http://www.polymer-project.org/docs/elements/core-elements.html#core-animated-pages" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><code>core-animated-pages</code></a>を利用すると、Single Page Applicationのように、ひとつのHTMLで複数のコンテンツを切り替えて表示するときに、トランジションを適用できます。<code>core-animated-pages</code>も、対象の要素に属性を付与するだけで、トランジション効果を得られます。</p>

<p></p><pre class="crayon-plain-tag">&lt;polymer-element name="animated-sample" noscript&gt;
  &lt;template&gt;
    &lt;style&gt;
      section &gt; div { color:white; height: 500px; }
    &lt;/style&gt;

    &lt;!-- コンテンツ切り替え用のタブ --&gt;
    &lt;paper-tabs id="tabs" selected="0"&gt;
      &lt;paper-tab&gt;ONE&lt;/paper-tab&gt;
      &lt;paper-tab&gt;TWO&lt;/paper-tab&gt;
      &lt;paper-tab&gt;THREE&lt;/paper-tab&gt;
    &lt;/paper-tabs&gt;

    &lt;!-- コンテンツとトランジション付与 --&gt;
    &lt;core-animated-pages
      selected="{{$.tabs.selected}}"
      transitions="cross-fade-all"&gt;
      &lt;section&gt;
        &lt;div style="background:red"&gt;
          &lt;h1&gt;ONE&lt;/h1&gt;
        &lt;/div&gt;
      &lt;/section&gt;
      &lt;section&gt;
        &lt;div style="background:blue"&gt;
          &lt;h1&gt;TWO&lt;/h1&gt;
        &lt;/div&gt;
      &lt;/section&gt;
      &lt;section&gt;
        &lt;div style="background:orange"&gt;
          &lt;h1&gt;THREE&lt;/h1&gt;
        &lt;/div&gt;
      &lt;/section&gt;
    &lt;/core-animated-pages&gt;
  &lt;/template&gt;
&lt;/polymer-element&gt;

&lt;animated-sample&gt;&lt;/animated-sample&gt;</pre><p></p>

<p><code>core-aniamted-pages</code>の<code>transitions</code>属性で、使いたいトランジションの種類を宣言すると、中のコンテンツが切り替わるときにトランジションが適用されます。</p>

<h3>Paper Elementsのサンプルアプリ</h3>

<p>Paper Elementsを駆使することで、Material DesignがWebでどのように表現されるのかは、<a href="http://www.polymer-project.org/apps/topeka/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Topeka</a>というサンプルのクイズアプリが用意されています。スマートフォンにも対応しているので、モバイルデバイスでどの程度動いてくれるのかも、自分でさわって確かめてみると面白いはずです。</p>

<div id="attachment_9363" style="width: 1290px" class="wp-caption aligncenter"><a href="https://html5experts.jp/wp-content/uploads/2014/07/Quiz-App.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/Quiz-App.png" alt="http://www.polymer-project.org/apps/topeka/" width="1280" height="728" class="size-full wp-image-9363" srcset="/wp-content/uploads/2014/07/Quiz-App.png 640w, /wp-content/uploads/2014/07/Quiz-App-300x170.png 300w, /wp-content/uploads/2014/07/Quiz-App-1024x582.png 1024w, /wp-content/uploads/2014/07/Quiz-App-207x117.png 207w" sizes="(max-width: 1280px) 100vw, 1280px" /></a><p class="wp-caption-text">http://www.polymer-project.org/apps/topeka/</p></div>

<h2>さいごに</h2>

<p>今回はMaterial Designとそれを実現するPolymerとPaper Elementsについて、Google I/O 2014での情報をもとにご紹介しました。Material DesignもPolymerも、Preview版というステータスであり、まだ始まったばかりのプロジェクトです。これらが、今後どのように普及し、Webの世界にも影響を与えていくのか楽しみに思います。</p>

<p>先日開催された第49回HTML5とか勉強会でも「Material Design with Polymer」と題して、同じようなテーマについてご紹介しました。<a href="http://youtu.be/G7hIDm4aK5g?t=1h25m43s" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">YouTube</a>と<a href="https://speakerdeck.com/ahomu/material-design-with-polymer" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">SpeakerDeck</a>でそれぞれ当日の録画とスライドが公開されているので、こちらも合わせてご覧いただけると理解が深まるはずです。Material Designについて詳しく説明していたり、Paper Elementsを利用したオリジナルのデモを行っていたりもしますので、ぜひご覧ください。</p>
]]></content:encoded>
		
		<series:name><![CDATA[Google I/O 2014 特集]]></series:name>
	</item>
		<item>
		<title>Google I/O 2014 ── ServiceWorker でネイティブアプリとの差を縮めよう</title>
		<link>/myakura/8365/</link>
		<pubDate>Thu, 31 Jul 2014 04:00:00 +0000</pubDate>
		<dc:creator><![CDATA[矢倉 眞隆]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Google I/O 2014]]></category>
		<category><![CDATA[ServiceWorker]]></category>

		<guid isPermaLink="false">/?p=8365</guid>
		<description><![CDATA[連載： Google I/O 2014 特集 (8)今回お届けするのは、Jake Archibald氏とAlex Russell氏によるServiceWorkerのセッション「Appy Times with Servic...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/google-io-2014-2/" class="series-191" title="Google I/O 2014 特集" data-wpel-link="internal">Google I/O 2014 特集</a> (8)</div><p>今回お届けするのは、Jake Archibald氏とAlex Russell氏による<a href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ServiceWorker</a>のセッション「<a href="https://www.youtube.com/watch?v=_yy0CDLnhMA" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Appy Times with ServiceWorker &#8211; Bridging the gap between the web and apps</a>」です。</p>


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


<p>Alex氏はService Workers仕様のEditorで、古くはDojoやChrome Frameに携わっています。TC39やW3CのTAGのメンバーとしても活動し、<a href="http://extensiblewebmanifesto.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Extensible Web構想</a>を推し進める一人です。
Jake氏は<a href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#acknowledgements" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Service Workers仕様の「ゴーストオーサー」</a>だそうです。とても面白い人で、今回も彼のユーモアが炸裂、笑いに包まれた楽しいセッションとなりました。</p>

<h2>不確かなリクエストの旅を助けるServiceWorker</h2>

<p>セッションでは「ブラウザーランド」を舞台に、ブラウザがキャッシュやインターネットからデータを取ってくるまでのやりとりを、Jake氏とAlex氏が演じて説明するという寸劇から、ServiceWorkerの紹介が行われました。</p>

<div id="attachment_8826" style="width: 860px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2014/07/io_ja_al_1.jpg" width="850" height="460" class="size-full wp-image-8826" srcset="/wp-content/uploads/2014/07/io_ja_al_1.jpg 640w, /wp-content/uploads/2014/07/io_ja_al_1-300x162.jpg 300w, /wp-content/uploads/2014/07/io_ja_al_1-207x111.jpg 207w" sizes="(max-width: 850px) 100vw, 850px" /><p class="wp-caption-text">「（AppCacheの森ではなく）HTTPキャッシュに向かい、忘れっぽい魔術師に尋ねるのだ」<br>「魔術師が知らなかったら？ほら、忘れっぽいわけですし」<br>「ならば不確かさの海を渡り、子猫が戯れるインターネットに赴くのだ」<br>「しかし、これまでにも多くのリクエストが戻ってきていません……」</p></div>

<p>ブラウザがリソースを取得するまでには様々な不確定要因があり、遅い・繋がらないといったことはユーザーエクスペリエンスに影響します。しかし、現在のWeb標準ではそれをコントロールする術が足りておらず、Webの持つ拡張性という良さを持ってないとのこと。これを解決するものとしてApplication Cacheが提案されましたが、宣言的な記法を導入したため、見た目のシンプルさとは裏腹に、制御不能な挙動や仕様の説明不足が問題となりました（こうした既存の技術で説明不可能な挙動は、“magic”と呼ばれてたりもします）。</p>

<p>しかし、Application Cacheが提供する「キャッシュ」「ルーティング」「バージョン」のという概念は、Webプラットフォームにはぜひ欲しい機能です。そこでこの3機能を持ち、その上で拡張性やデバッグのしやすさを取り込んだ仕様として、ServiceWorkerが提案されました。策定にはMozillaやSamsungをはじめ、多くの開発者も加わっており、実装もChromeとMozillaが競うように進めています。</p>

<h2>ServiceWorkerを動かす</h2>

<h3>登録・インストールで準備</h3>

<p>ServiceWorkerはWebアプリによって登録（register）され、ServiceWorkerがインストール（install）されて待機状態となります。インストール時には<code>install</code>イベントが発火するので、このタイミングでアプリに必要なファイルをダウンロードできます。</p>

<p></p><pre class="crayon-plain-tag">// ServiceWorkerのスクリプト
this.addEventlistener('install', function (event) {
  // event.waitUntil()は中の処理が終わるまで終了を遅らせる
  event.waitUntil(
    // static-v1という名前のついたキャッシュを用意
    caches.create('static-v1').then(function (cache) {
      // キャッシュしたいリソースをCacheオブジェクトに追加
      // 追加すると自動で取得して、全部取得できたらresolveする
      return cache.add(
        '/',
        '/theme.css',
        '/polymer/polyer.js',
        // ...
      );
    })
  )
});</pre><p></p>

<h4>大活躍なES6 Promises</h4>

<p>ServiceWorkerは複数のドキュメントから登録され、それらをコントロールします。ドキュメント主導ではなくイベント駆動であり、必要がなくなれば終了します。このため中の処理に動的なものは含められず、非同期処理が前提です。</p>

<p>こうした非同期処理にはコールバックやイベントなどさまざまなやり方がありますが、ServiceWorkerではECMAScript 6で定義されるPromisesというものを使います。Promisesを使うと、非同期の何かが成功した場合（resolveした）、失敗した場合（rejectされた）それぞれに対応する処理を一定のパターンで書けるため、コードの見やすさや処理漏れを防ぐことに繋がると期待できます。</p>

<p></p><pre class="crayon-plain-tag">// ES6 Promisesの例
// someAsyncOperation は非同期処理をPromiseオブジェクトとして返す関数
someAsyncOperation()
.then(success) // resolve（成功）時のアクションはthen()の第一引数の関数で処理
.catch(failure) // reject（失敗）時はcatch()内の関数で処理</pre><p></p>

<p>Promisesについて解説すると、それだけで別な記事ができてしまうので、今回はJake氏による<a href="http://www.html5rocks.com/ja/tutorials/es6/promises/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Promisesに関するHTML5 Rocksの記事</a>や<a href="http://azu.github.io/promises-book/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">JavaScript Promiseの本</a>をお読みください。</p>

<h3>fetchでリクエスト・レスポンスに介入</h3>

<p>待機状態のServiceWorkerは、リソースの取得（<code>fetch</code>）やServiceWorkerのアクティベート（<code>activate</code>）などのイベントが発火すると動き出します。オフラインアプリにおいては、fetch時にキャッシュの確認や更新・反映や、フォールバックの提供が考えられるでしょう。</p>

<p></p><pre class="crayon-plain-tag">this.addEventListener('fetch', function (event) {
  // respondWith()でレスポンスを好きなようにできる
  // 引数にはResponseオブジェクトにresolveされるPromiseオブジェクトをとれる
  event.respondWith(
    // キャッシュがあればまずそれを表示
    caches.match(event.request)
    .catch(function () {
      // キャッシュにないものはふつうに取得する
      return event.default();
    })
    .catch(function () {
      // ネットワークに問題があるなどで取得不可能な場合はフォールバック
      return caches.match('/fallback.html');
    })
  );
}</pre><p></p>

<h3>参考：Cache APIって？</h3>

<p>Cache APIは手軽に使えるキャッシュです。キャッシュと言ってもHTTPキャッシュとは完全に分離されており、さらには明示的な指示がない限り削除されない、ドメインを越えて共有されないといった大きな違いがあります。<code>Cache</code>オブジェクトは<code>caches</code>オブジェクトに複数格納できます。また、<code>oninstall</code>時の<code>static-v1</code>のように名前をつけて、参照しやすくもできます。</p>

<p>Cache APIのキャッシュは、適当なタイミングで消してやらなければいけません。ServiceWorkerは、自身の更新時に<code>activate</code>イベントを発火します。このタイミングでは<code>fetch</code>イベントが発生する前なので、キャッシュの削除はもちろん、データベースのスキーマ更新などに最適とのことです。</p>

<h2>キャッシュを賢く使ってよいオフライン体験を</h2>

<p>セッションでは、I/OのKeynoteで発表された<a href="http://www.polymer-project.org/docs/elements/material.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">PolymerのPaper Elements</a>によるクイズアプリ「<a href="http://www.polymer-project.org/apps/topeka/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Topeka</a>」に、ServiceWorkerでオフライン対応を施したアプリをデモしながら解説しました。</p>

<p><img src="/wp-content/uploads/2014/07/topeka.png" alt="" width="675" height="417" class="aligncenter size-full wp-image-9116" srcset="/wp-content/uploads/2014/07/topeka.png 640w, /wp-content/uploads/2014/07/topeka-300x185.png 300w, /wp-content/uploads/2014/07/topeka-207x127.png 207w" sizes="(max-width: 675px) 100vw, 675px" /></p>

<p>Topekaでは、クイズの得点を競い合うためのLeaderboard（スコア表）があります。クイズ本体はキャッシュさせたままでもオフライン動作に問題ありませんが、Leaderboardは順位が変動するのでインストール時にキャッシュさせることはできません。</p>

<p>というわけで、Leaderboardへのアクセスを他のアクセスと分けて処理します。URLのチェックには、<a href="http://url.spec.whatwg.org/#api" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">URL API</a>を使うと少し楽です。</p>

<p></p><pre class="crayon-plain-tag">// こちらServiceWorkerのファイル
var workerURL = new URL(this.url); // URL APIきました

this.addEventListener('fetch', function (event) {
  var url = new URL(event.request.url);
  if (workerURL.origin === url.origin &amp;amp;&amp;amp; url.path === '/leaderboard.json') {
    // leaderboardFetchにLeaderboardの処理を分岐
    event.respondWith(leaderboardFetch(event.request));
  } else {
    // その他はふつうにキャッシュがあれば使って、なければ取得するフローで
    event.respondWith(
      caches.match(event.request).catch(function () {
        return event.default();
      })
    );
  }
});

// 後ろのコードにつづく&hellip;</pre><p></p>

<p>ここでJake氏は、Leaderboardについても常にリクエストするのではなく、キャッシュがあればまずそれを表示し、並行して最新のLeaderboardをリクエストし、取得後に反映するという、ネイティブアプリのオフライン対応でも使われる方法を提案しました。こうすると、新しいLeaderboardをリクエストしている間は画面が真っ白になるといったことがありません。</p>

<div id="attachment_8892" style="width: 710px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2014/07/Screen-Shot-2014-07-15-at-3.15.31.jpg" width="700" height="460" class="size-full wp-image-8892" srcset="/wp-content/uploads/2014/07/Screen-Shot-2014-07-15-at-3.15.31.jpg 640w, /wp-content/uploads/2014/07/Screen-Shot-2014-07-15-at-3.15.31-300x197.jpg 300w, /wp-content/uploads/2014/07/Screen-Shot-2014-07-15-at-3.15.31-207x135.jpg 207w" sizes="(max-width: 700px) 100vw, 700px" /><p class="wp-caption-text">Leaderboardのキャッシュがあればそれを用い、その後で新しいLeaderboardを取得し置き換える処理を示すフローチャート</p></div>

<p>これを実装するとなると、キャッシュされているLeaderboardが最新のものかを確かめ、古い場合はキャッシュを更新しなければいけません。一体どうするのでしょうか。これはまずアプリから「キャッシュを使ってほしい」とServiceWorkerに伝えないといけません。</p>

<p></p><pre class="crayon-plain-tag">// こちらかわってアプリのJavaScriptコード
var showingLiveData = false;

// ふつうにネットワークから取得するPromiseオブジェクト
var liveDataPromise = fetchJSON('/leaderboard.json')
.then(updatePage).then(function () {
  showingLiveData = true;
});

// キャッシュを使うようにServiceWorkerに伝えるPromiseオブジェクト
// serviceWorker.controllerはページをコントロールするSWを返す
if (navigator.serviceWorker.controller) {
  // （fetchJSON()ってメソッドは仕様にないけど、fetch()に似た何かでしょう）
  var cachedDataPromise = fetchJSON('/leaderboard.json', {
    // てきとーなヘッダでタグづけ。これ重要
    headers: { 'X-Cache-Only-Please': 'yep' }
  })
  .then(function (data) {
    if (!showingLiveData) {
      updatePage(data);
    }
  });
}

// セッションのスライドにはなかったので以下勝手に追加
// たぶんこんなコードが入るはず
liveDataPromise.catch(function () {
  return cachedDataPromise
})</pre><p></p>

<p>キャッシュを使わせるよう適当なヘッダをつけてリクエストします。ServiceWorkerはこのヘッダの有無を確かめ、キャッシュがない場合は新しいデータを取得し、キャッシュに追加します。これを処理するのが、ServiceWorkerのスクリプト側にある<code>leaderboardFetch</code>関数です。</p>

<p></p><pre class="crayon-plain-tag">// こちらふたたびServiceWorker
function leaderboardFetch(request) {
  // タグづけされたリクエストの場合は、マッチするキャッシュをそのまま返す
  if (request.headers.has('X-Cache-Only-Please')) {
    return caches.match(request);
  } else {
    // そうじゃない場合はまずstatic-v1なキャッシュを取得し
    return caches.get('static-v1')
    .then(function (cache) {
      // 最新のleaderboardをとってきてキャッシュを更新
      return cache.add(request);
    })
    .then(function (responses) {
      // それだけじゃ何にもならないのでブラウザにも渡す
      return responses[0];
    });
  }
}</pre><p></p>

<h2>ServiceWorkerでいろいろしてみる</h2>

<p>主にオフラインWebアプリの解決策として紹介されるServiceWorkerですが、要はクライアントサイドでプロキシを動かすようなものなので、その気になればかなりいろいろできます。</p>

<p>たとえば、新しい画像フォーマットを使うとして、対応してないブラウザではクライアントサイドでPNGに変換して返すなんてことができます。</p>

<p></p><pre class="crayon-plain-tag">this.addEventListener('fetch', function (event) {
  // request.contextにはいろいろあります
  // http://fetch.spec.whatwg.org/#concept-request-context
  if (event.request.context === 'image') {
    event.respondWith(
      // リソースを取得し、そのレスポンスのContent-Typeをみる
      event.default().then(function (response) {
        if (response.headers.get('content-type') === 'image/amazing') {
          // 謎メソッドでPNGに変換
          return transcodeToPng(response.body);
        }
        return response;
      })
    )
  }
})</pre><p></p>

<p>こちらはもっと一般的（？）なユースケースでしょうか。あるクライアントサイドでテンプレートエンジンを動的に適用しその結果を返すといった、フレームワーク依存が強かったところも少し解決されます。</p>

<p></p><pre class="crayon-plain-tag">// importScriptsはWeb Workersのやつですね
importScripts('/template-engine.js');

this.addEventListener('fetch', function (event) {
  var url = event.request.url;
  if (event.request.context === 'navigation' &amp;amp;&amp;amp; /\/article\//.test(url)) {
    event.respondWith(
      fetch(url + '.json').then(function (response) {
        // asJSON()はStreams APIに移動しそうだけど、いまはFetch仕様にて定義
        // http://fetch.spec.whatwg.org/#fetchbodystream
        return response.body.asJSON();
      }).then(function (json) {
        // JSONとれたらテンプレートを呼び出して
        return caches.match('/template.tmpl').then(function (response) {
          return response.body.asText();
        }).then(function (template) {
          // テンプレートを適用したものをHTMLにして返す
          return new Response(renderTemplate(template, json) {
            headers: {
              'Content-Type': 'text/html'
            }
          });
        })
      })
    );
  }
});</pre><p></p>

<p>ネコ好きのJake氏は、木曜日になったらすべての画像を猫画像に差し替えてしまうコードを紹介して、拍手をもらっていました。</p>

<p></p><pre class="crayon-plain-tag">this.addEventListener('fetch', function (event) {
  if (event.request.context === 'image' &amp;amp;&amp;amp; new Date().getDay === 4) {
    event.respondWith(
      caches.match('/kitten.jpg');
    )
  }
});</pre><p></p>

<p>ServiceWorkerはキャッシュ、ルーティング、バージョニングの仕組みが分離さてているので、いろいろ応用がききますね。</p>

<p>また、ServiceWorkerはWeb Workersの拡張なので、<code>postMessage()</code>でメッセージの送受信が可能です。これを使って、「あとで読む」機能の仕組みを作れます。</p>

<p></p><pre class="crayon-plain-tag">// こちらアプリ
navigator.serviceWorker.controller.postMessage({
  action: 'read-later',
  articleId: 12345
});

// こちらServiceWorker
this.addEventListener('message', function (event) {
  if (event.data.action === 'read-later') {
    // articleIdを持つ記事のリソースを取得してキャッシュに追加する
  }
});</pre><p></p>

<h2>普通のJavaScriptとしてデバッグ可能</h2>

<p>ServiceWorkerのパワフルさはお分かりいただけたかと思えますが、ほかにもいろいろ利点があるとのこと。まずAppCacheとは違い、JavaScriptコードなので、DevToolsでデバッグできるという点が大きいでしょう。Chromeでは、<code>chrome://inspect/#service-workers</code>や <code>chrome://serviceworker-internals/</code>といった、デバッグに便利なページも用意されています。また、現在Chrome Canaryで導入されているDevToolsの新しいエミュレーションモードでは回線状況のシミュレーションができるので、それを組み合わせると遅いネットワークを想定したテストもできるのでおすすめとのことです。このDevToolsの新しいエミュレーション機能については、Tomomi Imuraさんによる<a href="https://html5experts.jp/girlie_mac/8384/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Paul Bakaus氏のセッションレポート</a>で紹介されていますのでお読みください。</p>

<p>少し不便な点といえば、MitM attackを防止するためにHTTPSで提供されたページでしか動作しないことでしょうか。ただ、手元での開発への影響を抑える目的でlocalhostはその例外として機能するとのこと。</p>

<h2>ネイティブとの差を埋めるためには</h2>

<p>セッションのタイトルには、「Bridging the gap between the web and apps（『Webとアプリの差を埋める』）」とあります。キャッシュやルーティングによって必要なリソースをインストールさせてオフラインでも動作させるのも必要ですが、ネイティブアプリにあってWebにはまだ足りていないものがまだまだあるとのこと。その一例としてJake氏はプッシュやバックグラウンド同期を挙げ、それに対応するWeb標準（Background Sync, Push API, Web Notifications）を紹介しました。</p>

<p>Background Sync以外は策定中で、Notifications仕様については実装もあります。しかし、ServiceWorker対応はこれから。というわけでTopekaでどのようにServiceWorkerと同期・プッシュ・通知が実装されているかを紹介しました。Leaderboardのスコアを同期し、トップを奪われたら通知が来るという機能の実装です。</p>

<p>まずは同期です。ServiceWorkerがインストールされているかを確認し、スコアの同期をとります。</p>

<p></p><pre class="crayon-plain-tag">// app.js
sendScore().catch(function () {
  // serviceWorker.readyは常にresolveするPromiseを返す
  navigator.serviceWorker.ready.then(function () {
    // 同期はnavigator.syncに登録するらしいです
    navigator.sync.register('send-score')
    .then(success, failure);
  });
});</pre><p></p>

<p>この同期は1回きりで終了しますが、特定の間隔で同期するタスクも登録。例として、1時間ごとに質問の更新をするタスクが紹介されました。</p>

<p></p><pre class="crayon-plain-tag">// app.js
navigator.serviceWorker.ready.then(function () {
  navigator.sync.register('update-questions', {
    minInterval: 1000 * 60 * 60
  }).then(success, failure);
});</pre><p></p>

<p>minIntervalはあくまでヒントとして伝えられるだけのようで、ブラウザがもっと賢くスケジューリングするのも構わないと説明していました。</p>

<p>さて、ユーザーが同期を許可すると、ServiceWorkerに<code>sync</code>イベントが伝えられます。複数の同期をスケジュールしていたので、イベントの <code>id</code>プロパティで処理を振り分けます。</p>

<p></p><pre class="crayon-plain-tag">// sw.js
this.addEventListener('sync', function (event) {
  if (event.id === 'update-questions') {
    event.waitUntil(syncQuestions());
  }
  else if (event.id === 'send-score') {
    event.waitUntil(sendScore());
  }
});</pre><p></p>

<p>渡されたPromiseオブジェクトがrejectされた場合は、同期が再スケジュールされるとのことなので、また登録する必要はないとのこと。</p>

<p>スコアを送信する <code>sendScore()</code> 関数は、データベースからスコアを取得し、それをPOSTします。</p>

<p></p><pre class="crayon-plain-tag">// sw.js
function sendScore() {
  return getScoreFromDatabase().then(function (score) {
    // Fetch APIはもちろんPOSTもできます
    return fetch('/post-score', {
      method: 'POST',
      body: new FormData({score: score})
    })
    .then(function (response) {
      if (response.status !== 200) {
        throw Error('Failed to post score');
      }
    });
  });
}</pre><p></p>

<p>プッシュメッセージについては、Google Cloud Messagingを使った実装でのやり方が紹介されました。</p>

<p></p><pre class="crayon-plain-tag">// app.js
var regID = '...'; // サーバーに送った登録ID

navigator.serviceWorker.ready.then(function () {
  navigator.push.register().then(function (regDetails) {
    if (regDetails.id !== regID) {
      return postToServer(regDetails);
    }
  }).then(success, failure);
});</pre><p></p>

<p>GCMでは、プッシュの登録が完了すると、以前の登録したプッシュの詳細が返ってくるそうで、今回処理しようとしているものと同じでないかを確認してから、サーバーにメッセージを送っています。</p>

<p>ServiceWorkerでは、<code>push</code>イベントが通知されます。これを拾ってNotification APIで通知を出します。</p>

<p></p><pre class="crayon-plain-tag">// sw.js
this.addEventListener('push', function (event) {
  if (event.message.data === 'lost-lead') {
    new Notification('Lead lost!', {
      body: 'You\'re no longer top!',
      tag: 'leaderboard',
      serviceWorker: true
    });
  }
});</pre><p></p>

<p>デモでは2つのNexus 5を用意し高得点を競い、トップを奪われた方に通知が届きました。また、Android Wearでもその通知が表示されました。</p>

<p><img src="/wp-content/uploads/2014/07/Screenshot-2014-07-25-at-07.45.49-1024x619.png" width="1024" height="619" class="aligncenter size-large wp-image-9121" srcset="/wp-content/uploads/2014/07/Screenshot-2014-07-25-at-07.45.49-1024x619.png 1024w, /wp-content/uploads/2014/07/Screenshot-2014-07-25-at-07.45.49-300x181.png 300w, /wp-content/uploads/2014/07/Screenshot-2014-07-25-at-07.45.49-207x125.png 207w, /wp-content/uploads/2014/07/Screenshot-2014-07-25-at-07.45.49.png 640w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>

<p>大規模なカンファレンスにつきものなネットワークの悪さもあって、通知が来るまでに時間がかかりました。みんなそわそわしましたが、「オフラインWebアプリでも問題ないセッションが、デモのせいで失敗するとか…！」「ふー、このセッション自体も非同期とは」といったオフライン・非同期ジョークなどが飛び出し、会場を和ませました。</p>

<h2>まだまだあるよServiceWorker</h2>

<p>セッションで紹介されたServiceWorkerの機能は以上です。盛りだくさんでした。</p>

<p>このセッションでは、ServiceWorkerの更新については語られませんでした。これについてはJake氏が<a href="http://jakearchibald.com/2014/service-worker-first-draft/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Service Worker &#8211; first draft published</a>という記事で紹介しています。</p>

<p>ServiceWorkerの実装は少しずつ進んでいますが、仕様の議論も並行しているため、今回紹介したコードが動かなくなる可能性は十分にあります。何かアップデートがあればまたServiceWorkerに関する記事が公開されるかもしれませんので、楽しみにしていてください。</p>
]]></content:encoded>
		
		<series:name><![CDATA[Google I/O 2014 特集]]></series:name>
	</item>
		<item>
		<title>Web Componentsが変えるWeb開発の未来</title>
		<link>/1000ch/8906/</link>
		<pubDate>Wed, 30 Jul 2014 00:00:21 +0000</pubDate>
		<dc:creator><![CDATA[泉水翔吾]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Google I/O 2014]]></category>
		<category><![CDATA[Polymer]]></category>
		<category><![CDATA[Web Components]]></category>

		<guid isPermaLink="false">/?p=8906</guid>
		<description><![CDATA[連載： Google I/O 2014 特集 (7)Web Componentsが変えるWeb開発の未来 Google I/O 2014でEric BidelmanがPolymer and Web Components ...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/google-io-2014-2/" class="series-191" title="Google I/O 2014 特集" data-wpel-link="internal">Google I/O 2014 特集</a> (7)</div><h1>Web Componentsが変えるWeb開発の未来</h1>

<p>Google I/O 2014で<a href="https://google.com/+EricBidelman/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Eric Bidelman</a>が<a href="https://www.youtube.com/watch?v=8OJ7ih8EE7s" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Polymer and Web Components change everything you know about Web development</a>というタイトルで、Web Componentsおよびその補完・拡張ライブラリであるPolymerについてセッションが行われました。</p>

<ul>
<li>「なぜWeb Componentsが生まれたのか」</li>
<li>「Web Componentsが何を解決してくれるか」</li>
</ul>

<p>この2点を上記セッションに沿って解説していきます。</p>

<h2>HTML/CSSが持つ弱点</h2>

<p>Webを構成していくパーツを作る際、今まではどのように行っていたでしょうか。<code>&lt;div&gt;</code>や<code>&lt;textarea&gt;</code>といったようなネイティブで用意されているタグに、CSSで見た目で装飾し、JavaScriptからDOMのAPIを操作してインタラクションを付与してきました。</p>

<p>しかし、このようにせっかく作った部品を再利用しようとすると、たちまちリスクを生んでいました。これはHTMLやCSSがスコープを持たず、既存のHTML/CSSを上書きし汚染してしまう可能性を持っていたためです。一般的なプログラム言語にはスコープが存在しますが、Cascading Style Sheetの名の通り、記述された内容は全て後勝ちで宣言されます。CSSのクラスはJavaScriptに例えるならば、全てグローバル変数のような存在であると言えるでしょう。</p>

<p>これに対して、開発者は様々な工夫を行ってきました。CSSに命名規則を設けてより強固な設計概念を作ったり、コンポーネント管理をJavaScript上で行うべくライブラリを作ったり…。しかしそれらは共通の構成を持っているわけでもなく、APIもバラバラです。つまりそのルールの元でしか通用せず、万人共通の解決策にはなりません。</p>

<h2>Web Componentsあらわる</h2>

<p>そこで生まれたのがWeb Componentsです。Web Componentsは以下の4つの仕様から構成されます。</p>

<ul>
<li><a href="http://www.w3.org/TR/components-intro/#custom-element-section" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Custom Elements</a> &#8211; Custom Elementsによってネイティブで実装されていない、新しいHTML要素を定義することが可能になりました。定義された要素はHTML中に書いたり、<code>document.createElement('new-element')</code>等、既存のタグと同じように使うことができます。</li>
<li><a href="http://www.w3.org/TR/components-intro/#template-section" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Templates</a> &#8211; Templatesは<code>template</code>タグを使った、DOMベースで利用可能なテンプレートの仕様です。HTMLをテンプレートとして利用したいケースは多々ありましたが、それを実現するには<code>script type='text/template'</code>等の、ハックアイデアを使うしかありませんでした。</li>
<li><a href="http://www.w3.org/TR/components-intro/#imports-section" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTMLImports</a> &#8211; HTMLImportsは<code>link</code>タグを使った、HTMLをロードするための新たな仕様で、これを使うことで断片化したHTMLのロードを容易に行うことができるようになります。HTMLにおいて、サブリソースのロードは珍しくありません。画像であれば<code>img</code>、音声であれば<code>audio</code>、スクリプトであれば<code>script</code>を使ってロードしますが、HTMLのロードは<code>iframe</code>を使う必要がありました。しかし、<code>iframe</code>を使ったロードは制限が多く、<code>XMLHttpRequest</code>を使う方法もコンポーネントのロードとしては利用し難いものです。</li>
<li><a href="http://www.w3.org/TR/components-intro/#shadow-dom-section" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Shadow DOM</a> &#8211; 前述の通りHTML/CSSにはスコープが存在しませんが、Shadow DOMがそれを解決します。DOMのAPIとして追加された<code>createShadowRoot()</code>を使うことで、Shadow Rootという他のDOMに干渉されないような新しいノードを生成します。</li>
</ul>

<p>Shadow DOMとTemplatesを使って新たな要素を構成し、Custom Elementsを使って定義します。それらを集約したHTMLファイルをHTMLImportsを使ってロードすることで、晴れて新しい要素を使うことが可能になります。これがWeb Componentsの考え方です。</p>

<h2>Web Componentsが解決してくれること</h2>

<p>セッション中にBidelmanも触れているとおり、既存のHTML+CSSによるWebページの構築は、混沌とした状態を生み出してしまうことは周知の事実です。
以下はGmailの例ですが、アプリケーションが複雑化すればするほどDOMのネストは深くなり、セマンティクス性は皆無です。</p>

<p><img src="/wp-content/uploads/2014/07/gmail.png" alt="gmail" width="100%"></p>

<p>でも、Web Componentsを使って要素を再定義して、もし以下のようにできたらクールではありませんか？</p>

<p></p><pre class="crayon-plain-tag">&lt;mail-label-list&gt;
  &lt;mail-label type='starred'&gt;スター付き&lt;/mail-label&gt;
  &lt;mail-label type='important'&gt;重要&lt;/mail-label&gt;
  &lt;mail-label type='sent'&gt;送信済みメール&lt;/mail-label&gt;
  &lt;mail-label type='draft'&gt;下書き&lt;/mail-label&gt;
&lt;/mail-label-list&gt;
&lt;mail-list&gt;
  &lt;mail-item title='...' to='...' from='...' datetime='...' label='...'&gt;&lt;/mail-item&gt;
  &lt;mail-item title='...' to='...' from='...' datetime='...' label='...'&gt;&lt;/mail-item&gt;
  &lt;mail-item title='...' to='...' from='...' datetime='...' label='...'&gt;&lt;/mail-item&gt;
&lt;/mail-list&gt;
...</pre><p></p>

<p>また、命名規則やJavaScriptのライブラリに頼ったコンポーネント化とは異なり、 <strong>標準化を目指したブラウザの仕様である</strong> ことも重要なポイントです。これは、仕様の策定が進み各ブラウザの実装が追いつけば、ライブラリや方法論に依存せずコンポーネントを再利用することができることを意味しています。</p>

<h2>Web Componentsが抱える課題等</h2>

<h3>ブラウザの対応状況</h3>

<ul>
<li><a href="http://youtu.be/8OJ7ih8EE7s?t=4m22s" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">2013年時のブラウザネイティブ対応状況</a></li>
<li><a href="http://youtu.be/8OJ7ih8EE7s?t=4m46s" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">2014年時のブラウザネイティブ対応状況</a></li>
<li><a href="http://youtu.be/8OJ7ih8EE7s?t=5m10s" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">PolymerのPlatform.jsのポリフィル利用時</a></li>
</ul>

<p>Web Componentsの過渡期であった2013年の段階では、ChromeとFirefoxが、Templates・Custom Elements・Shadow DOMをそれぞれ部分的にサポートしている状態でしたが、2014年のGoogle I/O時点ではChrome、Firefox、Operaが大半をサポートしているというところまで来ています。そして、Polymerチームが開発しているWeb Componentsのポリフィルライブラリである Platform.js を使うことでSafari、Internet Explorerを含めたほとんどのブラウザでWeb Componentsを利用することが可能になりました。</p>

<h3>パフォーマンス</h3>

<p>実行速度面についてはもちろん、実際に動作するPC・モバイルといったデバイスによって異なるので一概には言えませんが、プロセッサやメモリの進化はネットワーク等に比べて早いのと、ブラウザのJITコンパイル等の最適化が進むに連れて、気にならないレベルになるかと予想（期待）しています。</p>

<p>また、Webパフォーマンスの初歩としてHTTPリクエストを削減するというアプローチが広く浸透していますが、Web Componentsを使ったリソースの断片化は相反する関係にあると言えます。先程のブラウザの実装状況や仕様の策定状況を考慮しても、しばらくはPolymer等のポリフィルライブラリを利用するのが現実的かと思います。従ってWeb Components同士にHTMLImportに加えて、ネットワークを介して必要になるリソースが、今までより多くなるのは間違いないでしょう。</p>

<p><a href="https://github.com/Polymer/vulcanize" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Polymer/vulcanize</a>という、事前にWeb Componentsを結合するビルドツールもありますが、ネットワーク越しにあるコンポーネントをロードしたいケースも多々あるでしょうから、今後更なる最適化アプローチが現れるかもしれません。</p>

<h2>Polymer Designerを使ったWeb Componentsの作成</h2>

<p>Polymerを使ったコンポーネントの作成は、ソースコードレベルでももちろん可能ですが、今回は<a href="http://www.polymer-project.org/tools/designer/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Polymer designer tool</a>を使ってみます。これはブラウザ上で、Polymerの要素を組み合わせて新たなコンポーネントをGUIで作ることが可能なサービスです。ちなみに、このサイト自体がPolymerを使ったWeb Componentsで構成されており、非常に興味深いです。</p>

<h3><code>yt-search-video</code> + <code>speech-mic</code></h3>

<p>今回は<a href="https://github.com/PolymerLabs/yt-video" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><code>yt-search-video</code></a>というYouTubeにある動画を検索し表示するコンポーネントと、<a href="https://github.com/PolymerLabs/speech-mic" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><code>speech-mic</code></a>というマイク入力を認識し扱うコンポーネントを組み合わせて、音声入力でYouTubeの動画を検索するコンポーネントを作成してみます。</p>

<h3>コンポーネントの選択</h3>

<p>画面右下の<strong>PALETTE</strong>にコンポーネントの一覧があります。使いたいものを選択し、画面左の方眼紙のようなキャンバスにドラッグアンドドロップします。今回は<code>yt-search-video</code>と<code>speech-mic</code>を配置します。</p>

<p><img src='/wp-content/uploads/2014/07/polymer-designer-palette.png' width='100%' alt="polymer-designer-palette"></p>

<p>配置されたコンポーネントは、<strong>TREE</strong>に一覧表示されます。 <strong>TREE</strong>中で選択している要素はキャンバス内でもハイライトされていたり、右上の<strong>PROPERTIES</strong> や <strong>STYLES</strong>の表示対象になったりと、直感的に使うことが可能です。</p>

<p><img src="/wp-content/uploads/2014/07/polymer-designer-tree.png" alt="polymer-designer-tree" width="100%"></p>

<h3>データバインディングの設定</h3>

<p>マイクの入力値をYouTubeの検索クエリと紐付けたいので、その設定を行います。マイクの入力値は<code>speech-mic</code>の<code>completeTranscript</code>なので、それを<code>yt-search-video</code>の<code>ImFeelingLucky</code>とバインディングします。</p>

<p><img src="/wp-content/uploads/2014/07/polymer-designer-property.png" alt="polymer-designer-property" width="100%"></p>

<h3>完成！</h3>

<p>これで完成です。画面左上の <strong>&lt;&gt;</strong> ボタンをクリックすると生成されたコードを見ることが可能で、実際の挙動もデザイナー上で確認することが可能です。生成されたコードや依存コンポーネントをインポートすれば、もちろん実際に<code>my-element</code>として使うことができます。簡単な手順で作成可能ですので、よかったら試してみてください。</p>

<p><img src="/wp-content/uploads/2014/07/polymer-designer-code.png" alt="polymer-designer-code" width="100%"></a></p>

<p>生成されたコードを見てみると、<code>completetranscript="{{ $.yt_search_video.ImFeelingLucky }}"</code>とPolymerのお作法通りにバインディングされています。このデータバインディングはWeb Componentsに備わっているわけではなく、Polymerが提供する強力な機能の1つです。</p>

<p></p><pre class="crayon-plain-tag">&lt;link rel="import" href="../components/polymer/polymer.html"&gt;

&lt;polymer-element name="my-element"&gt;

  &lt;template&gt;
    &lt;style&gt;    
      :host {
        position: absolute;
        width: 100%;
        height: 100%;
        box-sizing: border-box;
      }
      #yt_search_video {
        width: 300px;
        height: 300px;
        left: 280px;
        top: 160px;
        position: absolute;
      }
      #speech_mic {
        left: 640px;
        top: 290px;
        position: absolute;
      }
    &lt;/style&gt;
    &lt;yt-search-video id="yt_search_video"&gt;&lt;/yt-search-video&gt;
    &lt;speech-mic completetranscript="{{ $.yt_search_video.ImFeelingLucky }}" id="speech_mic"&gt;&lt;/speech-mic&gt;
  &lt;/template&gt;

  &lt;script&gt;

    Polymer('my-element', {
      
    });

  &lt;/script&gt;

&lt;/polymer-element&gt;</pre><p></p>

<h2>Web ComponentsおよびPolymerに関する資料</h2>

<h3>Polymer公式</h3>

<ul>
<li><a href="http://www.polymer-project.org/docs/start/getting-the-code.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Getting started</a> &#8211; Polymerの公式チュートリアルです。Web Componentsの基礎を抑えた後は、こちらをどうぞ。</li>
<li><a href="http://www.polymer-project.org/docs/polymer/polymer.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">API developer guide</a> &#8211; いざPolymerのデバッグをする時は、こちらを見ることになるかもしれません。</li>
</ul>

<h3>HTML5Rocks</h3>

<p>　HTML5RocksにもWeb Componentsに関する記事がいくつもあります。えーじさんが日本語訳をしてくれてます。</p>

<ul>
<li><a href="http://www.html5rocks.com/ja/tutorials/webcomponents/shadowdom/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Shadow DOM 101</a> &#8211; Shadow DOMの記事</li>
<li><a href="http://www.html5rocks.com/ja/tutorials/webcomponents/template/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTML で利用可能になった Template タグ &#8211; クライアントサイドのテンプレートの標準化</a> &#8211; Templatesの記事</li>
<li><a href="http://www.html5rocks.com/ja/tutorials/webcomponents/customelements/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Custom Elements &#8211; HTMLに新しい要素を定義する</a> Custom Elementsの記事</li>
<li><a href="http://www.html5rocks.com/ja/tutorials/webcomponents/imports/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTML Imports &#8211; ウェブのための#include</a>HTML Importsの記事</li>
</ul>

<h3>Others</h3>

<p>ほかにも参考になるリソースがありますので紹介します。</p>

<ul>
<li><a href="http://blog.agektmr.com/2014/05/web-components.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">なぜ Web Components はウェブ開発に革命を起こすのか</a> &#8211; えーじさんの記事です。Web Componentsの歴史やコンセプトおよび、仕様策定の現状などがわかりやすく書かれているので、一読することをオススメします。</li>
<li><a href="http://ameblo.jp/ca-1pixel/entry-11815188808.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Web Componentsで行うHTMLのコンポーネント化</a> &#8211; こちらは私が以前会社のブログに寄稿したものです。Web Componentsの概要と利用方法を、コードまで落としこんで詳細に解説しています。</li>
<li><a href="http://developer.telerik.com/featured/web-components-arent-ready-production-yet/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Why Web Components Aren’t Ready for Production… Yet</a> &#8211; 英語です。ブラウザの対応状況、Polymerが行っているポリフィルの仕組み、パフォーマンスについての言及など、様々な考察がされています。</li>
</ul>

<h2>まとめ</h2>

<p>以上、簡単ではありますが、Web ComponentsとPolymerについて紹介しました。</p>

<p>Web Componentsが普及すれば、今までHTML/CSSが備えていなかったパーツの可搬性は解決され、コンポーネント（機能を含めたUIパーツ等）の流用は容易になり、今まで行っていた機能の再開発をする必要がなくなることも期待できます。</p>

<p>デザイナーがデザインし、ディベロッパーがHTML/CSSを組み、インタラクションをつける人がJavaScriptを書いているような分断されがちであったワークフローも徐々に境がなくなり、1つの機能単位でコンポーネントを実装するようなフローになっていくかもしれません。</p>

<p>今後もWeb Components/Polymerの動向に注目です。Web Components及びPolymerのより詳細な実装については、次回以降の記事で解説します。</p>
]]></content:encoded>
		
		<series:name><![CDATA[Google I/O 2014 特集]]></series:name>
	</item>
		<item>
		<title>Web上で一緒に音楽を作ろう！オンラインスタジオ「Soundtrap」で音楽制作</title>
		<link>/ryoyakawai/7736/</link>
		<pubDate>Tue, 29 Jul 2014 00:00:57 +0000</pubDate>
		<dc:creator><![CDATA[河合良哉]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Dart]]></category>
		<category><![CDATA[Google I/O 2014]]></category>
		<category><![CDATA[MIDI]]></category>
		<category><![CDATA[モバイル]]></category>

		<guid isPermaLink="false">/?p=7736</guid>
		<description><![CDATA[連載： Google I/O 2014 特集 (6)概要 Google I/O 2014のセッションの1つ「Making music mobile with the Web」のレポート記事です。Officialに公開され...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/google-io-2014-2/" class="series-191" title="Google I/O 2014 特集" data-wpel-link="internal">Google I/O 2014 特集</a> (6)</div><h2>概要</h2>

<p>Google I/O 2014のセッションの1つ「Making music mobile with the Web」のレポート記事です。Officialに公開されているYouTubeは<a href="https://www.youtube.com/watch?v=PMH1vM-dSc0" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">こちら</a>です。</p>

<p>OpenWeb 技術であるWebRTC、Web Audio APIは一度は耳にしたことのあると思います。この2つの技術、そして標準化が始まったばかりのWeb MIDI API（電子楽器とブラウザを直接接続するAPI）を利用した音楽制作アプリケーション「<a href="https://www.soundtrap.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Soundtrap</a>」。これらを使って、実際にセッションのオーディエンス、遠隔地の人とコラボレーションをして、Google I/Oのテーマ曲を作成するデモンストレーション中心のセッションでした。本レポートと合わせて映像もぜひご覧ください！</p>

<p>このセッションでは、主にモバイル端末（Nexus 7、Nexus 5）を使って進行されました。Webアプリといえば、JavaScriptでの構築を想像される方も少なくないので意外でした。しかしながら、「Soundstrap」は<a href="https://www.dartlang.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Dart</a>で開発されていたところでした。(開発言語にDartを選択した理由も、後ほど説明していきます)</p>

<p>それでは内容を見ていきましょう。</p>

<p>※2014/7/4にDartは、ECMA標準仕様として承認されたと<a href="http://news.dartlang.org/2014/07/ecma-approves-1st-edition-of-dart.html" title="Ecma approves the 1st edition of the Dart language specification" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">発表</a>がありました。</p>

<h2>音楽制作</h2>

<p>音楽制作にはいろいろな進め方がありますが、このセッションでは以下の順で録音が進められました。</p>

<ol>
  <li>リズムの選択 (<a href="http://youtu.be/PMH1vM-dSc0?t=1m49s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">1:49-</a>)</li>
  <li>Bass の録音 (<a href="http://youtu.be/PMH1vM-dSc0?t=3m2s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">3:02-</a>)</li>
  <li>Guitar(メロディー)の録音 (<a href="http://youtu.be/PMH1vM-dSc0?t=15m11s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">15:11-</a>)</li>
  <li>Keyboard(伴奏)シーケンスの作成 (<a href="http://youtu.be/PMH1vM-dSc0?t=16m28s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">16:28-</a>)</li>
  <li>Vocal の録音 (<a href="http://youtu.be/PMH1vM-dSc0?t=23m30s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">23:30-</a>)</li>
  <li>Mix Down (<a href="http://youtu.be/PMH1vM-dSc0?t=34m55s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">34:55-</a>)</li>
</ol>

<h3>1. リズムの選択</h3>

<p>曲のベースとなるリズムを決めます。Soundtrapにあらかじめ用意されているLoop素材を追加し、リズムを聴きながら「ん～」とか「もっとRockしてるのがいいな～」とかコメントしながら選択を終えました。</p>

<h3>2. Bassの録音</h3>

<p>Bassの音はあまり耳には聞こえませんが、実は曲の重要な土台となる低音パートです。 Bassの録音をすると、リズムしかなかった曲の輪郭がモヤっと見えてきます。</p>

<div id="attachment_8892" style="width: 710px" class="wp-caption aligncenter">
<a href="http://youtu.be/PMH1vM-dSc0?t=3m2s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">
<img src="/wp-content/uploads/2014/07/Screen-Shot-2014-07-25-at-6.59.32-PM.png" alt="RecordingBass" width="540" class="aligncenter size-full wp-image-9157" style="border:1px solid #dddddd" srcset="/wp-content/uploads/2014/07/Screen-Shot-2014-07-25-at-6.59.32-PM.png 640w, /wp-content/uploads/2014/07/Screen-Shot-2014-07-25-at-6.59.32-PM-300x165.png 300w, /wp-content/uploads/2014/07/Screen-Shot-2014-07-25-at-6.59.32-PM-207x113.png 207w" sizes="(max-width: 640px) 100vw, 640px" />
</a>
<p class="wp-caption-text">Bassを録音する様子</p>
</div>

<p>Media Capture APIの1つである、getUserMedia()を使って録音します。</p>

<p><img src="/wp-content/uploads/2014/07/Screen-Shot-2014-07-10-at-12.47.22-AM.png" alt="getusermedia01" width="540" height="128" class="aligncenter size-full wp-image-8494" style="border:1px solid #dddddd" srcset="/wp-content/uploads/2014/07/Screen-Shot-2014-07-10-at-12.47.22-AM.png 540w, /wp-content/uploads/2014/07/Screen-Shot-2014-07-10-at-12.47.22-AM-300x71.png 300w, /wp-content/uploads/2014/07/Screen-Shot-2014-07-10-at-12.47.22-AM-207x49.png 207w" sizes="(max-width: 540px) 100vw, 540px" /></p>

<p>getUserMedia()は、マイクからのInput、WebカメラからのビデオStreamを取得する時に使います。マイクからのInputを取得する時は、スピーカーからの出力をマイクが拾わないようにAEC(Acoustic Echo Canceling)、またマイクからのInputのレベルを保つために AGC(Auto Gain Control)を行うことが可能です。マイク以外の入力を取得する場合（Line入力：ギター、シンセサイザー等）は必要ないので、今回もOffにします。コードは以下のように書きます。</p>

<p></p><pre class="crayon-plain-tag">navigator.getUserMedia({audio:{echoCancellation: false}}).then((stream) {
  // 実際の処理をここに書きます
});</pre><p></p>

<p><code>then()</code> が見慣れない書き方かもしれませんが、これはDartに実装されている Futureという並列処理デザインパターンです。streamを得た時にどんな処理をするのかを、<code>then()</code>の中に書きます。</p>

<h3>3. Guitar（メロディー）の録音</h3>

<p>Guitarで主旋律パートを録音します。主旋律ですので向かう方向がハッキリします。</p>

<p><a href="http://youtu.be/PMH1vM-dSc0?t=15m11s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"></p>

<div id="attachment_8892" style="width: 710px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2014/07/Screen-Shot-2014-07-25-at-7.02.26-PM.png" alt="RecordGuitar" width="540" class="aligncenter size-full wp-image-9158" style="border:1px solid #dddddd" srcset="/wp-content/uploads/2014/07/Screen-Shot-2014-07-25-at-7.02.26-PM.png 640w, /wp-content/uploads/2014/07/Screen-Shot-2014-07-25-at-7.02.26-PM-300x164.png 300w, /wp-content/uploads/2014/07/Screen-Shot-2014-07-25-at-7.02.26-PM-207x113.png 207w" sizes="(max-width: 640px) 100vw, 640px" />
</a>
<p class="wp-caption-text">Guitarの録音をする様子</p>
</div>

<p>Bassの録音と同じく、getUserMedia()を使って録音します。</p>

<p>特にギターの場合、エフェクターという専用の信号処理機械を通して音を作ることが多いです。エフェクトの種類は音を遅らすDelay、音程を微妙にズラすことで複数でコーラスをしているかのようなハーモニーを作るChorus、音を歪ませることで音に角を付け、いわゆるエレキギターと聞いて想像する音を作るFuzz、Distortion、Overdriveがありますが、これらのエフェクトもブラウザで行ってしまいます。（<a href="http://youtu.be/PMH1vM-dSc0?t=8m49s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">セッション内でのデモ</a>）</p>

<p>これらのエフェクトは、以下のように接続します。</p>

<p><img src="/wp-content/uploads/2014/07/Screen-Shot-2014-07-11-at-10.15.57-AM.png" alt="WebAudio_Pipeline" width="540" class="aligncenter size-full wp-image-8675" style="border:1px solid #dddddd" /></p>

<p>Input(getUserMedia()からのAudioStream)をWebAudioで作成したEffectsを通し、WebAudioでの音声の出力口であるDestinationに接続します。</p>

<p>Delayエフェクトの接続方法を例にとって、実際に説明をします。</p>

<p><img src="/wp-content/uploads/2014/07/Screen-Shot-2014-07-11-at-10.21.33-AM.png" alt="WebAudio_DelayNode" width="540" class="aligncenter size-full wp-image-8681" style="border:1px solid #dddddd" srcset="/wp-content/uploads/2014/07/Screen-Shot-2014-07-11-at-10.21.33-AM.png 397w, /wp-content/uploads/2014/07/Screen-Shot-2014-07-11-at-10.21.33-AM-300x68.png 300w, /wp-content/uploads/2014/07/Screen-Shot-2014-07-11-at-10.21.33-AM-207x47.png 207w" sizes="(max-width: 397px) 100vw, 397px" /></p>

<p>Guitarの音(Input)を直接Destination、またDelayに接続します。Delayで任意の時間遅らせて発音した音を、Gainに接続して音量を絞ります。最後にDelayで遅らせ、音量を絞った音をDestinationに接続します。結果としてギターで弾いた音は、山に向かって「ヤッホー」と叫びやまびこを楽しんでいる人の隣で聞いているかのような効果、つまりEffectが得られるのです。</p>

<p>この接続をコードにすると、以下のようになります。</p>

<p></p><pre class="crayon-plain-tag">var context = new AudioContext();

// getUserMediaのAudioStreamをWebAudioに接続する
navigator.getUserMedia({audio:true}).then((stream){
  var guitar = context.createMediaStreamSource(stream);
  var speaker = context.destination;
  guitar.connect(speaker);
});

// Delayエフェクトの接続
var delay = context.createDelay();
guitar.connect(delay);

var gain = context.createGain();
delay.connect(gain);

// Delayエフェクトをかけた音を、出力口のSpeaker(Destination)に接続
gain.connect(speaker);</pre><p></p>

<h3>4. Keyboard(伴奏)シーケンスの作成</h3>

<p>そして、Keyboardで伴奏パートのシーケンスの作成を行います。伴奏が入ると曲がハッキリし、各楽器通しでハーモニーが生まれます。</p>

<div id="attachment_8892" style="width: 710px" class="wp-caption aligncenter">
<a href="http://youtu.be/PMH1vM-dSc0?t=16m28s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">
<img src="/wp-content/uploads/2014/07/Screen-Shot-2014-07-25-at-6.46.31-PM.png" alt="playKeyboardWithWebRTC" width="540" class="aligncenter size-full wp-image-9154" style="border:1px solid #dddddd" srcset="/wp-content/uploads/2014/07/Screen-Shot-2014-07-25-at-6.46.31-PM.png 640w, /wp-content/uploads/2014/07/Screen-Shot-2014-07-25-at-6.46.31-PM-300x169.png 300w, /wp-content/uploads/2014/07/Screen-Shot-2014-07-25-at-6.46.31-PM-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" />
</a>
<p class="wp-caption-text">左下小窓がMoscone Center West、全体がGoogle San Francisco OfficeからWebRTC でStreamingしている様子</p>
</div>

<p>WebRTCを使って、上の画像のように遠隔地から行います。Google I/Oの会場である<a href="https://www.google.co.jp/maps/place/Moscone+Center+West/@37.783083,-122.404025,17z/data=!3m2!4b1!5s0x808580871e84c835:0x6898ed8f6d5ebf0b!4m2!3m1!1s0x80858087111726eb:0x635ab8069f6523c3?hl=ja" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Moscone West</a>と<a href="https://www.google.co.jp/maps/preview?q=google+san+francisco+office&amp;hl=ja&amp;ie=UTF-8&amp;ei=0Um_U-GyII708QW_noCoDw&amp;ved=0CAgQ_AUoAQ&amp;source=newuser-ws" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">GoogleさんのSan Francisco Office</a>を接続し、シーケンスを直接Soundtrapに作成します。Keyboardの演奏はWeb MIDI APIを使い、Keybord（電子楽器）とブラウザを接続して演奏データはMIDI Messageの形式(音声データではなく、「どの音を、どの強さで鳴らせ/止めろ」というような指示を表現したメッセージ)で時間と一緒に記録（シーケンスの作成）を行い、再生する時には記録された時間通りにMIDI MessageをSoundtrap上にあるSoftwearシンセサイザーに送信して、Softwareシンセサイザーが音を出しています。</p>

<p>セッションの中で説明はありませんでしたが、Web MIDI APIを使って電子楽器とブラウザを接続するコードを以下に紹介させていただきます。</p>

<p></p><pre class="crayon-plain-tag">// 電子楽器と接続
navigator.requestMIDIAccess({sysex:true}).then(successCallback, errorCallback);
function successCallback(access){
　// 入力として利用可能な電子楽器のリストをConsoleに出力
　var inputs=access.inputs()
  console.log(inputs);

　// 入力として利用可能なindex=0の電子楽器から受信したMIDI MessageをConsoleに出力
  inputs[0].onmidimessage=function(event) {
    console.log(event.data);
  }

　// 出力として利用可能な電子楽器リストをConsoleに出力
  var outputs=access.outputs()
  console.log(outputs);

　// 出力として利用可能なindex=0の電子楽器にMIDI Messageを送信
  // A4(ラ：440hz、MIDI Key番号：0x45(69))を最大音量(7F(127)で発音させる例)
  outputs[0].send([0x90, 0x45, 0x7f]);
}
function errorCallback(msg) {
  // 何らかの問題で電子楽器との接続ができなかった場合、Consoleにエラーメッセージを出力
  console.log(msg);
}</pre><p></p>

<p>※JavaScriptでの書式になります。 .then()に関して、書式はDartとJavaScriptで同じですが、Dartでは Futureという並列処理デザインパターン、一方JavaScriptではPromiseという並列処理デザインパターンですので、内容は正確にいうと異なりますのでご注意ください。</p>

<p>次に、WebRTCの接続についてです。WebRTCは、RealtimeにPeer to PeerでAudio、Video、Dataの3種類のStreamを使ったコミュニケションができるAPIです。接続には、PeerConnectionを使います。Soundtrapにてビデオチャットを行いながら音楽制作を行うためには、ビデオチャットを行うWebcam stream、音楽制作用に楽器のステレオ音声を送るStereo music streamが必要になります。</p>

<p><img src="/wp-content/uploads/2014/07/Screen-Shot-2014-07-11-at-11.06.21-AM.png" alt="WebRTC_connectionExample" width="540" class="aligncenter size-full wp-image-8689" style="border:1px solid #dddddd" srcset="/wp-content/uploads/2014/07/Screen-Shot-2014-07-11-at-11.06.21-AM.png 586w, /wp-content/uploads/2014/07/Screen-Shot-2014-07-11-at-11.06.21-AM-300x146.png 300w, /wp-content/uploads/2014/07/Screen-Shot-2014-07-11-at-11.06.21-AM-207x101.png 207w" sizes="(max-width: 586px) 100vw, 586px" /></p>

<p>ビットレートはそれぞれStereo music Streamが128Kbps、Webcam streamがVP8 HD 2Mbpsで、PeerConnectionを使ってStreamしています。</p>

<h3>5. Vocalの録音</h3>

<p>録音の最後はVocalです。これで曲のメイン素材の録音、作成が完成です。</p>

<div id="attachment_8892" style="width: 710px" class="wp-caption aligncenter">
<a href="http://youtu.be/PMH1vM-dSc0?t=23m30s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">
<img src="/wp-content/uploads/2014/07/Screen-Shot-2014-07-25-at-6.36.43-PM.png" alt="CaptureVocalByNexus5" width="540" class="aligncenter size-full wp-image-9150" style="border:1px solid #dddddd" />
</a>
<p class="wp-caption-text">Nexus 5を片手に会場で歌声を録音する様子</p>
</div>

<p>Vocalの録音はNexus 5(携帯電話)を使用して、getUserMedia()を使って録音を行います。実際に歌うのはセッションのオーディエンスです！！（私の声も聞こえるかもです）マイクではなく、携帯電話をマイク代わりにして、Soundtrapに直接録音を行います。</p>

<h3>6. Mix Down</h3>

<p>「マスタリング」とも呼ばれ、各パート毎に音量の調節、音程の音量調節(Equalizing)、また残響(Reverb、Echo)の調節を行うことで各パートの音のバランスをとり、ハーモニーを深め、そして際立たせます。</p>

<p>SoundtrapはCloud型の音楽制作Webアプリケーションですので、インターネットに接続できる環境があればどこからでも音楽制作に参加することができます。もちろん、Mix Downをすることも可能です。セッションでは、Keyboard を弾いていた場所(<a href="http://goo.gl/lzrbpf" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">GoogleさんのSan Francisco Office</a>内で、セッションは<a href="http://goo.gl/M8moUo" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Moscone West</a>です)でMix Downが行われました。</p>

<div id="attachment_8892" style="width: 710px" class="wp-caption aligncenter">
<img src="/wp-content/uploads/2014/07/Screen-Shot-2014-07-11-at-12.17.15-PM.png" alt="WebAudio_mixdown" width="574" height="322" class="aligncenter size-full wp-image-8730" style="border:1px solid #dddddd" srcset="/wp-content/uploads/2014/07/Screen-Shot-2014-07-11-at-12.17.15-PM.png 574w, /wp-content/uploads/2014/07/Screen-Shot-2014-07-11-at-12.17.15-PM-300x168.png 300w, /wp-content/uploads/2014/07/Screen-Shot-2014-07-11-at-12.17.15-PM-207x116.png 207w" sizes="(max-width: 574px) 100vw, 574px" />
<p class="wp-caption-text">SoundTrap上に各パートが録音された状態</p>
</div>

<p>その結果、Google I/Oのテーマ曲はこのように仕上がりました。（下の画像をクリックすると視聴できます）</p>

<div id="attachment_8892" style="width: 710px" class="wp-caption aligncenter">
<a href="http://youtu.be/PMH1vM-dSc0?t=34m55s" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">
<img src="/wp-content/uploads/2014/07/Screen-Shot-2014-07-25-at-7.07.32-PM.png" alt="PlaySong" width="540" class="aligncenter size-full wp-image-9160" style="border:1px solid #dddddd" srcset="/wp-content/uploads/2014/07/Screen-Shot-2014-07-25-at-7.07.32-PM.png 640w, /wp-content/uploads/2014/07/Screen-Shot-2014-07-25-at-7.07.32-PM-300x163.png 300w, /wp-content/uploads/2014/07/Screen-Shot-2014-07-25-at-7.07.32-PM-207x112.png 207w" sizes="(max-width: 640px) 100vw, 640px" />
</a>
<p class="wp-caption-text">波形をWebGL表示した背景と共に再生されました</p>
</div>

<p>こちらは Soundtrap内に保存されている音源をそのまま視聴できます 。<a href="https://www.soundtrap.com/io2014" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">試聴する</a></p>

<h2>開発言語にDartを選択した3つの理由</h2>

<p><img src="/wp-content/uploads/2014/07/dart_logo.png" alt="dart_logo" width="387" height="181" class="aligncenter size-full wp-image-9189" style="border:1px solid #dddddd" srcset="/wp-content/uploads/2014/07/dart_logo.png 387w, /wp-content/uploads/2014/07/dart_logo-300x140.png 300w, /wp-content/uploads/2014/07/dart_logo-207x96.png 207w" sizes="(max-width: 387px) 100vw, 387px" /></p>

<p>冒頭に、Soundtrapの開発にDartが採用されたことに触れました。以下の3点が、Dartを選択した理由だそうです。</p>

<h3>親しみやすさ(Familiarity)</h3>

<p>Dartはとにかく簡単に学べるようにと考えられて作られいて、Class や単一継承にセミコロン、中括弧を使うところがJavaScriptや、Java、C++にとても似ているので開発者にはとても親しみやすい。</p>

<h3>拡張性(Scalability)</h3>

<p>Webアプリの開発はとても小さなスクリプトから開始し、それが成長して大規模で複雑なアプリになっていく。従って大規模になった時のことを考えると、スケールアップができる環境で開発を開始することが望まれる。DartではそれをLibrary、またPackageという形で実現している。</p>

<p>Soundtrapの開発は、これらのDartの拡張性によってアプリが大規模になった時でも、開発のスピード（生産性）を落とすことなく進めることができたそうです。</p>

<h3>生産性(Productivity)</h3>

<p>Dartで開発する時は、Dart Editorを使うことができます。このEditorではコードを静的監視しているので生産性がとても高いです。例えば、静的監視されているので、アプリを動作させなくても、Unitテストを走らせなくても構文エラーをリアルタイムに知ることができるのできます。つまりDart Editorは、世の中にある熟れたIDEと同じような機能が搭載されているツールになっているので、不自由はなく、生産性高く進めることが可能です。</p>

<h2>まとめ</h2>

<p>Soundtrapは、OpenWeb技術であるMedia Capture、Audio Processiong、Real-time CommunicationのAPIの紹介にはとてもよいアプリケーションです。今回はChrome上で動作させて紹介しましたが、これらの技術はOpenWeb技術ですので、デスクトップ、モバイル環境にある別のブラウザでも動作させることが可能です（可能になるでしょう）。また、これらの技術を使うことのできる世の中のデバイス数は、以下の通りです。</p>

<ul>
  <li><B>Web Audio</b> 20億のデバイス（10億がモバイル）</li>
  <li><b>WebRTC</b> 15億のデバイス（3億がモバイル）</li>
</ul>

<p>そして Android LのWebViewではChrome V36相当になりますので、Web Audio、WebRTCがほぼすべてのAPIをサポートされた形で使えるようになります。30日でのアクティブユーザ数が10億のAndroidという環境ですので、ものすごく多くのユーザーに対して、これらを使ったアプリケーションの提供が可能になるため、そのインパクトは絶大です。</p>

<h2>Q&amp;Aで質問が出た項目</h2>

<h3>Q. Android LでのAudioのLatencyについて教えてください。</h3>

<p><b>A.</b> 数値の約束はできないが、改善に向けて真剣に取り組んでいる。ICS、JB、Kitkatで20msまでLatencyを短縮することはできた。しかしながら、我々としてもまだまだ満足はしていないので改善していくだろう。</p>

<h3>Q. MIDIのサポートについてどこまで進んでいるのか教えてください。</h3>

<p><b>A.</b> Web MIDI APIはOpenWebStandardとして標準化が始まったばかりで、Chromeは先行して実装を行った。次期、またはその次のVersionでは全ての機能の実装を行い、さらにFlagの設定なしでの動作させる予定です。セッション内でSoundtrapで利用しましたが、もちろんセッション内だけなく、Soundtrap内ではMIDIの接続も利用することが可能です。<br>Chrome以外のブラウザでのサポートに関しては、現状様子見を行っています</p>

<h3>Q. Mix Downはクライアントサイドで行っているのか、サーバーサイドで行っているのか教えてください。</h3>

<p><b>A.</b> 音源はクラウド上のサーバー側にあって、再生をクライアントで行っています。サーバサイドはJavaとScalaで利用可能なPlay Frameworkを使っています。クライアント側で再生する時は、サーバー側でMix DownしたMP3ファイルを作成し、それをSoundtrapというクライアントアプリ側で再生をするという仕組みになっています。</p>

<h2>セッションを終えて感じたこと</h2>

<p>Before Web Audio/MIDIの時代では、DAW（音楽制作用ソフトウェア）を購入し、Audio I/F、キーボード、マイク等のハードウェアを揃えながら満足できる音楽制作の環境を整えるまでには、いささか道のりが長く時間がかかるのが常識で、またそこを楽しむこともありました。</p>

<p>しかし、Webブラウザで、デスクトップはもちろん、モバイルデバイス上での制作、さらには遠隔地とつないで、誰でも手軽に音楽制作に手を伸ばすことのできる時代（味見も含めて）なのだなと改めて感じました。制作はもちろんですが、ツールの作成、エフェクトの作成等、少し頑張れば、かゆいところに手の届くいわゆるオレシステムを作り上げることもそこまでハードルは高くないと思います。</p>

<p>今やアマチュアバンドとはいってもホームページを持ち、そこには自ら制作した楽曲、さらに自らで制作したであろう、とはいえクロリティの高いプロモーションビデオまでも揃えて公開する時代。昔はインスピレーションを得たらその場でフレーズやパターンの作成ができ、モバイルできる音楽制作専用ハードが流行した時もありました。</p>

<p>これからはインスピレーションを得たらポケットからさっとモバイルな汎用デバイスを取り出し、ブラウザを立上げDAWのURLに接続をし、その場でフレーズのみならず全体の流れを録音し楽曲にまとめることも容易になるでしょう。そして、遠隔にいる友人にバッキング、Mix Downしてもらい、その場でプロモーションビデオまで制作する一連の流れを即興でできてしまう、なんていうアマチュアでもプロ顔負けの音楽制作環境を持てる、素晴らしい時代が確実に来るだろうと感じました。同時に、これらの音楽制作に欠かせない技術と他のOpenWeb技術を連携させることでどのような新しい表現方法、また価値、文化が生まれるのかワクワクを膨らませてきた次第です。</p>

<p>W3Cの一員として標準化を進めているWeb MIDI API。今回は少しだけ登場し、スライドとしての説明はありませんでしたが、音楽を制作をする上ではコアになる技術です。標準化までこぎつけられるように強く推進をしていかねばとも感じました。</p>

<h2>紹介されたURL等</h2>

<ul>
  <li><a href="https://www.soundtrap.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Soundtrap</a>：デモで使われたOpenWeb上に構築された音楽制作環境</li>
  <li><a href="http://www.html5rocks.com/en/tutorials/webrtc/basics/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Getting Started with WebRTC</a>：WebRTCのチュートリアル（英語）</li>
  <li><a href="http://www.html5rocks.com/ja/tutorials/webaudio/intro/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Getting Started with the Web Audio API</a>：Web Audio APIのチュートリアル(日本語)</li>
  <li><a href="https://www.dartlang.org/docs/tutorials/get-started/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Get Started with Dart</a>：Dartのチュートリアル（英語）</li>
</ul>
]]></content:encoded>
		
		<series:name><![CDATA[Google I/O 2014 特集]]></series:name>
	</item>
		<item>
		<title>モバイルWeb開発に役立つ！Chrome DevToolsの新機能「デバイスモード」</title>
		<link>/girlie_mac/8384/</link>
		<pubDate>Mon, 28 Jul 2014 00:00:32 +0000</pubDate>
		<dc:creator><![CDATA[Tomomi Imura]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Google I/O 2014]]></category>
		<category><![CDATA[クロスデバイス]]></category>

		<guid isPermaLink="false">/?p=8384</guid>
		<description><![CDATA[連載： Google I/O 2014 特集 (5)今回のGoogle I/OはAndroidに特化していた傾向が強く、WebテクノロジーやChromeの扱いが比較的小さかったせいもあり、多くのWebフロントエンドディベ...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/google-io-2014-2/" class="series-191" title="Google I/O 2014 特集" data-wpel-link="internal">Google I/O 2014 特集</a> (5)</div><p>今回のGoogle I/OはAndroidに特化していた傾向が強く、WebテクノロジーやChromeの扱いが比較的小さかったせいもあり、多くのWebフロントエンドディベロッパーは不満を感じた部分もありました。<br>
そこでその中の数少ないChromeのセッションの中から、私が興味深く感じたクロスデバイス開発にはこの先欠かせなくなると思われる Chrome DevToolsの新機能についてレポートします。</p>


<!-- iframe plugin v.4.3 wordpress.org/plugins/iframe/ -->
<iframe width="640" height="360" src="//www.youtube.com/embed/t1PxmN_QNFI" frameborder="0" 0="allowfullscreen" scrolling="yes" class="iframe-class"></iframe>


<p>このセッションを行ったPaul Bakaus氏（以下、ポール氏）は、かつてjQuery UIやAvesゲームエンジンを開発したことでも知られています。一時期日本に在住していたこともあるので、この記事を読んでいる皆さんには既になじみのある方かもしれません。現在はGoogle Chromeチームの一員であるポール氏。<br>
今回この&#8221;Developing across Devices &#8211; DevTools in 2014&#8243;と題されたセッションでは、Chrome DevToolsの新機能と3つのワークフローについて、当日あったワールドカップのアメリカ対ドイツ（氏はドイツ人）戦のジョークをを交えつつ、とても面白く説明してくれました。</p>

<h2>コンテントは水のごとし</h2>

<p>「今の時代、モバイルWebを制する者がWebを制する！」と断言するポール氏。「Webコンテントは水のようにフローし（流れ）、どんなフォームファクター上でもフロー（描写）せねばならない」と、そのためのワークフローで重要な「Design」「Develop」「Iterate」の3つを挙げました。</p>

<p>Design（デザイン）は、はじめの重要な一歩。複数のフォームファクターを考えながらデザインをせねばなりません。</p>

<p>私たちディベロッパーは、マルチデバイス開発のためにブラウザのウィンドウの大きさを変えたりながらも、レスポンシブなWebを作り上げるのに大変な労力を費やしています。</p>

<p>この労力を軽減するためにChromeチームが開発し、そしてこの日初めて発表されたのがDevToolsのDevice Mode。現在 Chrome Canary(v38)のみに実装されているこのデバイスモードには、Nexus 5やSamsung Galaxyシリーズなどに多く使われているデバイスのプリセットが付属されます。そのため、各種のスクリーン解像度や高DPIスクリーンなどのエミュレーションが、今までよりも断然楽に行われるようになります。</p>

<h2>デバイスモード</h2>

<p>実際にこのデバイスモードを使ってみましょう。<br>
まず、インスペクターウィンドウを開き、デバイスアイコンをクリックします。するとWebページの表示がデバイスモードに切り替わります。ここでは表示の幅を自由に変えられるほか、プリセットからデバイスを選択して、自動的にその解像度に合わせたサイズにすることもできます。オリエンテーションの変更も簡単に行えます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/11/devtools-device-mode-1.gif" data-wpel-link="internal"><img src="/wp-content/uploads/2015/11/devtools-device-mode-1.gif" alt="devtools-device-mode-1" width="640" height="434" class="aligncenter size-full wp-image-17798" /></a></p>

<p>そしてそのレスポンシブなデザインを実装する、フローその2はDevelop。</p>

<p>実際のデモで私たちオーディエンスをあっと言わせた、このMedia-queriesツールを使えば、メディアクエリのワークフローも今までよりさらに効果的に行えそうです。Device Modeの左端のMedia-queriesボタンをクリックすると、使用されているメディアクエリがルーラー上に表示され、さらにそれらを右クリックするとドロップダウンメニューにこのソースコードのパスが表示されます。これを選択するとSourceパネルにコードが表示されます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/11/devtools-device-mode-2.gif" data-wpel-link="internal"><img src="/wp-content/uploads/2015/11/devtools-device-mode-2.gif" alt="devtools-device-mode-2" width="640" height="431" class="aligncenter size-full wp-image-17799" /></a></p>

<p>そしてさらに新しい機能のWorkspaceを使えば、ここで変更されたメディアクエリをローカルのファイルシステムに直接反映させることもできます。</p>

<p>その他のエミュレーション機能として、タッチイベント、アクセラメーターなどのセンサーなどもエミュレーションすることができます。</p>

<h2>ネットワーク環境のエミュレーション</h2>

<p>一言でWifiコネクションといっても、会社のWifiのように快適だったり、カンファレンスのWifiのように人が多すぎて全く役に立たなかったりもすることもあります。例えば同じ高速道路でも、ドイツの速度無制限のアウトバーンとアメリカの制限速度55マイルのハイウェイを走るのとでは体感が全然違う、とポール氏は面白おかしく述べています。</p>

<p>そのような遅い回線コネクションをエミュレートすることは、特にモバイル開発では欠かせないものです。そこで DevToolsの新機能のコネクティビティエミュレータでは、3G回線での接続やオフライン状態といった様々な通信環境をエミュレートすることができます。例えば、モバイルのEDGE回線で開発中のWebがどうレンダリングされるか、そしてそのレンダリングがいかにユーザーをイライラさせるものかを、目で知ることができるのです。そういったユーザー・エンクペリエンスをテストするのは非常に大事なのです。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/11/devtools-device-mode-3.gif" data-wpel-link="internal"><img src="/wp-content/uploads/2015/11/devtools-device-mode-3.gif" alt="devtools-device-mode-3" width="640" height="433" class="aligncenter size-full wp-image-17800" /></a></p>

<h2>スクリーンキャストでリモートデバッグ</h2>

<p>ワークフローの3つ目はIterate。エミュレーターは便利ではあるけれど、やはり実際のデバイスでテストしてみないことには分からない事実はいくつかあります。このプロセスで重要なのはこの3つ。</p>

<ul>
    <li>パフォーマンス・プロファイリング</li>
    <li>各デバイスに特化したバグや欠陥</li>
    <li>コンテクスト（外観と操作感）</li>
</ul>

<p>このテストを快適に行うために、DevToolsのリモートデバッグを使いましょう。</p>

<p>その前に、まずChrome Canaryを最新バージョン（7月22日以降のビルド、38.0.2101.0もしくはそれより新しいもの）にアップデートしてください。それからchrome://flags/#enable-devtools-experimentsを&#8221;enable&#8221;にします。そして、DevToolsのSettings（ギアアイコンをクリック）&gt; Experimentsからこの機能をオンにします。</p>

<p>AndroidデバイスのUSB Debugモードもオンにします。</p>

<p>そのデバイスをコンピューターにUSBでつなぐと、デバイスモードアイコンとは別にもう一つ小さなデバイスに「1」の数字がついたアイコンが表示されます。この数字はつながれているデバイスの数を示します。このアイコンをクリックすると、さらにデバイスパネルが下にあらわれます。</p>

<p><img src="/wp-content/uploads/2014/07/devtools-device-mode-screencast.jpg" alt="devtools-device-mode-screencast" width="800" height="521" class="aligncenter size-full wp-image-8968" srcset="/wp-content/uploads/2014/07/devtools-device-mode-screencast.jpg 640w, /wp-content/uploads/2014/07/devtools-device-mode-screencast-300x195.jpg 300w, /wp-content/uploads/2014/07/devtools-device-mode-screencast-207x134.jpg 207w" sizes="(max-width: 800px) 100vw, 800px" /></p>

<p>さらに、このパネルでTry Hereと表示されたボタンをクリックすると、実際のデバイス上のChromeの画面がChrome上にスクリーンキャストされるのです。デバイスで操作してみてください。動きがデスクトップブラウザのDevTools上に反映されるのがわかると思います。その逆も可能です。</p>

<p>これらのデバイス上での描写やレイヤーなどがDevTools上で可視化され、今までデスクトップで使っていたおなじみの機能をデバイスでも同じように使ってプロファイリングやデバッグすることが可能になります。</p>

<p>例えばこの3Dレンダリング。Layersパネルでレンダリングがレイヤーごとに可視化され、各レイヤーの様子も、レンダーオブジェクトをドラッグしながら360度各方向から見ることができます。さらにモバイルにありがちな描写の問題も、現在開発段階の新機能ペイントプロファイラを使ってピンポイントでどの描写に時間がかかっているとか、border-radius部分が極端に遅いなどとプロファイリングすることができます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/11/devtools-device-mode-screencast.gif" data-wpel-link="internal"><img src="/wp-content/uploads/2015/11/devtools-device-mode-screencast.gif" alt="devtools-device-mode-screencast" width="640" height="425" class="aligncenter size-full wp-image-17797" /></a></p>

<p>既存のProfilesパネルでavaScriptのCPUプロファイルを行ったり、Timelineパネルでグラフ化された描写速度を観察したりすることも、これまで通りモバイル上でも行えます。さらに、これらを同時にTimelineパネルで使えるようにするなど実験的に新機能も追加されるようです。これで視覚的にもさらに使い勝手のよいものになりそうです。</p>

<h2>まとめ</h2>

<p>これらのワークフローと、デバイスモードの機能のまとめを箇条書きにしてみます。</p>

<p>Design = Responsive Layouts 機能</p>

<ul>
<li>メディアクエリ・ビジュアルツール</li>
<li>メディアクエリ編集ツール</li>
<li>スタイル・フィルタリングツール</li>
<li>インライン・エミュレーション</li>
</ul>

<p>Develop = Rich Emulation 機能</p>

<ul>
<li>デバイス・プリセット</li>
<li>ビューポート・エミュレーション</li>
<li>センサー・エミュレーション</li>
<li>ネットワーク・スロットリング</li>
</ul>

<p>Iterate = Remote Debugging 機能</p>

<ul>
<li>プラグアンドプレイ</li>
<li>パワーアップした既存の機能</li>
<li>スクリーンキャスト</li>
<li>ポートフォワード</li>
</ul>

<p>最後に。この記事を書くにあたって私からの質問やバグについて答えてくれた、よき友人でもあるポール氏に感謝！ドイツのワールドカップ優勝おめでとう。</p>
]]></content:encoded>
		
		<series:name><![CDATA[Google I/O 2014 特集]]></series:name>
	</item>
		<item>
		<title>Googleはなぜモバイルに力を入れるのか？これからのWebパフォーマンスで注力すべきポイント</title>
		<link>/furoshiki/8582/</link>
		<pubDate>Fri, 25 Jul 2014 04:00:17 +0000</pubDate>
		<dc:creator><![CDATA[川田寛]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Google I/O 2014]]></category>
		<category><![CDATA[パフォーマンス]]></category>
		<category><![CDATA[モバイル]]></category>

		<guid isPermaLink="false">/?p=8582</guid>
		<description><![CDATA[連載： Google I/O 2014 特集 (4)こんにちは、川田です。Googleはここ最近、デスクトップ向けWebに対して、ほとんどの関心を失っているように見えます。HTML5ブームも過ぎて、やることがなくなってし...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/google-io-2014-2/" class="series-191" title="Google I/O 2014 特集" data-wpel-link="internal">Google I/O 2014 特集</a> (4)</div><p>こんにちは、川田です。Googleはここ最近、デスクトップ向けWebに対して、ほとんどの関心を失っているように見えます。HTML5ブームも過ぎて、やることがなくなってしまったのでしょうか？……いえいえ、そうでもありません。昨今の待ったなしで進む技術革新の中で、彼らは「ある問題」と戦っているようです。</p>

<h2>Webは「モバイル」中心の時代へ移っていく</h2>

<div style="float:right;margin-left:20px;margin-bottom:20px"><a href="https://html5experts.jp/wp-content/uploads/2014/07/f82880303ce2a094f6748c71ccd9e08c.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/f82880303ce2a094f6748c71ccd9e08c-300x187.png" alt="スクリーンショット 2014-07-10 11.33.15" width="300" height="187" class="alignnone size-medium wp-image-8596" srcset="/wp-content/uploads/2014/07/f82880303ce2a094f6748c71ccd9e08c-300x187.png 300w, /wp-content/uploads/2014/07/f82880303ce2a094f6748c71ccd9e08c-207x129.png 207w, /wp-content/uploads/2014/07/f82880303ce2a094f6748c71ccd9e08c.png 470w" sizes="(max-width: 300px) 100vw, 300px" /></a><br /><a href="http://investor.google.com/pdf/2014Q1_google_earnings_data.pdf" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Google Inc. First Quarter 2014 Results</a></div>

<p>すでにご存知の方も多いと思いますが、GoogleのビジネスモデルはWebに強く依存しています。2014年1Qの決算で、Googleは全売上の約68%が自社のWeb系サービスの広告収入であり、約22%はAdsenseなどの他のWebサイト向けの広告であると報告しました。Webに依存したビジネスが実に9割を占め、1日に約120億円の収入をWebから得ています。もっと簡単に言えば、<strong style="font-size:130%">Webだけで、タイの国民全員の給料分ぐらい稼いじゃってます。</strong>当然、Webの進化をやめてしまうなんてことは、考えにくいでしょう。</p>

<p>彼らにとって、利用者がどこからWebにアクセスするのかは、とても重要な情報となります。むしろ、Googleに限らず、Webでサービスを提供している全ての人にとっても重要なことでしょう。人々は普段、どんなコンピュータを使っているのか？どのようなデバイスからインターネットにアクセスするのか？そのことが、私たちのビジネスにとって大きな意味を持ちます。</p>

<p>そしてここ最近、Googlerがいろいろな発表の場でよく口にしているのが「<strong>モバイル</strong>」というキーワードです。これから先、Webの利用者はモバイルからやってくると、Googleは考えているようです。そのことを証明するかのように、現場の開発者からマーケティング・経営者まで一丸となって、これからやって来るモバイルの時代に向けた取り組みをアピールしています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/709f657b9e0fe7c6dc483643a3c959b2.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/709f657b9e0fe7c6dc483643a3c959b2.png" alt="Global Smartphone Shipment" class="alignnone size-medium wp-image-8640" srcset="/wp-content/uploads/2014/07/709f657b9e0fe7c6dc483643a3c959b2.png 640w, /wp-content/uploads/2014/07/709f657b9e0fe7c6dc483643a3c959b2-300x189.png 300w, /wp-content/uploads/2014/07/709f657b9e0fe7c6dc483643a3c959b2-207x130.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p><em>&#8220;AndroidとChrome、2つの巨大なオープンプラットフォームについて。スマートフォンは2013年4Qに、3.15億台の出荷があった。Androidは毎年利用者が倍増しており、現在は10億ものアクティブユーザがいる。将来的にはAndroidを、50億人にリーチしたいと考えている。&#8221; &#8212;&#8212; Google 経営者 Sundar Pichai </em>(<a href="https://www.google.com/events/io" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Google I/O 2014 &#8211; 2014.06.25</a>)</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/b6a9cba44576ea4e41bc39b49ba81fe01.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/b6a9cba44576ea4e41bc39b49ba81fe01.png" alt="デスクトップよりモバイルの方が売れているし、使われている" class="alignnone size-medium wp-image-8303" srcset="/wp-content/uploads/2014/07/b6a9cba44576ea4e41bc39b49ba81fe01.png 640w, /wp-content/uploads/2014/07/b6a9cba44576ea4e41bc39b49ba81fe01-300x221.png 300w, /wp-content/uploads/2014/07/b6a9cba44576ea4e41bc39b49ba81fe01-207x152.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p><em>&#8220;2014年1月に、ChromeのレンダリングエンジンであるBlinkをどう変えていこうかという話し合いをした。結果としては『モバイルが大事』ということになった。デスクトップよりもモバイルの方が売れているし使われる。しかし開発者の立場から見ると、残念ながらWebよりネイティブの方が多いという状況だ。我々はHTML5の問題点をヒアリングし、改善を進めている。&#8221; &#8212;&#8212; Google Chrome開発者 及川卓也 </em>(<a href="http://atnd.org/events/51627" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTML5 Night &#8211; 2014.06.14</a>)</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/1186279c58f3a02a633b4f41b3d2b4a81.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img style="border:1px solid gray" src="/wp-content/uploads/2014/07/1186279c58f3a02a633b4f41b3d2b4a81.png" alt="Mobile % of Total Global Internet Traffic(Mobile Web performance auditing - Paul Lewis)" class="alignnone size-medium wp-image-8406" srcset="/wp-content/uploads/2014/07/1186279c58f3a02a633b4f41b3d2b4a81.png 640w, /wp-content/uploads/2014/07/1186279c58f3a02a633b4f41b3d2b4a81-300x168.png 300w, /wp-content/uploads/2014/07/1186279c58f3a02a633b4f41b3d2b4a81-1024x576.png 1024w, /wp-content/uploads/2014/07/1186279c58f3a02a633b4f41b3d2b4a81-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p><em>&#8220;アメリカの成人の34%にとって、主要のインターネットアクセスはスマートフォンだ。モバイルのトラフィックは増加しており、来年にも過半数のユーザがモバイルでインターネットを利用することになる。&#8221; &#8212;&#8212; Google Webコンテンツ開発者 Paul Lewis </em>(<a href="https://www.google.com/events/io" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Google I/O 2014 &#8211; 2014.06.26</a>)</p>

<h2>モバイルであることが前提の、Webとパフォーマンス</h2>

<div style="float:right;margin-left:20px;margin-bottom:20px"><a href="https://html5experts.jp/wp-content/uploads/2014/07/IMGP0407.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/IMGP0407-300x168.jpg" alt="Device Lab" width="300" height="168" class="alignnone size-medium wp-image-8765" srcset="/wp-content/uploads/2014/07/IMGP0407-300x168.jpg 300w, /wp-content/uploads/2014/07/IMGP0407-207x116.jpg 207w, /wp-content/uploads/2014/07/IMGP0407.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></div>

<p>モバイルは、Web開発者/制作者にとっては厄介な存在です。動作環境が増えるのですから、デザインにコーディング、動作テストと、やらなくてはいけない作業も増えてしまいます。Googleは、その手間をできる限り省き、コンテンツ制作に専念できるようにしようと考えています。その成果の一つが、「Material Design(マテリアル・デザイン)」です。</p>

<p>UXの向上を図る上で、デザインは重要です。ただ、デザインだけではどうにもなりません。「パフォーマンス」も欠かすことのできない重要な要素なのです。Google I/Oでは、多くのエンジニアが「Polymer」「Material Design」「Android」など、宝物のような名前がついたキーワードに目を奪われました。実際にメディアでも、これらのキーワードが大きく取り上げられています。しかし、冷静に見るとそれなりの数の「パフォーマンス」をテーマとしたセッションが開かれています。パフォーマンス改善はすごく地味だけど、すごく重要な取り組みと彼らは認識しているのです。</p>

<p>Googleでは「<a href="http://developers.google.com/speed/pagespeed/insights/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">PageSpeed Insights</a>」と呼ばれるサービスを提供しています。イベントに参加していると、割と頻繁に目に入りました。Paul Lewis氏のセッション「Mobile Web performance auditing」では、その活用方法についてかなり具体的なアイデアと共に紹介しています。その内容を見てみましょう。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/b5fbca375e400b80887bba4bbc6307eb.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img style="border:1px solid gray" src="/wp-content/uploads/2014/07/b5fbca375e400b80887bba4bbc6307eb.png" alt="PageSpeed Insightsサンプル" class="alignnone size-medium wp-image-8441" srcset="/wp-content/uploads/2014/07/b5fbca375e400b80887bba4bbc6307eb.png 640w, /wp-content/uploads/2014/07/b5fbca375e400b80887bba4bbc6307eb-300x195.png 300w, /wp-content/uploads/2014/07/b5fbca375e400b80887bba4bbc6307eb-207x134.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>「<a href="http://developers.google.com/speed/pagespeed/insights/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">PageSpeed Insights</a>」とは、Webに公開しているページのURLを与えると、そのページの問題点、改善方法を提案してくれるGoogleのサービスです。競合するものとして、マイクロソフトの「<a href="https://www.modern.ie/ja-jp" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">modern.IE site scan</a>」が挙げられますが、こちらはWebコンテンツのポータビリティを評価する方向に力を入れています。パフォーマンス改善という観点では、Google側の方がより尖っているという印象です。タブが「Mobile」が最初になっている点からも、彼らの作るツールがモバイルファーストの思考で動いているというのを感じとれます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/6098ddfd0579ccd63cf201a9ff334c15.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/6098ddfd0579ccd63cf201a9ff334c15.png" alt="PageSpeed Insights" class="alignnone size-medium wp-image-8763" srcset="/wp-content/uploads/2014/07/6098ddfd0579ccd63cf201a9ff334c15.png 640w, /wp-content/uploads/2014/07/6098ddfd0579ccd63cf201a9ff334c15-300x177.png 300w, /wp-content/uploads/2014/07/6098ddfd0579ccd63cf201a9ff334c15-207x122.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>さっそく、<a href="http://furoshiki.hatenadiary.jp/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">私がはてなで運営しているブログ</a>をPageSpeed Insightsで評価してみたところ、Mobile-60点/Desktop-28点/UX-99点という結果でした。Paul Lewis氏いわく、それでは全然ダメとのこと。PageSpeed Insightsでのスコアは、大体目安として、Mobile-85点以上/Desktop-90点以上/UX-100点が望ましいそうです。いくつか日本のブログサービスでテストしてみたのですが、この条件が満足できているのを見つけることができませんでした。それどころか、Google自身が提供しているサービス「Blog Spot」ですら、この条件を満足できていません。そこまで頑張らなきゃいけないのかと、その必要性に疑いの目を持ってしまいます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/1240ea7bf50ab91bbaae245f2b9422d2.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/1240ea7bf50ab91bbaae245f2b9422d2.png" alt="200ミリ秒の遅延が0.3%の機会損失につながる。" class="alignnone size-medium wp-image-8409" srcset="/wp-content/uploads/2014/07/1240ea7bf50ab91bbaae245f2b9422d2.png 640w, /wp-content/uploads/2014/07/1240ea7bf50ab91bbaae245f2b9422d2-300x168.png 300w, /wp-content/uploads/2014/07/1240ea7bf50ab91bbaae245f2b9422d2-1024x575.png 1024w, /wp-content/uploads/2014/07/1240ea7bf50ab91bbaae245f2b9422d2-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>ところが、Paul Lewis氏いわく、200ミリ秒の遅延が0.3%の機会損失に繋がると。パフォーマンスの改善が、そのまま収益に結びつくのだと強く主張しています。Webは速ければ速いほど、価値を発揮するのです。もちろん、それを実現するにはそれなりにコンピュータ科学の知識を必要とするわけですが、私たちエンジニアによる純粋な技術による改善で、利用者の増加に貢献できることが残されているというのは、大変喜ばしいことでしょう。</p>

<p>パフォーマンスの問題について、Paul Lewis氏は「Page Speed」と「Runtime」の2つの観点から、その対策方法について紹介がありました。この2つを軸に、他のGoogle I/Oのセッションの内容も交えながらその考え方について見つめてみましょう。</p>

<h2>Page Speedはどのように改善するのか？</h2>

<p>Page Speedの改善とは何か？単純に言えば「<strong>Webページの表示を3秒以下に抑えよう</strong>」ということです。そのための方法として、Paul Lewis氏は以下の方法を提案しています。</p>

<p><a style="float:right;width:200px" href="/wp-content/uploads/2014/07/585037d616244be479e892792bc9e4f3.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img style="border:1px solid gray;width:200px" src="/wp-content/uploads/2014/07/585037d616244be479e892792bc9e4f3.png" alt="スクリーンショット 2014-07-11 16.23.05" class="alignnone size-medium wp-image-8802" srcset="/wp-content/uploads/2014/07/585037d616244be479e892792bc9e4f3.png 400w, /wp-content/uploads/2014/07/585037d616244be479e892792bc9e4f3-300x171.png 300w, /wp-content/uploads/2014/07/585037d616244be479e892792bc9e4f3-207x118.png 207w" sizes="(max-width: 400px) 100vw, 400px" /></a></p>

<h3>1. リソースを最適化せよ(Optimize resources.)</h3>

<p>Webページを構成するデータのうち、平均63%が画像ファイルです。最適化が必要となります。画像ファイルの圧縮を改善すると、データ量は大きく削減されます。CSS/JavaScriptについても、不要なスペースなどを削って圧縮(Minify)するとよいでしょう。</p>

<p>(補足：のちに説明がありますが、これらはプリプロセッサーの活用を習慣付けるとよいでしょう。人間の手でやっていてはキリがないので、徹底的に自動化させてしまうことです。)</p>

<p><a style="float:right;width:200px" href="/wp-content/uploads/2014/07/5a025405c534207eb4e5aa1effb4b7bd.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img style="border:1px solid gray;width:200px" src="/wp-content/uploads/2014/07/5a025405c534207eb4e5aa1effb4b7bd.png" alt="スクリーンショット 2014-07-11 16.39.04" width="300" height="156" class="alignnone size-medium wp-image-8816" srcset="/wp-content/uploads/2014/07/5a025405c534207eb4e5aa1effb4b7bd.png 400w, /wp-content/uploads/2014/07/5a025405c534207eb4e5aa1effb4b7bd-300x156.png 300w, /wp-content/uploads/2014/07/5a025405c534207eb4e5aa1effb4b7bd-207x107.png 207w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h3>2. リクエスト数を減らせ(Reduce the number of requests.)</h3>

<p>リクエストはWebページの表示をブロックさせることがあります。リクエスト数が減るとそれだけ表示が速くなことを意味します。</p>

<p>(補足：SPDYやHTTP2.0が関わってくると、リクエスト数だけでなく、コネクション数も重要になってきたりしますね。いずれにせよ、少ないことはよいことです)</p>

<p><a style="float:right;width:200px" href="/wp-content/uploads/2014/07/b464cb3d6f72936e5bab22190a4ba8cd.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img style="border:1px solid gray;width:200px" src="/wp-content/uploads/2014/07/b464cb3d6f72936e5bab22190a4ba8cd-300x168.png" /></a></p>

<h3>3. リダイレクトをやめろ(Avoid redirects.)</h3>

<p>リダイレクトにはDNSの名前解決、TCPコネクションの接続など、Webページの表示までに要する時間が長くなります。パフォーマンスを意識するなら、リダイレクトさせてはいけません。</p>

<p>(補足：モバイルの場合、よくあるのは「m.〜〜」というURLにリダイレクトされるケースです。当然ですが、その処理を行うためにWebページ読み込みのパフォーマンスは劣化することになります。日本の場合は、モバイル網のDNSサーバのパフォーマンスが問題となることも少なくありません)</p>

<p><a style="float:right;width:200px" href="/wp-content/uploads/2014/07/871614cfadc9da747294435964582b2a.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img style="border:1px solid gray;width:200px" src="/wp-content/uploads/2014/07/871614cfadc9da747294435964582b2a-300x167.png" alt="スクリーンショット 2014-07-11 16.34.24" width="300" height="167" class="alignnone size-medium wp-image-8813" srcset="/wp-content/uploads/2014/07/871614cfadc9da747294435964582b2a-300x167.png 300w, /wp-content/uploads/2014/07/871614cfadc9da747294435964582b2a-207x115.png 207w, /wp-content/uploads/2014/07/871614cfadc9da747294435964582b2a.png 400w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h3>4. レンダリングの順序に優先度をつけろ(Prioritize for the critical rendering path.)</h3>

<p>Webページ全てを読み込んだ時間よりも、見えている領域の読み込み完了(Visually Complete)に、利用者は関心を示します。そこに優先度を高く持っていくべきです。</p>

<p>(※補足：実際に、W3CのWeb-perf WGでも、Resource Prioritiesという仕様の検討が進められていますね。jQueryだと、LazyLoadプラグインがあり、画像ファイルの読み込み順序をコントロールすることができます)</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/66714330ca5b3d556b9626ef265fa9371.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img style="border:1px solid gray" src="/wp-content/uploads/2014/07/66714330ca5b3d556b9626ef265fa9371.png" alt="GruntとGulp" class="alignnone size-medium wp-image-8818" /></a></p>

<p>一連の作業は、GruntやGulpが助けてくれます。利用してみるとよいでしょう。</p>

<h2>Runtimeはどのように改善するのか？</h2>

<p>Runtimeの改善とは何か？単純に言えば「<strong>Webページを60FPSで動かそう</strong>」ということです。一般的なディスプレイ(スクリーン)は約1/60秒周期で内容が更新されるため、アニメーションなどの処理はその特性に合わせていくことで、滑らかな動きを実現することができます。そのための方法として、Paul Lewis氏、Paul Irish氏は以下の方法を提案しています。</p>

<p><a style="float:right;width:200px" href="/wp-content/uploads/2014/07/b9a4c28453333283c8bb8f4e7ebdd9df.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img style="width:200px;border:solid 1px gray" src="/wp-content/uploads/2014/07/b9a4c28453333283c8bb8f4e7ebdd9df-300x129.png" alt="スクリーンショット 2014-07-11 17.59.45" width="300" height="129" class="alignnone size-medium wp-image-8836" srcset="/wp-content/uploads/2014/07/b9a4c28453333283c8bb8f4e7ebdd9df-300x129.png 300w, /wp-content/uploads/2014/07/b9a4c28453333283c8bb8f4e7ebdd9df-207x89.png 207w, /wp-content/uploads/2014/07/b9a4c28453333283c8bb8f4e7ebdd9df.png 400w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h3>1. 変形や透過によるアニメーションは制限しろ(Restrict animations to transforms and opacity.)</h3>

<p>処理コストの高い描画計算処理は控えるべきです。DOMの形状が変わるとLayout処理のコストは増大するし、透過処理などはPaint処理をコスト増大させます。このような「Expensive Animations」は、約1/60秒以下での処理に収まらないことがあり、注意する必要があります。</p>

<p><a style="float:right;width:200px" href="/wp-content/uploads/2014/07/5a99bab98fe4b6a0118fc89419d18245.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img style="width:200px;border:solid 1px gray" src="/wp-content/uploads/2014/07/5a99bab98fe4b6a0118fc89419d18245-300x118.png" alt="スクリーンショット 2014-07-11 19.14.30" width="300" height="118" class="alignnone size-medium wp-image-8838" srcset="/wp-content/uploads/2014/07/5a99bab98fe4b6a0118fc89419d18245-300x118.png 300w, /wp-content/uploads/2014/07/5a99bab98fe4b6a0118fc89419d18245-207x81.png 207w, /wp-content/uploads/2014/07/5a99bab98fe4b6a0118fc89419d18245.png 600w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h3>2. requestAnimationFrameを使え(Use requestAnimationFrame.)</h3>

<p>画面のリフレッシュレートに合わせて、アニメーション処理は実行させるようにしましょう。例えば、setIntervalなどを利用し、16ms周期でコールバックさせ擬似的にリフレッシュレートを合わせようとすると、タイミングがズレて無駄が起きます。画面のリフレッシュレートに合わせるには、requestAnimationFrameと呼ばれるAPIを利用する必要があります。</p>

<p><a style="float:right;width:200px" href="/wp-content/uploads/2014/07/0e865121fe9e28053257f81acab3b006.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img style="width:200px;border:solid 1px gray" src="/wp-content/uploads/2014/07/0e865121fe9e28053257f81acab3b006-300x162.png" alt="スクリーンショット 2014-07-11 17.45.05" width="300" height="162" class="alignnone size-medium wp-image-8839" srcset="/wp-content/uploads/2014/07/0e865121fe9e28053257f81acab3b006-300x162.png 300w, /wp-content/uploads/2014/07/0e865121fe9e28053257f81acab3b006-207x111.png 207w, /wp-content/uploads/2014/07/0e865121fe9e28053257f81acab3b006.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h3>3. レイアウトの値を読み込んでから書き出せ(Read layout values, then write.)</h3>

<p>レイアウト(DOM)の値は変数のように扱ってはいけません。横幅などの取得が必要であれば、最初に取り出してキャッシュしておきましょう。読→書→読→書を繰り返すと、無駄なLayout処理が何度も発生するという「Layout Thrashing」という現象が起きます。読→読→書→書が理想です。</p>

<p><a style="float:right;width:200px" href="/wp-content/uploads/2014/07/afea6f5f4d6d46f7c0c2d6c63cf1eeb6.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img style="width:200px;border:solid 1px gray" src="/wp-content/uploads/2014/07/afea6f5f4d6d46f7c0c2d6c63cf1eeb6-300x133.png" alt="スクリーンショット 2014-07-11 17.53.25" width="300" height="133" class="alignnone size-medium wp-image-8840" srcset="/wp-content/uploads/2014/07/afea6f5f4d6d46f7c0c2d6c63cf1eeb6-300x133.png 300w, /wp-content/uploads/2014/07/afea6f5f4d6d46f7c0c2d6c63cf1eeb6-207x91.png 207w, /wp-content/uploads/2014/07/afea6f5f4d6d46f7c0c2d6c63cf1eeb6.png 600w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h3>4. メモリ効率の高いJavaScriptを(Write fast, memory-efficiant Javascript.)</h3>

<p>メモリを消費するようなJavaScriptの記述方法は、Garbage Collection処理が発生し、1/60秒以内での処理が完結しなくなることがあります。JavaScriptの書き方に、工夫が必要です。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/0f091ce80cbc1c82251d2239150ba188.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/0f091ce80cbc1c82251d2239150ba188.png" alt="スクリーンショット 2014-07-11 19.40.31" class="alignnone size-medium wp-image-8843" srcset="/wp-content/uploads/2014/07/0f091ce80cbc1c82251d2239150ba188.png 640w, /wp-content/uploads/2014/07/0f091ce80cbc1c82251d2239150ba188-300x169.png 300w, /wp-content/uploads/2014/07/0f091ce80cbc1c82251d2239150ba188-1024x577.png 1024w, /wp-content/uploads/2014/07/0f091ce80cbc1c82251d2239150ba188-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>モバイルChromeの解析は、「chrome://inspect/」でできます。お試し下さい。</p>

<h2>難しくなってきている、なんて思いませんか？</h2>

<p>これまではデスクトップPCが一つあればなんとかなっていたWeb開発も、作るための環境と動かすための環境が分離されて、どんどん複雑になってきているなぁという感触を得ています。プレゼンの時も、わざわざカメラを切り替えてモバイルのスクリーンを表示したりなんかしてて「エレガントさに欠るなぁ」「面倒くさいことやってるなぁ」なんて思ったりもしました。もっと言えば、デモしている姿を見てて<strong style="font-size:130%">「モバイル、めちゃくちゃ使いにくそうに扱ってますよね！」「本当はPCでやりたいとか思っていませんか？」</strong>なんてことも、率直な印象として感じました。</p>

<p>こういう不満を感じられることは、本当の本当に幸せに思えたりもします。Googleが悪いとかAppleが悪いとかMicrosoftが悪いとかじゃなく、IT業界全体として、まだまだ発展途上にいると感じさせられるのです。これからもっとよくしようと、動き出せるきっかけがいくらでもあるように思えるのです。もっともっと、進化しますよ！</p>

<p>みなさんはどう思いますか？私はWebの未来に、夢を見過ぎでしょうか？</p>
]]></content:encoded>
		
		<series:name><![CDATA[Google I/O 2014 特集]]></series:name>
	</item>
		<item>
		<title>【Google I/O 2014】編集部が開催2日間を密着レポート</title>
		<link>/sakkuru/8481/</link>
		<pubDate>Fri, 25 Jul 2014 03:59:41 +0000</pubDate>
		<dc:creator><![CDATA[本間 咲来]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Google I/O 2014]]></category>

		<guid isPermaLink="false">/?p=8481</guid>
		<description><![CDATA[連載： Google I/O 2014 特集 (3) 2014年6月25日～26日、サンフランシスコのモスコーニセンターでGoogle I/O 2014が開催されました。Google I/Oは2008年からGoogleが...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/google-io-2014-2/" class="series-191" title="Google I/O 2014 特集" data-wpel-link="internal">Google I/O 2014 特集</a> (3)</div><p><a href="https://html5experts.jp/wp-content/uploads/2014/07/122.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/122.jpg" alt="122" width="994" height="662" class="alignnone size-full wp-image-9032" srcset="/wp-content/uploads/2014/07/122.jpg 640w, /wp-content/uploads/2014/07/122-300x199.jpg 300w, /wp-content/uploads/2014/07/122-207x137.jpg 207w" sizes="(max-width: 994px) 100vw, 994px" /></a></p>

<p>2014年6月25日～26日、サンフランシスコのモスコーニセンターでGoogle I/O 2014が開催されました。Google I/Oは2008年からGoogleが年に一度開催しているイベントで、Googleの新規デバイスやソフトウェアの発表、Webやモバイルについての技術的な講演が行われ、毎回約5000~6000名のデベロッパーやデザイナーが参加します。</p>

<p>今年は2012年,2013年の3日間より一日短い日程での開催となりましたが、基調講演や小さなブースで行われるBox Talkを含めて200を越えるセッションが行われました。</p>

<p>本レポートではイベント前日から最終日まで、Google I/Oの様子＋αをかいつまんでお届けしたいと思います。</p>

<h2>いざ会場へ</h2>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/2.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/2.png" alt="2" width="886" height="591" class="alignnone size-full wp-image-8501" srcset="/wp-content/uploads/2014/07/2.png 640w, /wp-content/uploads/2014/07/2-300x200.png 300w, /wp-content/uploads/2014/07/2-207x137.png 207w" sizes="(max-width: 886px) 100vw, 886px" /></a></p>

<p>Google I/Oでは開催の前日より、参加証をもらうためのチェックインを会場で行うことができます。前日の午前中にサンフランシスコ入りした私も、ほかの日本人の方々と一緒に会場まで行ってきました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/1.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/1-300x226.png" alt="1" width="300" height="226" class="alignnone size-medium wp-image-8500" srcset="/wp-content/uploads/2014/07/1-300x226.png 300w, /wp-content/uploads/2014/07/1-207x155.png 207w, /wp-content/uploads/2014/07/1.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>とりあえず腹ごしらえ、ということで会場目の前のハンバーガー屋さんで遅めのお昼ご飯。同じお店にBidelmanを発見し、Google I/Oに来たことを実感します。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/125.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/125-1024x292.jpg" alt="125" width="1024" height="292" class="alignnone size-large wp-image-9039" srcset="/wp-content/uploads/2014/07/125-1024x292.jpg 1024w, /wp-content/uploads/2014/07/125-300x85.jpg 300w, /wp-content/uploads/2014/07/125-207x58.jpg 207w, /wp-content/uploads/2014/07/125.jpg 640w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>

<p>昼食後、会場へ向かいました。
14時からチェックイン開始ですが、すでに長蛇の列ができています。
イベント当日でもチェックインは可能ですが、基調講演やセッションなどの列にすぐに並べなくなってしまうため、前日に登録を行う人が多いようです。</p>

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

<p>20分ほどかかり、ようやく私の番となりました。ここではPhoto ID(パスポートなどの写真付きの証明書)が必要となります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/101.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/101-300x224.png" alt="101" width="300" height="224" class="alignnone size-medium wp-image-8540" srcset="/wp-content/uploads/2014/07/101-300x224.png 300w, /wp-content/uploads/2014/07/101-207x154.png 207w, /wp-content/uploads/2014/07/101.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>チェックインではGoogle I/O参加証のほかに、ボトル、Tシャツ、イベント初日の夜に行われるパーティ参加証を受け取りました。これで明日からこの会場に入場することができます。</p>

<h2>サンフランシスコ観光</h2>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/5.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/5.png" alt="5" width="886" height="498" class="alignnone size-full wp-image-8505" srcset="/wp-content/uploads/2014/07/5.png 640w, /wp-content/uploads/2014/07/5-300x168.png 300w, /wp-content/uploads/2014/07/5-207x116.png 207w" sizes="(max-width: 886px) 100vw, 886px" /></a></p>

<p>夜はI/O参加者の日本人の方々と晩ご飯を食べるため、ケーブルカーでフィッシャーマンズワーフに向かいました。</p>

<p>この時期のサンフランシスコは気温は15度程度、東京の3月くらいの寒さです。風が強いため、気温以上に寒く感じます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/9.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/9-300x198.png" alt="9" width="300" height="198" class="alignnone size-medium wp-image-8509" srcset="/wp-content/uploads/2014/07/9-300x198.png 300w, /wp-content/uploads/2014/07/9-207x137.png 207w, /wp-content/uploads/2014/07/9.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>サンフランシスコは海に面しているため、魚介類が豊富で美味しいです。くり抜いたパンを器にしたクラムチャウダーは、フィッシャーマンズワーフの名物になっています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/10.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/10.png" alt="10" width="884" height="664" class="alignnone size-full wp-image-8510" srcset="/wp-content/uploads/2014/07/10.png 640w, /wp-content/uploads/2014/07/10-300x225.png 300w, /wp-content/uploads/2014/07/10-207x155.png 207w" sizes="(max-width: 884px) 100vw, 884px" /></a></p>

<p>サンフランシスコの夜は遅くまで明るく、21時頃になりようやく暗くなってきます。奥に見えるのはアルカトラズ島です。</p>

<p>初日は明日からのイベントに備えて早めに寝ました。</p>

<h2>Google I/O開始！</h2>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/11.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/11.png" alt="11" width="885" height="552" class="alignnone size-full wp-image-8511" srcset="/wp-content/uploads/2014/07/11.png 640w, /wp-content/uploads/2014/07/11-300x187.png 300w, /wp-content/uploads/2014/07/11-207x129.png 207w" sizes="(max-width: 885px) 100vw, 885px" /></a></p>

<p>Google I/Oの初日の最初に行われる基調講演は、例年いくつもの新規デバイスやソフトウェアなどが発表されるイベントの中で最も注目度の高いセッションとなっています。少しでも良い席で聴講しようと多くの参加者が開始数時間前から並ぶため、私たちが2時間前に着いたときには既に長い列ができていました。</p>

<p>列を少し抜けて、中の朝食会場を覗きに行きます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/13.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/13-300x161.png" alt="13" width="300" height="161" class="alignnone size-medium wp-image-8513" srcset="/wp-content/uploads/2014/07/13-300x161.png 300w, /wp-content/uploads/2014/07/13-207x110.png 207w, /wp-content/uploads/2014/07/13.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>外とうってかわって、中はそれほど混雑していません。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/14.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/14-280x300.png" alt="14" width="280" height="300" class="alignnone size-medium wp-image-8514" srcset="/wp-content/uploads/2014/07/14-280x300.png 280w, /wp-content/uploads/2014/07/14-193x207.png 193w, /wp-content/uploads/2014/07/14.png 597w" sizes="(max-width: 280px) 100vw, 280px" /></a></p>

<p>ジュースやコーヒー、マフィンなどが置かれていました。</p>

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

<p>暖を取るためコーヒーを手に、また列に戻りました。朝ご飯はお預けです。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/12.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/12.png" alt="12" width="886" height="591" class="alignnone size-full wp-image-8512" srcset="/wp-content/uploads/2014/07/12.png 640w, /wp-content/uploads/2014/07/12-300x200.png 300w, /wp-content/uploads/2014/07/12-207x137.png 207w" sizes="(max-width: 886px) 100vw, 886px" /></a></p>

<p>しかし、多くの参加者が外の列で待機することはGoogle側もよく分かっているようで、ワゴンでドーナツが配布されました。甘い！</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/126.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/126-300x199.jpg" alt="126" width="300" height="199" class="alignnone size-medium wp-image-9052" srcset="/wp-content/uploads/2014/07/126-300x199.jpg 300w, /wp-content/uploads/2014/07/126-1024x682.jpg 1024w, /wp-content/uploads/2014/07/126-207x137.jpg 207w, /wp-content/uploads/2014/07/126.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>8時半を廻り、ようやく列が動き出しました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/16.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/16-225x300.png" alt="16" width="225" height="300" class="alignnone size-medium wp-image-8516" srcset="/wp-content/uploads/2014/07/16-225x300.png 225w, /wp-content/uploads/2014/07/16-155x207.png 155w, /wp-content/uploads/2014/07/16.png 481w" sizes="(max-width: 225px) 100vw, 225px" /></a></p>

<p>上へ上へ。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/17.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/17.png" alt="17" width="884" height="664" class="alignnone size-full wp-image-8542" srcset="/wp-content/uploads/2014/07/17.png 640w, /wp-content/uploads/2014/07/17-300x225.png 300w, /wp-content/uploads/2014/07/17-207x155.png 207w" sizes="(max-width: 884px) 100vw, 884px" /></a></p>

<p>なんとか会場の真ん中辺りの席をゲット！</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/102.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/102-300x199.png" alt="102" width="300" height="199" class="alignnone size-medium wp-image-8546" srcset="/wp-content/uploads/2014/07/102-300x199.png 300w, /wp-content/uploads/2014/07/102-207x137.png 207w, /wp-content/uploads/2014/07/102.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a>
<a href="https://html5experts.jp/wp-content/uploads/2014/07/19.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/19-300x199.png" alt="19" width="300" height="199" class="alignnone size-medium wp-image-8543" srcset="/wp-content/uploads/2014/07/19-300x199.png 300w, /wp-content/uploads/2014/07/19-207x137.png 207w, /wp-content/uploads/2014/07/19.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>ステージには、なにやらピ○ゴラ○イッチのようなギミックが置かれています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/105.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/105.jpg" alt="105" width="766" height="510" class="alignnone size-full wp-image-8564" srcset="/wp-content/uploads/2014/07/105.jpg 640w, /wp-content/uploads/2014/07/105-300x199.jpg 300w, /wp-content/uploads/2014/07/105-207x137.jpg 207w" sizes="(max-width: 766px) 100vw, 766px" /></a></p>

<p>9時過ぎ、ついに基調講演開始です！</p>

<p>HTML5Expers.jpでは基調講演のライブレポートを行っていました。講演の内容については、
<a href="https://html5experts.jp/iwase/7369/" title="【速報】Google I/O 2014 キーノート ライブレポート" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">こちらの記事</a>をご覧ください。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/111.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/111.jpg" alt="111" width="994" height="662" class="alignnone size-full wp-image-9026" srcset="/wp-content/uploads/2014/07/111.jpg 640w, /wp-content/uploads/2014/07/111-300x199.jpg 300w, /wp-content/uploads/2014/07/111-207x137.jpg 207w" sizes="(max-width: 994px) 100vw, 994px" /></a></p>

<p>2時間半を超える今回の基調講演は、Material Design、Android L、スマートウォッチ、Android Auto、Android TV、そしてCardboardなど、盛りだくさんの内容でした！</p>

<p>基調講演のラストは『お土産』の発表。Google I/Oでは参加者全員に新規デバイスなどが配布されるのが恒例で、例年注目の的となっています。2012年はGalaxyNexusやNexus7、2013年はChromebook Pixelなどが配布されました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/127.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/127-1024x681.jpg" alt="127" width="1024" height="681" class="alignnone size-large wp-image-9056" srcset="/wp-content/uploads/2014/07/127-1024x681.jpg 1024w, /wp-content/uploads/2014/07/127-300x199.jpg 300w, /wp-content/uploads/2014/07/127-207x137.jpg 207w, /wp-content/uploads/2014/07/127.jpg 640w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>

<p>今年はさっき発表された「SUMSUNG Gear Live」「LG G Watch」のどちらかのスマートウォッチをもらえることに！さらに、Google I/Oでは受け取れませんが、夏に一般発売予定のMotorolaの「Moto 360」ももらえるみたいです！</p>

<p>会場は大歓声に包まれました。</p>

<h2>セッションや会場の様子など</h2>

<p>基調講演後の時間は平行して10以上のセッションが行われるので、その中から好きなセッションを聞きに行きます。また、ブース展示も面白い物が多く、それらを見て回ったり、電源タップが完備されたソファー席で休んだりもできます。</p>

<h3>セッション</h3>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/128.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/128-1024x681.jpg" alt="128" width="1024" height="681" class="alignnone size-large wp-image-9058" srcset="/wp-content/uploads/2014/07/128-1024x681.jpg 1024w, /wp-content/uploads/2014/07/128-300x199.jpg 300w, /wp-content/uploads/2014/07/128-207x137.jpg 207w, /wp-content/uploads/2014/07/128.jpg 640w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>

<p>Google I/O 2014ではAndroid, Polymer, Material Design, Google Play, Google Cloud Platform, Google Castなどなど、さまざまなセッションが行われていました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/131.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/131-1024x681.jpg" alt="131" width="1024" height="681" class="alignnone size-large wp-image-9065" srcset="/wp-content/uploads/2014/07/131-1024x681.jpg 1024w, /wp-content/uploads/2014/07/131-300x199.jpg 300w, /wp-content/uploads/2014/07/131-207x137.jpg 207w, /wp-content/uploads/2014/07/131.jpg 640w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>

<p>各セッションは2~300名は入る大きな会場で行われます。ちなみにどの会場も電源タップの周りの席からすぐに埋まるとのこと。</p>

<p>セッションの中には参加者だけにデバイス等を配布するものもあり、そういったセッションは噂を聞きつけた人で大混雑します。
今回私もとあるセッションで『何か』がもらえるという噂を入手。その部屋に行ってみました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/35.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/35-300x266.png" alt="35" width="300" height="266" class="alignnone size-medium wp-image-8522" srcset="/wp-content/uploads/2014/07/35-300x266.png 300w, /wp-content/uploads/2014/07/35-207x184.png 207w, /wp-content/uploads/2014/07/35.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>部屋の前には長い長い列ができています。</p>

<p>ずいぶん待った後で無事入場！</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/36.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/36.png" alt="36" width="554" height="262" class="alignnone size-full wp-image-8523" srcset="/wp-content/uploads/2014/07/36.png 554w, /wp-content/uploads/2014/07/36-300x141.png 300w, /wp-content/uploads/2014/07/36-207x97.png 207w" sizes="(max-width: 554px) 100vw, 554px" /></a></p>

<p>そう、基調講演で発表があったばかりの、Android TVのセッションです！</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/38.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/38-300x183.png" alt="38" width="300" height="183" class="alignnone size-medium wp-image-8524" srcset="/wp-content/uploads/2014/07/38-300x183.png 300w, /wp-content/uploads/2014/07/38-207x126.png 207w, /wp-content/uploads/2014/07/38.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>Android TVのシステムやUIについての講演の最後で、参加者だけにAndroid TV用のアプリ開発キット「ADT-1」を配布するとの発表が！
無事バウチャーを入手することができました。</p>

<p>聞きたいセッションが同じ時間に被ってしまっても、ほとんどのセッションはYouTubeで公開されるため、後から見ることができます。Google I/O 2014のビデオは<a href="https://www.google.com/events/io/io14videos" title="こちらで公開" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">こちらで公開</a>されています。</p>

<h3>Box Talk</h3>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/50.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/50.png" alt="50" width="884" height="664" class="alignnone size-full wp-image-8530" srcset="/wp-content/uploads/2014/07/50.png 640w, /wp-content/uploads/2014/07/50-300x225.png 300w, /wp-content/uploads/2014/07/50-207x155.png 207w" sizes="(max-width: 884px) 100vw, 884px" /></a></p>

<p>Box Talkは小さなブースで行われるセッションで、Android, Chrome, Cloud, Dartなどのジャンルごとに分かれています。</p>

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

<p>席は数人分しか用意されていませんが、人気のセッションは2~30名は見に来るので、早めに行かないと人だかりで見えないということも。
講演者と聴講者の距離がとても近いので、質問やディスカッションが盛んに行われていました。</p>

<h3>展示</h3>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/53.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/53.png" alt="53" width="886" height="590" class="alignnone size-full wp-image-8533" srcset="/wp-content/uploads/2014/07/53.png 640w, /wp-content/uploads/2014/07/53-300x199.png 300w, /wp-content/uploads/2014/07/53-207x137.png 207w" sizes="(max-width: 886px) 100vw, 886px" /></a></p>

<p>会場の2,3階では、基調講演で発表があったデバイスや協賛企業の展示が行われています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/112.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/112-300x198.jpg" alt="112" width="300" height="198" class="alignnone size-medium wp-image-9025" srcset="/wp-content/uploads/2014/07/112-300x198.jpg 300w, /wp-content/uploads/2014/07/112-207x136.jpg 207w, /wp-content/uploads/2014/07/112.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></a><a href="https://html5experts.jp/wp-content/uploads/2014/07/113.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/113-300x199.jpg" alt="113" width="300" height="199" class="alignnone size-medium wp-image-9024" srcset="/wp-content/uploads/2014/07/113-300x199.jpg 300w, /wp-content/uploads/2014/07/113-207x137.jpg 207w, /wp-content/uploads/2014/07/113.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>Android Wear。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/54.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/54-300x216.png" alt="54" width="300" height="216" class="alignnone size-medium wp-image-8534" srcset="/wp-content/uploads/2014/07/54-300x216.png 300w, /wp-content/uploads/2014/07/54-207x148.png 207w, /wp-content/uploads/2014/07/54.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>Chromecastを使ったクイズゲームの展示。
富士山の高さは何キアヌリーブス？</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/55.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/55-300x250.png" alt="55" width="300" height="250" class="alignnone size-medium wp-image-8535" srcset="/wp-content/uploads/2014/07/55-300x250.png 300w, /wp-content/uploads/2014/07/55-207x172.png 207w, /wp-content/uploads/2014/07/55.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>答えは2030.11キアヌリーブスだそうな。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/130.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/130-1024x681.jpg" alt="130" width="1024" height="681" class="alignnone size-large wp-image-9066" srcset="/wp-content/uploads/2014/07/130-1024x681.jpg 1024w, /wp-content/uploads/2014/07/130-300x199.jpg 300w, /wp-content/uploads/2014/07/130-207x137.jpg 207w, /wp-content/uploads/2014/07/130.jpg 640w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>

<p>Android Auto。実際の車に乗って操作すると、前方のスクリーンが流れて運転しているように見えます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/133.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/133-300x199.jpg" alt="133" width="300" height="199" class="alignnone size-medium wp-image-9063" srcset="/wp-content/uploads/2014/07/133-300x199.jpg 300w, /wp-content/uploads/2014/07/133-1024x681.jpg 1024w, /wp-content/uploads/2014/07/133-207x137.jpg 207w, /wp-content/uploads/2014/07/133.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></a>
<a href="https://html5experts.jp/wp-content/uploads/2014/07/57.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/57-300x199.png" alt="57" width="300" height="199" class="alignnone size-medium wp-image-8537" srcset="/wp-content/uploads/2014/07/57-300x199.png 300w, /wp-content/uploads/2014/07/57-207x137.png 207w, /wp-content/uploads/2014/07/57.png 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>LEGOブロック。</p>

<h3>コミュニティラウンジ</h3>

<p>コミュニティラウンジはソファーやテーブルなどが置かれていて、各国のGoogleコミュニティが自由に集まり交流できるスペースです。</p>

<p>日本、ヨーロッパ、アフリカ、アメリカなど各国のコミュニティのミートアップの他に、women meetupや、first-timers meetup、Robotics meetupなどが行われていました。</p>

<h3>休憩スペース</h3>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/33.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/33.png" alt="33" width="886" height="664" class="alignnone size-full wp-image-8520" srcset="/wp-content/uploads/2014/07/33.png 640w, /wp-content/uploads/2014/07/33-300x224.png 300w, /wp-content/uploads/2014/07/33-207x154.png 207w" sizes="(max-width: 886px) 100vw, 886px" /></a></p>

<p>会場では多くの参加者がソファーや床でPCを開いてくつろいでいました。ソファーには電源タップも用意されています。</p>

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

<p>新しいツールを試したり、手に入れたデバイスはすぐ触ってみたくなるので、こういうスペースはとてもありがたいですね。ソファー席の近くにはお菓子ブースもあり、腰を落ち着けるにはもってこいでした。</p>

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

<h3>撮影</h3>

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

<p>会場のいたるところでテレビ局と思われる撮影が行われていました。</p>

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

<h2>貸し切りアフターパーティ</h2>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/139.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/139-1024x681.jpg" alt="139" width="1024" height="681" class="alignnone size-large wp-image-9084" srcset="/wp-content/uploads/2014/07/139-1024x681.jpg 1024w, /wp-content/uploads/2014/07/139-300x199.jpg 300w, /wp-content/uploads/2014/07/139-207x137.jpg 207w, /wp-content/uploads/2014/07/139.jpg 640w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>

<p>Google I/O初日の夜は、参加者だけのパーティが開かれました。広い公園を貸し切り、中のお店や出店は全て無料！おまけにバンドの生演奏まで行われました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/39.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/39-225x300.png" alt="39" width="225" height="300" class="alignnone size-medium wp-image-8525" srcset="/wp-content/uploads/2014/07/39-225x300.png 225w, /wp-content/uploads/2014/07/39-155x207.png 155w, /wp-content/uploads/2014/07/39.png 480w" sizes="(max-width: 225px) 100vw, 225px" /></a>
<a href="https://html5experts.jp/wp-content/uploads/2014/07/40.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/40-225x300.png" alt="40" width="225" height="300" class="alignnone size-medium wp-image-8526" srcset="/wp-content/uploads/2014/07/40-225x300.png 225w, /wp-content/uploads/2014/07/40-155x207.png 155w, /wp-content/uploads/2014/07/40.png 480w" sizes="(max-width: 225px) 100vw, 225px" /></a></p>

<p>公園のあちこちに出店が出ています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/137-e1406183081167.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/137-e1406183081167-300x286.jpg" alt="137" width="300" height="286" class="alignnone size-medium wp-image-9081" srcset="/wp-content/uploads/2014/07/137-e1406183081167-300x286.jpg 300w, /wp-content/uploads/2014/07/137-e1406183081167-1024x977.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<p>フィッシャーマンズワーフで食べそびれたクラムチャウダーも、ここで食べることができました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/42.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/42.png" alt="42" width="886" height="590" class="alignnone size-full wp-image-8528" srcset="/wp-content/uploads/2014/07/42.png 640w, /wp-content/uploads/2014/07/42-300x199.png 300w, /wp-content/uploads/2014/07/42-207x137.png 207w" sizes="(max-width: 886px) 100vw, 886px" /></a></p>

<p>たくさんの出店や演奏、催し物で会場は大変賑やかでした。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/43.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/43.png" alt="43" width="886" height="590" class="alignnone size-full wp-image-8529" srcset="/wp-content/uploads/2014/07/43.png 640w, /wp-content/uploads/2014/07/43-300x199.png 300w, /wp-content/uploads/2014/07/43-207x137.png 207w" sizes="(max-width: 886px) 100vw, 886px" /></a></p>

<p>初日の夜はこうしてふけていきました。</p>

<h2>二日目、お土産入手</h2>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/135.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/135-1024x681.jpg" alt="135" width="1024" height="681" class="alignnone size-large wp-image-9061" srcset="/wp-content/uploads/2014/07/135-1024x681.jpg 1024w, /wp-content/uploads/2014/07/135-300x199.jpg 300w, /wp-content/uploads/2014/07/135-207x137.jpg 207w, /wp-content/uploads/2014/07/135.jpg 640w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>

<p>2日目は朝からお土産を受け取ることができます。</p>

<p>「SAMSUNG Gear Live」か「LG G Watch」のどちらかの時計を選ばなければなりませんが、私の周りでは「LG G Watch」の方に若干軍配が上がっていました。しかし、脈拍を計測できるのは「Gear Live」だけ！少し悩んだ末に、「Gear Live」を受け取りました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/141.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/141-e1406184490719-279x300.jpg" alt="141" width="279" height="300" class="alignnone size-medium wp-image-9091" srcset="/wp-content/uploads/2014/07/141-e1406184490719-279x300.jpg 279w, /wp-content/uploads/2014/07/141-e1406184490719-953x1024.jpg 953w" sizes="(max-width: 279px) 100vw, 279px" /></a></p>

<p>ついでにAndroid TV用の開発キット、「ADT-1」もゲット。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/107.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/107-300x199.jpg" alt="107" width="300" height="199" class="alignnone size-medium wp-image-8571" srcset="/wp-content/uploads/2014/07/107-300x199.jpg 300w, /wp-content/uploads/2014/07/107-207x137.jpg 207w, /wp-content/uploads/2014/07/107.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>

<h2>Nippon meetup</h2>

<p>お昼頃に「Nippon meetup」が行われました。コミュニティラウンジに数十名の日本人が集まり、集合写真を撮影します。</p>

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

<p>こんなに日本人が！これでも全員ではなく、Google I/Oには200人ほどの日本人が参加していたとか。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/142.gif" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/142.gif" alt="142" width="972" height="646" class="alignnone size-full wp-image-9092" /></a></p>

<p>このとき撮った写真がこちら。</p>

<h2>セッション・会場の様子</h2>

<p>午前中、なにやら人だかりができているエリアがありました。</p>

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

<p>近づいてみると、人々が見ているのはテレビ！ワールドカップの中継でした。</p>

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

<p>ちょうどアメリカ対ドイツ戦が行われていたようです。</p>

<p>さて、午後は面白いセッションがあると聞いて、「Making music mobile with the Web」が行われている部屋に参加しました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/52.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/52.png" alt="52" width="884" height="582" class="alignnone size-full wp-image-8532" srcset="/wp-content/uploads/2014/07/52.png 640w, /wp-content/uploads/2014/07/52-300x197.png 300w, /wp-content/uploads/2014/07/52-207x136.png 207w" sizes="(max-width: 884px) 100vw, 884px" /></a></p>

<p>会場全員で歌っています！
歌っているのは「Theme for I/O」。そのときの録音が<a href="https://www.soundtrap.com/io2014" title="こちら" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">こちら</a>。</p>

<p>このセッションではWebRTCやWeb Audioなどを使用して、演奏や歌のレコーディングやミックスを行うデモが中心でした。詳しくは後日公開される河合さんの記事をご覧ください。</p>

<h2>Google I/O終了</h2>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/103.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/103.png" alt="103" width="886" height="590" class="alignnone size-full wp-image-8547" srcset="/wp-content/uploads/2014/07/103.png 640w, /wp-content/uploads/2014/07/103-300x199.png 300w, /wp-content/uploads/2014/07/103-207x137.png 207w" sizes="(max-width: 886px) 100vw, 886px" /></a></p>

<p>午後5時。2014年のGoogle I/Oも、そろそろ終わりです。</p>

<p>2日間Google I/Oを満喫しましたが、思っていた通り、刺激や楽しさがいっぱい詰まったイベントでした。毎年セッションの様子はだいたいYouTubeで公開されていますが、いち早く新しいデバイスやソフトウェアに触れたり、同じ会場の参加者と盛り上がったり、開発者に直接質問をしたりなど、参加して初めて味わえることばかりでした。</p>

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

<p>Google I/O 2014のセッションの動画は<a href="https://www.google.com/events/io/io14videos" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">こちら</a>から公開されています。</p>

<p>来年は是非みなさんと現地でお会いできるといいですね！</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/07/58.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/07/58-225x300.png" alt="58" width="225" height="300" class="alignnone size-medium wp-image-8538" srcset="/wp-content/uploads/2014/07/58-225x300.png 225w, /wp-content/uploads/2014/07/58-155x207.png 155w, /wp-content/uploads/2014/07/58.png 481w" sizes="(max-width: 225px) 100vw, 225px" /></a></p>

<p>それでは！</p>

<p>（写真提供：矢倉眞隆、河合良哉、仲裕介）</p>
]]></content:encoded>
		
		<series:name><![CDATA[Google I/O 2014 特集]]></series:name>
	</item>
		<item>
		<title>【速報】Google I/O 2014 キーノート ライブレポート</title>
		<link>/iwase/7369/</link>
		<pubDate>Wed, 25 Jun 2014 15:45:50 +0000</pubDate>
		<dc:creator><![CDATA[岩瀬 義昌]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Google I/O 2014]]></category>

		<guid isPermaLink="false">/?p=7369</guid>
		<description><![CDATA[連載： Google I/O 2014 特集 (2)まもなくキーノートがはじまります！HTML5 Experts.jpでは、現地で取材中のエキスパート・編集部と連携し、ライブレポート形式にて本ページにて、最新情報をお届け...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/google-io-2014-2/" class="series-191" title="Google I/O 2014 特集" data-wpel-link="internal">Google I/O 2014 特集</a> (2)</div><p>まもなくキーノートがはじまります！HTML5 Experts.jpでは、現地で取材中のエキスパート・編集部と連携し、ライブレポート形式にて本ページにて、最新情報をお届けいたします！</p>

<p>まずは、キーノート会場からご紹介です。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io01.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io01.jpg" alt="io01" width="1012" height="759" class="alignnone size-full wp-image-7497" srcset="/wp-content/uploads/2014/06/io01.jpg 640w, /wp-content/uploads/2014/06/io01-300x225.jpg 300w, /wp-content/uploads/2014/06/io01-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a></p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/10453028_750539778322094_4305687654356604239_o.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/10453028_750539778322094_4305687654356604239_o.jpg" alt="Google I/Oキーノート会場画像" width="1080" height="720" class="alignnone size-full wp-image-7370" srcset="/wp-content/uploads/2014/06/10453028_750539778322094_4305687654356604239_o.jpg 640w, /wp-content/uploads/2014/06/10453028_750539778322094_4305687654356604239_o-300x200.jpg 300w, /wp-content/uploads/2014/06/10453028_750539778322094_4305687654356604239_o-1024x682.jpg 1024w, /wp-content/uploads/2014/06/10453028_750539778322094_4305687654356604239_o-207x137.jpg 207w" sizes="(max-width: 1080px) 100vw, 1080px" /></a></p>

<p>カウントダウンがはじまってます！
<a href="https://html5experts.jp/wp-content/uploads/2014/06/io02.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io02.jpg" alt="io02" width="1012" height="569" class="alignnone size-full wp-image-7498" srcset="/wp-content/uploads/2014/06/io02.jpg 640w, /wp-content/uploads/2014/06/io02-300x168.jpg 300w, /wp-content/uploads/2014/06/io02-207x116.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a></p>

<p>ピタゴラスイッチのような演出、そしてFlappy Birdの映像も流れてます。
<a href="https://html5experts.jp/wp-content/uploads/2014/06/io03.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io03.jpg" alt="io03" width="1012" height="569" class="alignnone size-full wp-image-7499" srcset="/wp-content/uploads/2014/06/io03.jpg 640w, /wp-content/uploads/2014/06/io03-300x168.jpg 300w, /wp-content/uploads/2014/06/io03-207x116.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a></p>

<p>Michael Gorman氏のスピーチではじまりました。
<a href="https://html5experts.jp/wp-content/uploads/2014/06/io100.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io100.jpg" alt="io100" width="1012" height="569" class="alignnone size-full wp-image-7575" srcset="/wp-content/uploads/2014/06/io100.jpg 640w, /wp-content/uploads/2014/06/io100-300x168.jpg 300w, /wp-content/uploads/2014/06/io100-207x116.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
前回のGoogleIOはグローバルなイベントであり、547箇所で視聴している人がいます。早速、グローバルなスマフォの出荷数を見ます。全四半期では３億台以上が出荷されています。Androidを使っているユーザは毎年数が倍増しており、今年は１０億人以上のユーザが利用しています。</p>

<p>Androidユーザは9300万人が自分撮りをしています。我々の推定では、1000億会場もAndroidをチェックしています。
<a href="https://html5experts.jp/wp-content/uploads/2014/06/io06.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io06.jpg" alt="io06" width="1012" height="759" class="alignnone size-full wp-image-7502" srcset="/wp-content/uploads/2014/06/io06.jpg 640w, /wp-content/uploads/2014/06/io06-300x225.jpg 300w, /wp-content/uploads/2014/06/io06-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a></p>

<p>タブレットの話もすると、数は非常に伸びています。Androidのタブレットは世界市場の62%を占めています。これはkindleを含んでいません。また、利用状況を見ると、一年前はyoutubeを見る人は28%がyoutubeを視聴していましたが今は42%です。今年だけで、アプリケーションのインストールは200%以上増えています。また、10億人以上のAndroidユーザがいますが、50億人以上のユーザにリーチしたいと考えています。</p>

<p>本日はAndroidとChromeについてお話いたします。まずはAndroid &#8220;L&#8221; Developer Previewについてです。（編集部補足：Kit Katの次ですね。まだ正式名称は内緒のようで、単なるLとして紹介されてます。）</p>

<p>デザインは今日非常に重要です。Lではマテリアルデザイン（材料設計）を取り入れています。マテリアルデザインは、直感的に人々が理解できるようなデザインです。例えば、
影を作ることにより、どのように動くかについて意味をもたらすようなものです。また、Lのガイドラインにより、開発者は1つのデザインで、様々なデバイスのデザインを最適化できます。</p>

<p>（編集部補足：マテリアルデザインについてはこちらの動画をご覧ください。）</p>

<iframe width="560" height="315" src="//www.youtube.com/embed/Q8TXgCzxEnw" frameborder="0" allowfullscreen></iframe>

<p>さらにLでは、Android開発者はシームレスなアニメーションを作ることができます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io07.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io07.jpg" alt="io07" width="1012" height="569" class="alignnone size-full wp-image-7503" srcset="/wp-content/uploads/2014/06/io07.jpg 640w, /wp-content/uploads/2014/06/io07-300x168.jpg 300w, /wp-content/uploads/2014/06/io07-207x116.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a></p>

<p>昨年はPolymerを発表しましたが、マテリアルデザインの機能をPolymerを介して提供します。マテリアルデザインではスムースなアニメーションを作れます。具体的に、Lのユーザエクスペリエンスからお話します。Lには洗練されたノーティフィケーションもあります。Lの場合には即時的にロック画面から確認ができます。</p>

<p>Lではノーティフィケーションを優先度をつけて整理できます。さらにノーティフィケーションを、一回のスワイプで外すこともできます。またheads upというノーティフィケーション機能を導入しています。これは緊急度の高いものを通知する機能です。また新しいコンセプトとして、パーソナルアンロックという機能を導入します。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io08.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io08.jpg" alt="io08" width="1012" height="759" class="alignnone size-full wp-image-7504" srcset="/wp-content/uploads/2014/06/io08.jpg 640w, /wp-content/uploads/2014/06/io08-300x225.jpg 300w, /wp-content/uploads/2014/06/io08-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a></p>

<p>次はパフォーマンスです。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io09.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io09.jpg" alt="io09" width="1012" height="759" class="alignnone size-full wp-image-7505" srcset="/wp-content/uploads/2014/06/io09.jpg 640w, /wp-content/uploads/2014/06/io09-300x225.jpg 300w, /wp-content/uploads/2014/06/io09-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
Androidのバーチャルマシンについて様々な意見を頂いてきました。今日、我々はLの新たな実行環境として、ARTを提供します。ARTは新たなガーベジコレクタも提供します。ARTは64bitアーキテクチャに対応しています。</p>

<p>また、Lでは、GPU性能も向上しています。（Lを用いたムービーが再生される）水の反射や煙のエフェクト、秋のリリースでPCレベルのものがポケットに収まるようになります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io10.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io10.jpg" alt="io10" width="1012" height="759" class="alignnone size-full wp-image-7506" srcset="/wp-content/uploads/2014/06/io10.jpg 640w, /wp-content/uploads/2014/06/io10-300x225.jpg 300w, /wp-content/uploads/2014/06/io10-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
最後にバッテリです。プロジェクトVoltaをはじめました。これにより持続時間を向上させています。バッテリ性能を確かめるには、まずは計測をしないといけないので、Battery histrianを作りました。これにより当時の状況を見ることができるようになりました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io11.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io11.jpg" alt="io11" width="1012" height="759" class="alignnone size-full wp-image-7507" srcset="/wp-content/uploads/2014/06/io11.jpg 640w, /wp-content/uploads/2014/06/io11-300x225.jpg 300w, /wp-content/uploads/2014/06/io11-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
そしてジョブスケジューリングAPIも新しくなっており、消費電力も効率化されています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io12.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io12.jpg" alt="io12" width="1012" height="759" class="alignnone size-full wp-image-7508" srcset="/wp-content/uploads/2014/06/io12.jpg 640w, /wp-content/uploads/2014/06/io12-300x225.jpg 300w, /wp-content/uploads/2014/06/io12-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
LではジョブスケジューリングAPIで、バッテリ接続していても自動的にバッテリを節約できます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io13.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io13.jpg" alt="io13" width="1012" height="759" class="alignnone size-full wp-image-7509" srcset="/wp-content/uploads/2014/06/io13.jpg 640w, /wp-content/uploads/2014/06/io13-300x225.jpg 300w, /wp-content/uploads/2014/06/io13-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
明日の午前中には、LのプレビューSDKを提供します。Nexus7で今日にでもはじめられます。5000の新たなAPIが提供され、パフォーマンスも向上しています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io14.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io14.jpg" alt="io14" width="1012" height="759" class="alignnone size-full wp-image-7510" srcset="/wp-content/uploads/2014/06/io14.jpg 640w, /wp-content/uploads/2014/06/io14-300x225.jpg 300w, /wp-content/uploads/2014/06/io14-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
これまでのAndroidのイノベーションを振り返ると、オープンプラットフォームで様々な技術革新を提供してきました</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io15.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io15.jpg" alt="io15" width="1012" height="759" class="alignnone size-full wp-image-7511" srcset="/wp-content/uploads/2014/06/io15.jpg 640w, /wp-content/uploads/2014/06/io15-300x225.jpg 300w, /wp-content/uploads/2014/06/io15-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
セキュリティアップデートもGooglePlayを介して利用できます。ファクトリーリセットプロテクションを使い、さらに安全に活用できます。
プライバシーもLの側面にあります。ユーザは個人情報の保護を確実にできます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io16.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io16.jpg" alt="io16" width="1012" height="759" class="alignnone size-full wp-image-7512" srcset="/wp-content/uploads/2014/06/io16.jpg 640w, /wp-content/uploads/2014/06/io16-300x225.jpg 300w, /wp-content/uploads/2014/06/io16-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
ユーザはマルチスクリーンの世界を生きています。例えば、車にのってもネットへ接続しています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io17.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io17.jpg" alt="io17" width="1012" height="759" class="alignnone size-full wp-image-7513" srcset="/wp-content/uploads/2014/06/io17.jpg 640w, /wp-content/uploads/2014/06/io17-300x225.jpg 300w, /wp-content/uploads/2014/06/io17-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
シームレスな形式で、どのデバイスを使っていても同様なエクスペリエンスを提供します。その一つとして紹介するのは</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io18.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io18.jpg" alt="io18" width="1012" height="759" class="alignnone size-full wp-image-7514" srcset="/wp-content/uploads/2014/06/io18.jpg 640w, /wp-content/uploads/2014/06/io18-300x225.jpg 300w, /wp-content/uploads/2014/06/io18-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
androidWearです。
Android Wearでは例えば、センサによってコンテキストを認識、必要な情報を提供します。ユーザはこのデバイスを常に身につけていることによります。世界中の人はAndroid Phoneを毎日125回以上チェックしていますが、このウェアラブルなウォッチを使えば、すぐに確認できます。まずはLGウォッチで紹介しましょう。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io19.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io19.jpg" alt="io19" width="1012" height="759" class="alignnone size-full wp-image-7515" srcset="/wp-content/uploads/2014/06/io19.jpg 640w, /wp-content/uploads/2014/06/io19-300x225.jpg 300w, /wp-content/uploads/2014/06/io19-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
これにより、ウェアラブルな形で、流れるようなアニメーションで、フライト情報のような様々な情報を確認できます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io20.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io20.jpg" alt="io20" width="1012" height="759" class="alignnone size-full wp-image-7516" srcset="/wp-content/uploads/2014/06/io20.jpg 640w, /wp-content/uploads/2014/06/io20-300x225.jpg 300w, /wp-content/uploads/2014/06/io20-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
UIのモデルですが、Androidがどのように機能するか？まずは天気や通勤時間を確認できます。また、ウォッチから簡単にスマートフォンと連携できます。簡単にメモもとれます。とったメモはすぐにスマートフォンに同期されるのです。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io21.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io21.jpg" alt="io21" width="1012" height="1349" class="alignnone size-full wp-image-7517" srcset="/wp-content/uploads/2014/06/io21.jpg 480w, /wp-content/uploads/2014/06/io21-225x300.jpg 225w, /wp-content/uploads/2014/06/io21-768x1024.jpg 768w, /wp-content/uploads/2014/06/io21-155x207.jpg 155w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
例えば電話がかかってきた場合は、ウォッチに情報が表示されます。ウォッチを上下にスワイプすることによって、電話を拒否するようなこともできます。また下にスワイプダウンすれば、都合がよくなるまで割り込みを避けられます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io101.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io101.jpg" alt="io101" width="1012" height="1349" class="alignnone size-full wp-image-7581" srcset="/wp-content/uploads/2014/06/io101.jpg 480w, /wp-content/uploads/2014/06/io101-225x300.jpg 225w, /wp-content/uploads/2014/06/io101-768x1024.jpg 768w, /wp-content/uploads/2014/06/io101-155x207.jpg 155w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
また、ウォッチで音楽もコントロールできますし、再生している最中のアルバム情報もチェックできます。また、その他の機能として、ジョギングの後の心拍数なども計測できます。AndroidWearSDKによって、開発者は様々なものを構築できます。色々なアプリケーションが何十億という通知を、自分の腕で確認できます。3月に開発者プレビューをリリースしています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io24.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io24.jpg" alt="io24" width="1012" height="759" class="alignnone size-full wp-image-7520" srcset="/wp-content/uploads/2014/06/io24.jpg 640w, /wp-content/uploads/2014/06/io24-300x225.jpg 300w, /wp-content/uploads/2014/06/io24-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
ユーザには、さらに良いエクスペリエンスを提供できるようになります。GmailやHangoutと統合できるようになります。eat24というアプリを紹介しましょう。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io25.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io25.jpg" alt="io25" width="1012" height="1349" class="alignnone size-full wp-image-7521" srcset="/wp-content/uploads/2014/06/io25.jpg 480w, /wp-content/uploads/2014/06/io25-225x300.jpg 225w, /wp-content/uploads/2014/06/io25-768x1024.jpg 768w, /wp-content/uploads/2014/06/io25-155x207.jpg 155w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
まずピザのオーダがウォッチからできます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io26.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io26.jpg" alt="io26" width="1012" height="1349" class="alignnone size-full wp-image-7522" srcset="/wp-content/uploads/2014/06/io26.jpg 480w, /wp-content/uploads/2014/06/io26-225x300.jpg 225w, /wp-content/uploads/2014/06/io26-768x1024.jpg 768w, /wp-content/uploads/2014/06/io26-155x207.jpg 155w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
支払いもウォッチからできます。これだけで、ピザがあなたのもとに届きます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io102.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io102.jpg" alt="io102" width="1012" height="759" class="alignnone size-full wp-image-7583" srcset="/wp-content/uploads/2014/06/io102.jpg 640w, /wp-content/uploads/2014/06/io102-300x225.jpg 300w, /wp-content/uploads/2014/06/io102-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
ソーシャルレシピのような例もあります。レシピをウォッチで見ると、携帯にもすぐに同期されています。これは料理をしている間に身につけていてもOKです。防水処理されておりますので。タイマーもすぐできます。ウォッチさえあれば大丈夫。焼き過ぎなんてありえないです。</p>

<p>音声のアクションを色々とお見せしましたが、他のアクションにも応用可能です。Okay google, call me car　といえば、位置情報を確認して、車がついたらウォッチに通知してくれます。また目的地についたらウォッチに通知してくれるようなアプリも作れます。さて実際のウォッチですが、</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io27.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io27.jpg" alt="io27" width="1012" height="759" class="alignnone size-full wp-image-7523" srcset="/wp-content/uploads/2014/06/io27.jpg 640w, /wp-content/uploads/2014/06/io27-300x225.jpg 300w, /wp-content/uploads/2014/06/io27-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
今日の午後からLGウォッチをプレイストアで発注できます！またサムスンもAndroidwearファミリー人参加してもらいました！Samsung Gear Liveも午後から発注できます。また丸いUIのMoto3も夏から発売されます。(編集部補足：米国での発売情報です)</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io28.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io28.jpg" alt="io28" width="1012" height="1012" class="alignnone size-full wp-image-7524" srcset="/wp-content/uploads/2014/06/io28.jpg 640w, /wp-content/uploads/2014/06/io28-150x150.jpg 150w, /wp-content/uploads/2014/06/io28-300x300.jpg 300w, /wp-content/uploads/2014/06/io28-207x207.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
Android Wearはシームレスなデバイスすると述べました。次は車を考えてみましょう。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io29.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io29.jpg" alt="io29" width="1012" height="1012" class="alignnone size-full wp-image-7525" srcset="/wp-content/uploads/2014/06/io29.jpg 640w, /wp-content/uploads/2014/06/io29-150x150.jpg 150w, /wp-content/uploads/2014/06/io29-300x300.jpg 300w, /wp-content/uploads/2014/06/io29-207x207.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
Open Automotive Allianceを発表し、Connected Carを現実にしたいと思います。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io30.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io30.jpg" alt="io30" width="1012" height="1012" class="alignnone size-full wp-image-7526" srcset="/wp-content/uploads/2014/06/io30.jpg 640w, /wp-content/uploads/2014/06/io30-150x150.jpg 150w, /wp-content/uploads/2014/06/io30-300x300.jpg 300w, /wp-content/uploads/2014/06/io30-207x207.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
そこで、本日はandroid autoを発表します。android autoでは、Androidプラットフォームを自動車のために作りなおしました。運転中にも使えるようにしています。android autoはコンテキスト対応しており、的確な情報を必要なタイミングで必要な情報を出してくれます。また完全に音声対応されているので必要な情報を音声で使えます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io31.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io31.jpg" alt="io31" width="1012" height="759" class="alignnone size-full wp-image-7527" srcset="/wp-content/uploads/2014/06/io31.jpg 640w, /wp-content/uploads/2014/06/io31-300x225.jpg 300w, /wp-content/uploads/2014/06/io31-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
androidフォンを車に近づけると、android autoを車の画面にそれを表示させます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io103.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io103.jpg" alt="io103" width="1012" height="759" class="alignnone size-full wp-image-7584" srcset="/wp-content/uploads/2014/06/io103.jpg 640w, /wp-content/uploads/2014/06/io103-300x225.jpg 300w, /wp-content/uploads/2014/06/io103-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
そして車のコントロールするために、タッチスクリーンを使えます。しかし、アプリケーションはスマートフォンで動作していますよ。さらに、Google Play Musicの主な機能をコントロールできます。これを手を使わずにコントロールできます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io32.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io32.jpg" alt="io32" width="1012" height="759" class="alignnone size-full wp-image-7528" srcset="/wp-content/uploads/2014/06/io32.jpg 640w, /wp-content/uploads/2014/06/io32-300x225.jpg 300w, /wp-content/uploads/2014/06/io32-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
そうそう、皆様はGoogle Mapが好きですよね。android autoはもちろん対応していて音声が使えます。「ヤングミュージアムはいつからやっていますか？」と聞けば、「朝からやっています」ち答えてくれます。次に、「Navigate There」と言えば、ヤングミュージアムへのナビゲーションを開始します。また、その最中に届いたメッセージはheads upで通知でされます。このとき、マップの移動画面も出しながら、音声で返答できます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io33.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io33.jpg" alt="io33" width="1012" height="759" class="alignnone size-full wp-image-7529" srcset="/wp-content/uploads/2014/06/io33.jpg 640w, /wp-content/uploads/2014/06/io33-300x225.jpg 300w, /wp-content/uploads/2014/06/io33-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
android autoについてお話してきましたが、スマートフォンやタブレットと同じように開発できる、android auto SDKを今日発表します。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io34.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io34.jpg" alt="io34" width="1012" height="759" class="alignnone size-full wp-image-7530" srcset="/wp-content/uploads/2014/06/io34.jpg 640w, /wp-content/uploads/2014/06/io34-300x225.jpg 300w, /wp-content/uploads/2014/06/io34-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
SDKがあれば音声を簡単に使えます。またメッセージングAPIもあります。これにより、Appをユーザへ提供しています。わずか数行のコードで車の中でも対応できます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io35.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io35.jpg" alt="io35" width="1012" height="759" class="alignnone size-full wp-image-7531" srcset="/wp-content/uploads/2014/06/io35.jpg 640w, /wp-content/uploads/2014/06/io35-300x225.jpg 300w, /wp-content/uploads/2014/06/io35-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
40の新しいpartnerがOpen Automotive Allianceに参加しています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io37.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io37.jpg" alt="io37" width="1012" height="759" class="alignnone size-full wp-image-7533" srcset="/wp-content/uploads/2014/06/io37.jpg 640w, /wp-content/uploads/2014/06/io37-300x225.jpg 300w, /wp-content/uploads/2014/06/io37-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
車をもっていない人もいますよね。そこで、次はTVです。TVは2006年からあまり進化していません。その結果スマートテレビは限定できでした。Androidtvを発表します！Androidtvでは音声入力を活用でき、バーチャルコントローラも使えます。例えば、生のTVが流れている上に、コンテンツをオーバレイできます。TVはコンピュータと違い、エンターテイメントのインターフェースがあります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io38.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io38.jpg" alt="io38" width="1012" height="569" class="alignnone size-full wp-image-7534" srcset="/wp-content/uploads/2014/06/io38.jpg 640w, /wp-content/uploads/2014/06/io38-300x168.jpg 300w, /wp-content/uploads/2014/06/io38-207x116.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
例えば、「2012年からオスカーを受賞した番組」と音声入力すると、一覧で表示できます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io39.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io39.jpg" alt="io39" width="1012" height="759" class="alignnone size-full wp-image-7535" srcset="/wp-content/uploads/2014/06/io39.jpg 640w, /wp-content/uploads/2014/06/io39-300x225.jpg 300w, /wp-content/uploads/2014/06/io39-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
リモートコントロールがない場合には、Android wear、ウォッチを使ってTVをコントロールできます。つまり、ウォッチをリモコンとして、TVをコントロールできます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io40.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io40.jpg" alt="io40" width="1012" height="759" class="alignnone size-full wp-image-7536" srcset="/wp-content/uploads/2014/06/io40.jpg 640w, /wp-content/uploads/2014/06/io40-300x225.jpg 300w, /wp-content/uploads/2014/06/io40-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
次はゲームの話です。これまでタブレット等でやっていたゲームを今度はTVで楽しめます。例えば、マルチプレイヤーゲームも楽しめます。</p>

<p>他にも、スマートフォンの映像を直接TVにキャストできます。ChromeCastの拡張のような形です。AndroidTVは複数のデバイスタイプ、つまりTV、セットトップボックス、ゲーム機にも対応しており、協業しています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io41.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io41.jpg" alt="io41" width="1012" height="759" class="alignnone size-full wp-image-7537" srcset="/wp-content/uploads/2014/06/io41.jpg 640w, /wp-content/uploads/2014/06/io41-300x225.jpg 300w, /wp-content/uploads/2014/06/io41-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
実際に、2014-2015年にSony、SharpがandroidTVを出します。最後ですが、ADT1というTV開発キットを提供します。これにより、今日から皆様も開発できます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io42.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io42.jpg" alt="io42" width="1012" height="759" class="alignnone size-full wp-image-7538" srcset="/wp-content/uploads/2014/06/io42.jpg 640w, /wp-content/uploads/2014/06/io42-300x225.jpg 300w, /wp-content/uploads/2014/06/io42-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
次はChromeCastを紹介します。ChromeCastは非常に販売が好調です。実はエレクトロニックデバイスとしては、Amazonで一番売上をあげているものです。このChromeCastははじまりにすぎません。この数ヶ月で6000人のデベロッパが登録しており、10000のアプリがGoogleCastReadyのアプリが生まれています。chromecast.com/appsからアクセスするとGooglecastのアプリケーションが簡単に使えます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io43.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io43.jpg" alt="io43" width="1012" height="759" class="alignnone size-full wp-image-7539" srcset="/wp-content/uploads/2014/06/io43.jpg 640w, /wp-content/uploads/2014/06/io43-300x225.jpg 300w, /wp-content/uploads/2014/06/io43-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
TVは使われていない時間が多いですが、それを活用しようと考えています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io104.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io104.jpg" alt="io104" width="1012" height="759" class="alignnone size-full wp-image-7587" srcset="/wp-content/uploads/2014/06/io104.jpg 640w, /wp-content/uploads/2014/06/io104-300x225.jpg 300w, /wp-content/uploads/2014/06/io104-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
例えば、フォトフレームのように使うこともできます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io44.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io44.jpg" alt="io44" width="1012" height="759" class="alignnone size-full wp-image-7540" srcset="/wp-content/uploads/2014/06/io44.jpg 640w, /wp-content/uploads/2014/06/io44-300x225.jpg 300w, /wp-content/uploads/2014/06/io44-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
次はChromebookの話です。我々な生活の中で重要なデバイスとして、まずはChromebookがありました。ユーザはこれを非常に楽しんでいます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io45.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io45.jpg" alt="io45" width="1012" height="759" class="alignnone size-full wp-image-7541" srcset="/wp-content/uploads/2014/06/io45.jpg 640w, /wp-content/uploads/2014/06/io45-300x225.jpg 300w, /wp-content/uploads/2014/06/io45-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
今、AmazonのレーティングでTop10のラップトップは、すべてChromebookです。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io46.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io46.jpg" alt="io46" width="1012" height="759" class="alignnone size-full wp-image-7542" srcset="/wp-content/uploads/2014/06/io46.jpg 640w, /wp-content/uploads/2014/06/io46-300x225.jpg 300w, /wp-content/uploads/2014/06/io46-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
Chromebookに近づいてスマートフォンを持っていれば、chromebookに自動的にサインインできます。GoogleNowの通知も導入済みです。何かあれば、Chromebookでテキストメッセージも追加できます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io47.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io47.jpg" alt="io47" width="1012" height="759" class="alignnone size-full wp-image-7543" srcset="/wp-content/uploads/2014/06/io47.jpg 640w, /wp-content/uploads/2014/06/io47-300x225.jpg 300w, /wp-content/uploads/2014/06/io47-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
このようにChromebookは素晴らしいのですが、ここで我々が考えていたのは、AndroidアプリケーションをChromebookでも利用したいという点です。技術的には非常に難しいのですが、AndroidアプリケーションをChromebookで動かせるようにポーティングできています。</p>

<p>さて、次は法人（企業）の話もしましょう。企業では、個人携帯と会社携帯が別物でした。Lでは、両方のエクスペリエンスを統合して、使えるようになります。一つのデバイスで大丈夫になります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io48.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io48.jpg" alt="io48" width="1012" height="759" class="alignnone size-full wp-image-7544" srcset="/wp-content/uploads/2014/06/io48.jpg 640w, /wp-content/uploads/2014/06/io48-300x225.jpg 300w, /wp-content/uploads/2014/06/io48-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
データは完全に分離されており、セキュアな形になります。もうひとつ、よく要望される機能について紹介します。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io49.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io49.jpg" alt="io49" width="1012" height="759" class="alignnone size-full wp-image-7545" srcset="/wp-content/uploads/2014/06/io49.jpg 640w, /wp-content/uploads/2014/06/io49-300x225.jpg 300w, /wp-content/uploads/2014/06/io49-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
Navie Office Editingも提供します。たとえば、皆様はEmailを使ってwordファイルを受信しますが、今まではそれをdocファイルに変換していましたが、これからはNativeな形式でofficeファイルとして使えるようになります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io50.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io50.jpg" alt="io50" width="1012" height="759" class="alignnone size-full wp-image-7546" srcset="/wp-content/uploads/2014/06/io50.jpg 640w, /wp-content/uploads/2014/06/io50-300x225.jpg 300w, /wp-content/uploads/2014/06/io50-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
次はGoogleDriveです。Google Drive for Workの機能を法人にも提供します。エンタープライズに対して、すべての機能を提供します。また、無制限のストレージを月10ドルで提供します。これからはAndroid、Chrome、Google Doc、Google Driveを統合的に使えます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io51.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io51.jpg" alt="io51" width="1012" height="759" class="alignnone size-full wp-image-7547" srcset="/wp-content/uploads/2014/06/io51.jpg 640w, /wp-content/uploads/2014/06/io51-300x225.jpg 300w, /wp-content/uploads/2014/06/io51-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
実際に、多くの企業・学校がすでに利用しています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io52.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io52.jpg" alt="io52" width="1012" height="759" class="alignnone size-full wp-image-7548" srcset="/wp-content/uploads/2014/06/io52.jpg 640w, /wp-content/uploads/2014/06/io52-300x225.jpg 300w, /wp-content/uploads/2014/06/io52-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
Googleの中で様々なインフラを作っています。ここでGoogleプラットフォームの話をしましょう。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io53.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io53.jpg" alt="io53" width="1012" height="759" class="alignnone size-full wp-image-7549" srcset="/wp-content/uploads/2014/06/io53.jpg 640w, /wp-content/uploads/2014/06/io53-300x225.jpg 300w, /wp-content/uploads/2014/06/io53-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
Compute Engineを使っています。エクサバイトまで拡張するストレージも提供しておりますし、スケーラビリティも確保しています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io55.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io55.jpg" alt="io55" width="1012" height="759" class="alignnone size-full wp-image-7551" srcset="/wp-content/uploads/2014/06/io55.jpg 640w, /wp-content/uploads/2014/06/io55-300x225.jpg 300w, /wp-content/uploads/2014/06/io55-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
バックエンドを作るという意味においては、パフォーマンスがあり、簡単なツールが必要ですが、それはGoogleにしか無いと感がています。ここで4つの機能を紹介します。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io56.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io56.jpg" alt="io56" width="1012" height="759" class="alignnone size-full wp-image-7552" srcset="/wp-content/uploads/2014/06/io56.jpg 640w, /wp-content/uploads/2014/06/io56-300x225.jpg 300w, /wp-content/uploads/2014/06/io56-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
一つのアプリケーションを使って説明します。codewalksは散歩の記録をするアプリです。散歩にいってコメントをシェアするアプリですが、これは情報をクラウドにデータを入れる必要があります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io57.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io57.jpg" alt="io57" width="1012" height="759" class="alignnone size-full wp-image-7553" srcset="/wp-content/uploads/2014/06/io57.jpg 640w, /wp-content/uploads/2014/06/io57-300x225.jpg 300w, /wp-content/uploads/2014/06/io57-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
デバッグのために、ブレークポイントを設定することもできます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io58.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io58.jpg" alt="io58" width="1012" height="759" class="alignnone size-full wp-image-7554" srcset="/wp-content/uploads/2014/06/io58.jpg 640w, /wp-content/uploads/2014/06/io58-300x225.jpg 300w, /wp-content/uploads/2014/06/io58-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
クラウドトレーシングという機能では、すべてのアプリケーションにおいて、どれだけ時間がかかったか、というのを表示してくれます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io59.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io59.jpg" alt="io59" width="1012" height="759" class="alignnone size-full wp-image-7555" srcset="/wp-content/uploads/2014/06/io59.jpg 640w, /wp-content/uploads/2014/06/io59-300x225.jpg 300w, /wp-content/uploads/2014/06/io59-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
最後はクラウドモニタリングです。これによりインフラのモニタリングをできます。例えば、どのようなサービスを利用しているかを確認できます。また数十のOpenSourceのサービスをモニタできます。例えば、こちらではRedisを確認しています。</p>

<p><img src="https://lh6.googleusercontent.com/-izqbKOhHodg/U6sScIpuLmI/AAAAAAAADoU/F9AZjDPpMI0/w1012-h1500/1566E182-4EE3-40AC-A5E7-BE07FDE35382.JPG" alt="4つ" />
いままで見てきたのは4つの機能であり、それぞれはCloud Save、Cloud Debugger、Cloud Trace、Cloud Monitoringができるようになりました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io61.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io61.jpg" alt="io61" width="1012" height="759" class="alignnone size-full wp-image-7557" srcset="/wp-content/uploads/2014/06/io61.jpg 640w, /wp-content/uploads/2014/06/io61-300x225.jpg 300w, /wp-content/uploads/2014/06/io61-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
次はデータに注目します。データといえば、もちろん分析が必要です。
その分析において、MapReduceが最適じゃない場合もあります。特にパイプラインを使う場合です。そこで、本日はCloud Dataflowを発表します。これによりデータのパイプラインを使えます。これにより、バッチでもリアルタイムでも分析結果を確認できます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io62.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io62.jpg" alt="io62" width="1012" height="759" class="alignnone size-full wp-image-7558" srcset="/wp-content/uploads/2014/06/io62.jpg 640w, /wp-content/uploads/2014/06/io62-300x225.jpg 300w, /wp-content/uploads/2014/06/io62-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
例えば、CloudDataflowでTwitterを分析してみます。これは、並列化された高速な分析が可能です。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io63.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io63.jpg" alt="io63" width="1012" height="759" class="alignnone size-full wp-image-7559" srcset="/wp-content/uploads/2014/06/io63.jpg 640w, /wp-content/uploads/2014/06/io63-300x225.jpg 300w, /wp-content/uploads/2014/06/io63-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
ブラジルvsクロアチア戦の分析結果です。ポシティブネガティブな結果を表示しています。この例では、途中でレフリーについて物議を醸しているようです。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io64.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io64.jpg" alt="io64" width="1012" height="759" class="alignnone size-full wp-image-7560" srcset="/wp-content/uploads/2014/06/io64.jpg 640w, /wp-content/uploads/2014/06/io64-300x225.jpg 300w, /wp-content/uploads/2014/06/io64-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
また話を技術的な部分に戻して、なぜMapReduceを使うのをやめたかというと、cloudパイプラインによってこれまで大変だったことが簡単にできるようになり、スピードも早くなるからです。我々自身の問題を解決できるようになったので、MapReduceを使うのをやめたのです。</p>

<p>次はGooglePlayについて話をしましょう。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io65.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io65.jpg" alt="io65" width="1012" height="759" class="alignnone size-full wp-image-7561" srcset="/wp-content/uploads/2014/06/io65.jpg 640w, /wp-content/uploads/2014/06/io65-300x225.jpg 300w, /wp-content/uploads/2014/06/io65-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
GooglePlayで開発、配信、マネタイズについて話をします。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io66.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io66.jpg" alt="io66" width="1012" height="759" class="alignnone size-full wp-image-7562" srcset="/wp-content/uploads/2014/06/io66.jpg 640w, /wp-content/uploads/2014/06/io66-300x225.jpg 300w, /wp-content/uploads/2014/06/io66-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
まず開発におけるテストです。テストは大変ですよね。appurifyはもっとも洗練されたテストです。appurifyにより、iOSでもAndroidでも活用できるテストが利用できます。また、特定の環境も擬似できます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io67.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io67.jpg" alt="io67" width="1012" height="759" class="alignnone size-full wp-image-7563" srcset="/wp-content/uploads/2014/06/io67.jpg 640w, /wp-content/uploads/2014/06/io67-300x225.jpg 300w, /wp-content/uploads/2014/06/io67-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
次にGoogleFitPlatformを紹介します。GoogleFitがない時代は、専用アプリを使う必要があり、その提供形式はサイロ型になっていました。GoogleFitでは統合した形で、包括的なアプリを活用できます。例えば、ユーザにはより良いレコメンデーションを提供します。具体的には、アディダスやナイキがGoogleFitのエコシステムに参加しています。このSDKはあと数週間で利用可能になります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io68.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io68.jpg" alt="io68" width="1012" height="759" class="alignnone size-full wp-image-7564" srcset="/wp-content/uploads/2014/06/io68.jpg 640w, /wp-content/uploads/2014/06/io68-300x225.jpg 300w, /wp-content/uploads/2014/06/io68-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
次は配信です。クロスプラットフォームのサービスとして、これまで、Google Play Gameを提供してきました。Google Play Gameも強化されます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io69.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io69.jpg" alt="io69" width="1012" height="759" class="alignnone size-full wp-image-7565" srcset="/wp-content/uploads/2014/06/io69.jpg 640w, /wp-content/uploads/2014/06/io69-300x225.jpg 300w, /wp-content/uploads/2014/06/io69-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
例えば、Game Profileにより、自分のアイデンティティをクラウドに保存でき、それをゲームで活用できます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io70.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io70.jpg" alt="io70" width="1012" height="759" class="alignnone size-full wp-image-7566" srcset="/wp-content/uploads/2014/06/io70.jpg 640w, /wp-content/uploads/2014/06/io70-300x225.jpg 300w, /wp-content/uploads/2014/06/io70-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
次はマネタイズです。よくある方法はキャリアにお金を払う方法です。実は今25ヶ国で利用できます。アプリケーションやゲームやムービを、携帯電話の請求書に載せて払えます。これによりユーザに請求を簡単にできます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io71.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io71.jpg" alt="io71" width="1012" height="759" class="alignnone size-full wp-image-7567" srcset="/wp-content/uploads/2014/06/io71.jpg 640w, /wp-content/uploads/2014/06/io71-300x225.jpg 300w, /wp-content/uploads/2014/06/io71-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
実際に前回のI/Oから50億ドルをユーザが支払っています。</p>

<p>次はお待ちかねのガジェットを見てみましょうか。（編集部補足：参加者へのお土産コーナーです）</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2014/06/io72.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io72.jpg" alt="io72" width="1012" height="759" class="alignnone size-full wp-image-7568" srcset="/wp-content/uploads/2014/06/io72.jpg 640w, /wp-content/uploads/2014/06/io72-300x225.jpg 300w, /wp-content/uploads/2014/06/io72-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
カードボードや
<a href="https://html5experts.jp/wp-content/uploads/2014/06/io73.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io73.jpg" alt="io73" width="1012" height="759" class="alignnone size-full wp-image-7569" srcset="/wp-content/uploads/2014/06/io73.jpg 640w, /wp-content/uploads/2014/06/io73-300x225.jpg 300w, /wp-content/uploads/2014/06/io73-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
や
<a href="https://html5experts.jp/wp-content/uploads/2014/06/io74.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2014/06/io74.jpg" alt="io74" width="1012" height="759" class="alignnone size-full wp-image-7570" srcset="/wp-content/uploads/2014/06/io74.jpg 640w, /wp-content/uploads/2014/06/io74-300x225.jpg 300w, /wp-content/uploads/2014/06/io74-207x155.jpg 207w" sizes="(max-width: 1012px) 100vw, 1012px" /></a>
を会場の皆様にはプレゼントいたします。</p>

<p>これでキーノートは終わりです。参加してくれてどうもありがとう！</p>
]]></content:encoded>
		
		<series:name><![CDATA[Google I/O 2014 特集]]></series:name>
	</item>
		<item>
		<title>【予告】Google I/O 2014 キーノート ライブレポート</title>
		<link>/iwase/7343/</link>
		<pubDate>Wed, 25 Jun 2014 00:00:59 +0000</pubDate>
		<dc:creator><![CDATA[岩瀬 義昌]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Google I/O 2014]]></category>

		<guid isPermaLink="false">/?p=7343</guid>
		<description><![CDATA[連載： Google I/O 2014 特集 (1)Googleが主催する開発者イベントである Google I/O 2014 が、日本時間の6/26(木) 午前1時の基調講演を皮切りに始まります！HTML5 Exper...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/google-io-2014-2/" class="series-191" title="Google I/O 2014 特集" data-wpel-link="internal">Google I/O 2014 特集</a> (1)</div><p>Googleが主催する開発者イベントである Google I/O 2014 が、日本時間の6/26(木) 午前1時の基調講演を皮切りに始まります！HTML5 Experts.jpでは、現地で取材中のエキスパート・編集部と連携し、ライブレポート形式にて読者の皆様に最新情報をお届けいたします！</p>

<p><strong><a href="https://html5experts.jp/iwase/7369/" title="Google I/O 2014 キーノート ライブレポート" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ライブレポートはこちらから！</a></strong></p>

<p>1時よりキーノートがはじまりますが、まずはその前に会場画像をお届けいたします。</p>

<p>朝食会場です。
<img src="https://lh3.googleusercontent.com/-UpxINdfpLhc/U6rpgklyc8I/AAAAAAAADa4/Agggi7_HPKc/w1012-h1500/A07BC74C-8E89-41EA-B686-A9965E992FBA.JPG" alt="朝食会場" /></p>

<p>そして朝食画像です。
<img src="https://lh6.googleusercontent.com/-5mjFIZW4Ic8/U6rpXfCyovI/AAAAAAAADaw/NfQynWDIikc/w1012-h1500/22AA160B-277D-4975-9506-4E8594ACFE0C.JPG" alt="朝食画像" width="80%" height="80%" /></p>
]]></content:encoded>
		
		<series:name><![CDATA[Google I/O 2014 特集]]></series:name>
	</item>
	</channel>
</rss>
