<?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>Nintendo Switch &#8211; HTML5Experts.jp</title>
	<atom:link href="/tag/nintendo-switch/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>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>
	</channel>
</rss>
