ObjectSquare [2002 年 12 月号]

[OOエンジニアの輪!]

OOエンジニアの輪!

〜 第 18 回 佐藤 類 さんの巻 〜

今回のゲストは佐藤 類さんです。佐藤さんは、サイバーステップ株式会社の創業者であり、「ゲットアンプド」や「卓球ピンポン」など<現在は> Java 言語によるゲームの開発をメインに活躍していらっしゃいます。ご存知の方も多いかとは思いますが「ゲットアンプド」は JavaOne2001 JavaNight コンテスト2位入賞、「卓球ピンポン」は JavaOne2002 JavaNight コンテスト Apple 賞受賞作品です。今回は、Java とゲーム、短期間開発の裏側、今後のビジネス展開等について語っていただきました。

サイバーステップ、佐藤さん
尊敬する人 「うぅ〜ん、いないですね・・・」
好きな言葉 「成さぬは人の 成さぬなりけり」

サイバーステップのお仕事

-- まず、現在のお仕事についてお伺いしたいのですが。

インタビュー風景

サイバーステップは、今現在、自社モノのゲームやソフト、製品を売って食ってます。食ってると言えるほど大きい売り上げじゃないんですが。創業した時は、オンライン・ゲームとかオンライン・アプリケーションとかをもっとつくりやすくするためのミドルウェア、、というよりは仮想プラットフォームみたいなものをつくりたいな、ということで、創業から今でちょうど 2年半ですか。1年目は半分受託やりながら半分自社開発をやって、2年目は完全に受託を止めて自社開発をやって、今年の 4月ごろにそのへんを完了させて、まぁ 3年目になるわけです。

-- 最初は受託もやられてたんですね。

2000年の 4月 1日に創業なんですが、あのころはネットバブルの余韻もあって、いろんな案件があって、そういうのでも稼いでましたね。

-- ゲーム系の会社を創業されている方は、もともとゲーム好きから来た方と、ぜんぜんそうじゃなくて、Java とかそういうのが良くて、その表現のひとつの分野としてゲーム、って来てる方がいらっしゃると思いますが、佐藤さんはどちらになりますか?

僕を含めて開発者はですね、ゲーム会社に居たとかゲームの開発経験があるのというのは、ひとりもいないんですよ。まぁ、どちらかというと SI とか技術からみんな入ってるので。そういう意味ではもともとあんまりゲームに縁があったわけじゃないですね。
ただ、僕らの世代は、みんな小学校ぐらいからファミコンやってて、それでいて、僕がつくりたかったのがオンライン・アプリケーションだったので。まぁ、やっぱ目で見て楽しいし。企業系とかエンタープライズなんて言葉は創業のときはよくわからなかったですね。

-- じゃぁ、ゲームありきじゃないですね。

ゲームありきではない。会社のコンセプトは、ネットワーク・アプリケーションのインフラになること。ただ、今、目に見えている市場というかやりやすそうなのがゲームだったので。

-- 「小学校ぐらいからファミコンやってて」とのことですが、今、おいくつなんですか?

25歳です。

-- お若いですよね。でも、歳の割には貫禄ありますよね(笑)

よく「30歳?」とか言われて、「そんなことないよ」って(笑)

-- もうちょっと上に見えますよ(失礼しました)


アセンブラでも C でもなく、Java

-- 今は主に Java を利用されているそうですが、Java に着目された理由というのは?

インタビュー風景

僕と僕を含めた創業者がみんな高専卒なんですね、東京高専。けっこう前にさかのぼるんですけど、1997年ぐらいに僕を含めて、今会社にいる 3人がプログラミングコンテストに出て、Java で 3D チャットソフトをつくったんですよ。Mosaic が出て、Netscape が出て、JDK1.0.2 とか、っていう時代にネットワークを使ってたんで、縁としては、そこから続いているということになりますね。

-- ある言語が好きでその言語でやってるって方もいらっしゃいますが、Java 言語そのものをやりたいからってことはありませんか?

うちらはあまり、それはないですね。もっとも、Java が好きだってのはみんなあるんですけど。創業した時はですね、クライアント側に C++ 使って、サーバ側に Java 使って、サーバサイドが HORB で、プロトコルが CORBA でやったんですよ。そしたら開発者が発狂しまして(笑)。半年くらいはやったんだけど「やってらんねぇ」って。

-- (笑)
-- やっぱりいろんな要素技術を使って、結局、やりたいのはネットワーク・アプリケーションというのが根底にあるわけですね。

