2018年06月06日の日記です


凄腕プログラマ  2018-06-06 17:16:47  業界記

以前、技術力の低いプログラマの話を書いたことがあります。


いわゆるコピペプログラマ。

プログラムを「読む」ことは出来るし、「組み合わせる」こともできるけど、1から「書く」ことは出来ない人。


人数が多いと、そういう人もいる一方で、恐ろしく技術が高い人もいます。


僕がセガにいた頃には、部署内で明らかに「別格」の人が3人いました。

三強というか、三賢者というか…3人なので、勝手にそう思ってました。




一人は、テクニカルサポート課の課長。


…そのころは「凄腕」だと思っていたのだけど、今振り返ってみると少し違うかもしれない。


会社柄、みんなゲームのプログラムは出来ました。

でも、テクサポ課の課長は、みんなとは知識の質が違った。


部内で唯一、ネットワークやサーバーの知識があり、部署内のインフラ整備を一手に引き受けていました。


プログラマは、仕事の道具として UNIX を与えられていたので、当時の標準だった「MS-DOSしかわかりません」という人よりは UNIX 知識がありました。


でも、多くの人は ls や grep 、せいぜいが sed を使うくらい。

プログラムを書かないといけない都合上 Emacs は使える人が多かったけど、それも使わずに HP-UX 標準の、機能の低いエディタを使っている人もいました。



僕が awk や perl をつかえただけで「すごい」と思われていたような世界なので、ネットワーク整備なんて誰もできないのです。



僕がテクニカルサポートに入ってからは、テクサポ課の課長からネットワーク・サーバーの知識を教え込まれました。

だから、当時「誰もできない凄い知識を持っている」と思いましたし、部内のみんながそう思っていました。



…でも、僕自身がサーバー管理できるようになった今考えると、課長の知識はちょっと怪しかった部分あるな。

それでも、まだ Linux がそれほど普及しておらず、UNIX に触る機会も少ない状況下で、部署内のサーバー・ネットワーク管理を一人でやっていた課長は凄腕だったと思います。




もう一人は、先日書いた、ST-V の BIOS を書いた先輩。


ST-V の BIOS 機能はあまり活用されなかったのですが、ちゃんとマルチカートリッジ対応になっていて、ゲームセレクトボタンを押されたら次々に刺さっているカートリッジのゲームを切り替える機能がありました。


タスクスイッチ、みたいなものですね。

ST-V はシングルタスクではありますが、複数のゲームを同時に扱えたのです。


ハードウェア的にはサターンと同じですから、マルチカートリッジは BIOS のソフトだけでやっています。

…まぁ、タスクをゲーム中にスイッチするようなことはないので、ハイスコアやコイン設定、Book keeping (いくらコインが入って何回遊ばれたか、などの記録集計)などが正しく管理されていれば良いだけですけど。


もっとも、このコイン設定は非常に複雑怪奇なので、それをちゃんと作っただけでも賞賛ものだと思うのですが…



周囲から「凄腕」だと思われるのは重圧だったようで、BIOS なんて時間さえかければ誰でも作れるよ、とよく言っていました。




この2人、人がいない深夜のほうが集中できたそうで、良く泊まり込んでいました。


テクサポ課の課長は、深夜に徹夜で仕事して、みんなが出勤する時間になると仮眠室に行って寝ました。


BIOSの先輩は、徹夜はしませんでした。6時間は寝ないといい仕事ができない、というポリシーを持っていました。

でも、仮眠室の「誰が寝たかわからない布団」は嫌なのだそうで、深夜2時くらいまで仕事をすると、机の下で寝袋で寝ていました。

そして、皆が出勤してくる9時半ごろには起きる。


#勤務時間はフレックスでしたが、10時にはいないと「遅刻」扱いだったので、多くの人が10時前出勤でした。




残る一人は…多分、プログラムの腕前的には、この人が一番の凄腕。


後に正式にテクニカルサポート課に編入されるのですが、ゲームプログラマとしても間違いなく凄腕でした。

作るプログラムの品質が良いだけでなく、作成速度も速いのです。


ただ、その天才さゆえに、人に対する要求も厳しい。

自分ができることを他の人ができないと、容赦なく「そんなプログラムじゃダメだよ」って言い捨てるのです。


それゆえに、この先輩を怖がっている人も多くいました。

僕も、以前はこの先輩苦手でした。



でもある時、僕が HP200LX を使っているのを知り、先輩から話しかけられました。

興味は持っているのだけど購入に踏み切れないので、ちょっと見せてほしいのだそうです。


行動が早くて、試用した数日後には購入して持ってきたのではなかったかな。

そして、数週間後には RAM増設、クロックアップ改造をしていました。


僕は、改造できることは知っていましたが、壊してしまう可能性を考えると怖くてできませんでした。

HP200LX 、結構高価だったからね。


…と先輩に言ったところ「じゃぁ、実費で改造してやるよ。失敗したら責任取って弁償するから、それなら安心だろ」って。

翌日には改造キットを買ってきて、目の前で改造してくれました。


#半田ごてとか、工具一式は仕事柄部署に置いてあるので。




この件があってからたびたび話をする仲の良い先輩になったのですが、ある日「C++ 知ってる?」と聞いてきました。

