Nintendo Switchは本体の画面でプレイすることもできれば、テレビの大きな画面に接続して遊ぶこともできるゲーム機として登場しました。今では世界中の多くのお客様に、いつでも、どこでも、誰とでも、自由なプレイスタイルで遊んでいただいていることと思います。 Nintendo Switchでそのような複数の遊び方ができることは、今では当たり前のことと捉えられていただけていると思いますが、 Wii U以前の任天堂ゲーム機では自由に遊び方を変えることはできませんでした。私は入社直後からNintendo Switchのハードウェアを動かすファームウェアの開発に関わり、複数の遊び方ができるゲーム機の実現を目指してきました。
Nintendo Switchの本体ではゲームを動かす機能だけでなく、OSのサービス、デバイスドライバー、そしてアプリケーションとハードウェアの架け橋となるカーネルなどが機能しており、それらは社内外の大勢の開発者がそれぞれの専門性を活かして、ハード・ソフト一体型の開発によって作り出したものです。非常に多くの機能が一つのハードウェアの中に入っており、新しい体験を実現するために前例のない作り方や使い方をしているものも多くあります。一方で、前例のない作り方をしていると機能同士が連携せず、ゲーム画面が意図したとおりに映らないなどの原因になってしまいます。ゲームを楽しく遊びたいというお客様の期待に応えるためには、開発中に発生した不具合は迅速に直すことが非常に重要です。
不具合が発生したときは、まず原因を特定する必要がありますが、原因となる場所を見つけることは容易ではありません。たとえば、ゲーム機の中で問題が発生してから数秒ほど遅れたタイミングで目に見える不具合として出てくることもあれば、ある動作を何度も繰り返すうちに数万分の1の確率で発生するような不具合もあります。当然ながらゲーム機の各機能はそれぞれが正しく動作をするように作られているものの、一つの製品として組み合わさったときに意図しない動作をする可能性もあり、その点がこの仕事の難しいところです。
不具合は発生後に複数のプロセスやスレッドにまたがって波及していくため、原因究明のためにはゲーム機全体におけるソフトウェアやハードウェアの挙動をそれぞれ把握し、その繋がりまで深く理解する必要があります。そこで私は、各専門分野のエンジニアが書いたプログラムや仕様書を綿密に読み込み、それぞれの理論をしっかり理解するようにしました。こうすることでハードウェアに近い層であるデバイスドライバーやカーネルから、最終的にゲーム機上で動作するゲームの挙動に至るまで、すべての階層について把握をすることができました。
その結果、私はハードウェアや各ソフトウェアの全体的な流れからメモリアクセスのような細かい挙動まで、頭の中でさまざまなシミュレーションをして不具合の原因を究明することができるようになりました。「ここで間違いが起こったらその後は何が起こるだろうか」「この症状が出るためにはその前に何が起こっているだろうか」と考えてひとつひとつの可能性を絞りこんでいくのは、詰将棋を解く感覚にも近いと思います。複雑な流れをシミュレーションして原因を突き止めることは大変ですが、製品から不具合を取り除き、ゲーム機が当たり前に動く環境の中でお客様がゲームに熱中されている姿を見ることができたときは、苦労をした甲斐があったと心から感じます。
私は入社後からずっと、Nintendo Switchに関わり続けています。前例のない作り方が必要になることは多くありますが、任天堂ではソフトウェアもハードウェアも社内で開発しているため、さまざまなエンジニアたちとすぐに話ができます。話をしながら作りこみができる環境にあることは、エンジニアとして働くうえでの大きなメリットだと実感しています。これから先も前例のない機能や製品であっても、世界中のお客様から“当たり前”と感じていただけるよう努力し続けたいです。