<?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>Android &#8211; HTML5Experts.jp</title>
	<atom:link href="/tag/android/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>DMMも参入！競合ひしめくライブ配信アプリ「LIVEcommune」の開発秘話を聞いてきた！</title>
		<link>/miyuki-baba/24799/</link>
		<pubDate>Tue, 19 Dec 2017 01:06:51 +0000</pubDate>
		<dc:creator><![CDATA[馬場 美由紀]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Assault]]></category>
		<category><![CDATA[DMM.com]]></category>
		<category><![CDATA[LIVEcommune]]></category>
		<category><![CDATA[iOS]]></category>

		<guid isPermaLink="false">/?p=24799</guid>
		<description><![CDATA[DMMが9月28日にサービス開始したライブ配信アプリ「LIVEcommune（ライブコミューン）」。ライブを見ながらチャット感覚でコメントやプレゼントを送ったり、リアルタイムで配信者や他のユーザーと盛り上がることができま...]]></description>
				<content:encoded><![CDATA[<p>DMMが9月28日にサービス開始したライブ配信アプリ「<a href="https://livecommune.dmm.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">LIVEcommune（ライブコミューン）</a>」。ライブを見ながらチャット感覚でコメントやプレゼントを送ったり、リアルタイムで配信者や他のユーザーと盛り上がることができます。</p>

<p>今回はこのライブ配信アプリ「LIVEcommune」の開発チームにどんな技術や体制で開発しているのか、HTML5 Experts.jp白石俊平編集長が直撃インタビューしてきました！</p>

<p><img src="/wp-content/uploads/2017/12/DSC05779.jpg" alt="" width="640" height="401" class="alignnone size-full wp-image-24802" srcset="/wp-content/uploads/2017/12/DSC05779.jpg 640w, /wp-content/uploads/2017/12/DSC05779-300x188.jpg 300w, /wp-content/uploads/2017/12/DSC05779-207x130.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<h2>DMMが映像配信のノウハウを活かしたライブ配信アプリ「LIVEcommune」をリリース！</h2>

<p><strong>白石</strong>：まずは、「LIVEcommune」がどのようなアプリなのか教えてください。</p>

<p><strong>植田</strong>：今回開発したアプリ「<a href="https://livecommune.dmm.com/" rel="noopener follow external noreferrer" target="_blank" data-wpel-link="external">LIVEcommune</a>」は、配信者と視聴者を繋ぐ生配信アプリです。配信者をプレゼントで応援したり、嬉しいことや面白いことを「LIVEcommune」を通じて共有できます！一般ユーザーがスマホアプリのカメラで配信し、それをスマホユーザーが見てチャットなどでコミュニケーションをとって楽しむライブ配信アプリです。さらに、オンライン上で盛り上がっていただくスタンプ・アイテムを提供しています。</p>

<p>ライブ配信アプリはもうすでにレッドオーシャンになっており、日本だけでなく、中国をはじめるとするアジアでも盛り上がっている市場です。「LIVEcommune」はスピード感を持ってまずはユーザにとって絶対に必要な基本機能を厳選して開発を行いました。戦略的な機能はこれから実装をしていくといったところですが、動画広告やコンテンツ配信など各社マネタイズに工夫しているようです。</p>

<p><img src="/wp-content/uploads/2017/12/DSC05593.jpg" alt="" width="640" height="427" class="alignnone size-full wp-image-24865" srcset="/wp-content/uploads/2017/12/DSC05593.jpg 640w, /wp-content/uploads/2017/12/DSC05593-300x200.jpg 300w, /wp-content/uploads/2017/12/DSC05593-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /><br><span style="font-size: 85%;">▲<strong>株式会社DMM.comラボ 植田隼人さん /「LIVEcommune」の開発リーダー、システムの取りまとめをしている</strong></span></p>

<p><strong>白石</strong>：この開発には何人くらい携わっているんですか？</p>

<p><strong>植田</strong>：開発時はエンジニア、デザイナー、ディレクターなど、事業推進責任者含めると最大20人でした。今は10人ちょっとくらい。メンバー構成としてはリーダー、開発メンバー、サーバーサイド、iOSエンジニア、Androidエンジニア、ディレクター、デザイナーですね。</p>

<p><strong>山本</strong>：iOSはXcodeと、当時の最新であるSwift 3.1で開発しました。あと、MVVMというアーキテクチャを取り入れて、RxSwiftというデータバインディングできるライブラリを使いました。RxSwiftはデータのやりとりから、コントローラーからモデルの間にビューモデルがあって、データのやり取りを簡単にすることができるライブラリです。</p>

<p><img src="/wp-content/uploads/2017/12/DSC05622.jpg" alt="" width="640" height="427" class="alignnone size-full wp-image-24870" srcset="/wp-content/uploads/2017/12/DSC05622.jpg 640w, /wp-content/uploads/2017/12/DSC05622-300x200.jpg 300w, /wp-content/uploads/2017/12/DSC05622-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /><br><span style="font-size: 90%;">▲<strong>株式会社DMM.comラボ 山本修平さん / 「LIVEcommune」ユニットリーダー、iOSアプリエンジニアを務める</strong></span></p>

<p><strong>杉野</strong>：僕がエンジニアチームと大きく関わったのは、ぬるぬる動くスタンプのアニメーションのところです。はじめの要求としては3～4カ月くらいでiOS、Android、Webに書き出せるものを作ってほしいという要望もあり、デザイナーだけで完結できるAirbnbが出したライブラリでLottieというのを使いました。</p>

<p>After EffectsからiOS、Android、Webにそのまま反映できるので、ぬるぬる動くアニメーションが実現できました。データはJSON形式にしてアプリの方に送り、アニメを再生するのはRottyを使ってiOS、Androidに吐き出しています。Web版はこれから開発予定です。新しいことに挑戦したいという気持ちもあって、楽しかったですね。</p>

<p><img src="/wp-content/uploads/2017/12/DSC05656.jpg" alt="" width="640" height="427" class="alignnone size-full wp-image-24872" srcset="/wp-content/uploads/2017/12/DSC05656.jpg 640w, /wp-content/uploads/2017/12/DSC05656-300x200.jpg 300w, /wp-content/uploads/2017/12/DSC05656-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /><br><span style="font-size: 90%;">▲<strong>株式会社DMM.comラボ 杉野さん /「LIVEcommune」のUIデザインとコンセプトメイキング、技術選定を担当</strong></span></p>

<h2>ロゴが変化するデザイン、ダイナミック・アイデンティティにチャレンジ</h2>

<p><strong>白石</strong>：デザインやロゴはどうでしたか？</p>

<p><strong>杉野</strong>：今回良かったのは開発スタートしたときに、コンセプトやどういうアプリにしようというのがなかったんですね。搭載する機能だけが決まっていた。でも、コンセプトがあった方が機能を作る上での方向性も決めやすいと思ったので、デザインはコンセプトメイキングから入りました。こちらも開発と並行だったけど楽しかった。</p>

<p>コンセプトは「いつでもどこでも一体感を共有」「アプリを開くと新しい発見」「リアルタイムコミュニケーション」。この3つをロゴに落とし込みました。communeの語源は、親しく交わるとかコミュニティ、コミュニケーションからきています。</p>

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

<p><strong>白石</strong>：丸くもこもこしているところがユーザーが交わっているところなんですね。</p>

<p><strong>杉野</strong>：ライブアプリなので、再生を想起させるものを作りました。決めるのに2カ月くらいかかりました(笑)。イベントやメディアによってロゴの形や色が変化するダイナミック・アイデンティティという新しい概念も、これから取り入れようとしています。</p>

<p><img src="/wp-content/uploads/2017/12/DSC05666.jpg" alt="" width="640" height="427" class="alignnone size-full wp-image-24909" srcset="/wp-content/uploads/2017/12/DSC05666.jpg 640w, /wp-content/uploads/2017/12/DSC05666-300x200.jpg 300w, /wp-content/uploads/2017/12/DSC05666-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /><br><span style="font-size: 80%;">▲<strong>ダイナミックアイデンティティ以外にもロゴの別案(パターン)も複数案出し、検討していったとのこと</strong></span></p>

<h2>WebのフレームワークはLaravel、データベースはAmazon Aurora、KVSはRedis</h2>

<p><strong>中里</strong>：僕はアプリの中でWebViewを使っているところや、API周りを担当しました。</p>

<p>アプリの中でユーザーが貯めたポイントを現金やiTunesカードなどの景品と交換できるのですが、そのユーザー認証や銀行口座などの入力、景品交換をする一連のページをWebViewを使って開発しています。</p>

<p><img src="/wp-content/uploads/2017/12/DSC05707.jpg" alt="" width="640" height="427" class="alignnone size-full wp-image-24879" srcset="/wp-content/uploads/2017/12/DSC05707.jpg 640w, /wp-content/uploads/2017/12/DSC05707-300x200.jpg 300w, /wp-content/uploads/2017/12/DSC05707-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /><br><span style="font-size: 90%;">▲<strong>株式会社DMM.comラボ 中里勇輝さん /「LIVEcommune」Web/APIの開発を担当</strong></span></p>

<p><strong>白石</strong>：なぜ、WebViewで開発しようと思ったんですか？</p>

<p><strong>中里</strong>：今後Web版が出たときに共有できるし、DMMの共通機能も使いやすかったからですね。</p>

<p><strong>白石</strong>：APIはどの辺を使ったんでしょう。</p>

<p><strong>中里</strong>：最初にフレームワークどうしようという話になったときに候補に挙がったのが、Laravel, CakePHP, FuelPHP。どれを採用してもチームの中で全員が使ったことがあるのがなかったし、どうせ学習コストがかかるのなら海外ではメジャーなフレームワークを使ってみたい。ということで、更新頻度も多く、海外ではメジャーだったのでLaravelを選びました。</p>

<p><strong>白石</strong>：基本的にはPHPを使っているとのことですが、PHP7になって結構変わりました？</p>

<p><strong>中里</strong>：メソッドを作る時に、引数などの型を完全に指定できるようになりましたね。指定したものと違うクラスが来たら、エラーになります。</p>

<p>あと、今回はAWS上に誰でも用意されたコマンドを打てば簡単に開発環境が作れる仕組みを作りました。これまで人によってバージョンが違うと動かなかったりエラーが出たりなど、ローカルで開発環境を作ってはまることが多かったんですが、今回はそういうことがなく、全員同じ開発環境がコマンド１発で作ることができました。</p>

<p><img src="/wp-content/uploads/2017/12/DSC05717.jpg" alt="" width="640" height="421" class="alignnone size-full wp-image-24883" srcset="/wp-content/uploads/2017/12/DSC05717.jpg 640w, /wp-content/uploads/2017/12/DSC05717-300x197.jpg 300w, /wp-content/uploads/2017/12/DSC05717-207x136.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><strong>白石</strong>：どういうコマンドなんですか？</p>

<p><strong>中里</strong>：AWS上でインスタンスを作って、ansibleでPHPやMySQLをインストールして設定するとAWS上に個人環境ができるというものです。ローカルでソースコードを書いて、シンクさせます。元を変えたら全員の環境がアップデートされます。新しいメンバーが参加しても、開発環境の準備で時間を取られることがなくなりました。</p>

<p><strong>白石</strong>：反映が遅いということはなかった？</p>

<p><strong>中里</strong>：ないですね。すぐに反映されます。</p>

<p><strong>白石</strong>：データベースは何を使ってるんですか？</p>

<p><strong>中里</strong>：AWSのAmazon Auroraと、KVSはRedisを利用しています。</p>

<h2>データ通信のサーバーはSocket.IOで実装、言語はGoを採用</h2>

<p><strong>田仲</strong>：視聴中のチャットなどのデータ通信は、Socket.IOを利用しており、言語はGoを使用しています。たいていのものはSocket.IOで通信していますが、認証やセキュリティ的要件が必要なものは一回APIサーバーを挟んで通信していますね。</p>

<p><img src="/wp-content/uploads/2017/12/DSC05736.jpg" alt="" width="640" height="427" class="alignnone size-full wp-image-24881" srcset="/wp-content/uploads/2017/12/DSC05736.jpg 640w, /wp-content/uploads/2017/12/DSC05736-300x200.jpg 300w, /wp-content/uploads/2017/12/DSC05736-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /><br><span style="font-size: 90%;">▲<strong>株式会社DMM.comラボ 田仲祐介さん /「LIVEcommune」配信サーバー、インフラ周りを担当</strong></span></p>

<p><strong>白石</strong>：重要な方はAPIを挟むんですね。</p>

<p><strong>田仲</strong>：視聴者が画面をタップするとハートを送ることができるのですが、これらのデータの信頼性がそこまで重要でないものは速度を重視して、Socket.IOで完結させています。</p>

<p><strong>植田</strong>：ちなみに去年くらいから、プラットフォーム上で使う言語はGoを採用するようになってきました。エンジニアが使いたい言語をチームで話し合って決めているので、自由度は高いです。</p>

<h2>配信サーバーはWowzaで構築、チャット用サーバーはRedisで運用</h2>

<p><strong>白石</strong>：DMMさんがもともと自社で持っている映像配信のイメージが強いですが、そのプラットフォームを活用したのでしょうか。</p>

<p><strong>植田</strong>：そうですね。社内のインフラチームにはサーバーの基礎の構築だけお願いしました。サーバーにAPIサーバーなどはの特定の情報は持たないようにして、AMIによる構築とで構築することによってオートスケーリングを組み合わせることによって、と組み合わせて障害が起きた際の復旧をインスタンスを自動化することができました。</p>

<p>ログはAWSのElastic SearchとKibanaを使っていて、チャット用のサーバーはRedisで運用しています。</p>

<p><strong>田仲</strong>：配信サーバーの方はWowzaという製品を使って構築していて、そちらはAWSではなく、オンプレで構築しています。Wowzaは映像配信のデファクトスタンダードと言われているもので、一部モジュールの方はJavaで開発しています。</p>

<p>AWS Lambdaも少し使っているところがあるんですけど、そこはNode,Ruby,Pythonを使っています。</p>

<p><strong>白石</strong>：田仲さんはオールラウンダーですね！配信サーバーだけはオンプレなんですか？</p>

<p><strong>田仲</strong>：配信サーバーは要求されるスペックが高く、AWSで試算してみたらランニングコストがかなり高かったので、オンプレで構築しました。</p>

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

<p><strong>田仲</strong>：当初WebRTCの採用も検討したんですが、少人数のグループでの映像配信には向いていると思うのですが、不特定多数に配信するこのサービスでは負荷対策の問題がありました。現在は、RTMPとHLSという技術を組み合わせて使用しています。</p>

<p>配信サーバーのリリース時は、使われていない配信サーバーから順に停止して入れ替えていくんですが、たいていの場合は人力で1台ずつリリースしていると聞きます。そこを自動化したことで、人的なコストとリリースにかかる時間を抑えることができました。</p>

<p><strong>白石</strong>：配信はロードバランシングできるんですか？</p>

<p><strong>田仲</strong>：視聴という意味では、配信サーバーからHLS形式でクラウドフロンドのCDNをはさんでます。配信のインプットはロードバランサーをはさむのは困難なことと、一度に大量のアクセスが来るものでもないので、振分ロジックをAPIサーバーの方で実装しました。それにより、配信負荷が均等になるように振分されます。</p>

<p><strong>白石</strong>：大量のトラフィックが発生する視聴側はHLSで負荷分散をするわけですね。</p>

<h2>ユーザー数に合わせたサーバーや開発体制の構築を</h2>

<p><strong>白石</strong>：最後に、今後サービスや開発の課題でチャレンジしていきたいことを聞かせてください。</p>

<p><strong>田仲</strong>：当初予定していた視聴者数などの要件定義に耐えられるような構築したのですが、サービス開始直後ということもあり、まだそこまで利用されていない状態です。今後は利用状況に応じてスケーリングすることにより、ランニングコストの調整をしていきたいなと考えています。</p>

<p><strong>植田</strong>：今回のプロジェクトでは、開発手法としてスクラム開発を取り入れました。社内でスクラム開発が増えてきているという背景もありますが、一番の理由は定期的に成果物を確認し合い、手戻りをなくしたいからです。</p>

<p>スクラム開発をやるにあたって、本やネットで調べて手探りでやってみましたが、わからないことがたくさんあったんですね。開発が一旦落ち着いてきたので、今度はもっと正規なスクラム開発をやってみようと思っています。</p>

<p><strong>白石</strong>：ちなみにプロジェクト管理のツールは何を使ってるんですか？</p>

<p><strong>杉野</strong>：JIRAを使っています。ドキュメント管理はConfluenceやGoogle Docsですね。あとはホワイトボードも活用しています。誰がどんな業務を抱えているのか、目で見てわかりやすいので。</p>

<p><strong>山本</strong>：機能ドリブンで開発をしてきましたが、リリースしてわかったことや、自分たちが実際にユーザー側に立って使って感じたことを改善していきたいですね。</p>

<p><strong>白石</strong>：DMMさんはエンジニアがチームで話し合って技術剪定をしているので、新しい技術にもチャレンジしやすい環境があって楽しそうですね。今日は興味深い話をいろいろ語っていただき、ありがとうございました！</p>

<p><img src="/wp-content/uploads/2017/12/DSC05798.jpg" alt="" width="640" height="420" class="alignnone size-full wp-image-24886" srcset="/wp-content/uploads/2017/12/DSC05798.jpg 640w, /wp-content/uploads/2017/12/DSC05798-300x197.jpg 300w, /wp-content/uploads/2017/12/DSC05798-207x136.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>
]]></content:encoded>
			</item>
		<item>
		<title>Google Assistant、Android N、Daydream、Firebase…Google I/O 基調講演で発表された最新機能を一挙紹介！</title>
		<link>/sakkuru/19832/</link>
		<pubDate>Wed, 06 Jul 2016 02:04:12 +0000</pubDate>
		<dc:creator><![CDATA[本間 咲来]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Firebase]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[I/0 2016]]></category>

		<guid isPermaLink="false">/?p=19832</guid>
		<description><![CDATA[2016年5月18～20日の3日間、Googleの本社ビルのすぐそばにあるショアライン・アンフィシアターでGoogle I/O 2016が開催されました。 例年5千名程の参加者から大幅に増えて、今年は実に約7千人の人々が...]]></description>
				<content:encoded><![CDATA[<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/1706738f-6ac5-6eb3-6ac1-58f6139496ea.jpeg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/1706738f-6ac5-6eb3-6ac1-58f6139496ea-640x480.jpeg" alt="1706738f-6ac5-6eb3-6ac1-58f6139496ea" width="640" height="480" class="alignnone size-large wp-image-19883" srcset="/wp-content/uploads/2016/06/1706738f-6ac5-6eb3-6ac1-58f6139496ea.jpeg 640w, /wp-content/uploads/2016/06/1706738f-6ac5-6eb3-6ac1-58f6139496ea-300x225.jpeg 300w, /wp-content/uploads/2016/06/1706738f-6ac5-6eb3-6ac1-58f6139496ea-207x155.jpeg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>2016年5月18～20日の3日間、Googleの本社ビルのすぐそばにあるショアライン・アンフィシアターでGoogle I/O 2016が開催されました。</p>

<p>例年5千名程の参加者から大幅に増えて、今年は実に約7千人の人々が参加していたようです。屋外イベント施設ということもあり、まるで野外フェスのような雰囲気でした。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/ca24a108-32c6-a0a8-8ada-9b041e73fb51.jpeg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/ca24a108-32c6-a0a8-8ada-9b041e73fb51-640x215.jpeg" alt="ca24a108-32c6-a0a8-8ada-9b041e73fb51" width="640" height="215" class="alignnone size-large wp-image-19884" srcset="/wp-content/uploads/2016/06/ca24a108-32c6-a0a8-8ada-9b041e73fb51.jpeg 640w, /wp-content/uploads/2016/06/ca24a108-32c6-a0a8-8ada-9b041e73fb51-300x101.jpeg 300w, /wp-content/uploads/2016/06/ca24a108-32c6-a0a8-8ada-9b041e73fb51-207x70.jpeg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>本レポートではGoogle I/O最初のセッションである、基調講演の内容について紹介します。</p>

<h2>Google Assistant</h2>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/4e8f5657-c3d5-2a6f-e88e-4697c0419a44.jpeg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/4e8f5657-c3d5-2a6f-e88e-4697c0419a44-640x480.jpeg" alt="4e8f5657-c3d5-2a6f-e88e-4697c0419a44" width="640" height="480" class="alignnone size-large wp-image-19880" srcset="/wp-content/uploads/2016/06/4e8f5657-c3d5-2a6f-e88e-4697c0419a44.jpeg 640w, /wp-content/uploads/2016/06/4e8f5657-c3d5-2a6f-e88e-4697c0419a44-300x225.jpeg 300w, /wp-content/uploads/2016/06/4e8f5657-c3d5-2a6f-e88e-4697c0419a44-207x155.jpeg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>まず最初にスンダー・ピチャイ氏に紹介されたのが、Google Assistantです。</p>

<p>Google Assistantは新しい対話型のボイスアシスタント機能です。Google製のアシスタント機能といえばGoogle Nowがありますが、これを進化させ、対話型のシステムとしたのがGoogle Assistantのようです。コンテキストを認識し、ユーザーが質問すると現在地や直近のクエリーなどに応じて、適切に答えを返します。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/IMG_6458.jpg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/IMG_6458-640x480.jpg" alt="IMG_6458" width="640" height="480" class="alignnone size-large wp-image-19908" srcset="/wp-content/uploads/2016/06/IMG_6458.jpg 640w, /wp-content/uploads/2016/06/IMG_6458-300x225.jpg 300w, /wp-content/uploads/2016/06/IMG_6458-207x155.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>例えば、有名な建築物の前で「これを設計したのは誰？」と質問すると、その場所の情報に応じて回答してくれます。</p>

<p>デモでは、ユーザーが「今夜やってる映画は？」と聞くと、Google Assistantは近くの映画館で上映しているタイトルをいくつか提示し、さらにユーザーが「子どもと一緒に行きたい」と言うと、子どもと一緒に鑑賞するのにふさわしいと思われる映画を提案していました。さらに「4枚チケットが必要ですか？」とGoogle Assistantが尋ねてくるので、ユーザが映画のタイトルや枚数を答えると、自動で予約し、チケットの情報を提示する、というデモが行われました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-19.07.57.png" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-19.07.57-640x437.png" alt="Screen Shot 2016-06-28 at 19.07.57" width="640" height="437" class="alignnone size-large wp-image-19903" srcset="/wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-19.07.57.png 640w, /wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-19.07.57-300x205.png 300w, /wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-19.07.57-207x141.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>このように、『提案をしてくれる』というのがGoogle Assistantの大きな特徴です。Google Assistantは基調講演の中で発表されたGoogle HomeやGoogle Alloなどの製品にも組み込まれるようです。</p>

<h2>Google Home</h2>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/2e4a891d-0d45-9b7c-447a-7cff49acf55b.jpeg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/2e4a891d-0d45-9b7c-447a-7cff49acf55b-640x480.jpeg" alt="2e4a891d-0d45-9b7c-447a-7cff49acf55b" width="640" height="480" class="alignnone size-large wp-image-19879" srcset="/wp-content/uploads/2016/06/2e4a891d-0d45-9b7c-447a-7cff49acf55b.jpeg 640w, /wp-content/uploads/2016/06/2e4a891d-0d45-9b7c-447a-7cff49acf55b-300x225.jpeg 300w, /wp-content/uploads/2016/06/2e4a891d-0d45-9b7c-447a-7cff49acf55b-207x155.jpeg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>続いてGoogle Assistantの機能を組み込んだGoogle Homeという製品が紹介されました。</p>

<p>Google Assistantのボイスアシスタント機能の他にWifiスピーカーとしての機能もあり、クラウドから音楽のストリーミング再生もできるようです。プレイリストやアルバムへのアクセスもボイスコントロールでき、Google Castを通して、AndroidやiOSのデバイスから音楽を送信することもできるとのことでした。</p>

<p>Amazon Echoと似たような製品のようです。大きさは手のひらに乗るくらいの小さなデバイスでした。今年の後半から使えるようになるとのことです。</p>

<h2>Google Allo</h2>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-18.44.37.png" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-18.44.37-640x364.png" alt="Screen Shot 2016-06-28 at 18.44.37" width="640" height="364" class="alignnone size-large wp-image-19894" srcset="/wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-18.44.37.png 640w, /wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-18.44.37-300x171.png 300w, /wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-18.44.37-207x118.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>次にAlloというモバイル用のメッセージングアプリが紹介されました。見た目はLineやFacebook messenger等と大差なく見えます。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/c6e3abf4-b7ae-efbb-7e80-867811a417c5.jpeg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/c6e3abf4-b7ae-efbb-7e80-867811a417c5-640x480.jpeg" alt="c6e3abf4-b7ae-efbb-7e80-867811a417c5" width="640" height="480" class="alignnone size-large wp-image-19878" srcset="/wp-content/uploads/2016/06/c6e3abf4-b7ae-efbb-7e80-867811a417c5.jpeg 640w, /wp-content/uploads/2016/06/c6e3abf4-b7ae-efbb-7e80-867811a417c5-300x225.jpeg 300w, /wp-content/uploads/2016/06/c6e3abf4-b7ae-efbb-7e80-867811a417c5-207x155.jpeg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>文字や絵文字の大きさを自由に変えることができることが紹介されました。地味だが良い機能、ということで会場が少し盛り上がります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/47f7f868-86d2-5fa4-fb9f-1593fa2db0dd.jpeg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/47f7f868-86d2-5fa4-fb9f-1593fa2db0dd-640x480.jpeg" alt="47f7f868-86d2-5fa4-fb9f-1593fa2db0dd" width="640" height="480" class="alignnone size-large wp-image-19872" srcset="/wp-content/uploads/2016/06/47f7f868-86d2-5fa4-fb9f-1593fa2db0dd.jpeg 640w, /wp-content/uploads/2016/06/47f7f868-86d2-5fa4-fb9f-1593fa2db0dd-300x225.jpeg 300w, /wp-content/uploads/2016/06/47f7f868-86d2-5fa4-fb9f-1593fa2db0dd-207x155.jpeg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>しかし当然のことながら、ただのメッセージングアプリではありません。このAlloにはGoogle Assistantの機能が組み込まれており、なんとチャットのテキストや画像を解析して、返信用のテキストを複数提案してくれます。</p>

<p>例えば「Dinner later?」とチャットの相手が送ると、「I&#8217;m in!」「I&#8217;m busy」という返信用のメッセージが表示されます。ユーザは選んでクリックするだけでメッセージを送信することができます。</p>

<p>またチャット内の画像も解析されるので、誰かが犬の写真をアップロードすると、犬種も識別された上で、「Cude dog!」「Aww!」「Nice bernese mountain dog」といった返信メッセージが提示されます。</p>

<p>またGoogle Asisstantのbotががチャットの中に存在するようなかたちになっており、店のお店のサジェストや予約、検索等も対話形式でチャットの中で行うことができるようです。</p>

<p>さらにChromeのようにIncognito Modeが搭載されており、エンドツーエンドでの暗号化やNotificationの制御、メッセージの期限などを設定できるようになっているとのことです。</p>

<h2>Google Duo</h2>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/3651367c-53da-41c7-08ff-33b848f3657e.jpeg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/3651367c-53da-41c7-08ff-33b848f3657e-640x480.jpeg" alt="3651367c-53da-41c7-08ff-33b848f3657e" width="640" height="480" class="alignnone size-large wp-image-19874" srcset="/wp-content/uploads/2016/06/3651367c-53da-41c7-08ff-33b848f3657e.jpeg 640w, /wp-content/uploads/2016/06/3651367c-53da-41c7-08ff-33b848f3657e-300x225.jpeg 300w, /wp-content/uploads/2016/06/3651367c-53da-41c7-08ff-33b848f3657e-207x155.jpeg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>続いてDuoというビデオチャットアプリの紹介です。</p>

<p>ビデオチャットを実現するアプリは数多く世に出ていますが、このDuoにはビデオコールをかけられた側は、応答する前にそのビデオストリームを見ることができるという特徴があるようです。この機能は『Knock Knock』と呼ばれているそうで、これにより着呼側は誰が、どんな状況でコールしてきたのかを知ることができます。</p>

<p>コール先は電話番号に紐づくとのことで、AppleのFaceTimeの競合として考えられそうです。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/9cf474f9-02e2-7500-3c8d-b5b976175073.png" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/9cf474f9-02e2-7500-3c8d-b5b976175073-640x480.png" alt="9cf474f9-02e2-7500-3c8d-b5b976175073" width="640" height="480" class="alignnone size-large wp-image-19871" srcset="/wp-content/uploads/2016/06/9cf474f9-02e2-7500-3c8d-b5b976175073.png 640w, /wp-content/uploads/2016/06/9cf474f9-02e2-7500-3c8d-b5b976175073-300x225.png 300w, /wp-content/uploads/2016/06/9cf474f9-02e2-7500-3c8d-b5b976175073-207x155.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>DuoはWebRTCとQUICを使用したWebプロトコルベースのアプリと紹介されました。</p>

<p>AlloとDuoはAndroidとiOSで2016年夏頃リリースされる予定で、Android版では事前登録が開始されています。</p>

<ul>
<li><a href="https://play.google.com/store/apps/details?id=com.google.android.apps.fireball" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Google Allo</a></li>
<li><a href="https://play.google.com/store/apps/details?id=com.google.android.apps.tachyon" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Google Duo</a></li>
</ul>

<h2>Android N</h2>

<p>続いてAndroid Nについての発表が行われました。</p>

<p>GoogleがAndroidの開発を行うようになってから、10年が経過したようです。今やAndroidはスマートフォンだけではなく、Android Wear、Android TV、Android Autoなど、多くのプラットフォームが登場しています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/a34e8828-9bcd-5887-8f9f-649ee8b38bc2.jpeg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/a34e8828-9bcd-5887-8f9f-649ee8b38bc2-640x480.jpeg" alt="a34e8828-9bcd-5887-8f9f-649ee8b38bc2" width="640" height="480" class="alignnone size-large wp-image-19876" srcset="/wp-content/uploads/2016/06/a34e8828-9bcd-5887-8f9f-649ee8b38bc2.jpeg 640w, /wp-content/uploads/2016/06/a34e8828-9bcd-5887-8f9f-649ee8b38bc2-300x225.jpeg 300w, /wp-content/uploads/2016/06/a34e8828-9bcd-5887-8f9f-649ee8b38bc2-207x155.jpeg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>Androidの最新バージョンであるAndroid Nは現在プレビュー版(6/28現在Developer Preview 4)が公開中です。<a href="https://www.android.com/intl/ja_jp/versions/name-n/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">こちら</a>で名前の募集も行われていましたが、現在は終了し近日中に公開されるようです。</p>

<p>Android Nでは、新しいOSのアップデートがあると、自動的にソフトウェアをバッググラウンドでダウンロードし、次回Androidの電源を入れた際にシームレスで新しいソフトウェアイメージに切り替わるようです。</p>

<p>またマルチウィンドウが正式に採用され、スマートフォンでYoutubeを見ながら他のタスクを行ったり、Android TVでは映像を見ながら検索などの他の作業を行うことができるようになります。</p>

<p>現在はAndroid NのDeveloper Preview 4がリリースされており、Nexus 6やNexus 5X等の一部の対応した機種であれば、Android Nを試用することができます。(<a href="http://android-developers.blogspot.jp/2016/06/android-n-apis-are-now-final.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Android Developers Blog</a>)</p>

<h2>Daydream</h2>

<p>続いてI/O開催前から噂が絶えなかったVRに関する発表です。
<a href="https://html5experts.jp/wp-content/uploads/2016/06/a7ac330c-c1bc-6d81-4051-6125b966045d.jpeg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/a7ac330c-c1bc-6d81-4051-6125b966045d-640x480.jpeg" alt="a7ac330c-c1bc-6d81-4051-6125b966045d" width="640" height="480" class="alignnone size-large wp-image-19875" srcset="/wp-content/uploads/2016/06/a7ac330c-c1bc-6d81-4051-6125b966045d.jpeg 640w, /wp-content/uploads/2016/06/a7ac330c-c1bc-6d81-4051-6125b966045d-300x225.jpeg 300w, /wp-content/uploads/2016/06/a7ac330c-c1bc-6d81-4051-6125b966045d-207x155.jpeg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>Androidスマートフォンで高品質なVR体験を提供可能であるDaydreamというプラットフォームが発表されました。</p>

<p>どのようにAndroidスマートフォン上で、高品質なVR体験を可能にするのか、講演では3つの要素が挙げられていました。
まずはスマートフォン本体、次にヘッドセットコントローラのリファレンスデザイン、そしてアプリで、ぞれぞれが協調してエンドツーエンドのユーザ体験を提供するために設計されています。</p>

<p>ハイパフォーマンスセンサーやヘッドトラッキング、表示のレスポンスの速さなど、VR用に作られた仕様を満たしたスマートフォンは、Daydream-readyと呼ばれ、高いクオリティのVR体験を提供することができます。Daydream-readyなスマートフォンは、SamsungやAlcatel、Asusなどの企業から、2016年秋以降リリースされるようです。発表された中に日本の企業はありませんでした。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/334aaad1-e834-a534-12b4-63c89e6ab9f9.jpeg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/334aaad1-e834-a534-12b4-63c89e6ab9f9-640x480.jpeg" alt="334aaad1-e834-a534-12b4-63c89e6ab9f9" width="640" height="480" class="alignnone size-large wp-image-19873" srcset="/wp-content/uploads/2016/06/334aaad1-e834-a534-12b4-63c89e6ab9f9.jpeg 640w, /wp-content/uploads/2016/06/334aaad1-e834-a534-12b4-63c89e6ab9f9-300x225.jpeg 300w, /wp-content/uploads/2016/06/334aaad1-e834-a534-12b4-63c89e6ab9f9-207x155.jpeg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>リファレンスデザインとして紹介されたヘッドセットとコントローラは非常にシンプルなものでした。コントローラはボタンは少なくクリッカブルなタッチパッドがついており、スクロールやスワイプができます。オリエンテーションセンサーも内蔵しており、ユーザがどこをポインティングしているかが分かります。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-18.49.36.png" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-18.49.36-640x360.png" alt="Screen Shot 2016-06-28 at 18.49.36" width="640" height="360" class="alignnone size-large wp-image-19893" srcset="/wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-18.49.36.png 640w, /wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-18.49.36-300x169.png 300w, /wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-18.49.36-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>アプリに関しては、VR用のGoogle Playが開発されており、ユーザーがアプリを探し、購入、インストールがVR上で可能になることが発表されました。またGoogle Play MoviesやGoogle Mapsのストリートビュー、Google Photos、YouTubeもVR上で鑑賞できるようになります。</p>

<p>Daydreamが使えるようになるのは2016年秋になるとのことですが、Android NのDeveloper Previewを使用することでアプリなどの開発は今から行うことができます。</p>

<h2>Android Wear 2.0</h2>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/18168a75-4f59-d2b0-b6fc-9f86caf03b6d.jpeg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/18168a75-4f59-d2b0-b6fc-9f86caf03b6d-640x480.jpeg" alt="18168a75-4f59-d2b0-b6fc-9f86caf03b6d" width="640" height="480" class="alignnone size-large wp-image-19890" srcset="/wp-content/uploads/2016/06/18168a75-4f59-d2b0-b6fc-9f86caf03b6d.jpeg 640w, /wp-content/uploads/2016/06/18168a75-4f59-d2b0-b6fc-9f86caf03b6d-300x225.jpeg 300w, /wp-content/uploads/2016/06/18168a75-4f59-d2b0-b6fc-9f86caf03b6d-207x155.jpeg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>Android Wearは2年前のGoogle I/Oで初めて発表されましたが、今回は初めて大幅なアップデートとなるAndroid Wear 2.0が発表されました。</p>

<p>大きな変化としては、今までAndroid Wearのアプリがインターネットにアクセスするためには母艦となるAndroidやiOSスマートフォンが必要であったことに対し、Android Wear 2.0ではスタンドアロンで動作することが可能になることが挙げられます。アプリが直接BluetoothやWi-Fi、LTEなどを通してインターネットにアクセスできるようになり、ペアリングされたスマートフォンが電源を切っている場合でも、アプリは引き続きフル機能を提供できるようになります。</p>

<p>その他にもUIの刷新や、手書き入力の対応等も発表されました。</p>

<p>Android Wear 2.0はプレビュー版が<a href="https://developer.android.com/wear/preview/index.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">公開</a>されおり、秋には正式リリースとなるようです。</p>

<h2>Progressive Web AppsとAccelerated Mobile Pages</h2>

<p>基調講演も終盤に差しかかり、ここで初めて、わずかですがWebについての発表がありました。
モバイルデバイス上でWebをより快適にするための取り組みとして、Progressive Web AppsとAccelerated Mobile Pagesの2つの紹介です。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-19.01.42.png" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-19.01.42-640x351.png" alt="Screen Shot 2016-06-28 at 19.01.42" width="640" height="351" class="alignnone size-large wp-image-19900" srcset="/wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-19.01.42.png 640w, /wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-19.01.42-300x165.png 300w, /wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-19.01.42-207x114.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>Progressive Web Apps、略してPWAppsは、オフライン状態でも動作可能、エンゲージメントを高めるための通知、ホームスクリーンにアイコンを登録、といったネイティブアプリのような振る舞いを実現したWebアプリのことを指します。ChromeにはServiceWorkerをはじめとする、Progressive Web Appsを実現するための仕組みが実装されています。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-19.01.55.png" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-19.01.55-640x353.png" alt="Screen Shot 2016-06-28 at 19.01.55" width="640" height="353" class="alignnone size-large wp-image-19899" srcset="/wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-19.01.55.png 640w, /wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-19.01.55-300x165.png 300w, /wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-19.01.55-207x114.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>Accelerated Mobile Pagesは、既存のWeb標準に基づいた非常に速いモバイルWebサイトを作るための、オープンソースのプロジェクトです。</p>

<p>特に新規発表はなく、基調講演内ではわずか1分程度の紹介でしたが、Google I/O全体では多くのPWAppsやAMPのセッションが行われていました。HTML5 Experts.jpでも<a href="https://html5experts.jp/komasshu/19704/" data-wpel-link="internal">Googleが新たに提唱するProgressive Web Appsの新たな開発パターン「PRPL」とは？</a>という記事を公開していますので、そちらをご覧ください。</p>

<h2>Android Studio</h2>

<p>Android Studio 2.2 Previewが公開されたと発表がありました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-19.03.28.png" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-19.03.28-640x358.png" alt="Screen Shot 2016-06-28 at 19.03.28" width="640" height="358" class="alignnone size-large wp-image-19898" srcset="/wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-19.03.28.png 640w, /wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-19.03.28-300x168.png 300w, /wp-content/uploads/2016/06/Screen-Shot-2016-06-28-at-19.03.28-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>Android Studio 2.2では、ビルドが10倍、エミュレータも3倍速くなっているそうです。また、新しいレイアウトデザイナやAPKアナライザーが搭載されるとのことでした。</p>

<h2>Firebase</h2>

<p>続いてFirebaseの新バージョンが発表されました。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/1f7e99f1-eb19-5576-3d64-48edebab815b.jpeg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/1f7e99f1-eb19-5576-3d64-48edebab815b-640x480.jpeg" alt="1f7e99f1-eb19-5576-3d64-48edebab815b" width="640" height="480" class="alignnone size-large wp-image-19889" srcset="/wp-content/uploads/2016/06/1f7e99f1-eb19-5576-3d64-48edebab815b.jpeg 640w, /wp-content/uploads/2016/06/1f7e99f1-eb19-5576-3d64-48edebab815b-300x225.jpeg 300w, /wp-content/uploads/2016/06/1f7e99f1-eb19-5576-3d64-48edebab815b-207x155.jpeg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>FirebaseはGoogleが2014年の10月に買収したBaaSサービスです。モバイルアプリに特化した分析ツールである、Firebase Analyticsが発表されました。ユーザがアプリ内で何をしているか、ユーザがどこからきたのかなど分析することが可能です。Android AnalyticsはAndroidでもiOSも扱うことができ、無制限に無料で使用することができると発表されました。</p>

<h2>Android Instant Apps</h2>

<p><a href="https://html5experts.jp/wp-content/uploads/2016/06/adcac44d-79e3-0921-0316-3e9bf50fc99e.jpeg" data-wpel-link="internal"><img src="/wp-content/uploads/2016/06/adcac44d-79e3-0921-0316-3e9bf50fc99e-640x480.jpeg" alt="adcac44d-79e3-0921-0316-3e9bf50fc99e" width="640" height="480" class="alignnone size-large wp-image-19868" srcset="/wp-content/uploads/2016/06/adcac44d-79e3-0921-0316-3e9bf50fc99e.jpeg 640w, /wp-content/uploads/2016/06/adcac44d-79e3-0921-0316-3e9bf50fc99e-300x225.jpeg 300w, /wp-content/uploads/2016/06/adcac44d-79e3-0921-0316-3e9bf50fc99e-207x155.jpeg 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>今回の基調講演の後半で一際注目を集めたのがこのAndroid Instant Appsではないでしょうか。</p>

<p>Webアプリの場合、ユーザはリンクをクリックするだけでアプリを使用することができますが、Androidアプリはインストールを必要とするため、ユーザがそこで離脱してしまうことが多くあります。その課題を解決する一手となるのが今回発表されたAndroid Instant Appsのようです。</p>

<p>今回発表されたAndroid Instant Appsでは、AndroidアプリがWeb等のリンクからインストールレスで使えるようなるとのことです。</p>

<p>講演中のデモの中では、いくつかのAndroidアプリをURLから起動し、実際にアプリを使用できることが示されていました。
アプリの中の直近で必要になるモジュールだけをフェッチしているらしく、起動も素早く行われ、アプリを使用してからのインストールも非常にスムーズに行えるようです。</p>

<p>これにより、Androidアプリ開発者は、より多くのユーザにリーチできるようになります。AndroidアプリとWebとの親和性が高くなり、Androidアプリのユーザ体験が大きく変わる機能となるのではないでしょうか。</p>

<h2>おわりに</h2>

<p>今年はGoogleのAIの技術力を発揮した製品やサービスが多く発表されました。</p>

<p>基調講演内でWebやChromeに関する発表は非常に少なかったのですが、Google I/O全体では33ものモバイルWebに関するセッションが行われていました。</p>

<p>既に公開されている</p>

<ul>
<li><a href="https://html5experts.jp/ryoyakawai/19335/" data-wpel-link="internal">今、Webの最先端では何が起こっているのか？──最新機能目白押し！Google I/O 2016セッションレポート【前編】</a></li>
<li><a href="https://html5experts.jp/ryoyakawai/19461/" data-wpel-link="internal">Webの最先端では何が起こっているか、今Googleが取り組んでいることは？──Google I/O 2016セッションレポート【後編】</a></li>
<li><a href="https://html5experts.jp/komasshu/19704/" data-wpel-link="internal">Googleが新たに提唱するProgressive Web Appsの新たな開発パターン「PRPL」とは？</a></li>
</ul>

<p>以外にもセッションレポートを公開していく予定です。お楽しみに。</p>
]]></content:encoded>
			</item>
		<item>
		<title>SkyWay iOS/Android SDKを使って、WebRTCアプリを開発しよう</title>
		<link>/sho-y/17863/</link>
		<pubDate>Thu, 24 Dec 2015 00:00:53 +0000</pubDate>
		<dc:creator><![CDATA[山村 奨]]></dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[SkyWay]]></category>
		<category><![CDATA[WebRTC]]></category>
		<category><![CDATA[iOS]]></category>

		<guid isPermaLink="false">/?p=17863</guid>
		<description><![CDATA[連載： WebRTCプラットフォーム ”SkyWay” 入門 (5)連載5回目の今回は、12月にアップグレードされたSkyWayのiOS/Android用SDKのチュートリアルをお届けします。 iOS/Android用S...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/skyway-tutorial/" class="series-314" title="WebRTCプラットフォーム ”SkyWay” 入門" data-wpel-link="internal">WebRTCプラットフォーム ”SkyWay” 入門</a> (5)</div><p>連載5回目の今回は、12月にアップグレードされたSkyWayのiOS/Android用SDKのチュートリアルをお届けします。</p>

<p>iOS/Android用SDKを使うことで、SkyWayの特徴である「WebRTCを使ったP2P通信を簡単に実現」することができます。
また、APIもJavaScript版とほぼ同じで、JavaScript版をすでに利用されている方にも実装しやすく、JavaScript/iOS/Android間での通信もサポートしています。</p>

<p>この記事では、そんなiOS/AndroidのSDKの利用方法を、それぞれサンプルアプリのビルド方法や解説を交えながらご紹介していきます。</p>

<p>まずは、iOSのサンプルアプリのビルド方法からご紹介します。Androidのみ開発される方は読み飛ばしてください。</p>

<h2>iOSのサンプルアプリのビルド方法</h2>

<p>まず、まだSkyWayに登録されていない方は<a href="http://nttcom.github.io/skyway/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">SkyWayのサイト</a>から開発者登録を行ってください。その際の利用可能ドメインですが、ドメインをお持ちでない方は「localhost」等、適当な文字列を指定してください。</p>

<p>次に、iOS SDKをダウンロードします。<br />
iOS SDKの<a href="https://github.com/nttcom/SkyWay-iOS-SDK/releases/latest" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ダウンロードページ</a>にアクセスして下さい。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/12/ios_sdk_DL.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/12/ios_sdk_DL.png" alt="iOS SDKのダウンロード方法" width="640" height="622" class="alignnone size-full wp-image-17963" srcset="/wp-content/uploads/2015/12/ios_sdk_DL.png 640w, /wp-content/uploads/2015/12/ios_sdk_DL-300x292.png 300w, /wp-content/uploads/2015/12/ios_sdk_DL-207x201.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>ページ下部のDownloadsからダウンロードして下さい。
解凍したフォルダの中に「SkyWay.framework」というものが入っており、これがiOS SDK本体になります。</p>

<p>次はサンプルアプリプログラムのダウンロードを行います。<br />
SkyWay-iOS-Sampleの<a href="https://github.com/nttcom/SkyWay-iOS-Sample" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">レポジトリ</a>をクローンするかダウンロードを行って下さい。（下図はダウンロードする場合）
<a href="https://html5experts.jp/wp-content/uploads/2015/12/ios_sample_DL.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/12/ios_sample_DL.png" alt="iOSサンプルアプリのダウンロード方法" width="640" height="525" class="alignnone size-full wp-image-17964" srcset="/wp-content/uploads/2015/12/ios_sample_DL.png 640w, /wp-content/uploads/2015/12/ios_sample_DL-300x246.png 300w, /wp-content/uploads/2015/12/ios_sample_DL-207x170.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>次に、サンプルアプリのフォルダにはSDKが含まれていないので、サンプルアプリプロジェクトにSDKを入れます。
<a href="https://html5experts.jp/wp-content/uploads/2015/12/ios_sample_sdkcopy.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/12/ios_sample_sdkcopy.png" alt="iOS SDKのコピー" width="640" height="334" class="alignnone size-full wp-image-17875" srcset="/wp-content/uploads/2015/12/ios_sample_sdkcopy.png 640w, /wp-content/uploads/2015/12/ios_sample_sdkcopy-300x157.png 300w, /wp-content/uploads/2015/12/ios_sample_sdkcopy-207x108.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>先ほどのSkyWay.frameworkを「SkyWay-iOS-Sample &gt; frameworks」内にコピーします。</p>

<p>サンプルアプリを動かすためには、開発者登録をした際のAPIキーとドメインを設定する必要があります。<br />
では、サンプルアプリプロジェクトを開いて設定してみましょう。</p>

<p>SkyWay-iOS-Sample.xcodeprojをXcode（本記事ではVersion 7.1.1）で開き、<br />
SkyWay-iOS-Sample &gt; SkyWay-iOS-Sample内の「DataConnectionViewController.m」を開きます。</p>

<p></p><pre class="crayon-plain-tag">//
// MediaConnectionViewController.m
// SkyWay-iOS-Sample
//

#import "MediaConnectionViewController.h"

#import &lt;AVFoundation/AVFoundation.h&gt;

#import &lt;SkyWay/SKWPeer.h&gt;

#import "AppDelegate.h"
#import "PeersListViewController.h"


// Enter your APIkey and Domain
// Please check this page. &gt;&gt; https://skyway.io/ds/
static NSString *const kAPIkey = @"yourAPIKEY";
static NSString *const kDomain = @"yourDomain";


typedef NS_ENUM(NSUInteger, ViewTag)
{
  TAG_ID = 1000,
  TAG_WEBRTC_ACTION,
  TAG_REMOTE_VIDEO,
  TAG_LOCAL_VIDEO,
};</pre><p></p>

<p>コードの上方部分に、上図のような箇所があるので、ここにAPIキーとドメインを設定して保存しましょう。</p>

<p>「MediaConnectionViewController.m」にも同様の箇所があるため、こちらも修正します。
<a href="https://html5experts.jp/wp-content/uploads/2015/12/ios_sample_Build.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/12/ios_sample_Build.png" alt="iOSサンプルアプリのビルド" width="640" height="492" class="alignnone size-full wp-image-17897" srcset="/wp-content/uploads/2015/12/ios_sample_Build.png 640w, /wp-content/uploads/2015/12/ios_sample_Build-300x231.png 300w, /wp-content/uploads/2015/12/ios_sample_Build-207x159.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>ここまで終わったら、ビルドする端末を接続・選択して、ビルドをします。
以上がiOSのサンプルアプリのビルド方法です。</p>

<p>次はAndroidのサンプルアプリのビルド方法をご紹介します。
iOSのみ開発される方は飛ばしてください。</p>

<h2>Androidのサンプルアプリのビルド方法</h2>

<p>まずはiOSと同じく、まだSkyWayに登録されていない方は<a href="http://nttcom.github.io/skyway/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">SkyWayのサイト</a>から開発者登録を行ってください。その際の利用可能ドメインですが、ドメインをお持ちでない方は「localhost」等、適当な文字列を指定してください。</p>

<p>次に、Android SDKをダウンロードします。<br />
Android SDKの<a href="https://github.com/nttcom/SkyWay-Android-SDK/releases/latest" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ダウンロードページ</a>にアクセスして下さい。
<a href="https://html5experts.jp/wp-content/uploads/2015/12/android_sdk_DL.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/12/android_sdk_DL.png" alt="Android SDKのダウンロード方法" width="640" height="525" class="alignnone size-full wp-image-17966" srcset="/wp-content/uploads/2015/12/android_sdk_DL.png 640w, /wp-content/uploads/2015/12/android_sdk_DL-300x246.png 300w, /wp-content/uploads/2015/12/android_sdk_DL-207x170.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>ページ下部のDownloadsからダウンロードして下さい。
解凍したフォルダの中に「SkyWay.aar」というものが入っており、これがAndroid SDK本体になります。</p>

<p>次はサンプルアプリプログラムのダウンロードを行います。<br />
SkyWay-Android-Sampleの<a href="https://github.com/nttcom/SkyWay-Android-Sample" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">レポジトリ</a>をクローンするかダウンロードを行って下さい。（下図はダウンロードする場合）
<a href="https://html5experts.jp/wp-content/uploads/2015/12/android_sample_DL.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/12/android_sample_DL.png" alt="Androidサンプルアプリのダウンロード方法" width="640" height="525" class="alignnone size-full wp-image-17967" srcset="/wp-content/uploads/2015/12/android_sample_DL.png 640w, /wp-content/uploads/2015/12/android_sample_DL-300x246.png 300w, /wp-content/uploads/2015/12/android_sample_DL-207x170.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>次に、サンプルアプリにはSDKが含まれていないので、サンプルアプリ内にSDKを入れます。
<a href="https://html5experts.jp/wp-content/uploads/2015/12/android_sample_sdkcopy.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/12/android_sample_sdkcopy.png" alt="Android SDKのコピー" width="640" height="377" class="alignnone size-full wp-image-17911" srcset="/wp-content/uploads/2015/12/android_sample_sdkcopy.png 640w, /wp-content/uploads/2015/12/android_sample_sdkcopy-300x177.png 300w, /wp-content/uploads/2015/12/android_sample_sdkcopy-207x122.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>先ほどのSkyWay.aarを「app &gt; libs」内にコピーします。</p>

<p>サンプルアプリを動かすためには、開発者登録をした際のAPIキーとドメインを設定する必要があります。<br />
では、サンプルアプリプロジェクトを開いて設定してみましょう。</p>

<p>サンプルアプリのフォルダををAndroid Studio（本記事ではVersion 1.4）で開き、<br />
app &gt; src &gt; main &gt; java &gt; io.skyway.testpeerjava 内の「DataActivity.java」を開きます。</p>

<p></p><pre class="crayon-plain-tag">package io.skyway.testpeerjava;

import ...   //省略


public class DataActivity
    extends Activity
{
  private static final String TAG = DataActivity.class.getSimpleName();

  private Peer           _peer;
  private DataConnection _data;
  private Handler _handler;
  private String   _id;
  private String[] _listPeerIds;
  private Boolean  _bConnecting;
  private Runnable     _runAddLog;
  private List&lt;String&gt; _aryLogs;
  private Bitmap _image;


  @Override
  protected void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);

    Window wnd = getWindow();
    wnd.addFlags(Window.FEATURE_NO_TITLE);

    setContentView(R.layout.activity_chat);
    _handler = new Handler(Looper.getMainLooper());

    Context context = getApplicationContext();


    //////////////////////////////////////////////////////////////////////
    //////////////////  START: Initialize Peer ///////////////////////////
    //////////////////////////////////////////////////////////////////////


    // connect option
    PeerOption options = new PeerOption();

    // Please check this page. &gt;&gt; https://skyway.io/ds/
    //Enter your API Key and registered Domain.
    options.key = "";
    options.domain = "";

    // PeerOption has many options. Please check the document. &gt;&gt; http://nttcom.github.io/skyway/docs/

    _peer = new Peer(context, options);
    setPeerCallback(_peer);</pre><p></p>

<p>コードの上方部分に、上図のような箇所があるので、ここにAPIキーとドメインを設定して保存しましょう。</p>

<p>「MediaActivity.java」にも同様の箇所があるため、こちらも修正します。
<a href="https://html5experts.jp/wp-content/uploads/2015/12/android_sample_Build.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/12/android_sample_Build.png" alt="Androidサンプルアプリのビルド" width="640" height="471" class="alignnone size-full wp-image-17913" srcset="/wp-content/uploads/2015/12/android_sample_Build.png 640w, /wp-content/uploads/2015/12/android_sample_Build-300x221.png 300w, /wp-content/uploads/2015/12/android_sample_Build-207x152.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>ここまで終わったらビルドを行い、端末を選択します。
以上がAndroidのサンプルアプリのビルド方法です。</p>

<p>では、コードを参考にしながら、簡単にAPIの使い方を見ていきましょう。</p>

<h2>ビデオチャットのコード</h2>

<p>iOSとAndroidの二種類のSDKをご紹介をしましたが、この二つのAPIは細かいところを除いては、ほぼ同じです。また、サンプルアプリのコードもほぼ似通ったものとなっています。<br />
そのため、ここではAndroidのビデオチャットのコードを参考にしながら、簡単にAPIの使い方をご紹介します。</p>

<p>また、WebRTC技術についての説明は割愛します。
詳しいWebRTCの仕組みについては、がねこまさしさんが書かれたコチラの記事をお読みください: <a href="https://html5experts.jp/mganeko/5554/" data-wpel-link="internal">壁を越えろ！WebRTCでNAT/Firewallを越えて通信しよう</a></p>

<p>ではまず、APIの使い方の前に、サンプルアプリの動作を確認します。</p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/12/android_sample_seq1.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/12/android_sample_seq1.png" alt="android_sample_seq1" width="640" height="569" class="alignnone size-full wp-image-17940" srcset="/wp-content/uploads/2015/12/android_sample_seq1.png 640w, /wp-content/uploads/2015/12/android_sample_seq1-300x267.png 300w, /wp-content/uploads/2015/12/android_sample_seq1-207x184.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p><a href="https://html5experts.jp/wp-content/uploads/2015/12/android_sample_seq2.png" data-wpel-link="internal"><img src="/wp-content/uploads/2015/12/android_sample_seq2.png" alt="android_sample_seq2" width="640" height="569" class="alignnone size-full wp-image-17937" srcset="/wp-content/uploads/2015/12/android_sample_seq2.png 640w, /wp-content/uploads/2015/12/android_sample_seq2-300x267.png 300w, /wp-content/uploads/2015/12/android_sample_seq2-207x184.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>

<p>このように、</p>

<ul>
<li>シグナリングサーバ<sup>*1</sup>との接続とPeerIDの取得</li>
<li>自分の映像の取得と表示</li>
<li>PeerIDの一覧取得</li>
<li>選択したPeerIDへの通話呼び出し</li>
<li>相手の映像の取得と表示</li>
</ul>

<p>を行う、とてもシンプルなアプリです。</p>

<p>では、この動作に沿ってコードを見ていきましょう。<br />
まずは、SkyWayとのサーバとの接続です。</p>

<p></p><pre class="crayon-plain-tag">//////////////////////////////////////////////////////////////////////
    //////////////////  START: Initialize SkyWay Peer ////////////////////
    //////////////////////////////////////////////////////////////////////

    // Please check this page. &gt;&gt; https://skyway.io/ds/
    PeerOption options = new PeerOption();

    //Enter your API Key.
    options.key = "";
    //Enter your registered Domain.
    options.domain = "";


    // SKWPeer has many options. Please check the document. &gt;&gt; http://nttcom.github.io/skyway/docs/

    _peer = new Peer(context, options);
    setPeerCallback(_peer);

    //////////////////////////////////////////////////////////////////////
    ////////////////// END: Initialize SkyWay Peer ///////////////////////
    //////////////////////////////////////////////////////////////////////</pre><p></p>

<p>ここではSkyWayのシグナリングサーバとの接続を行っています。</p>

<p>まず、接続を行う時のオプションをPeerOptionクラスで設定します。<br />
このクラスでまず必須なのは、SkyWayを利用するためには必須となる「APIキー」や「ドメイン」の設定です。<br />
そのほかにも、SkyWayが提供するTURNサーバの利用を選択する「turn」プロパティや、自前のSTUN/TURNサーバを設定する「config」プロパティ等の設定が可能です。もっと詳しく知りたい方は<a href="https://nttcom.github.io/skyway/docs/#Android-peeroption" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ドキュメント</a>をご参照ください。</p>

<p>次に16行目では、このオプションを使ってシグナリングサーバと接続を行っています。<br />
このPeerクラスはシグナリングサーバとの接続を管理しており、「connect/call」メソッドでのP2Pのデータ/メディア通信の開始や、「listAllPeers」メソッドでのAPIキー毎のアクティブなPeerIDを取得、などができます。<br />
実際にサンプルアプリでは、「Calling」というボタンを押すとlistAllPeersメソッドを呼び出し、PeerID一覧の取得を行っています。</p>

<p>続いて17行目では、このPeerオプジェクトのコールバックを設定しています。<br />
コールバックの説明の前に、ローカルの映像取得部分を見てみます。</p>

<p></p><pre class="crayon-plain-tag">//////////////////////////////////////////////////////////////////////
    ////////////////// START: Get Local Stream   /////////////////////////
    //////////////////////////////////////////////////////////////////////
    Navigator.initialize(_peer);
    MediaConstraints constraints = new MediaConstraints();
    MediaStream _msLocal = Navigator.getUserMedia(constraints); 

    Canvas canvas = (Canvas) findViewById(R.id.svSecondary);
    canvas.addSrc(_msLocal, 0);

    //////////////////////////////////////////////////////////////////////
    //////////////////// END: Get Local Stream   /////////////////////////
    //////////////////////////////////////////////////////////////////////</pre><p></p>

<p>ここでは、ローカルの映像取得を行って、得た映像ストリームをViewに表示しています。<br />
NavigatorオブジェクトのgetUserMediaメソッドを呼び出すことで、MediaSteamオブジェクトの映像ストリームを得ることができます。その際に、MediaConstraintsというオプションを指定することで、映像/音声の利用可否の指定、インカメラ/アウトカメラの指定、などを行うことができます。</p>

<p>また、CanvasクラスはGLSurfaceViewを継承しており、得た映像ストリームはCanvasオブジェクトのaddSrcメソッドで表示することができます(iOSのSKWVideoオブジェクトはUIViewを継承しています)。</p>

<p>では、話を戻してPeerオブジェクトのコールバックを見てみましょう。</p>

<p></p><pre class="crayon-plain-tag">//////////////////////////////////////////////////////////////////////////////////
    ///////////////////// START: Set SkyWay peer callback   //////////////////////////
    //////////////////////////////////////////////////////////////////////////////////
    // 簡単のため、適宜、省略しています

    // !!!: Event/Open
    peer.on(Peer.PeerEventEnum.OPEN, new OnCallback()
    {
      @Override
      public void onCallback(Object object)
      {
        // シグナリングサーバと接続された
        _id = (String) object;

        updateUI();
      }
    });

    // !!!: Event/Call
    peer.on(Peer.PeerEventEnum.CALL, new OnCallback()
    {
      @Override
      public void onCallback(Object object)
      {
        // 相手から通話がかかってきた
        _media = (MediaConnection) object;

        _media.answer(_msLocal);

        setMediaCallback(_media);

        updateUI();
      }
    });

    // !!!: Event/Close
    peer.on(Peer.PeerEventEnum.CLOSE, new OnCallback()
    {
      @Override
      public void onCallback(Object object)
      {
        // シグナリングサーバとの接続ステータスがdestroyedとなった
      }
    });

    // !!!: Event/Disconnected
    peer.on(Peer.PeerEventEnum.DISCONNECTED, new OnCallback()
    {
      @Override
      public void onCallback(Object object)
      {
        // シグナリングサーバとの接続ステータスがdisconnectedとなった
      }
    });

    // !!!: Event/Error
    peer.on(Peer.PeerEventEnum.ERROR, new OnCallback()
    {
      @Override
      public void onCallback(Object object)
      {
        // 何かしらのエラーが発生した
      }
    });

    //////////////////////////////////////////////////////////////////////////////////
    /////////////////////// END: Set SkyWay peer callback   //////////////////////////
    //////////////////////////////////////////////////////////////////////////////////</pre><p></p>

<p>ここでは、シグナリングサーバから送られたイベントに対し、処理を行っています。</p>

<p>7行目は、シグナリングサーバとの接続が確立した際の「OPEN」イベントでの処理です。<br />
ここでのObjectは、シグナリングサーバから自分に割り当てられたPeerIDが格納されており、サンプルアプリでは、そのPeerIDを表示しています。PeerIDはnew Peer時にIDを指定することもできますし、指定せずにランダムなIDを取得することもできます。</p>

<p>20行目では、他のPeerから通話がかかってきた際の「CALL」イベントでの処理です。<br />
ここでのObjectはMediaConnectionクラスであり、answerメソッドを呼ぶことで、先ほど作成した自分の映像ストリームを返しています。引数を与えないことで、映像ストリームを返さないことも可能です。<br />
そのあと、30行目でMediaConnectionのコールバックを設定しています。</p>

<p>このように、相手からの通話を受ける際は、Peerオブジェクトのコールバック内で「CALL」イベントで処理を行います。<br />
自分から通話する場合は、下記のようにPeerオブジェクトのcallメソッドを呼びます。</p>

<p></p><pre class="crayon-plain-tag">//////////////////////////////////////////////////////////////////////
    ////////////////// START: Calling SkyWay Peer   //////////////////////
    //////////////////////////////////////////////////////////////////////
    // 簡単のため、適宜、省略しています

    CallOption option = new CallOption();

    _media = _peer.call(strPeerId, _msLocal, option);

    setMediaCallback(_media);

    //////////////////////////////////////////////////////////////////////
    /////////////////// END: Calling SkyWay Peer   ///////////////////////
    //////////////////////////////////////////////////////////////////////</pre><p></p>

<p>この部分は、listAllPeersメソッドで得られたPeerIdの一覧から、通話したいPeerIDをタップした時に呼ばれます。</p>

<p>このように、呼び出し時のオプションを設定し（このコードでは何も設定していませんが）、通話をしたいPeerIDと自分の映像ストリームを指定してcallメソッドを実行します。返り値は通話がかかってきた際と同様、MediaConnectionクラスで、MediaConnectionのコールバックを設定しています。</p>

<p>では、MediaConnectionのコールバックを見てみましょう。</p>

<p></p><pre class="crayon-plain-tag">//////////////////////////////////////////////////////////////////////////////////
    //////////////  START: Set SkyWay peer Media connection callback   ///////////////
    //////////////////////////////////////////////////////////////////////////////////
    // 簡単のため、適宜、省略しています

    // !!!: MediaEvent/Stream
    media.on(MediaConnection.MediaEventEnum.STREAM, new OnCallback()
    {
      @Override
      public void onCallback(Object object)
      {
        _msRemote = (MediaStream) object;

        Canvas canvas = (Canvas) findViewById(R.id.svPrimary);
        canvas.addSrc(_msRemote, 0);
      }
    });

    // !!!: MediaEvent/Close
    media.on(MediaConnection.MediaEventEnum.CLOSE, new OnCallback()
    {
      @Override
      public void onCallback(Object object)
      {
        Canvas canvas = (Canvas) findViewById(R.id.svPrimary);
        canvas.removeSrc(_msRemote, 0);

        _msRemote = null;
        _media = null;

        updateUI();
      }
    });

    // !!!: MediaEvent/Error
    media.on(MediaConnection.MediaEventEnum.ERROR, new OnCallback()
    {
      @Override
      public void onCallback(Object object)
      {
        // 何かしらのエラーが発生した
      }
    });

    //////////////////////////////////////////////////////////////////////////////////
    ///////////////  END: Set SkyWay peer Media connection callback   ////////////////
    //////////////////////////////////////////////////////////////////////////////////</pre><p></p>

<p>7行目は、通話相手の映像ストリームを取得した際の「STREAM」イベントでの処理です。ここでのObjectは、MediaStreamオブジェクトです。自分の映像ストリームと同じくCanvasオブジェクトを利用して表示しています。</p>

<p>20行目では、通話相手との通話が切断された際の「CLOSE」イベントでの処理です。</p>

<p>ここまでが、簡単なSkyWayを使ったWebRTCの処理になります。</p>

<p>最後に、最近のアップデートで追加されたメソッドについてご紹介します。</p>

<p></p><pre class="crayon-plain-tag">Button switchCameraAction = (Button)findViewById(R.id.switchCameraAction);
    switchCameraAction.setOnClickListener(new View.OnClickListener()
    {
      @Override
      public void onClick(View v)
      {
        Boolean result = _msLocal.switchCamera();
        if(true == result)
        {
          //Success
        }else
        {
          //Failed
        }
      }
    });</pre><p></p>

<p>MediaStreamオブジェクトがローカルの映像ストリームの場合、switchCameraメソッドを呼び出すことができます。<br />
これにより、今まではできなかった、「getUserMedia後のインカメラ/アウトカメラ切り替え」が可能になります。</p>

<p>以上が、サンプルアプリの簡単なコード解説になります。今回はビデオチャットだけの紹介でしたが、ほぼ同じようなAPIでテキストや画像が送れるデータチャットも可能です。</p>

<h2>おわりに</h2>

<p>今回は、SkyWayのiOS/Android用SDKのチュートリアルをお届けしました。</p>

<p>JavaScript版と同じように、手軽にWebRTCが利用可能です。
是非ご自身のアプリケーションに組み込んでみてください！</p>
]]></content:encoded>
		
		<series:name><![CDATA[WebRTCプラットフォーム ”SkyWay” 入門]]></series:name>
	</item>
		<item>
		<title>HTML5で実現できる！環境光に合わせたレスポンシブなUI</title>
		<link>/girlie_mac/4558/</link>
		<pubDate>Wed, 22 Jan 2014 01:00:45 +0000</pubDate>
		<dc:creator><![CDATA[Tomomi Imura]]></dc:creator>
				<category><![CDATA[デザイン]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[W3C仕様]]></category>
		<category><![CDATA[ブラウザ]]></category>
		<category><![CDATA[モバイル]]></category>

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

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

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

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

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

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

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

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

