ハル研ブログ BLOG

仕事内容
執筆者:石村 タグ: プログラマー

【プログラマーの仕事】ゲーム機本体システムの開発の魅力

こんにちは、入社13年目のプログラマーの石村です。

ハル研究所でのプログラマーの仕事としては、ゲーム開発を思い浮かべる方が多いと思いますが、実はそれだけではないんです。
今年任天堂から発売となった「Nintendo Switch」の本体システムの一部であるWEBブラウザコンポーネント、Mii(似顔絵)ライブラリ、ゲーム向け開発環境・開発ツールなどの開発に、当社も参加しています。
このWEBブラウザコンポーネントは、Nintendo Switchのニンテンドーアカウントとの連携、Nintendo eShop、画面写真のSNS投稿等の機能に使われています。
(これらの開発についてはプロデューサーの池上の記事でも紹介していますので、ぜひこちらもご覧ください)

私は、入社当初はゲーム開発を担当していましたが、機会があり、今はこのWEBブラウザコンポーネント等の開発を担当しています。

本体システムの開発は、ゲーム開発と違い、普段はあまり表に出ることのない仕事ですが、こちらもプログラマーとしてとても面白い仕事です。普段どのような仕事をしているか、また、その魅力を紹介したいと思います。

私は、主に以下のような流れで仕事を行っています。
(この順番通りに進むわけではありませんが、おおよそこのような流れになります)

・仕様すり合わせ
・設計
・実装
・テスト整備

まず、「仕様すり合わせ」です。
ディレクターからのリクエストに対して、 技術的な観点、コストを加味してどのようにするべきかを考え、ディレクターとすり合わせを行って仕様を固めていきます。
時には、発想を転換して「実はやりたいことって、こうすれば解決します?」のような提案を行ったりもします。
ですので、普段から技術的な情報にどれだけアンテナを張っているかが大事になりますし、また、それをディレクターに納得してもらうコミュニケーション能力も必要です。

次に、「設計」です。
仕様の動作をさせるために、最適な構造はどうあるべきか?ということを考えていきます。
このあたりは、プログラムリーダーと相談しながら詰めていくことが多いです。
(といっても、今のチームでは私がリーダーなので相談される立場です)
ある程度考えては、手を動かしてコードを書き、また考え直して、を繰り返すことも多いです。

それから、「実装」です。
統合開発環境(IDE)や、好みのテキストエディタを使って、どんどんコードを書いていきます。
本体システムの開発では、基本的にC++で実装を行います。
実装は、プログラマーとしての腕の見せ所です。
あれこれ考えながら、仕様を満たすのはもちろん、普段からの知識を活かして自分が格好良いと信じるコードを書いていきます。
ただ、実際に動作させてみての状況次第で、前の段階に戻したりもします。そのあたりは状況次第で柔軟に判断していきます。
そして、コードを書き終わったらチーム内でのコードレビューが待っています。
技術には厳しい同僚プログラマーたちの意見が飛び交い、コードはさらに磨かれていきます。

最後に、「テスト整備」です。
自分の作った機能にバグがあった場合、他の開発者や、何よりお客さんに迷惑を掛けることになってしまいます。
そのようなことにならないためにも、自分の作ったコードが期待通り動いているのかを、自動的にチェックする仕組みや、品質チェックを行うチームに確認を依頼する内容やツールを整備します。
ここも、より効果的、効率的にするためのプログラマー的な発想による工夫が求められるところです。
開発の後期に行うことが多く、最後の一踏ん張りといったところです。

ここまでで、どのような仕事を行っているかについて触れてきましたが、次はこの仕事の魅力について話をしようと思います。

本体システムの開発について、私は、以下が魅力的なところだと感じています。

・工夫次第でどんどん良くなる
・新しいゲーム機の立ち上げに参加できる
・多くのお客さんが触る部分を作れる

まず、「工夫次第でどんどん良くなる」。
ゲームに比べると、本体システムのソフトウェアは、比較的「何が良いか」ということが分かりやすいと感じます。
なので、「これは良くなる」と思ったことを提案、実装、改善したりすると、実際良くなることが多いです。
このあたりの工夫を日々考えることは、プログラマーとしてとても楽しいことです。

次に、「新しいゲーム機の立ち上げに参加できる」。
本体システムのソフトウェアは、その性質から、ゲーム機の立ち上げに並行して、ゲーム機本体の一部として開発が進むことが多いです。なので、早い段階からゲーム機や、その技術に触れることができます。
これは、技術屋として大変嬉しいところです。
ただ、当然ですが、その分厳しい情報管理が求められますので、しっかりと気を引き締める必要があります。
そして、何よりそのゲーム機自体の立ち上げに参加できるというのは、この上ない喜びです。
ゲーム機自体が成功したときには、ここまでの自分の努力が報われた気持ちになります。

最後に、「多くのお客さんが触る部分を作れる」ですが、本体システムのソフトウェアは、ゲーム機を使用する人全てが触る可能性がある部分になります。
例えば、タッチしたときのUIの滑らかさ、レスポンスの良さなどにこだわれば、これを享受できるのは、ゲーム機を購入した人全てになります。
処理速度にしても、たったコンマ数秒だったとしても最適化を行い短くすれば、この利益を享受できるのは、ゲーム機を購入した人全てになります。
つまり、世界中の何百万人という人が、自分の作ったプログラムを触る可能性がある、ということなのです。
これには、とてつもなく大きなやりがいを感じています。

さて、ここまで本体システムの仕事について紹介してきましたが、いかがだったでしょうか?
今回の記事をきっかけに、少しでも本体システムのソフトウェア開発に興味を持っていただけたなら、とても嬉しいです。