PS3からみるインド人ITエンジニアの弱点

この記事は約9分で読めます。

昔からコンピュータの性能論争ってのは、ソフトウェア・ハードウェアを問わず、絶え間なく続いておりました。例を考えてみましたが枚挙に暇がございませんヽ(´ー`)ノ

  • PC-88とFM-7とX1
  • PC-98とX68000とFM-TOWNS
  • PCとMac
  • AlphaとSPARCとMIPSとetc.
  • IntelとAMD
  • ファミコンとマスターシステム
  • スーパーファミコンとメガドライブ
  • プレイステーションとセガサターンとNintendo64と3DOとPC-FX
  • PS2とドリキャスとGCとXBOX
  • PS3とXbox 360(Wiiは性能競争に参加していない)

微妙に例が偏っている気もすぐけど、突っ込みは無しでw

PS3とXbox 360の比較について、どっちのほうが性能がいいとか悪いとか論争がありますが、そんなものは、来来軒のラーメンと大勝軒のラーメン、どっちがおいしいかって言い争ってるようなもの。煽りに乗ってはいけません。たとえあなたが、まだ未熟な小学生や中学生であろうとも、ここはグッとこらえてください。書き込んだら負けですよ。

書き込むこと自体、「俺とお前のどっちが頭悪いか」論争してるようなものだと思えばいいでしょうw

今回は長いので、続きを読みたい方は以下をクリックしてね。

さて、それではコンピューターの性能を比較することがまったくナンセンスかというと、もちろんそんなことはありません。さまざまな観点から、異なるアーキテクチャ(基本設計概念)をもったコンピュータを比較検討しなければいけないシーンがあります。

ここでは、コンピュータの性能のなかでも、ゲーム機の性能を決定付ける要素について、理解を深めましょう。要素って簡単に書きましたけど、実に様々です。

コンピュータ全体でこの話をする場合、世の中がオープンなアーキテクチャに移行しつつあるせいもあって自由度の高い選択ができます。たとえば、PCで動くOSはWindows以外にもLinuxとかFreeBSDとか、色々あるし、データベースソフトひとつ取っても、OracleとかMySQLとか、色々ある。

それらの組み合わせが自由になってきた時代です。それがオープンということです。

しかしコンシューマゲーム業界はそうはいかない。

PS3を選ぶということは、PS3というハードだけじゃなくて、その上で動く開発環境とかも全部そっちを選ぶということになります。そこが特殊なんですね。

まず、ハードウェアとソフトウェアについて説明します。

ハードウェア、つまり箱モノというやつです。

ここでは、ハードウェアとは、PS3やXbox 360の本体のことを指します。

ソフトウェアとは、ゲームソフトのことを指します。シンプルでいいですね。

私たちゲームの利用者からの視点では、これしか見えませんが、それ以外にも様々な要素があります。

たとえば、ミドルウェアやツールといわれているもの。私たちには見えにくい存在なので軽視されてしまいがちですが、ゲーム開発には、とても重要なのです。

ある程度のハードウェアの性能の差は、ミドルウェアやツールの良し悪しで、吸収できます。

ここでは面倒だから全部、ツールと呼ぶことにしましょう。

じゃあ、ツールって何?

ツールとは、一言で書いてしまえば、ソフトウェアです。

ソフトウェアを作るための、ソフトウェアです。

用途はというと、「ツール」という言葉にあるように、道具です。

開発者の道具。

大工さんが家を建てるためにカナヅチやノコギリを使うようなものです。

電動ドライバーって、使ったことありますか。あれ便利ですよね。あらかじめダイヤルをセットしておくだけで、決まった力で、一瞬にして、ネジをしめてくれる。ホームセンターにも売ってます。あれです。

電動ドライバーと同じ目的のツールに、ただのドライバーがあります。コンビニでも売ってます。

できることはといえば、電動ドライバーと一緒ですけど……。

何本もネジをしめていると、時間がかかります。そして疲れます。つまり電動ドライバーのほうが効率的だし、便利。

それだけじゃない。

ネジを、一定の力で締めるのって実は、簡単じゃないんですよ。

締める力が弱すぎたら、すぐに外れてしまうからダメ。強すぎたら、ネジ山やネジそのものを傷めてしまったりする。だから、ツールを使う人が「これくらいの力で締めればOKだ」と、体で覚えていなければいけません。熟練の技ってやつです。

一方、電動ドライバーなら一発です。ダイヤルで、締め付けたい強さを指定するだけですから。

ゲーム(ソフトウェア)の開発に使うツールにも、いろいろあります。

コンパイラも、ツールのひとつです。

コンパイラとは、人間が理解できる言葉(C言語とか)で書かれたプログラムを、機械が理解できる形式(バイナリとか言われる)に変換してくれるツールです。

気の利いたツールでの開発は、本当に楽ちんです。

たとえば、開発して、バグを見つけて、直して、テストして、……といった一連の流れが、ひとつの画面で、簡単にできちゃう。そんなのもツールの恩恵。

たとえば、3Dのキャラクターをたくさん同時に動かしたいよ!ってときに、開発者が意識しなくても、上手にハードウェアの性能を活かしきって動かしてくれる。それもツールである。

BGMをつけて楽しい雰囲気にしたいよ!ってときに、簡単にBGMが付けられる環境がツールで提供されてなかったら、まずBGMが流れるようにするプログラムから作らなきゃいけない。

ちょっと性能の話をしましょう。

「高速処理」と「美しいグラフィック」というものは、異なる要素です。

しかしグラフィックと高速処理とは、切っても切れない関係です。

たとえば、PS3でもXbox 360でも対応しているHDMIでの1080p出力で、静止画を出力してみた場合、色表現の差異こそあれ、解像度などのスペック上の表現力は同じ。

どちらも、1920x1080ピクセルの画像をフルカラーで表示してくれます。

そこで今度は、3Dポリゴンのキャラクターをひとり表示させてみます。

そのキャラクターに、美しいテクスチャを貼り付けます。モデル全体にアンチエイリアスをかけ、フォグによる奥行表現を適用し、バンプマップ、法線マップをかまし、複数の光源処理やらをかけましょう。処理に負荷がかかるようになってきました。

そこに、同じキャラクターをもうひとり表示させます。当然、処理はもっと重くなります。

どんどん無双状態に増やしていきます。

どこかで処理落ちが目立つようになるでしょう。これがハードウェア性能の上限です。

しかし、処理落ちとひとことで書いてますが、たぶんPS3とXbox 360では、異なる理由で処理落ちがはじまるでしょう。なぜなら、内部構造が違うからです。

わかりやすいように、車を例にとってみましょう。

ここに、フェラーリの最新モデルと、ポルシェの最新モデルがあります。

どちらも高性能なエンジンと、高性能なブレーキ、挙動性能を誇る、スポーツカーです。

最高速度を比較してみたら、ほぼ一緒でした。

でも、フェラーリがそれ以上速度を出せなかった最大の理由は、新型ボディの空気抵抗値が芳しくなかったせいでした。

一方、ポルシェがそれ以上スピードを出せなかった最大の理由は、エンジンのパワー不足でした。

このように、性能の上限を決める要素のことを、専門用語で「ボトルネック」といいます。

ボトルネックとは直訳すると、ボトルの首。ボトルの中に入ってる飲み物を素早く出すために、一番邪魔なのはどこでしょう。細くなってるボトルの首の部分ですね。ボトルの首が太ければ、中の飲み物はあっというまに出てきますね。そういうことです。

車にとってボトルネックとなり得るものは、グランツーリスモやForzaなどのレースゲームをやったことがある人なら、すぐにいくつか出せるでしょう。

エンジンのパワー、トルク、特性、車体の重量、バランス、シャーシやボディの剛性、サスペンションの性能、ブレーキの性能、トランスミッションのギア比、などなど。

さまざまな要素のトータルが、その車の基本性能を決めます。基本性能をうかがい知ることができる値として、上記の要素を示す「スペック(性能緒元)」があります。

エンジンは何ccだとか、馬力はどんくらいだとか、重量がどうかとか、サスペンション形式はどうだとか、そんな情報ですね。

でも単純にそれらをひとつひとつ比較したからといって、「じゃあ結局フェラーリとポルシェのどちらが速いの?性能いいの?」って質問には答えられないですよね。

もちろんそこには、そのマシンごとの得意な条件がある。たとえば、峠でバトルしたらポルシェがいつも勝つかもしれない。サーキットでは反対にフェラーリが常勝かもしれない。環境によって、どこの性能が重要になるかが変わるからです。

たとえばオーバルコース(学校のグラウンドみたいに、シンプルな楕円形のコース)では、エンジンの出力や、車体の空気抵抗値が一番重要かもしれない。

一方、峠道でのバトルでは、デカくて重いだけのエンジンじゃ逆に不利かもしれない。

そして、運転者の技術や、運転者とマシンを仲介するインタフェースの良し悪しもある。

ここで、運転者とは私たちゲーマーのことで、車のハンドルとか内蔵されてるROMとかダッシュボードとかが、ソフトウェアの部分です。

たとえばCellという特殊なCPU上でプログラマーが何かを作るとき、SCEの誰かさんが自慢してたような、マルチコアだとか、そんなことはどーでもよい。

単純に、アクセルをふかすプログラムを組んだら、スピードが出て欲しい。それがプログラマの希望。

なのに、例えて言えば、PS3というモンスターマシンには、小型エンジンが9台も積んであるからむちゃくちゃ速いですよ!でも、性能を出し切るためには9個のエンジンを効率的に使う必要がありますよ!だから、開発者のみなさんが、9個のスロットルをうまく制御するアクセルを開発してくださいね!

というわけだ。

さて困るのは開発者だ。まさか運転席にアクセルを9個並べておしまい、ってわけにはいかない。いままでの自動車で培ってきた技術がそのまま使えないし。

もしSCEが、「じつはエンジンは9個だけど、まるで1個のエンジンで動いているようにみせかけてくれるツール」を提供してくれたら、開発者はどんなに楽だろう。

ここから分かりますか。開発者は、性能だけを武器にして、ややこしい開発を強いられたくなんてないのだ。

一方、Xbox 360はというと。

彼らは、まったく別のマーケットでの成功経験を活かしている。

その集大成がXNAなのであるが、XNAが何なのかはここではどーでもいい。

つまりですね。いいツールをたくさん提供してるってことです。

そしてあんまりツールが良いもんだから、いいソフトが作りやすい。

性能もフルに活かしきれる。

「我々は、業務用自動車(トラック)の生産において常に業界をリードしてまいりました。ちなみに、開発者のみなさんは、私たちが長年、トラックの開発のために準備してきたいろんな開発用のツールをそのまま同じように使って、Xbox 360の開発ができます」

って感じかな。

開発者は、車に積まれてるエンジンがいくつだとか、ブレーキはドラムブレーキだっけ、ディスクブレーキだっけ、とか、細かいことを気にしないで開発できる。

ところで話はぶっ飛びますが、今うずらはインド人のIT技術者たちと仕事をしております。彼らは世界中で認められる高度な技術力を売りにしたエンジニアたちです。

この話とは関係ありませんが、そのうちの一人は、PS3の開発にも関係してました。

しかしですね、教育においてもパフォーマンスにおいても超高性能である彼らが、日本のIT市場では、真価を発揮しきれていないのが現状です。日々改善してはいるのですが、まだまだ日本のエンジニアのほうがいい!って言える要素が山ほどあるわけです。

このPS3的状況は一体なんだろう。

やっぱり、うまく使うためのインタフェースなんですね。

素材が良いだけじゃ、なにも生まれない。

コメント