<h2>Ambient Light Events API</h2>

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

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

<h2>Devicelight events</h2>

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

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

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

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

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

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

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

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

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

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

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

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


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


<p><br></p>

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

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

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

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

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

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

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

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

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

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

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

<h2>おわりに</h2>

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

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

<p>では。</p>
]]></content:encoded>
			</item>
		<item>
		<title>Firefox 24 for AndroidがWebRTCを標準サポート</title>
		<link>/yusuke-naka/2553/</link>
		<pubDate>Wed, 18 Sep 2013 05:06:22 +0000</pubDate>
		<dc:creator><![CDATA[仲 裕介]]></dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[WebRTC]]></category>

		<guid isPermaLink="false">/?p=2553</guid>
		<description><![CDATA[Mozillaは2013年9月17日、Android向けのFirefoxブラウザがWebRTCを標準サポートすると発表しました。編集部で早速使ってみたのでレポートします！ WebRTCのAPIへの対応状況 バージョン24...]]></description>
				<content:encoded><![CDATA[<p>Mozillaは2013年9月17日、Android向けのFirefoxブラウザがWebRTCを標準サポートすると発表しました。編集部で早速使ってみたのでレポートします！</p>

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

<h2>WebRTCのAPIへの対応状況</h2>

<p>バージョン24での対応状況は以下の通りで、それぞれPC版のFirefoxブラウザと接続して利用する事が可能です。</p>

<ul>
<li>mozGetUserMedia （PC版はバージョン20からサポート）</li>
<li>mozRTCPeerConnection　（PC版はバージョン22からサポート）</li>
<li>DataChannels （PC版はバージョン22からサポート）</li>
</ul>

<p>Android版Firefoxとデスクトップ版Firefoxとの相互接続も可能です。</p>

<h2>デモサイト</h2>

<p>Mozillaが公開している <a href="http://mozilla.github.io/webrtc-landing/" title="WebRTC Test Landing Page" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">WebRTC Test Landing Page</a> にて動作を確認する事ができます。</p>

<h2>編集部でも動かしてみた</h2>

<p>Android版Firefox（バージョン24.0）と、MaxOS版Firefox（バージョン23.0.1）を利用してビデオチャットを試してみました。Android側は端末性能の問題だとは思いますが、かなりもっさりとしていましたが、機能として問題なく動くようです。</p>

<p>利用サービス：<a href="http://nightly-gupshup.herokuapp.com/chat" title="Multi-person video chat" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Multi-Person video chat</a></p>

<h3>ログイン後はユーザリストが表示される</h3>

<p><a href="https://html5experts.jp/wp-content/uploads/2013/09/android_webrtc_0.png" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2013/09/android_webrtc_0-168x300.png" alt="android_webrtc_0" width="168" height="300" class="aligncenter size-medium wp-image-2557" srcset="/wp-content/uploads/2013/09/android_webrtc_0-168x300.png 168w, /wp-content/uploads/2013/09/android_webrtc_0-576x1024.png 576w, /wp-content/uploads/2013/09/android_webrtc_0-116x207.png 116w, /wp-content/uploads/2013/09/android_webrtc_0.png 360w" sizes="(max-width: 168px) 100vw, 168px" /></a></p>

<h3>MacOS側から発信動作を行うとモーダルダイアログが表示される</h3>

<p><a href="https://html5experts.jp/wp-content/uploads/2013/09/android_webrtc_1.png" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2013/09/android_webrtc_1-168x300.png" alt="android_webrtc_1" width="168" height="300" class="aligncenter size-medium wp-image-2558" srcset="/wp-content/uploads/2013/09/android_webrtc_1-168x300.png 168w, /wp-content/uploads/2013/09/android_webrtc_1-576x1024.png 576w, /wp-content/uploads/2013/09/android_webrtc_1-116x207.png 116w, /wp-content/uploads/2013/09/android_webrtc_1.png 360w" sizes="(max-width: 168px) 100vw, 168px" /></a></p>

<h3>Acceptするとカメラとマイクの利用許可を求められる</h3>

<p><a href="https://html5experts.jp/wp-content/uploads/2013/09/android_webrtc_2.png" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2013/09/android_webrtc_2-168x300.png" alt="android_webrtc_2" width="168" height="300" class="aligncenter size-medium wp-image-2559" srcset="/wp-content/uploads/2013/09/android_webrtc_2-168x300.png 168w, /wp-content/uploads/2013/09/android_webrtc_2-576x1024.png 576w, /wp-content/uploads/2013/09/android_webrtc_2-116x207.png 116w, /wp-content/uploads/2013/09/android_webrtc_2.png 360w" sizes="(max-width: 168px) 100vw, 168px" /></a>
カメラについては、「バックカメラ」、「フロントカメラ」、「利用しない」の3種類から選ぶ事ができる。</p>

<h3>正常に接続すると映像と音声が流れ始める</h3>

<p><a href="https://html5experts.jp/wp-content/uploads/2013/09/android_webrtc_4.png" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img src="/wp-content/uploads/2013/09/android_webrtc_4-168x300.png" alt="android_webrtc_4" width="168" height="300" class="aligncenter size-medium wp-image-2562" srcset="/wp-content/uploads/2013/09/android_webrtc_4-168x300.png 168w, /wp-content/uploads/2013/09/android_webrtc_4-576x1024.png 576w, /wp-content/uploads/2013/09/android_webrtc_4-116x207.png 116w, /wp-content/uploads/2013/09/android_webrtc_4.png 360w" sizes="(max-width: 168px) 100vw, 168px" /></a></p>

<h2>現在判明している問題</h2>

<p>4件の問題が掲載されています。
最後の問題はFirefox特有というより、モバイル端末での映像処理全般に言えそうです。</p>

<ul>
<li>エコーキャンセラーに改善が必要（<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=916331" title="bugzilla" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Bug 916331</a>）<br />
　現時点ではヘッドセットの利用を推奨する</li>
<li>映像と音声の同期や音声遅延の問題（<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=884365" title="bugzilla" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Bug 884365</a>）<br />
　遅延に関してはバージョン25で改善予定</li>
<li>一部の端末でビデオキャプチャ時にクラッシュする問題がある（<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=902431" title="bugzilla" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Bug 902431</a>）<br />
　詳細は現在調査中</li>
<li>性能の低い端末や品質が悪い回線を利用した場合、高解像度＆適正なフレームレートの画像について、デコードや送信に問題が発生する可能性がある</li>
</ul>

<h2>WebRTCの活用範囲が広がる</h2>

<p>Chromeに続き、FirefoxについてもPC版、Android版でWebRTCが利用できるようになりました。WebRTCについては仕様化の最中ではありますが、活用範囲が広がっていく事を大変嬉しく思います。HTML5 Experts.jp編集部では今後も最新動向をウォッチしていきます。</p>

<p>記事ソース：<a href="https://hacks.mozilla.org/2013/09/firefox-24-for-android-gets-webrtc-support-by-default/" title="hack.mozilla.org" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">hacks.mozilla.org</a></p>
]]></content:encoded>
			</item>
		<item>
		<title>Chromeの次期バージョンはアグレッシブ！ついにAndroid版でWebGLが動く！Web Speech APIやVibration APIも！（フラグ必要だけど）</title>
		<link>/shumpei-shiraishi/1717/</link>
		<pubDate>Fri, 23 Aug 2013 02:26:58 +0000</pubDate>
		<dc:creator><![CDATA[白石 俊平]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[WebGL]]></category>
		<category><![CDATA[グラフィカルWeb]]></category>

		<guid isPermaLink="false">/?p=1717</guid>
		<description><![CDATA[Google Chromeの次期バージョン30では、特にAnrdoid版で、ワクワクするような変更が数多く入るようです。 ソースはChromium Blogです。 ちなみに、次期バージョンはベータ版として現在でも触ること...]]></description>
				<content:encoded><![CDATA[<p>Google Chromeの次期バージョン30では、特にAnrdoid版で、ワクワクするような変更が数多く入るようです。
<a href="http://blog.chromium.org/2013/08/chrome-30-beta-richer-web-on-android.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ソースはChromium Blog</a>です。</p>

<p>ちなみに、次期バージョンはベータ版として現在でも触ることが可能です。<a href="https://play.google.com/store/apps/details?id=com.chrome.beta&amp;hl=ja" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Google Chrome Beta for Androidはこちら</a></p>

<p>次期バージョンでの変更点は以下のとおり。かいつまんで書きますので、詳しく知りたい方は<a href="http://blog.chromium.org/2013/08/chrome-30-beta-richer-web-on-android.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Chromium Blog</a>を参照してください。</p>

<ul>
<li>WebGLがAndroid版でもデフォルトでオンになります！IE11もサポートすることですし、だんだんWebGLの使える領域が広がってきました。これは来年あたり、Web+3Dの大波がきそうな予感です。</li>
<li>デバイスの「動き」を検知することができる<a href="http://dev.w3.org/geo/api/spec-source-orientation.html#devicemotion" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Device Motion Event</a> APIに対応。</li>
<li><a href="https://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Media Source Extensions</a>がAndroid版でも利用できるように。このAPIを用いれば、メディアデータを動的にvideo要素/audio要素で再生できるようになります。WebSocketで受け取ったメディアデータの断片を再生する……ということも可能でしょう。</li>
<li>いくつかの新しいChrome Apps APIをサポート。特に、<a href="https://developers.google.com/chrome/web-store/docs/money" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">アプリ内課金 (In-app payments)</a>が可能になるのが大きいのではないでしょうか。</li>
<li>[WebRTC Device Enumeration API] をサポート。MediaStreamTrack.getSources()というAPIを用いて、デバイス上のマイクやカメラの一覧を取得することができます。このAPIを使用すると、WebRTCコールを再起動することなく、マイクやカメラを切り替えることができます。</li>
<li>開発者ツールが、CSSのソースマップに対応しました。これで、SassやLessなどのプリプロセッサが出力するCSSをよりデバッグしやすくなります。</li>
<li>Android版が、Web Speech APIとVibration APIをサポートしました。フラグの設定が必要です。</li>
</ul>

<p>Chromeの今後について気になる方は、<a href="http://www.chromestatus.com/features" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">chromestatus.com</a>が必見です。
ぼくも久しぶりにこのサイトを見たのですが、昔に比べてめちゃくちゃ見やすく、綺麗になっています。Chrome以外のブラウザの実装状況や、実装を検討している機能についての（Googleが見た）Web開発者からの反応などもまとめられており、まさにWebの最新状況がわかるサイトと言っても過言ではありません。</p>
]]></content:encoded>
			</item>
	</channel>
</rss>
