インディーズゼロは,ニンテンドーDS(任天堂)などの携帯ゲーム機用のゲームソフトを中心に開発を行っている,ゲームソフト開発会社です。オフィスは,緑の豊富な井の頭公園や,オシャレなお店でにぎわう吉祥寺にあり,スタッフ数は現在22名。
 「千年家族」や「しゃべる!DSお料理ナビ」といった一風変わったタイプのゲームソフトの開発を得意としています。ここでは,実際にゲーム開発に携わるプログラマが,どんな仕事をし,そんな生活を送っているのかをご紹介したいと思います。

◆プログラマ「EVIAN」のとある1日【通常の日】

EVIANの自己紹介

 工業大学の情報工学科を卒業後入社,今年で4年目です。プログラミングを始めたのは大学入学と同時で,当時からゲーム業界を志望していたこともあり,大学でのカリキュラムのほかにプログラミング・サークルでも活動していました。

 とはいえ,一つのことをコツコツと続けるというのはどちらかというと苦手で,几帳面でも職人気質でもない性格のせいか,プログラムと付き合った時間の割にまだまだ自分は未熟だと思います。就職した今でも,構造化されて整った設計であるとか,可読性の高いコードなどといった点で改善の余地が大きいと思えることは多いです。

 ゲーム業界でも,大規模開発体制の必要性は日々大きくなっているので,前述のような集団開発に求められるスキルを意識して向上させていくべきと考える日々です。

 「しゃべる!DSお料理ナビ」では,主にメインパートとなるナビシーンや,材料・事典画面などのインタフェースといったフロントエンドの開発をしました。現在開発中の最新作では,フロントエンドの開発に加えてデータ作成のための専用ツールの作成や,スクリプト・データの管理なども担当しています。

 どちらかというとズボラと言える自分にとっては,事前の設計がものをいうデータ管理という分野は一つのチャレンジですね。不得意分野を作らず,自分を成長させられたら良いと思っています。

ある日のスケジュール

09:00 起床

 もともと朝が遅い仕事のうえに徒歩通勤。たいていの友人には,出社時間の話をすると驚かれます。

10:00 出社

 出社直後は,メールや社内掲示板の確認,その後いつもチェックしているニュース・サイトの巡回などをしています。ゆるやかに仕事に移って,午前中は主に簡単な仕事や前の日の仕事の抜けなどをこなします。

12:30 昼食

 私の会社は,吉祥寺という比較的華やかな街にあるので,昼食の選択肢に困ることはありません。会社の仲間と,弁当の買い物や外食に出かけます。また,新作ソフトの発売日にはゲーム・ショップで注目作の購入も。さすがにゲーム好きが揃っているので,他社製タイトルの研究には余念がありません。

13:30 午後の仕事

 この辺からエンジン本格始動,ウェイトの大きい仕事を始めます。仕事の内容はそのときによって大きく変わりますが,その大部分がC言語によるプログラムです。

 最近の私の仕事は,Windows上で動作するデータ入力ツール兼コンバータの開発や,実際にデータを使用するニンテンドーDSでのファイル・アクセス手段の整理,実際にそれを使用するシーンの作成などでした。

 Windowsソフトの場合はBorland C++Builder,DSのプログラムは任天堂より提供される開発ツール,というように開発環境は変わりますが,やること自体は大きくは変わりません。

 求められるプログラマのスキルとしては,最先端の技術/パラダイムへの理解といったシステムへの適応性より,メモリーを意識した低レベルのプログラムや計算量の見積もりといった基礎的なことのほうが大きなウェイトを占めているのではないでしょうか。

 プログラミングという仕事全般に言えることですが,目標を定めて問題の解決に集中することが大事だと思います。難問と思っている仕事でも,よく集中できている状況だと思ったより早く片付いたりして,ちょっとした優越感に浸る,そんな時間が持てるようだと,その日の自分は好調ですね。

 いつもそう上手くはいきませんが,良いパフォーマンスを維持するポイントは集中力に尽きると思います。

15:30 会議

 週に1~2回程度のチーム会議で,進ちょくの報告や今後の進行・課題について話し合います。内容は様々で,進ちょくの報告だけで終わることもありますが,時には,開発の大幅な軌道修正が決まることも。

 ゲームは,他のソフトウエアと比べて少し変わった特徴があって,最終的な出力結果だけでなく,プレイする過程におけるユーザーの心地良さ・快楽といったものが非常に大きく求められます。

 それは事前に考えられた仕様だけで対応できるとは限らないので,「実際に遊んでみたら違った」「こうすればもっと良くなる」といったことはままあります。そういうときの会議では,ソフトウエアが目指す方向性をチームがしっかり共有していることが大事です。

 会議は,クオリティを高めるために各自の思うことを話し合って,果たしてそのゲームがどういうものであれば望む人に喜ばれるのか,ということを確かにしていく作業でもあります。

20:00 帰宅

 仕事がさして忙しくないときは早く帰ります。徹夜なんて当たり前の,とにかく夜が遅い仕事という印象を持っている方も多いと思いますが,年がら年中そんな日ばかりではありません。

 「帰れるときは帰るというメリハリも仕事の技術の一つだ」というのは先輩プログラマから学んだことの一つです。

