<?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>ゲーム &#8211; HTML5Experts.jp</title>
	<atom:link href="/tag/ゲーム/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>テレビも車もゲーム機も！組み込みブラウザ開発ってどんな世界か聞いてみた</title>
		<link>/shumpei-shiraishi/24637/</link>
		<pubDate>Wed, 08 Nov 2017 02:06:37 +0000</pubDate>
		<dc:creator><![CDATA[白石 俊平]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[システム開発]]></category>
		<category><![CDATA[ゲーム]]></category>
		<category><![CDATA[ハイブリッドキャスト]]></category>
		<category><![CDATA[組み込みブラウザ]]></category>
		<category><![CDATA[自動車]]></category>

		<guid isPermaLink="false">/?p=24637</guid>
		<description><![CDATA[連載： HTML5 Conference 2017特集 (2) こんにちは、編集長の白石です。 この記事は、9月24日に開催されたHTML5 Conference 2017に登壇したエキスパートに、お話されたセッションの...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/html5-conf2017/" class="series-457" title="HTML5 Conference 2017特集" data-wpel-link="internal">HTML5 Conference 2017特集</a> (2)</div><p><style>
b.speaker {
  margin-right: 1em;
}
</style>
こんにちは、編集長の白石です。</p>

<p>この記事は、9月24日に開催された<a href="http://events.html5j.org/conference/2017/9/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTML5 Conference 2017</a>に登壇したエキスパートに、お話されたセッションのトピックを中心に語っていただこうとういものです。セッションの内容をより深く理解する手助けになるだけでなく、本記事単体でも面白く読んでいただけることを目指しています。</p>

<p>今回お話を伺ったのは、株式会社ACCESSの梅田雅士さんです。</p>

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

<p>梅田さんのセッション「TV・車・ゲームに搭載されているブラウザってどうなってるの？」に関するスライド資料は、こちらで公開されています。</p>

<iframe class="embedly-embed" src="//cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.slideshare.net%2Fslideshow%2Fembed_code%2Fkey%2F94O53WFZyAkiCq&#038;url=https%3A%2F%2Fwww.slideshare.net%2FMasashiUmeda%2Ftv-81364792&#038;image=https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Fhtml5conference2017-171030095111-thumbnail-4.jpg%3Fcb%3D1509357173&#038;key=internal&#038;type=text%2Fhtml&#038;schema=slideshare" width="500" height="417" scrolling="no" frameborder="0" allowfullscreen></iframe>

<p><br></p>

<h2>組み込みブラウザって…なに？</h2>

<p><b class="speaker siraisi">白石:</b>では、まずは簡単に自己紹介をお願いできますか？</p>

<p><b class="speaker umeda">梅田:</b>株式会社ACCESS IoT事業本部課長の梅田 雅士です。
もともとはエンジニアでして、ブラウザ開発からWebサービスまで、組み込みからフロントエンドまで開発していました。</p>

<p><b class="speaker siraisi">白石:</b>すごく幅広い経歴をお持ちですね！今回はPCやスマートフォン「以外」の環境におけるブラウザのお話を伺えると聞いています。</p>

<p><b class="speaker umeda">梅田:</b>はい、今やブラウザはテレビにも、自動車にも、ゲームにも搭載されています。それらを総じて「組み込みブラウザ」と呼んでいます。</p>

<p><b class="speaker siraisi">白石:</b>組み込みブラウザと言うのは、PCやスマートフォンのブラウザとどう違うんでしょうか？</p>

<p><b class="speaker umeda">梅田:</b>Webを閲覧できると言うのは、ブラウザの基本的な機能ですので、組み込みブラウザであっても変わりません。違うのはまず動作環境ですね。例えばOSも、LinuxからiTronまで、様々な環境があります。中にはタッチ操作やマウス操作が存在しない環境でも動作することが求められることもあります。</p>

<p><b class="speaker siraisi">白石:</b>ACCESSさんの組み込みブラウザは、今は主にChromiumやWebKitをベースにして開発してらっしゃるんですよね。組み込み向けに機能を追加したり、ということもあるんでしょうか？</p>

<p><b class="speaker umeda">梅田:</b>はい、例えばテレビのリモコンとか、ゲームのコントローラーとかでブラウジングを可能にすると言った機能の追加は一般的にありますね。ブラウザの操作に関しては、「組み込みならでは」という部分は多いです。</p>

<h2>テレビとブラウザ</h2>

<p><b class="speaker siraisi">白石:</b>では、テレビ、クルマ、ゲームに搭載されているブラウザの状況について、詳しく教えてください。</p>

<p><b class="speaker umeda">梅田:</b>ではテレビからいきましょう。実はテレビには昔から身近にありまして、<strong>テレビのdボタンを押して立ち上がる画面は、実はブラウザ</strong>なんです。</p>

<p><b class="speaker siraisi">白石:</b>dボタンはブラウザ起動ボタンでもあったわけですね。</p>

<p><b class="speaker umeda">梅田:</b>はい、それにテレビのメニュー選択を行うアプリもHTMLで書かれていたりしますね。</p>

<p><b class="speaker siraisi">白石:</b> <strong>ハイブリッドキャスト</strong>と言うのは何でしょうか？</p>

<p><b class="speaker umeda">梅田:</b>テレビ向けのブラウザでは、以前はBML (<a href="https://ja.wikipedia.org/wiki/Broadcast_Markup_Language" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Bloadcast Markup Language</a>)という、XHTMLベースの独自言語が利用されていました。ですが現在では、HTML5をベースとしたテレビ用の規格がありまして、それが「ハイブリッドキャスト」です。</p>

<p>ハイブリッドキャストは「放送と通信の連携」を目的として、NHKさんを中心とした標準化が行われています。単にHTML5が使えると言うだけではなく、スマートフォンとの連携（セカンドスクリーン）機能なども備えています。</p>

<p><b class="speaker siraisi">白石:</b>民放局の、ハイブリッドキャストへの対応度合いとかはいかがですか？</p>

<p><b class="speaker umeda">梅田:</b>各社とも、現在対応を拡充している段階ですね。2020年の東京オリンピックで、テレビ放送をより楽しく観せるのが、各社共通の目標になっています。</p>

<p><b class="speaker siraisi">白石:</b>ちなみに昔聞いた話なのですが、<strong>テレビって意外にも低スペック</strong>で、重たいWebページを表示させるのは難しいと聞いたことがあります。その状況は現在では変わりましたか？</p>

<p><b class="speaker umeda">梅田:</b>いえ、あまり変わりないです。テレビの中で一番高価な部品はやはりパネル。その他の部品、例えばCPUなどは、やはり廉価なものが使われることが多いんですね。なのでテレビ向けのWebページは、軽量であることが望まれます。</p>

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

<h2>車とブラウザ</h2>

<p><b class="speaker siraisi">白石:</b>では次は車とブラウザの関係について教えてください。</p>

<p><b class="speaker umeda">梅田:</b>自動車業界では、カーナビを中心とした、操作可能な中央のスクリーンを「<strong>HMI (Human Machine Interface)</strong>」と呼びます。HMIでブラウザを利用できると、例えば自動車のマニュアルをHTMLで書いたりできます。HTMLは多言語化しやすいのでメリットは大きいですね。</p>

<p>あとは車載システムにアプリを追加することができるものもあります。インターネットと繋がって、例えば天気を表示したり、運転を楽しくするようなアプリがインストールできたりします。車載システムは「情報（インフォメーション）」と「娯楽（エンターテインメント）」を提供するという概念から、「<strong>インフォテインメント</strong>」とか、「<strong>IVI</strong>（In-Vehicle Infotainment：車載インフォテインメント）」と呼ばれたりします。HMIでブラウザが利用できるなら、そうしたアプリもWeb技術で開発できるようになります。</p>

<p><b class="speaker siraisi">白石:</b>車載システムにブラウザを搭載するという動きは、どれくらい進んでいるものなんでしょうか？</p>

<p><b class="speaker umeda">梅田:</b>海外では結構進んでいます。車載システムのOSは共通化が進みつつあって、主要なものとしては<a href="https://www.automotivelinux.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">AGL (Automotive Grade Linux)</a>や<a href="https://www.genivi.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">GENIVI</a>がありますが、これらには今後ブラウザが搭載される予定があります。</p>

<p>ちなみに<strong>AGLって、Tizen IVIが元になっている</strong>んですよ。Tizenは一時期HTML5にも注力していましたので、白石さんはご存知じゃないかと思いますが。</p>

<p><b class="speaker siraisi">白石:</b>ええっ！Tizenって久しぶりに聞いた名前です。そうだったのか…そういう風に受け継がれていたんですね。IT業界って、思わぬところが繋がってたりするので面白い(笑)</p>

<p>ところでそういう車載システムとかだと、テスラの車とかは進んでるイメージありますけど、実際のところどうなんでしょう？</p>

<p><b class="speaker umeda">梅田:</b>確かにテスラは進んでいて、WebKitを搭載した車載システムを既に積んでいますね。ただ、古いバージョンのWebKitを搭載していたため、そのセキュリティホールを突かれてハッキングが可能な状態になっていたことがあったりします。車載システムの高度化に伴って、セキュリティリスクも高まりつつあるというのが実情です。</p>

<h2>ゲームとブラウザ</h2>

<p><b class="speaker siraisi">白石:</b>ゲーム機にブラウザが搭載されているという点についてはいかがでしょう？</p>

<p><b class="speaker umeda">梅田:</b>実は、<strong>ゲーム機にブラウザが搭載されているのは結構昔から</strong>なんです。2003年に発売されたPlayStation 2や、2004年に発売されたPlayStation Portableには、もう入っていましたからね。</p>

<p><b class="speaker siraisi">白石:</b>そんなに昔から入っていたんですね。そう言えば、ガラケーとかにもブラウザ積まれてたし、そう言えば組み込みブラウザって結構昔からあったんですよね。</p>

<p><b class="speaker umeda">梅田:</b>そうですね。それに、<strong>ゲームソフト自体にブラウザが積まれていたこともありました</strong>よ。</p>

<p><b class="speaker siraisi">白石:</b>ええっ！ゲームソフトがブラウザを内蔵していたんですか？</p>

<p><b class="speaker umeda">梅田:</b>そうです。例えばモンスターハンター3には、弊社のNetFrontというブラウザが内蔵されていました。</p>

<p><b class="speaker siraisi">白石:</b>ゲームソフトにブラウザが入ってるなんて、考えたこともありませんでした。すごい世界だ。</p>

<h2>ブラウザ開発ってどんな仕事？</h2>

<p><b class="speaker siraisi">白石:</b>そもそもブラウザ作ってる会社ってあまりないですよね。そこら辺の実際をお聞きしてみたいです。ブラウザ開発って、どのように進めるものなんですか？</p>

<p><b class="speaker umeda">梅田:</b>基本的には、W3Cの仕様を満たすように実装するというのがブラウザ開発の中心になります。ただ、今はオープンソースのブラウザをベースに開発していますので、少し仕事の範囲が変わりましたね。W3Cの仕様を満たすために開発するのは、主にChromiumやWebKitのコアチームに任せて、私たちはその移植が中心になりました。</p>

<p><b class="speaker siraisi">白石:</b>なるほど、今はブラウザエンジンそのものの開発に深く食い込んでいるわけではないと。</p>

<p><b class="speaker umeda">梅田:</b>ただ、弊社ではEPUBのエンジンも作っていまして、そのために独自開発した部分とかは結構ありますね。例えば縦書きレイアウトとかは、W3Cに提案されている仕様を元に弊社で開発したコードを、ブラウザエンジン側にコントリビュートしたりもしています。</p>

<p><b class="speaker siraisi">白石:</b>ちなみにブラウザ開発って、どんな言語を使って行うんですか？</p>

<p><b class="speaker umeda">梅田:</b>WebKitやChromiumはC++で書かれているので、C++ですね。C++ってメモリマネジメントが重要な言語ですが、WebKitとかってそこら辺が少しいいかげんだったりするんです(笑)。</p>

<p><b class="speaker siraisi">白石:</b>え、そうなんですか？メモリリークしたり、とかですか？</p>

<p><b class="speaker umeda">梅田:</b>さすがに派手なメモリリークとかはめったにありませんが、メモリ確保に失敗した時の処理が甘かったり、とかですね。で、車載システムとかで利用する場合って、「動かない」って状況になるのはすごくまずいわけです。運転中は安全がなにより最優先ですから。そういう穴を潰して本家にコントリビュートする…というのもたまにありますね。</p>

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

<h2>組み込みブラウザベンダーはつらいよ</h2>

<p><b class="speaker siraisi">白石:</b>ACCESSさんはブラウザと言っても、更に「組み込みブラウザ」を作っているという数少ない存在。そういう、数少ない組み込みブラウザベンダーならではの苦労などをお聞きしたいです。</p>

<p><b class="speaker umeda">梅田:</b>そうですね、まず先ほども申し上げたように、現在はChromiumやWebKitをベースに開発しています。以前は独自のブラウザエンジンでしたが、数年前にWebKitに切り替えたんです。ただ、WebKitはそもそも組み込み用途が主ではありませんでしたから、当初はハードのスペック的な制約との折り合いを付けるのが大変でしたね。（Webページが）メモリに乗り切らないので、数キロバイト単位に分割してメモリに載せるようにしたり…</p>

<p><b class="speaker siraisi">白石:</b>うわー、それは大変そう…。</p>

<p><b class="speaker umeda">梅田:</b>最近はハードのスペックが向上したので、そういう苦労をすることも少なくはなってきましたけどね。あとは、レンダリングのパフォーマンスを改善するのも大変ですね。車載システムだと、最低でも60fpsは要求されるので、動画のデコードをハードウェアに行わせるようにするとか、CanvasをGPUレンダリングするとか。スクロールが滑らかになるようチューニングするのも大変でした。</p>

<p><b class="speaker siraisi">白石:</b>WebKitとChromiumは使い分けてるんですか？</p>

<p><b class="speaker umeda">梅田:</b>お客様からのご要望や、用途に応じて使い分けています。WebKitはリリースサイクルがだいたい年一回で安定していますが、Chromiumのリリースサイクルはもっと速くて、コードもどんどん変化していきます。どちらがいいということでもなくて、それぞれにメリットがありますね。</p>

<p><b class="speaker siraisi">白石:</b>大変興味深いお話です。組み込む製品ごとに異なる苦労とかはあったりするんですか？</p>

<p><b class="speaker umeda">梅田:</b> <strong>車の場合とかは、製品の開発サイクルが長い</strong>のが特徴です。一つの車を作るのに5年とかかかったりすることもあるので、何回もつなぎ込みが発生するわけです。</p>

<p><b class="speaker siraisi">白石:</b>5年！Webの世界で5年と言ったら、状況はかなり変わってしまいますよね。</p>

<p><b class="speaker umeda">梅田:</b>そうですね。ベースになっているブラウザもどんどん進化していくので、つなぎ込みを行うたびに、できるだけ最新に近づけていくようにするんです。その際に、ブラウザエンジンが持つAPIが変わってしまうことも珍しくありません。そういう事態に対応しやすいように、APIを抽象化したレイヤーを持っていたりします。</p>

<p><b class="speaker siraisi">白石:</b>いやー、ぼくみたいなフロントエンドエンジニアが全然体験したことのない苦労だ(笑)</p>

<p><b class="speaker umeda">梅田:</b>他には、ブラウザの機能を拡張しなくてはならないこともよくあります。組み込みの場合って、HTML5が元々持っている機能だけじゃ足りないことが多いんですよ。</p>

<p>ゲームの場合は、ゲーム機というハードに閉じているからか、独自に拡張することが多いのが特徴です。</p>

<p>車載の場合は、<a href="https://www.w3.org/TR/vehicle-information-api/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Vehicle API</a>っていうAPIがW3Cで標準化されていますので、その実装を行うのも仕事の一つです。このAPIを使うと、例えばキーロックの情報を取れたりと、車載システムならではの機能を利用することができます。</p>

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

<h2>PCやスマホ「じゃない」Webアプリ開発とは</h2>

<p><b class="speaker siraisi">白石:</b>では最後に、PCやスマホじゃない世界でのWebアプリ開発について、どのようなものかお聞かせください。</p>

<p><b class="speaker umeda">梅田:</b>基本的には、それほど変わるところはありません。組み込みブラウザと言っても結局WebKitやChromiumをベースとしていますし、HTML5以降はブラウザ間の互換性も高くなっていますし。</p>

<p>ただ、市場によって制約はありますね。例えば車載システムで動作する場合は、運転手の気を逸らさないようUIガイドラインがあったりします。</p>

<p>一方で、市場ごとに特有の拡張機能を使うことも求められます。</p>

<p><b class="speaker siraisi">白石:</b>先ほどおっしゃっていた、車載システム上で使えるVehicle APIなどですね。</p>

<p><b class="speaker umeda">梅田:</b>そうです。そして、そうした標準化されたAPIと言うのは、組み込みの世界で特に重要なんです。</p>

<p>基本的にオープンなPC/スマホに比べて、組み込みは市場に特化しがちな世界でもあります。クローズドな世界で、クローズドな技術を使っているのでは、スキル的にもビジネス的にも拡がりにくい。</p>

<p>オープンで標準化されたAPIを使うことで、そうした事態を避けることができる。Web技術者も、活躍できる場がどんどん広がっていきます。</p>

<p><b class="speaker siraisi">白石:</b>なるほど。ちなみに、車載の世界とかでは、App Storeのようなアプリプラットフォームが出てくる可能性はあるのでしょうか？そして、Webで作ったアプリであればそれらのプラットフォームにどこでもデプロイできるというような可能性はありますか？</p>

<p><b class="speaker umeda">梅田:</b>はい、そういう可能性はもちろんあります。アプリプラットフォームみたいな構想は各社持っていて、今後登場してくるのは間違いありません。
その時に、Web技術を使ってアプリを開発できる可能性も、それが複数のプラットフォームで展開できる可能性も、大いにあると思います。</p>

<p>そうした世界を見据えて、総務省さんと一緒に「<a href="https://rp.kddi-research.jp/hackathon" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Webとクルマのハッカソン</a>」というイベントをここ数年開催しています。10月下旬から申し込み開始ですので、興味のある方にはどんどん参加してほしいですね。</p>

<p><b class="speaker siraisi">白石:</b>あ、そのイベント去年ぼくが審査員やったやつだ(笑)。去年もすごく盛り上がりましたよね。本日は組み込みブラウザ開発の話、そしてPC/スマホ以外のWeb開発の話など、普段あまり聞けないお話をお聞かせいただき、ありがとうございました！</p>

<p><img src="/wp-content/uploads/2017/10/DSC05548.jpg" alt="" width="640" height="416" class="alignnone size-full wp-image-24652" srcset="/wp-content/uploads/2017/10/DSC05548.jpg 640w, /wp-content/uploads/2017/10/DSC05548-300x195.jpg 300w, /wp-content/uploads/2017/10/DSC05548-207x135.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>
]]></content:encoded>
		
		<series:name><![CDATA[HTML5 Conference 2017特集]]></series:name>
	</item>
		<item>
		<title>Nintendo Switchの中ではReactが動いてる！Nintendo eShop開発秘話を聞いてきた</title>
		<link>/shumpei-shiraishi/24538/</link>
		<pubDate>Mon, 06 Nov 2017 01:03:30 +0000</pubDate>
		<dc:creator><![CDATA[白石 俊平]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Nintendo Switch]]></category>
		<category><![CDATA[Nintendo eShop]]></category>
		<category><![CDATA[ゲーム]]></category>
		<category><![CDATA[任天堂]]></category>

		<guid isPermaLink="false">/?p=24538</guid>
		<description><![CDATA[連載： HTML5 Conference 2017特集 (11) こんにちは、編集長の白石です。 この記事は、9月24日に開催されたHTML5 Conference 2017に登壇したエキスパートに、お話されたセッション...]]></description>
				<content:encoded><![CDATA[<div class="seriesmeta">連載： <a href="https://html5experts.jp/series/html5-conf2017/" class="series-457" title="HTML5 Conference 2017特集" data-wpel-link="internal">HTML5 Conference 2017特集</a> (11)</div><p><style>
.siraisi {
  background: url(/wp-content/uploads/2017/10/siraisi.png) no-repeat;
}
.horikawa {
  background: url(/wp-content/uploads/2017/10/horikawa.png) no-repeat;
}
.tsuda {
  background: url(/wp-content/uploads/2017/10/tsuda.png) no-repeat;
}
.post-detail-contents p {
    text-indent: 0;
    clear: left;
    margin-bottom: 2em;
    overflow: hidden;
}
b.speaker {
    background-size: 48px;
    display: inline-block;
    width: 48px;
    height: 18px;
    float: left;
    padding-right: 8px;
    padding-top: 48px;
    text-align: center;
    font-size: 12px;
    margin-bottom: 4px;
    font-weight: normal;
    clear: left;
}
</style>
こんにちは、編集長の白石です。</p>

<p>この記事は、9月24日に開催された<a href="http://events.html5j.org/conference/2017/9/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">HTML5 Conference 2017</a>に登壇したエキスパートに、お話されたセッションのトピックを中心に語っていただこうとういものです。セッションの内容をより深く理解する手助けになるだけでなく、本記事単体でも面白く読んでいただけることを目指しています。</p>

<p>今回は、「Nintendo SwitchとWeb」という講演をされていた任天堂さんに、Switch開発におけるWeb技術の活用方法や、開発秘話を伺ってきました。任天堂のお二人は京都から、リモートでの取材に応じていただきました。</p>

<div id="attachment_24569" style="width: 650px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/10/title-640x427.jpg" alt="HTML5 Conferenceのセッション会場は超満員（写真提供: html5j）" width="640" height="427" class="size-large wp-image-24569" srcset="/wp-content/uploads/2017/10/title.jpg 640w, /wp-content/uploads/2017/10/title-300x200.jpg 300w, /wp-content/uploads/2017/10/title-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /><p class="wp-caption-text">HTML5 Conferenceのセッション会場は超満員（写真提供: html5j）</p></div>

<div id="attachment_24565" style="width: 650px" class="wp-caption aligncenter"><img src="/wp-content/uploads/2017/10/speakers-640x427.jpg" alt="任天堂株式会社 企画制作部 フロントエンドエンジニア 堀川雄司氏（左） 企画制作部 ディレクター 津田 宗孝氏（右）  （写真提供: html5j）" width="640" height="427" class="size-large wp-image-24565" srcset="/wp-content/uploads/2017/10/speakers.jpg 640w, /wp-content/uploads/2017/10/speakers-300x200.jpg 300w, /wp-content/uploads/2017/10/speakers-207x138.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /><p class="wp-caption-text">任天堂株式会社 企画制作部 フロントエンドエンジニア 堀川雄司氏（左）<br />企画制作部 ディレクター 津田 宗孝氏（右）<br />（写真提供: html5j）<br /></p></div>

<h2>Nintendo SwitchではWeb技術が大活躍！</h2>

<p><b class="speaker siraisi">白石</b> 簡単に自己紹介をお願いできますか？</p>

<p><b class="speaker tsuda">津田</b> 企画制作部ディレクターの津田です。2011年に入社し、Switchでは、各種ネットワークサービス、コンポーネントブラウザーや本体内蔵ソフトのディレクション関係に携わってきました。</p>

<p><b class="speaker horikawa">堀川</b> 同じく企画制作部で、フロントエンドエンジニアの堀川です。私は2013年に入社し、ゲームソフトのダウンロード販売を行う、Nintendo eShopやゲーム連動サービスなどのWebサービスの開発を行っています。</p>

<p><b class="speaker siraisi">白石</b> ぼく全然ゲームをやらないもので、ゲーム機の中身がどうなっているのか全然知らないんです。<strong>Nintendo SwitchではWeb技術がかなり使われている</strong>、というだけでも驚きでした。</p>

<p><b class="speaker tsuda">津田</b> <strong>Nintendo Switchには、WebKitをベースとしたブラウザーコンポーネントが搭載されている</strong>んですよ。それを、スマートフォンで言うところの「WebView」のように、ゲームや本体内蔵ソフトからブラウザコンポーネントとして使うことができます。</p>

<p><b class="speaker siraisi">白石</b> そうなんですか！そのブラウザって、どのように活用されているんですか？</p>

<p><b class="speaker tsuda">津田</b> 活用の方法としては、まずは<strong>スマートフォンとの連携</strong>ですね。</p>

<p>例えばいろんな情報を入力する場合など、普段使い慣れているスマートフォンで入力していただくほうがスムーズに進めていただけます。ユーザーも慣れていますし。
なので、例えば「ニンテンドーアカウント」（※）を作成するときとかは、ゲーム機で行うのはメールアドレスを入れるところまでです。
以降の入力の大半はスマホで行えるようになっています。</p>

<p><small>
※ニンテンドーアカウント…任天堂が提供する各種サービスを利用するためのアカウント。インターネット対戦を行う際などに必要とされる
</small></p>

<p><img src="/wp-content/uploads/2017/10/nintendo-account-640x360.png" alt="" width="640" height="360" class="aligncenter size-large wp-image-24560" srcset="/wp-content/uploads/2017/10/nintendo-account.png 640w, /wp-content/uploads/2017/10/nintendo-account-300x169.png 300w, /wp-content/uploads/2017/10/nintendo-account-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石</b> スマホとSwitchで、得意分野を補い合っているんですね。</p>

<p><b class="speaker horikawa">堀川</b> ほかには、Switchにはゲームの画面を撮影する機能があるのですが、撮影した画面写真と動画をSNSに投稿する場合などにも、Webの仕組みを使っています。具体的には、クラウド上の中間サーバーにテキストや画像のデータを送信するのに、ブラウザをクライアントとして用いています。</p>

<p><img src="/wp-content/uploads/2017/10/sns-640x358.png" alt="" width="640" height="358" class="aligncenter size-large wp-image-24564" srcset="/wp-content/uploads/2017/10/sns.png 640w, /wp-content/uploads/2017/10/sns-300x168.png 300w, /wp-content/uploads/2017/10/sns-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石</b> なるほど、そういうクラウドのクライアントとしての処理も確かにWebのほうがやりやすそうですね。</p>

<p><b class="speaker tsuda">津田</b> それだけじゃありません。<strong>ゲーム内のコンテンツにも、HTMLやCSSなどのWebコンテンツは入っています</strong>よ。
まず気付くことはないと思いますが、普段のゲーム画面でも、Webブラウザで作った画面がさり気なく使われていたりします。</p>

<p><img src="/wp-content/uploads/2017/10/01-640x360.png" alt="" width="640" height="360" class="aligncenter size-large wp-image-24642" srcset="/wp-content/uploads/2017/10/01.png 640w, /wp-content/uploads/2017/10/01-300x169.png 300w, /wp-content/uploads/2017/10/01-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石</b> おお、これ途中からWebに切り替わってるんですよね？すごくシームレスで、ネイティブで作られた画面とほとんど区別がつかないですね。
でも、なんでここだけWeb技術を使っているんですか？</p>

<p><b class="speaker tsuda">津田</b> いわゆるゲームの画面と異なり、こういった文字の多いドキュメント画面で、特に多言語展開するケースにおいては、ゲームのNativeプログラムで作るより非常に早く開発することができるんですよね。</p>

<p><b class="speaker siraisi">白石</b> なるほど、スマホとの連携、クラウドへのデータ送信、多言語コンテンツなど、Webが得意な部分についてはWebを積極的に使ってらっしゃるということですね。</p>

<p><b class="speaker tsuda">津田</b> はい。私たちのチームでは「<strong>世界中のユーザーとゲームを繋げる</strong>」というビジョンがあるんです。その「繋げる」をこれまで以上に大きく広げるために、Webを積極的に使っているという流れです。当日のセッションではこれ以外にも、スマートフォンアプリの「Nintendo みまもりSwitch」や「Nintendo Switch Online」といったアプリでも、Webを様々な形で活用している例をご紹介しました。</p>

<p><img src="/wp-content/uploads/2017/10/mission-640x360.png" alt="" width="640" height="360" class="aligncenter size-large wp-image-24554" srcset="/wp-content/uploads/2017/10/mission.png 640w, /wp-content/uploads/2017/10/mission-300x169.png 300w, /wp-content/uploads/2017/10/mission-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<h2>Nintendo eShopはReactで作られている！</h2>

<p><b class="speaker siraisi">白石</b> 今回のセッションでは、Nintendo eShopというサービスの構築に関するお話が中心だったそうですね。</p>

<p><b class="speaker tsuda">津田</b> はい、Nintendo eShopというのは、Nintendo Switch上でゲームソフトを購入するためのオンラインショップです。Switchを持っていないときにでも、スマホなどからゲームソフトを購入できるようなサービスも提供しています。両者ともWebで作られています。</p>

<p><img src="/wp-content/uploads/2017/10/shop-640x360.png" alt="" width="640" height="360" class="aligncenter size-large wp-image-24656" srcset="/wp-content/uploads/2017/10/shop.png 640w, /wp-content/uploads/2017/10/shop-300x169.png 300w, /wp-content/uploads/2017/10/shop-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石</b> そういうマルチプラットフォーム的な展開は、Webの最も得意とするところですよね。</p>

<p><b class="speaker horikawa">堀川</b> そうです。スマートフォンやPCから見えるところはレスポンシブに作っていて、コードもかなりの部分が共有できています。ゲーム機で操作する場合はボタンでの操作になるので、多少は異なるコードが使われていますけどね。</p>

<p>eShopは、Webアプリとしてはかなり大規模と言って差し支えないレベルだと思いますが、アーキテクチャとしては全体的に統一されています。<strong>アーキテクチャの基盤としてはReactを使っています</strong>。</p>

<p><b class="speaker siraisi">白石</b> おお、Reactが使われてるんですか！Nintendo Switchの中でReactが動いているって、Web技術者としてはちょっと胸が熱くなりますね。
eShopは、どういう流れで作られたんでしょうか？</p>

<p><b class="speaker horikawa">堀川</b> プロジェクトの発足は2015年末です。Switchが発売されたのが2017年3月ですから、その1年ちょっと前からプロジェクトが始まったということになりますね。
eShopを作るにあたって私たちがよりどころにしたのは、<strong>「すぐに」というキーワード</strong>です。</p>

<h2>Nintendo eShopを支える、3つの「すぐに」</h2>

<p><b class="speaker siraisi">白石</b> 「すぐに」ですか？</p>

<p><b class="speaker horikawa">堀川</b> はい。具体的には「<strong>すぐに出会える</strong>」「<strong>すぐに買える</strong>」「<strong>すぐに改善</strong>」の3つを満たすショップであるべき、と考えて開発に臨みました。</p>

<p><img src="/wp-content/uploads/2017/10/suguni-640x360.png" alt="" width="640" height="360" class="aligncenter size-large wp-image-24568" srcset="/wp-content/uploads/2017/10/suguni.png 640w, /wp-content/uploads/2017/10/suguni-300x169.png 300w, /wp-content/uploads/2017/10/suguni-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>まず「<strong>すぐに出会える</strong>」というのは、「購入したい商品にすぐに出会える」ということです。
ゲームの魅力を少しでも正確に、多くの方に伝えて、「購入したい」と思っていただきたいということですね。</p>

<p>そのため、以前はショップ内に閉じていたゲームのプロモーションを、Switchの待ち受け画面で表示される「ゲームニュース」に任せることにしました。</p>

<p><img src="/wp-content/uploads/2017/10/game-news-640x360.png" alt="" width="640" height="360" class="aligncenter size-large wp-image-24552" srcset="/wp-content/uploads/2017/10/game-news.png 640w, /wp-content/uploads/2017/10/game-news-300x169.png 300w, /wp-content/uploads/2017/10/game-news-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>UIに関しても全面的に見直し、欲しいゲームにすぐに出会えるようにUIポリシーを再構築しました。</p>

<p><img src="/wp-content/uploads/2017/10/new-ui-policy-640x362.png" alt="" width="640" height="362" class="aligncenter size-large wp-image-24559" srcset="/wp-content/uploads/2017/10/new-ui-policy.png 640w, /wp-content/uploads/2017/10/new-ui-policy-300x170.png 300w, /wp-content/uploads/2017/10/new-ui-policy-207x117.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>「<strong>すぐに買える</strong>」というのは、「買いたい」と思ったらすぐに買えるような場所でありたいと思いました。そこで、Switch上の様々な場所からeShopに行くことができるように導線をはりめぐらしました。</p>

<p><img src="/wp-content/uploads/2017/10/conductor-640x360.png" alt="" width="640" height="360" class="aligncenter size-large wp-image-24544" srcset="/wp-content/uploads/2017/10/conductor.png 640w, /wp-content/uploads/2017/10/conductor-300x169.png 300w, /wp-content/uploads/2017/10/conductor-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker horikawa">堀川</b> また、ゲームを買おうかなと思って購入画面にいくと、全く別の印象をもった「システム画面」っぽかったりすると、ゲームを買いたいという熱が冷めてしまいます。<strong>そこでゲーム画面と購入画面をできるだけシームレスに見えるようなデザインを目指しました</strong>。</p>

<p><img src="/wp-content/uploads/2017/10/netsu-640x360.png" alt="" width="640" height="360" class="aligncenter size-large wp-image-24558" srcset="/wp-content/uploads/2017/10/netsu.png 640w, /wp-content/uploads/2017/10/netsu-300x169.png 300w, /wp-content/uploads/2017/10/netsu-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>しかしゲームの数は非常に多いので、そのそれぞれに手作業で背景色を指定したりするのは、非常に骨が折れます。</p>

<p>なので私たちは独自のアルゴリズムで、ゲームの画面イメージから色を自動で抽出し、背景色に指定するという処理を行っています。
私たちはこの処理で抽出したカラーパレットを自動的に生成できるように開発し、ゲームの魅力や個性を尊重しつつ、開発の効率を向上させることに成功しました。</p>

<p><img src="/wp-content/uploads/2017/10/dominant-color-640x360.png" alt="" width="640" height="360" class="aligncenter size-large wp-image-24549" srcset="/wp-content/uploads/2017/10/dominant-color.png 640w, /wp-content/uploads/2017/10/dominant-color-300x169.png 300w, /wp-content/uploads/2017/10/dominant-color-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石</b> これ、画像の中で一番使われている色を選んでいるというわけでもなさそうですね。ちゃんとゲームの特徴を捉えた色が選ばれている。どうやってるんですか…？</p>

<p><b class="speaker horikawa">堀川</b> そこは企業秘密です(笑)。</p>

<h2>そしてWebとReactが選ばれた</h2>

<p><b class="speaker horikawa">堀川</b> 最後は「<strong>すぐに改善</strong>」です。eShopは長期に渡って運営し、成長させていくプロジェクト。</p>

<p>eShopは、数多くの言語や国と地域に対応させていく必要がありますので、言語だけでなく、税率や通貨などの国際化も必要です。
それらの地域で例えば税率が変更されたりしたら、すぐに修正していけるような開発環境を構築していく必要がありました。</p>

<p>そういう改善のしやすさと、長期的な成長の土台を作るために開発環境の選定を行いまして、2015年末に「Webしかない」という決定を下したんです。</p>

<p><b class="speaker siraisi">白石</b> 確かに、そういう変更と反映のしやすさはWebの利点ですね。</p>

<p><b class="speaker horikawa">堀川</b> Webで行くと決まってからは、改善しやすい設計とパフォーマンスを両立させるために、ライブラリの選定を行いました。</p>

<p>使い勝手の面を考えるとシングル・ページ・アプリケーションが望ましかった。
また、Nintendo Switchは「サクサク動く」ことも大事にしていますので、パフォーマンスが良いことも重要です。
そうして、<strong>結局私たちが選んだのはReactとReduxの組み合わせ</strong>でした。</p>

<p><img src="/wp-content/uploads/2017/10/reactredux-640x360.png" alt="" width="640" height="360" class="aligncenter size-large wp-image-24562" srcset="/wp-content/uploads/2017/10/reactredux.png 640w, /wp-content/uploads/2017/10/reactredux-300x169.png 300w, /wp-content/uploads/2017/10/reactredux-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石</b> 2015年末くらいにそれを選ばれたというのは、かなり新しめの取り組みでしたよね、きっと。</p>

<p><b class="speaker horikawa">堀川</b> はい、私たちはその時点で最善と思われる手法を、積極的に採用しています。
Reactを使う場合は、いろんなライブラリを組み合わせて使うのが普通です。以下が、私たちが使っているライブラリの一例です。</p>

<p><img src="/wp-content/uploads/2017/10/react-libs-640x360.png" alt="" width="640" height="360" class="aligncenter size-large wp-image-24561" srcset="/wp-content/uploads/2017/10/react-libs.png 640w, /wp-content/uploads/2017/10/react-libs-300x169.png 300w, /wp-content/uploads/2017/10/react-libs-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石</b> Reactを徹底して使われたということがわかります。大規模なWebアプリを作るのに、Reactを使ってみていかがでしたか？</p>

<p><b class="speaker horikawa">堀川</b> やはり、コンポーネント指向での開発は、様々な利点があると感じました。コンポーネント単位でのテストは容易ですし、再利用性も向上します。
CSS Modulesを使ったおかげで、大規模サイトにもかかわらずCSS設計が破綻しなかったのも良かったですね。</p>

<p><img src="/wp-content/uploads/2017/10/component-oriented-640x360.png" alt="" width="640" height="360" class="aligncenter size-large wp-image-24543" srcset="/wp-content/uploads/2017/10/component-oriented.png 640w, /wp-content/uploads/2017/10/component-oriented-300x169.png 300w, /wp-content/uploads/2017/10/component-oriented-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<h2>Nintendo eShop開発秘話（1）: デザイナーとエンジニアの間に溝が！</h2>

<p><b class="speaker siraisi">白石</b> eShopの開発を行うにあたって、いろんな課題にぶつかったんじゃないかと思うのですが、実際にはいかがでしたか？</p>

<p><b class="speaker horikawa">堀川</b> まず開発初期の段階で、<strong>コンポーネント指向を巡って、デザイナーとエンジニアの間で溝ができてしまった</strong>のは頭を悩ませました。</p>

<p><b class="speaker siraisi">白石</b> コンポーネント指向で溝、ですか。</p>

<p><b class="speaker horikawa">堀川</b> はい。コンポーネント開発を進める上で何を共通化するのかで、デザイナーとエンジニアの間で感覚が全然違ったんですね。ぼくらは最初、それに気づいていませんでした。</p>

<p>デザイナーはコンポーネントに分割することで、「見た目」「体験」を共通化できるものと考えます。だから、見た目が異なる場合は違うコンポーネントになると考える。</p>

<p>一方エンジニアは、「内部」「機能」を共通化するものだと考えがちです。なので、「価格を表示する」というコンポーネントがあるとすると、それをできるだけ再利用しようとする。</p>

<p>だから例えば、デザイナーが「画面によっては価格を目立たせたいから、違うデザインにしたい」と伝えても、エンジニアは「価格を表示するという機能が共通なのだから、同じコンポーネントで」と考えてしまい、コミュニケーションに溝ができてしまうんです。</p>

<p><img src="/wp-content/uploads/2017/10/conv1-640x360.png" alt="" width="640" height="360" class="aligncenter size-large wp-image-24546" srcset="/wp-content/uploads/2017/10/conv1.png 640w, /wp-content/uploads/2017/10/conv1-300x169.png 300w, /wp-content/uploads/2017/10/conv1-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><img src="/wp-content/uploads/2017/10/conv2-640x360.png" alt="" width="640" height="360" class="aligncenter size-large wp-image-24547" srcset="/wp-content/uploads/2017/10/conv2.png 640w, /wp-content/uploads/2017/10/conv2-300x169.png 300w, /wp-content/uploads/2017/10/conv2-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石</b> 「共通化」と言っても、それぞれの立場で重視するものが違うから、「何を共通化するか」の感覚も違ったと。</p>

<p><b class="speaker horikawa">堀川</b> そうしたコミュニケーションの溝を埋めるために試行錯誤した結果、結局、全体のモックアップを先に開発することにしました。
このときはReactも使わずに、デザイナーが作ったデザインカンプを元に、プレーンなHTMLとCSSを使って作りました。</p>

<p><img src="/wp-content/uploads/2017/10/mockup-640x360.png" alt="" width="640" height="360" class="aligncenter size-large wp-image-24557" srcset="/wp-content/uploads/2017/10/mockup.png 640w, /wp-content/uploads/2017/10/mockup-300x169.png 300w, /wp-content/uploads/2017/10/mockup-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>こうして、開発するもののイメージを先に合わせておくことで、デザイナーとエンジニアの認識のズレを抑えることができました。</p>

<p><b class="speaker siraisi">白石</b> なるほど、ゴールイメージの共有を行うことで、認識のズレが解消されたわけだ。</p>

<p><b class="speaker horikawa">堀川</b> そうです。特にeShopは、既存のサービスも既にありましたので、ゴールイメージは共有できているものと何となく思っていたんですよね。問題の原因にはそうした思い込みもあったと思います。</p>

<p>ほかにチーム内の意識を共有するためにやったこととしては、コンポーネントのカタログを作ることですね。<a href="https://github.com/storybooks/storybook" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Storybook</a>を使用すると、アプリケーション外で動作するReactコンポーネントのカタログを作れます。コンポーネントの動作を簡単に確認できるので、非常に便利でした。</p>

<p><img src="/wp-content/uploads/2017/10/storybook-1-640x360.png" alt="" width="640" height="360" class="aligncenter size-large wp-image-24657" srcset="/wp-content/uploads/2017/10/storybook-1.png 640w, /wp-content/uploads/2017/10/storybook-1-300x169.png 300w, /wp-content/uploads/2017/10/storybook-1-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石</b> Storybookって初めて知りました。便利そうですねーこれ。</p>

<h2>Nintendo eShop開発秘話（2）: 仕様が複雑すぎる！</h2>

<p><b class="speaker horikawa">堀川</b> 次に、eShopを設計するにあたっては、<strong>ユーザーストーリー（※）を中心としました</strong>。例えばこういうユーザーストーリーです。</p>

<p><img src="/wp-content/uploads/2017/10/user-story-640x360.png" alt="" width="640" height="360" class="aligncenter size-large wp-image-24572" srcset="/wp-content/uploads/2017/10/user-story.png 640w, /wp-content/uploads/2017/10/user-story-300x169.png 300w, /wp-content/uploads/2017/10/user-story-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>※ユーザーストーリー…ユーザーがシステムを通じて達成できることを書き下した文章</p>

<p><b class="speaker siraisi">白石</b> なるほど、結構粒度細かいですね。この粒度だと、ユーザーストーリーの数がかなり多くなったのではないでしょうか？</p>

<p><b class="speaker horikawa">堀川</b> はい、かなりの数です。ユーザーストーリーはスプレッドシートで一覧にして管理していたのですが、実際にはこんな感じです。</p>

<p><img src="/wp-content/uploads/2017/10/user-stories-640x360.png" alt="" width="640" height="360" class="aligncenter size-large wp-image-24571" srcset="/wp-content/uploads/2017/10/user-stories.png 640w, /wp-content/uploads/2017/10/user-stories-300x169.png 300w, /wp-content/uploads/2017/10/user-stories-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石</b> おー、すごい！実際の開発に使われていたスプレッドシートとか見ると、テンション上がりますね(笑) ストーリー以外にも、いろんな情報が書き込まれていますね。</p>

<p><b class="speaker horikawa">堀川</b> はい、テストケースや品質目標も、全部ユーザーストーリーを中心に組み立てていったので。</p>

<p>品質目標というのは、「Never（あってはならない）」「Must（できなければいけない）」「Want（あったらいいな）」という項目をストーリーに付与できるようにしたものです。これで、ストーリーに基づくユーザー体験を一定品質で保証できるようにしました。</p>

<p><b class="speaker siraisi">白石</b> モックも作って、設計も入念に…って、設計段階で品質を上げようとする努力がすごいですね。</p>

<p><b class="speaker horikawa">堀川</b> いえ、まだあります。テスターに早くから協力してもらったのも、eShopの品質の上では重要でした。</p>

<p>eShopは先ほども申し上げた通り、数多くの国と言語を扱わなければなりません。実際にはそれに加えて法律や通貨、決済方法なども考慮に入れて仕様を作っていく必要があります。だから仕様がどうしても複雑になってしまうんですよね。</p>

<p><img src="/wp-content/uploads/2017/10/complex-640x360.png" alt="" width="640" height="360" class="aligncenter size-large wp-image-24542" srcset="/wp-content/uploads/2017/10/complex.png 640w, /wp-content/uploads/2017/10/complex-300x169.png 300w, /wp-content/uploads/2017/10/complex-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>なので、テストのプロが仕様を決める段階でチェックをするようにして、早い段階で重大な考慮漏れに気付けるようにしたわけです。</p>

<p><img src="/wp-content/uploads/2017/10/conv3-640x368.png" alt="" width="640" height="368" class="aligncenter size-large wp-image-24548" srcset="/wp-content/uploads/2017/10/conv3.png 640w, /wp-content/uploads/2017/10/conv3-300x173.png 300w, /wp-content/uploads/2017/10/conv3-207x119.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker siraisi">白石</b> このスライドにあるような事柄を、全部エンジニアが一人で考えて仕様に落とすのはさすがに難しいですもんね。</p>

<h2>Nintendo eShop開発秘話（3）: 最後は「お祭り」！そして任天堂がWebに期待すること</h2>

<p><b class="speaker horikawa">堀川</b> リリースまであと半年っていう段階で、大変なことが判明しまして。<strong>Switch上で、OSからWebまで統合して動かしてみたら、全然期待するパフォーマンスが出ないし、尋常なく不安定で遅かった</strong>んですよ。起動も遅いし、不安定だし。</p>

<p><b class="speaker siraisi">白石</b> えー！それはゾッとする話ですね…</p>

<p><b class="speaker horikawa">堀川</b> 大問題だったので、全チームに呼びかけて助けを求めました。SDK/OSプログラマ、本体アプリプログラマ、ブラウザーエンジニア、サーバエンジニア、デザイナー…。弊社は、多くの関係者が一つの建物にいるので課題の共有が早くできるため、結果的に改善も早くできるのがすごくいいところです。</p>

<p><img src="/wp-content/uploads/2017/10/festa-640x360.png" alt="" width="640" height="360" class="aligncenter size-large wp-image-24551" srcset="/wp-content/uploads/2017/10/festa.png 640w, /wp-content/uploads/2017/10/festa-300x169.png 300w, /wp-content/uploads/2017/10/festa-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>全員が1つの目標に向かってアイデアを出し合いました。エンジニアは最適化のアイデアを。デザイナーは起動アニメを工夫して、起動待ちのストレスを軽減しました。
<strong>まさにこれは「お祭り」</strong>という感じでしたね。誤解のないようにお伝えしておくと、お祭りとは「炎上」ではありません。力の結集なんです。</p>

<p>我々はWebサービスを作る上で、フロントエンド、バックエンドだけではなく、ブラウザー、OS、そしてゲームソフトやハードまであらゆる関係者全員の力を結集してプラットフォーム、そしてプロダクト、サービス、コンテンツを生み出しています。非常にダイナミックな体験ができます。</p>

<p>無事、2017年3月、Nintendo Switchの発売にこぎつけることができたのは、こうした全員参加の「お祭り」あってこそだったんです。</p>

<p><b class="speaker siraisi">白石</b> Nintendo Switch発売の裏側で、そんなことが起きていたとは、聞いていてちょっと感動的でもありました。もっといろいろお話を聞きたいところですが、残念ながらそろそろお時間になってしまいました。最後の質問です。HTML5Experts.jpはWeb技術者向けの媒体ですので、任天堂さんがWebに期待していることを教えていただけますか？</p>

<p><b class="speaker tsuda">津田</b> それはやはり、最初に申し上げた「世界中のユーザーとゲームをつなげる」というビジョンに尽きます。あらゆる人々やあらゆるコンテンツを、デバイスを超えてつなぐことができるのは、Webは最適だと思っています。</p>

<p><img src="/wp-content/uploads/2017/10/mission2-640x360.png" alt="" width="640" height="360" class="aligncenter size-large wp-image-24555" srcset="/wp-content/uploads/2017/10/mission2.png 640w, /wp-content/uploads/2017/10/mission2-300x169.png 300w, /wp-content/uploads/2017/10/mission2-207x116.png 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p><b class="speaker horikawa">堀川</b> そして、Webの世界は進化が速いですが、ビジョンをより高いレベルで達成するためにも、私たちも常に最善の手法を採用して、より優れたWebサービスを開発していきたいと思います。弊社ではフロントエンジニアを募集しておりますので、一緒に開発してくれる方をお待ちしてます。</p>

<p><b class="speaker siraisi">白石</b> 本日は、大変興味深いお話をどうもありがとうございました！</p>

<p><b>堀川/津田:</b> こちらこそ取材いただきまして、ありがとうございました。</p>
]]></content:encoded>
		
		<series:name><![CDATA[HTML5 Conference 2017特集]]></series:name>
	</item>
		<item>
		<title>WebGLを活用した3D Web ゲーム『翠星のガルガンティア～キミと届けるメッセージ～』</title>
		<link>/ykasugai/7743/</link>
		<pubDate>Tue, 01 Jul 2014 04:00:20 +0000</pubDate>
		<dc:creator><![CDATA[春日井 良隆]]></dc:creator>
				<category><![CDATA[最新動向]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[WebGL]]></category>
		<category><![CDATA[ゲーム]]></category>

		<guid isPermaLink="false">/?p=7743</guid>
		<description><![CDATA[Production I.Gと日本マイクロソフトのコラボレーションによる3D Webゲーム『翠星のガルガンティア　～キミと届けるメッセージ～』が、Internet Explorerのデモサイト「Rethink」シリーズの...]]></description>
				<content:encoded><![CDATA[<p>Production I.Gと日本マイクロソフトのコラボレーションによる3D Webゲーム『<a href="http://fly.gargantia.jp/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">翠星のガルガンティア　～キミと届けるメッセージ～</a>』が、Internet Explorerのデモサイト「<a href="http://fly.gargantia.jp/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Rethink</a>」シリーズの日本発コンテンツとして、6月18日に公開されました。</p>

<p><img src="/wp-content/uploads/2014/07/Gargantia-Game-A-Japanese.jpg" alt="Gargantia Game A" width="640" height="320" class="alignnone size-full wp-image-7750" srcset="/wp-content/uploads/2014/07/Gargantia-Game-A-Japanese.jpg 640w, /wp-content/uploads/2014/07/Gargantia-Game-A-Japanese-300x150.jpg 300w, /wp-content/uploads/2014/07/Gargantia-Game-A-Japanese-207x103.jpg 207w" sizes="(max-width: 640px) 100vw, 640px" /></p>

<p>このゲームはアニメ『翠星のガルガンティア』から生まれたスカイアクションゲームで、この作品のためにシナリオを書き下ろし、アニメ本編の声優はフルボイスで出演、そして世界中のファンが楽しめるように、日本語と英語のキャプションを用意するなど、ゲームそのものに気合いが入っているだけでなく、開発者向けにはソースコードの一部と3Dモデルを公開し、WebGLの裾野を広げることも目的にしています。</p>

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

<p><br></p>

<h2>Web 表現の限界に挑戦</h2>

<p>大いに自慢したいのが、そのWebGLの表現力と応答性です。大きな入道雲や飛行ルートを邪魔する気流、すれ違うカモメの群れ。いずれもリアルタイムに美しく描画しているだけでなく、ゲームの爽快感を損なわないように滑らかに軽快にレンダリングされています。</p>

<p>このゲームはInternet Explorer 11のタッチ操作に最適化されていますが、マウスとキーボードでも遊ぶことができます。さらに<a href="http://msdn.microsoft.com/en-us/library/ie/dn743630(v=vs.85).aspx" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Gamepad API</a>にも対応。ゲームパッドコントローラでも遊べます。また、レスポンシブWebデザインを反映して、プレイできるエリアはディスプレイの解像度に合わせて自動的に調整されるようになっています。</p>

<p><img src="/wp-content/uploads/2014/07/Gamepad-API-1.jpg" alt="" width="550" height="183" class="alignnone size-full wp-image-7752" srcset="/wp-content/uploads/2014/07/Gamepad-API-1.jpg 550w, /wp-content/uploads/2014/07/Gamepad-API-1-300x99.jpg 300w, /wp-content/uploads/2014/07/Gamepad-API-1-207x68.jpg 207w" sizes="(max-width: 550px) 100vw, 550px" /></p>

<h2>オープンソースのTurbulenzエンジンで構築</h2>

<p>ガルガンティアでは、開発者がより効率的に3DのWebコンテンツが作れるようなリファレンスになることも目標の一つです。今回はイギリスに本拠地を置くゲームデベロッパー、<a href="https://ga.me/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Turbulenz</a>と連携し、オープンソースの<a href="https://github.com/turbulenz/turbulenz_engine" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Turbulenz Engine</a>を使って開発しています。</p>

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

<p>Turbulenz EngineはJavaScriptとTypeScriptで実装された2D/3Dゲーム開発エンジンです。ハイパフォーマンスな物理エンジン、高品質なビジュアルエフェクト、パーティクルシミューレション、アニメーションエンジンといった豊富な機能を提供し、ゲーム技術の広い範囲をカバーしています。</p>

<p>Turbulenz Engineは無料で<a href="https://github.com/turbulenz/turbulenz_engine" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">GitHub</a>からダウンロードできます。</p>

<p>さらに、ゲームの一部のソースコードと3Dモデルも公開しています（アドベンチャーパート、ボイスデータ、BGMデータは含まれません）。こちらも<a href="https://github.com/turbulenz/turbulenz_engine" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">GitHub</a>からダウンロードできますので、読者の皆さんもぜひお試し下さい。ソースの入手とWebサーバーへの配置については、弊社のエバンジェリスト物江がブログ「<a href="http://blogs.msdn.com/b/osamum/archive/2014/06/18/iis-gargantia.aspx" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">ゲーム『翠星のガルガンティア』のソースの入手とIISへの配置方法</a>」で紹介しています。</p>

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

<p>IE9で掲げた「Same Markup」と同様に、いまもIEの開発ではWeb標準への準拠をなによりも大切にしています。この『<a href="http://fly.gargantia.jp/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">翠星のガルガンティア　～キミと届けるメッセージ～</a>』もWebGLに対応したほかのブラウザでもお楽しみいただけます。今後、新しい面が追加されていきます。お楽しみに！</p>
]]></content:encoded>
			</item>
	</channel>
</rss>