僕は一応興味があって勉強はしていたのですが、試用程度にしか使ったことがありませんでした。


でも、先輩も C++ に…というか、オブジェクト指向をあまり知らなかったので、興味があって勉強したのだそうです。

そしたら、ゲームとオブジェクト指向は相性が良いのではないか、と思ったのだけど、自分だけの直感だったので話し合える人が欲しかったらしい。


オブジェクト指向って、「言語」の話ではなく「データ構造」の話です。

ただ、オブジェクト指向言語と呼ばれる言語は、そのデータ構造を扱いやすい工夫があるだけ。


そして、当時アセンブラかCで作成していたゲームも、すでにオブジェクト指向でプログラムが行われていました。

アセンブラからでも扱いやすい方法なので、本当にシンプルな形ですけど。


でも、先輩はこの時点で「C++ は普段使っているライブラリと相性がよさそうだ」という直感はあっても、ちゃんとした理解に至っていなかった。

そこで、すでに普段使っているライブラリがオブジェクト指向なので、C++ とは当然相性が良いでしょうね…というような話をします。


具体的には、C++ の class が構造体の拡張表現であり、普段使っているライブラリの構造体と同じような形式になっている、という説明だったと思います。

オーバーライドなどのオブジェクト指向に特有の表現も、構造体に処理先ポインタを入れてあるのと同じもので…とかね。



で、先輩の結論は「ゲームを作る上で C++ はすごく適している。ぜひ広めるべきだ」。



この時、先輩は新しいゲームのチーフプログラマーでした。

でも、まだプロジェクトが本格化しておらず、時間があるのでライブラリを C++ 用に作り直します。


ライブラリ…と言っても誰かが作ったもので、ソース一式そろっていました。

それをすべて C++ で扱いやすいように改造します。

2週間くらいで一通り作ってしまったのではなかったかな。


そして、次のゲームはすべてを C++ で作る、とチームのプログラマに宣言しました。


…これね、すごく実行力もあるし、天才の仕事だと思う。

でも、巻き込まれたチームの人は、急に新しい言語環境を強要されて大変だったみたい。


こういうことするから、怖い人だと思われているのではないかと。




1年半前の日記に、当時やっていたテレビアニメ「NEW GAME!」の話を書きました。


アニメの舞台はゲーム会社のグラフィックチームなのだけど、机の下で寝袋で寝る人とか、天才肌で自分と同じようにできない人を見下す人とか、個性の強い人々が出てくる。


お話だから強烈な個性に書いているように思われるかもしれないけど、実際ゲーム会社にはそういう人いますよ…と書いていたのですが、今回紹介した先輩方です。



凄腕だから、強烈な個性を持っていても大目にみてもらえる、という側面もあります。




2019.6.18追記


セガ時代の友人と飲んでいて、上述の先輩の作ったライブラリの関数名に、先輩の名前が入れられていた、と聞きました。


get*****Angle (***** の部分が先輩の名前)などの関数名があったのだとか。

みんなが使うライブラリ関数名に個人名を入れ込むとか、どんだけ自己主張が強いのか、という話として。



以下、ただの笑い話ではない、という意味合いで補足します。


ライブラリ関数のすべてに名前が入れられていた、というわけではないと思います。

その友人が覚えていたのが「Angle」関数だったこともあり、おそらくは角度を使用する場合に自分の名前を入れていたのではないかと思います。


DEGREE では1周は 360度、RADIAN では 2πですが、ライブラリなどでは 65536 などを1周にすることがありました。


65536 は 16bit では「桁あふれ」を起こし、0 になる値です。

これが、1周して角度が 0 に戻る、というのと相性が良いのです。


そして、この角度を使用する形で、必要な三角関数群を用意します。

ここで、三角関数に渡す角度は RADIAN でも DEGREE でもなく、独自のものであることを明示する必要はあるのです。


そのため「自分が定めただけの、独自角度系である」ことを示すために名前を入れたのではないかと思います。



しかしまぁ、ライブラリに名前を付けてそのライブラリ名を入れる、とかではなく、自分の名前をそのまま入れてしまうところが凄いといいますか…

ライブラリって、場合によっては自分の手を離れて、知らない人が使いますからね。




ちなみに、これを「笑い話」として出していた知人も、彼が設計したシステムで、内部的に特別な意味を持つ「名前」に、後輩の女の子の名前を使っていたことを付記しておきます。


人のこと笑えないって。




同じテーマの日記(最近の一覧)

業界記

関連ページ

手相開発時の技術話【日記 15/03/14】

年棒制【日記 18/07/18】

NAOMI【日記 18/10/22】

The House of the Dead 2【日記 18/12/28】

別年同日の日記

02年 晴天の霹靂

02年 Home Brew

04年 そう来るとは思わなかった

04年 77の手習い

04年 怪我

11年 PC購入

13年 次女のぬいぐるみ

14年 フェルディナント・ブラウンの誕生日

16年 テトリス完成(1984)

17年 キャベツ料理


申し訳ありませんが、現在意見投稿をできない状態にしています


戻る
トップページへ

-- share --

3000

-- follow --




- Reverse Link -