20:30 夕食

 夕食は外食で済ませることが多いです。もちろん,会社には家族と暮らしている人や自炊している人もいるので,これは個人のライフスタイルの問題でしょう。

 質素で健康的な家庭の食事が恋しくなることもありますが,やはり自炊となると面倒臭いので,片付けが必要ない手段に頼ってしまいます。

21:00 余暇

 余暇で何をするかは全くその日によるわけですが…。私の場合は,自宅で飲んでいるか,音楽鑑賞が多いでしょうか。時代遅れのヘヴィ・メタル愛好家で,仕事から解放された喜びをアルコールとヘッドバンキングで満喫しています。

22:00 ゲーム

 プライベートでも,もちろんゲーム好きです。趣味を仕事にすると辛いという話には同意できないですね。

 やはり,作る立場になると分析的な目でゲームを見てしまって純粋に楽しめないこともあるのですが,それでも年に何本かは「凄い!」というゲームと出会います。

 そういうゲームに出会えるのはユーザーとしても幸せなことだし,職業人としても刺激になって良いですね。娯楽に携わる人間は,やはりその娯楽が好きであるべきだと思います。

02:00~03:00 就寝

 出社時間が遅いため,この時間の就寝でも問題ありません。周囲の話を聞いても,やはりこのくらいの時間に休む人が多いように思います。

 ゲーム・プログラマは,だいたいが夜型人間になってしまうようです。

ゲーム・プログラマってどう?

 ゲーム・プログラマというのは,不規則な生活を宿命付けられ,浮き沈みの激しい業界から来る将来への不安といったリスクを覚悟しなければならない職業です。しかし,数多いソフトウエア開発というフィールドの中でも,他にはない特権的な喜びを持っています。

 あらゆるソフトウエアの中で,これほど多くの人に触れる機会を持ち,ユーザーの感情を大きく刺激する物というのはゲームのほかにありません。

 それだけに,自分が開発に携わったソフトについて,ユーザーが喜んでいる声に触れることができたときはとてもうれしいものです。もちろん,自分もゲームが好きでよく遊びます。ユーザーの反応はまさにそんな遊び手としての自分の鏡。良いゲームに出会ったときに感じる喜びも,イマイチなゲームを遊んだときのガッカリ感も,すべて自分のことのように感じてしまいます。

 そんな風に,昔,自分がゲームから享受した感動を,今,提供できていると実感できることが,仕事としてゲームにかかわるうえでのこの上ない喜びです。

◆プログラマ「KAZ」のとある1日【忙しい日】

KAZの自己紹介

入社何年目:
 4年目です。

プログラミングを始めた時期:
 高校を卒業して専門学校に入ってからです。

自分はどんなプログラマか:
 どちらかと言うと,データ構造を作る(考える)のが得意です。3Dプログラミングに慣れるのが課題だと思います。

プログラミングで心がけていること:
 読みやすさです。複雑な計算をする場合にも,1行で書いてしまわずにステップ(区切り)ごとに複数の行に分けて計算するなど,何をしているのか見通しを良くするようにしています。

仕事に関して,今まででいちばん嬉しかったこと:
 やはり,自分が作ったソフトが発売されたときです。テレビでCMを見るだけでもうれしいですね。

仕事に関して,今まででいちばん辛かったこと:
 制作期間終盤の,期間と内容とのせめぎあいな状況。残り期間を考えると,盛り込みたい内容を入れるには“無茶かもしれないが無理ではない”状況になってくる。いいモノを作りたいのであれば,無理してでも頑張るしかない。

最近開発に携わったソフト:
 「しゃべる!DSお料理ナビ」では,メイン・プログラマとして進行管理をしながら,ゲームの基礎部分,レシピ・データの管理やレシピの検索部分を主に担当しました。また,社外のサウンド・チームとの窓口としてやり取りを行うこともありました。
 初めてメインを任されましたが,チームのみんなの協力もあり,なんとか乗り切ることが出来たと思います。
 現在開発中のソフトでは,画面に表示される“見た目”の部分を作る機会も増え,これまでデータを管理することが多かった自分は悪戦苦闘な毎日を送っています。

ある日のスケジュール

8:00 起床

 いつも朝は食べません。この時間にテレビで情報番組を見ながら,洗濯や掃除,身支度を済ませます。忙しくなってくると睡眠時間に吸収されていきます。

9:30 家を出る

 通勤は徒歩です。約30分程度ですが,途中大きな公園(井の頭公園)を通り,朝の清々しい空気に触れるのが気持ちいいです。

10:00 会社に到着

 会社に着いたら,まず最初にメールのチェックをします。自分の場合は,基本的に社外と直接やり取りをすることはないのですが,状況によってはメールでやり取りを行う場合もあります。

 前日に書いたプログラムを見直します。特に深夜に書いた個所などは,余裕がない状況で書いていることが多いので,もう一度見直して,修正や必要なコメントなどを書き加えておきます。

 今日の作業内容をまとめる。今日,何をやる必要があるのか,どこまでやるのかを簡単にまとめます。

 実作業開始。昼休みまでの時間を考えながら,あまり中途半端にならないような個所から作業に取り掛かります。