そうですね。その時、サーバサイドは OS のからみもあって Java で、クライアントサイドはコンシューマなので C か C++ にしようってやったんだけど、そうすると、同じコードでも二つの言語で書かなきゃいけないとか、異なる言語でやろうとすると煩雑になった。それから、CORBA が使いづらい、、まぁ、CORBA 使わなきゃいいんですけど。まぁ、ちょうどその時 HotSpot も出てて、GL4Java とか、OpenGL Java Binding 関係もすっかり出来てたんで、Java でやってみようよって。

-- コンシューマ市場において、Java って最近どうなんですか?

ぜんぜんないんじゃないですか(笑)
デスクトップの Java 自体少ないですよね。僕らが、、「僕が」なのかもしれないですけど、いわゆる Web アプリケーションがあまり好きじゃないんですよ。http 使って、クライアントに下手に JavaScript 使ってですね、RDB 走らせて、なんか暗号化だのなんだの、っていう、そういうアプリケーションが好きじゃないんですね。今はぜんぜんそういう風潮じゃないんですけど。

-- なるほど。ところで、ゲームの開発の中で、オブジェクト指向の必要性とか、オブジェクト指向との相性っていうところについてはいかがですか?

正直、僕はメインのプログラマーって言うほどレベルは高くないんですけど、今までいくつもつくった中で思うのは、やっぱりゲームってのはオブジェクトのかたまりになるんですね。プレイヤーがいてアイテムがあって、アクションがメソッドになって、っていう。オブジェクト指向が極めてにゲームマッチしているっていうのは、間違いないと思う。ですから、そういう意味で、アセンブラでゴリゴリ書くよりは、Java じゃなくてもいいですけど、オブジェクト指向言語で書くっていうのはすごくゲームとマッチしてる。


ファミリーレストランで卓球?

-- 「卓球ピンポン」って、ファミリーレストランのテーブルに設置されているタッチパネル端末(プラスe*1)用のゲームですよね。私も、子供たちとケンカしながらガシャガシャやって、面白かったです。ただ、逆に料理を待ってる時間の方が楽しいので、子供が、料理が来ても食べ始めなくて(笑)

*1ファミリーレストラン「ガスト」を中心に、テーブル等に設置されているタッチパネル端末。ゲームや占い、ニュース等、様々なコンテンツを楽しむことができます。

インタビュー風景

卓球ピンポンのコンセプトが「誰でも知ってるゲームで、アクション性のある」もの。やっぱ、うちはオンライン・ゲームであれオフライン・ゲームであれ、インタラクティブで、アクション性があってという、そういうのにしたいんですよ。今回は、ちゃんとそういうコンセプトが実現できたんですけど。ただ、やってみたら、やっぱメシが来ちゃうんで。
第二弾はですね、また違うコンセプトで、メシが来ても大丈夫で、それでいて、インタラクティブで、アクション性があるようなものを考えていますけど。けっこう、面白いです。2ヶ月で 1作つくれれば、いろいろやれますよね。

-- プレイに時間がかかるようなゲームだと、店としては、それで回転率を下げる訳にはいかないから、アイデアを出すのは大変そうですよね。

タッチパネルは出来ることが制限されているのとですね、場はファミレスがメインなんで、企画考えるのは結構、大変ですよ。ただ面白けりゃいいとか、面白さ重視じゃなかったり、っていう。

それに、ゲームセンターみたいに画面がプレイヤーの真正面にない*2ですから、横から操作しなくちゃいけない。しかも、二人同時にクリックはできないですから、そういう制限のもとでマッチするゲームを考えるんです。
*2プラスe端末は通常、テーブルの横側に設置されています。

-- あ、二人対戦の、こっちやってる時はあっちだめ、あっちやってる時はこっちだめってのは、そういうことなんですね。

「卓球ピンポン」

二人対戦はですね、交互に「DON'T TOUCH」って出るんですけど、自分がこっそり押し続けてると、相手は押せないんです(笑)

-- (爆笑)

いろいろ、苦肉の策がありまして、、。

-- 今、「2ヶ月で 1作」というお話がありましたが、開発期間が、「卓球ピンポン」で 2ヶ月、「ゲットアンプド」で半年と伺ったんですが。

そうですね。卓球ピンポンは、1ヶ月でつくって、課金系とかのデバッグでもう 1ヶ月くらい。ゲットアンプドは、ベータレベルでは、一般に公開するまで半年ぐらいかかりました。

-- その生産性は、われわれの、いわゆるビジネス・アプリケーションの開発と比べると、信じられないですね。


驚異的な短期間開発の裏側

