1983年に任天堂の「ファミリーコンピュータ」が登場し、社会現象を巻き起こしてから約26年。家庭用ゲーム機は飛躍的に進化を遂げ、現在の最新機であるソニーの「プレイステーション 3」(以下、PS3)、マイクロソフトの「Xbox 360」などでは、CGを駆使してまるで実写のようなリアルな映像が楽しめるゲームタイトルが次々と生み出されている。
こうした家庭用ゲーム機の進化に伴い、ゲームソフトの開発を手掛けるメーカーにとっては「より高品質なゲームタイトルを、より短納期に開発する」ことが求められるようになった。そのため、その開発プロジェクトも従来とは比べものにならないくらい規模が大きくなった。これが「開発工数とプログラムコード行数の増大によるバグの大量発生」など、さまざまな問題を引き起こしており、ゲーム業界全体の重大な課題となっている。
こうした課題の解決に積極的に取り組み、ゲーム開発の効率化を実現したのがセガである。セガといえば、パズルゲーム「ぷよぷよ」を始め、格闘ゲーム「バーチャファイター」シリーズ、ロールプレイングゲーム(RPG)「ファンタシースター」シリーズ、アクションアドベンチャー「龍が如く」シリーズなど、幅広いジャンルで多くの人気タイトルを抱えている。同社では現在、年間10本以上のゲームソフトを自社内で開発している。
しかし、次世代機が登場した当時の開発プロジェクトでは、前述したような問題が山積していたという。同社はどのようにこうした問題を解決したのだろうか。
ゲームソフトの開発プロジェクトは、まず企画を立ち上げて、ゲームの世界観を構成する各素材のデザインとそのデータ化、プログラミングを進める。その後に、チェック部門によって動作検証などのバグチェックが行われる。
ゲームソフトの開発プロセス例。開発プロセスと並行して、商品化に向けた契約やディスク製作、販促活動などを実施し、ゲームソフトはユーザーに提供されている。(大野満秀著『日本におけるゲームソフト開発プロセスと海外共同開発・製作の状況』)を基に編集部作成「プロジェクトが大規模になればなるほど、バグの量も増加するため、チェック部門の作業負荷が増大し、最終的なゲーム品質や納期にも影響を及ぼす恐れがある」と語るのは、CS研究開発本部 CS R&D推進部 部長の庄司 卓氏だ。
セガではこうした事態を避けるためにも、開発段階でのバグのチェック体制を整備していた。
しかし、実際には、ソースコードのコンパイル後に構文チェックを行う、またペアプログラミングで開発を進めるなど「手作業でのバグチェックが中心となっていた」と同氏は当時の状況を振り返る。
従来のゲーム機では、このチェック体制でも対応できていた。しかし、次世代ゲーム機の大規模開発プロジェクトではプログラムコードが100万行を超えることもあるため、手作業のバグチェックではもう限界だった。その結果、チェック段階でも想定以上のバグが発生するようになってしまったのである。そこで、同社では解消策として静的解析ツールを導入し、バグチェックの自動化と早期段階でのバグ発見・改修を目指した。