12:30 昼休み

 昼食は,近くの惣菜屋にお弁当を買いに行きます。食べ終わった後は,ゲームをプレイしたり雑誌を読んだり,インターネットでニュースを読むなどして過ごします。

14:00 開発チーム会議

 週に1度,開発にかかわっている全員が集まり,それぞれの進ちょく報告と,今後のスケジュールを確認します。この会議以外にも,必要なときには小会議を随時行います。

 ちょっとした内容であればインスタント・メッセンジャーを使うことが多いです。

15:00 実作業

 現在,インディーズゼロではニンテンドーDS専用ソフトの開発が多いため,主にC言語を使っています。

 一つのゲームソフトにつき,少ないもので3人,多いものでは5~6人のプログラマがかかわります。シーン別に担当することが多く,複数のシーンを同時に作って行きます。

 開発/デバッグ環境は,任天堂が各制作会社に公開しているものを使い,配布されているSDKや,SDKを拡張して作成した社内ライブラリを組み合わせて開発しています。

19:30 弁当を取る

 忙しいときの晩御飯は,会社でまとめてお弁当を頼みます。

 食べている最中は,テレビを見ることが多いです。サッカーのワールドカップ開催中などは箸を止めて見入ったりしました。また,旅番組やクイズ番組などでアイディアが生まれることも有ったり無かったり?

 弁当を食べた後の片付けは,ジャンケンで負けた1~2人が担当します。これは社風で,後片付け以外にも差し入れの奪い合いなどもすべてジャンケンで決します。しばしば,先輩も後輩も社長さえも関係ないサバイバルな戦いが繰り広げられています。

20:00 食後の休憩

 休憩室で雑誌を読んだりして休憩することが多いです。休憩室には,各種週刊少年誌/青年誌や話題のコミックなどが取り揃えられいるため,流行の漫画に乗り遅れる心配は全くありません。

20:30 実作業

 データの入力はプランナに任せることが多いです。作業を分担することでプログラマの負担が減り,データの調整もしやすくなるからです。

 データ管理/編集にはMicrosoft Excelを使うことが多いですが,Excelだけで対応できない場合は専用のツールを自作するなどしてゲームソフトに組み込みます。

21:00 最新版を作成

 制作期間終盤になってくると,区切りのいいタイミングで最新版を作ってチェックします。開発チームのデザイナ,プランナなどが個別に制作しているデータをプログラムに組み込み,実機(例えばニンテンドーDS)で動作するものを作成し,デバッグするわけです。

22:00 バグ発覚!

 データを更新すると正常に動かなくなることは良くあることです。スクリプトの記述ミス,データの入力ミス,プログラムのミスなど人為的なミスは必ず入り込みます。

 これらのミス(=バグ)を見つけ,修正するのがプログラマの最後にして最大の仕事だと痛感する瞬間です。

23:00 原因判明

 バグの原因は様々です。しかし,恥ずかしい話ではありますが,表示する文字数のオーバーや,変数の初期化忘れなど,意外と“うっかりミス”が原因であることが少なくないのも事実です。

 もちろん,このようなうっかりミスをなくすように心がけるのは当たり前ですが,メッセージを出力するなどして,バグの原因を特定する準備をしておくことも重要です。いかに早くバグの原因を見つけるか,それもプログラマの腕の見せ所ではないでしょうか。

 また,デバッグ・ツールでプログラムを1ステップずつ実行するなどして,おかしな動作をしていないかを確認することも大事です。

23:30 会社を出る

 家まで徒歩圏内なので,良くも悪くも終電を気にせず作業が出来ます。場合によっては徹夜になることもあります。

24:00 家に到着

 自宅ではテレビを見たり,インターネット,ゲームなどをして過ごします。疲れを実感し始めると,熱めのお風呂に入ってリフレッシュします。

26:00 就寝

 お疲れ様でした(たまに,夢の中でもプログラムを組んでたりします)。

ゲーム・プログラマってどう?

 プログラマという仕事は,葛藤の連続なのではないでしょうか?

 プログラムを組むことで,時間をかければ大体のことは実現できる可能性はあります。しかし,仕事となると無限に時間をかけて良いわけではありません。決められた時間内で,リクエストされた内容をどこまで実現し,どこから諦めるのか…。そんな判断を常に迫られるからです。

 とはいえ,ユーザーのことを考えるとそう簡単に諦められないのも事実です。特にゲームソフトは,子供から大人まで幅広い層に触れてもらえるチャンスがあります。

 より多くの人に,「面白い」「楽しい」と思ってもらえるモノを作りたいと思うと,ついつい無理をして作業に没頭してしまうこともあります。

 その瞬間は,肉体的にも精神的にも非常に辛い状態になるのですが,そこでの苦労は,ソフトが発売されたときに達成感と充実感という形で返って来ます。

 より多くのユーザーに喜んでもらえるソフトを作り,この達成感と充実感を得られるよう,これからもゲーム・プログラマという仕事に自信を持って取り組んでいきたいです。