-- それほど短い開発期間でソフトウェアが生産できるというのは、Java によるネットワークやグラフィックス機能等の実装をサポートする、 Keel というプラットフォームがあるっていうことに因る部分も大きいと思うのですが、あれは、会社設立の時から、もともとああいうものをつくろうというのがあったんでしょうか?それとも、やりたいことを実現するためにあれが必要だったのでしょうか?

インタビュー風景

前者ですね。創業の時からそれだったんですよ。できんの?っていうとこから始まってですね、まず、Java で 3D ができるかと、分散したネットワークでリアルタイムでインタラクティブな、言ってみればスーパーマリオみたいなゲームがオンラインで、インターネットで出来るかとか、わかんないことだらけで。他には、ちゃんとマルチプラットフォームに、ピュアなマルチプラットフォームに出来るかとかですね。ゲットアンプドをつくる時からミドルウェア、、まぁフレームワークは考えていたんですけど、まずゲームが出来上がって、そこから問題点とか必要なものとかを抽出してつくったってことなんで、もともと目標はプラットフォームです。

-- いままで、C++ 等で開発をされていた時代もあったわけですよね。それに比べて生産性っていうのは?

うーん。ネットワーク・ゲームっていう観点であればぜんぜん違うと思います。スタンドアロンのゲームだったら、 DirectX 使って、コーディング量は同じかもしれないですけど。

-- グラフィックス機能については、いかがですか?

うちの提供している機能としては、OpenGL Java Binding ですね。既存の JSparrow とか、いろいろありますけど、マルチスレッドに対応しないとか、AWT 使ってるから不安定だとか、そういう問題点がいくつかあるんですよ。初めは GL4Java を使ってもいいと思ったんですけど、結局、やっぱり安定したものを自社でつくって、っていうのがあったんで。

基本のインタフェースは OpenGL なんですけど、その上にやっぱ AWT みたいなですね、Window Toolkit をつくってるんですよ、Java で。 描画のバックエンドが OpenGL であって、ゲーム的な Window Toolkit。それで完結しますね。

-- OpenGL 自体をある程度、隠蔽しているみたいなイメージですね。

「ゲットアンプド」

そうですね。例えば、テキストフィールドとかチェックボックスとかですね、あとパネルとか、全部あるんですよ。ただ、業務アプリじゃないんで、Window Toolkit にフレームとかが、ひとつの OpenGL のスクリーン・キャンバスの中にゲームとして出来ている。

-- そう言えば、 Java3D を使用されなかったのには、何か理由があるんですか?

Java3D は、 VRML みたいに、どちらかというと、まずデータありきでそれを表現する。ゲームの場合は、当たり判定とか、高速描画とか、効率の良い方法をもとに書き方を選ぶ、みたいな感じです。まぁ、Sun は Java3D を使わないのかと聞いてくるんですけど、「あまりむいてないんです」という状態ですね。

-- 今後、Keel の、どういった分野への適用をお考えですか?

まぁ、やりたいことはいろいろあるんですけど。
例えば、遠隔のロボット操作。あんまり遠隔医療とかやると危険だから止めとけとか言われますが。ロンドンの買い物通りにあるロボットを動かして買い物をする、そういうのが出来たら楽しいですし。なんか、もっと日常的な、例えば、最近よく出てるハードディスク・レコーダー。ソニーの CoCoon は、OS が Linux じゃないですか。CPU が MIPS 350MHz とかなんですけど。じゃぁ、それに Java載せて、それのネットワーク・アプリケーションとしてのソフトを Keel ベースでつくったら楽しいな、とかですね。

-- いわゆる、その組込み家電的なところにも、結構、用途がありそうですね。

そうですね。

-- 市場として、 G-BOOK とか、ああいったものも。もし、そういう開発のお話があれば、うちにもぜひ。


投げたもん勝ち?

-- 佐藤さんには、経営者としての顔と、エンジニアの顔という二つの側面があると思うんですけど、ご自分では、どっちがお好きなんでしょうか?

インタビュー風景

僕は喋り屋さんなんで、顔を広げて、話をして、知ったかぶりしながら売り込んでってところですね(笑)

モノは、良けりゃ売れるんですよ。モノが良ければみんな興味を持つわけですよ。だから、経営と営業と開発というふうに区別すると、あまり僕は営業的なものはやっていない。むしろ、営業は実際は外に出てない開発者がやるんです。で、じゃぁ開発は?って言うとですね、うちは野放しですね。ある時こう「こんなのやりたいよ」となるんです。

-- そこはもうエンジニアに、ある程度、自由にやってくれっていう?