静的解析ツールの導入に当たっては、複数のツールを検討した結果、コベリティの「Coverity Prevent」(以下、Prevent)を採用した。庄司氏は「他社のツールの場合、コーディング規約違反までバグと判断し、大量のエラーやワーニングメッセージが出てくるため、効率的なバグチェックとまでは至らなかった。Preventでは誤検知が少なく、バグの原因調査も容易に行えるようになった」とその導入経緯を説明する。
実際に同社では、2007年から次世代ゲーム機の大規模開発プロジェクトにPreventを導入した結果、開発効率化および品質向上の面で大きな成果を挙げているという。
セガの第三CS研究開発部 プログラムセクション テクニカルディレクターの節政暁生氏は「アクションRPG『ファンタシースターZERO』では、開発の初期段階からPreventを導入し、フル活用することで、非常に順調に開発プロジェクトを進めることができた」と振り返る。
具体的には、新たに作成したプログラムコードを毎晩Preventで自動バグチェックを行うデイリービルドを実施。翌日、バグとして指摘された部分を修正することで、効率的にコード修正が行える体制を整えた。
節政氏によると、この改善策によって「チェック部門が動的チェックを行う段階で、ゲームがフリーズしたり、メモリを破壊してしまうような致命的なバグがなくなった」という。また、チェック担当者は映像や音声などのデータバグやゲーム進行に直接影響を及ぼすフラグバグ、さらにはゲームバランスの調整など「よりゲームの質を高めるチェック作業に注力できるようになった」と説明する。
ファンタシースターZEROでは、チェック部門から「これほどスムーズにチェックが進んだゲームタイトルはなかった」と評価されたほど、改善効果は大きかった。その導入効果については「チェック部門での作業工数で換算すると、2、3人月分は効率化できた」(節政氏)と強調する。
家庭用ゲーム機の歴史は、8ビットのファミコンから始まり、16ビットの「スーパーファミコン」「PCエンジン」「メガドライブ」、次の世代がPS、「セガサターン」「NINTENDO64」、そして2000年前後にはPS2、「ドリームキャスト」「ゲームキューブ」が登場している。
「この時代までは開発プロジェクトの中に“スーパープログラマー”が数人いれば、1つのタイトルを開発することができていた」(節政氏)という。
しかし、開発プロジェクトの規模が大きくなるにつれて、1つのゲーム開発に携わるプログラマーの人数も増加してきた。現在ではプログラマーだけで20〜30人、全体では100人規模に達するプロジェクトもある。ここまで規模が大きくなると、少数のスーパープログラマーだけの力ではどうにもならなくなる。同社が大規模ゲーム開発プロジェクトにおける課題としていたのが「プログラマーの技術レベルの底上げ」であった。
この点についてもセガでは、ツール導入が大きな効果を発揮しているという。デイリービルドによって毎日バグチェックを行うことで、新メンバーやコーディングスキルが高くないプログラマーによる“致命的なバグ”が未然に防げる。加えて、バグが検知された時点で「そのプログラムコードを作成した担当者が誰で、どこが悪かったのか」が確認できるため、ミスした本人にとってはその原因を即座に理解し、技術レベル向上に役立てることができる。
また、ある程度経験を積んだプログラマーでもバグになりやすく、癖のあるプログラムコードの書き方が身に付いてしまった場合があるという。
「これまで他人に指摘されてもなかなか直せなかった人でも、チェック段階で自分の書いたプログラムコードに何度もバグが発生していることが分かれば、おのずと書き方を修正する」(節政氏)
こうした取り組みの結果、セガのゲームタイトルの多くは「バグになりやすいコードがほとんどない、非常にきれいなプログラム」になっているというのだ。
セガでは、静的解析ツールの活用によって「大規模ゲーム開発プロジェクトにおけるプログラムコードに関するバグ問題はほぼ解決することができた」としている。庄司氏によると、今後は、次世代機のゲームに欠かせない動画や音声、高品質なCGなど膨大なデータの管理およびバグチェックの効率化に力を注いでいく考えだ。
前述したように、今後のゲームタイトルで使用される動画やCGなどのデータ量は、さらに増えていくと予測される。また、データの複雑化が進み、データそのもののバグ(不適切なデータ)によりゲームソフトのパフォーマンスに問題が発生することも予測される。それらの問題を漏れなくチェックする管理手法を構築していくことが大きな課題になる。
これらの課題を解決することに加えて、庄司氏は「マルチコアプログラミングのコード品質の向上が重要な取り組みととらえ、答えを探していく。さらに、ネットワークゲーム環境での動作テストやバグチェックも、今後必要になるだろう」と語る。
同社の開発改善の取り組みは、既に新たなフェーズに入りつつあるようだ。
ゲームソフトと業務システムの開発プロジェクトでは、さまざまな面で異なる要素が多い。
ゲームの開発には、映画などのエンターテインメント向けコンテンツ制作と、組み込み開発の両方のノウハウを融合させることが必要である。しかし、開発プロジェクト自体がうまくいったとしても、ゲームの内容そのものが楽しくなければ、もう一度、開発を最初からやり直すこともあるという世界である。
ただ、セガが実践した開発効率化への取り組みは、業務システムの開発部門にも共通して学ぶべきところも多いはずだ。特に「プログラマーのレベルを底上げし、プログラムコードの無駄を省いて、よりきれいなコードにしていく」という取り組みは、参考にしたいポイントだろう。
その実現のためには、静的解析ツールの有効活用やソースコードの構成管理、さらには毎日バグチェックを行うデイリービルドの体制など開発環境を整えるといった「プロジェクト全体で開発効率の向上に取り組んでいく姿勢」が重要だといえる。