ゲットアンプドをつくる時は「オンラインで、リアルタイムで、3D の中を自由に動けるアクションゲームがつくりたい」っていうすごく抽象的なことを伝えたらですね、半年ぐらいしたら出来上がったわけなんですね。別に僕の発言が全てじゃないですが、卓球ピンポンも「タッチパネルで卓球をやりたいんだ。当然フル 3D で」って。そしたら、出来上がった。

-- 会社設立の時のメンバは、皆さんお知り合いだったんですか?

まぁ、知り合いですね。全くまっさらな外部から雇った人もいましたけど、1年くらい勤めて、みんな辞めてますね。今残ってるのは、みんな高専の時の知り合い、かな。

-- やっぱり、そういうところでコミュニケーション・ギャップのなさ、っていうのがあるのかもしれないですね。なんかこう、開発のための方法論とか手順とかっていうのは何かあるんですか?

まぁ、結果としてそうなっているんですけど、ポリシーとしては、関係の数を少なくすればするほどシンプルになる。早い話がひとりひとりに任せちゃう。あまり、チームを組まない。
個々が独立してて、そいつが死んだら、プロジェクトはポシャるくらいの。

-- でも、ひとりひとり個々にやるということは、それ全体を統率するっていう必要がありますよね、それはある種、佐藤さんの役割なんですか?

いや、本来は役割なんですけど、果たしてはいないです。

-- ってことは、ある種、エンジニアがコラボレーションしながら、そのへんはうまくやってる。

まぁ、自分の中で、いつまでにやんなきゃいけないとか、一応、仕事のペースに合わせてつくるとか。

-- 役割分担ってのはあるわけですよね。

そうですね。役割分担が明確で、管理が不明確みたいな感じですね。

-- 「自律的」ですね。

完全にうちはオブジェクト指向的で、「これやって」ってメッセージを投げたら、勝手にやられちゃいますから(笑)

-- 組織というか、開発スタイル自体がオブジェクト指向で出来上がってるみたいな。

投げたもん勝ちですね(笑)

--(笑)
-- ゲームっていうのは、ソフトウェア的なエンジニアリングだけじゃなくて、ゲームのコンセプトづくりとかアイデアづくりとかっていうところが、ずいぶん大きいわけですよね。そういう意味での役割分担はどうでしょう?

まぁ、コンセプトに関しては、考えられる者が一応、基本的にイニシアチブを取るような形ですね。卓球ピンポンは僕がつくりたいって言ったんで、プログラマーとかデザイナーに僕の好みを伝えて出来上がりましたし、ゲットアンプドはまた違うのが主導でやってますし。ただ、機能を実装する場合はサーバであれクライアントであれ、ネットワークや DB でもつくり手が主導になります。

-- 面白いなぁ。

まぁ「後は任せた」みたいな感じですね。ゲームのクオリティも、あんまりみんながぎゃあぎゃあ言って、誰が決定権を持つかをわかんないと話になんないですから。


ユーザが多ければ多いほど偉い

-- 今後、こういうところを狙っていきたい、とかですね、それは経営者としての立場もエンジニアとしての立場も両方あると思うんですけど、そういったところをお聞かせ下さい。

インタビュー風景

今考えているのは、二つステップがありまして、ひとつが既存のハードウェアやプラットフォームを使って、そういうインフラを広げていく。例えば、今、開発キットとしてライセンスしてる Keel の対応 OS は Windows と Mac OS X しかないですけど、社内では Linux で動いてたりするんですね。で、ファミレス端末のプラスe っていうのは、OS は一般のやつかもしれないですけど、その環境がまた違って、操作方法も違って、ユーザ層が違う、っていう意味では新しいプラットフォーム。そういう意味ではやっとひとつ増やせたなと思っています。

その他でいくと、最近、PDA が結構いいスペックになってきてますから、今からうちの方で、Zaurus の Linux OS バージョンでちょっとやりたいな、、個人的にシャープが好きだってのもあるんですけど。PocketPC 版の Keel つくってもマイクロソフトは喜んでくれないでしょうけど。シャープだったら、売り込みに行けば、喜んでくれそうだなって感じもあるんで。ああいう、液晶関係の機器は興味あります、モバイル関係は、やりやすい情報も公開されましたし。

-- そういうプラットフォームを広げることっていうのがひとつですね。

まぁ、方針としては、あんまりうち程度の規模でやるべきじゃないんですけど。プラットフォームを広げるってのは、横幅を広げながら、しかも機能を重ねていく。その両方ともやるんですね。ですから、家庭用ゲーム機だって面白いですね。Xbox は PC アーキテクチャに近いですから、それで動けばそれはそれで楽しいですし。

次が、ハードウェアをつくりたいんですよ。Keel のハードウェアというとおかしいんですけど。
例えば PC の基盤に Keel 載せて。OS なんて別に Windows でも Linux でも何でもいいですから、、iTRON でも何でもいいです。そういう基盤もありますし、もっとゲームボーイアドバンスみたいな大きさでそれが動いて、コンテンツをダウンロード出来るような端末も。だから、うちは、、2年後ぐらいにはハードメーカー屋さんになりたいんですよ。

-- ほぉ。

今、なんかハードメーカー屋さんはソフトウェアとかサービス業になりたいっていうんですけど、うちは逆でですね、メーカーになりたいんです。

-- というと、ソフトウェアを提供する、ゲームを提供する、フレームワークをそれぞれ個別に提供するっていうんじゃなくって、全体のプラットフォームをハードも含めて提供するわけですよね。

いきなり任天堂みたいなお金があるわけじゃないんで、全ての消費者の手元にマシンを一個ずつ供給できるってわけじゃないですけど、そのハードウェアの設計図と企画つくって、売り込むのは可能じゃないですか。そういう意味で、今、うちがオンラインゲームつくって、そのゲームソフトを韓国とか中国とかの大手に売り込めるわけなんで、ハードを売り込むのも不可能ではないと思うんですよ。

-- いいなぁ。そういう夢のある話があって。なんか今日はちょっと、オブジェクトの話から外れていっちゃいましたね。
-- ところで、経営者の佐藤さんに、お聞きしたいのですが、会社を大きくするっていうのは経営者として魅力的なことなのでしょうか?

会社を大きくするっていうところなんですけど、単位があると思うんですよ。例えば自社ビルの大きさとか、従業員の多さとか、売上高とかですね。僕の場合は、お金が払われるだけ価値があるって意味で売り上げは重要なんですけど、それよりもユーザの数を多くしたい。そういう意味では、マイクロソフトはすごくユーザ抱えてたりするじゃないですか。世界的に使われてるし。ユーザが多ければ多いほど偉いと思うんで。


若手エンジニアに一言

-- 最後に、エンジニアとして、経営者として、若手のエンジニアについて言いたいことってないですか?

実際に「ゲットアンプド」をプレイしていただきました

、、難しいなぁ。

思うのは、一回は転職した方がいいな、って。なんかこう、技術的なところが本質じゃないんですけど。転職経験があるかないかで、会社に対して強く見られるかどうかってのはあるんです。逆に、転職したことのない人って、弱くてかわいそうなところもあると思うんです。
エンジニアってすごい恵まれた位置にいると思うんですよ。別に辞めても転職出来ますし、給料は辞めて上がる可能性の方が高いわけですよね。他で、こんな業種はコンサルタントを除けばないんじゃないかなって思うような、、それでいて、別に弁護士みたいに免許は必要ない業界ですね。高専卒業すればエンジニアになれるわけですから。

あと、僕の話になるんですけど、学校を卒業して無職になった後、独りで 1ヶ月間マレーシアとタイに行ったんですよ。そしたら、いろんな人とコミュニケーションがとれる。女の子は女の子でかわいいものが好きですし、男は男で飲んだり食ったりして、、っていうのは、タイ人でもマレー人でもインド人でも中国人でも、まぁ、途中で出会ったイギリス人でもドイツ人でも、誰でも同じなんですね。一回、転職を機に、海外に独りで行く。日本人は裕福だから、そういうことの出来る立場にいるんで。だから、僕は人に会う度に「一回無職になれ」って。

-- 最近は、会社に対する帰属意識が、また強くなってる気もしますね。景気が悪くなってから、若手がだんだん礼儀正しくなってきてるっていうか。

自分の価格がわからないんですよね。一人月 100万円、200万円で扱われてるのに、20万円、30万円で働いてたり。会社を経営すれば一番よくわかるんですけど、辞めてもまぁ、わかるんですよね。そうすれば、転職の面接でも「今までの給料がいくらでしたか?」って聞かれたら、ハッタリで「700万円です」って言えば、そこから交渉できるわけですから。10社くらい行けば、1社くらい出してくれる外資系とかはあると思いますよ。

辞めて転職するのと、海外に独りで行くのは、やったほうがいいんじゃないかなぁ、、。偉そうなんですけど。

-- その時には、英語とかは充分マスターして?

いえいえ、僕は、気持ちと心で会話するんで、英語はぜんぜん喋れない状態で(笑)

-- (笑)
-- ありがとうございました。



©2002 OGIS-RI Co., Ltd.
Prev Index Next
Prev. Index Next