Software Engineer板垣史彦Itagaki Fumihiko
経歴 (回想多め)
初めてのマイコン
SHARP MZ-80K2(198,000円)を手に入れる。
独学でBASIC, アセンブリ, FORM (ハドソン製の tiny FORTRAN コンパイラー) などでのプログラミングに没頭。
ホビーがお小遣いに
自作ゲームを見てもらいたくてハドソンのマイコンショップ COSMOS SAPPORO 丸井今井店に行き、平岸にあるハドソンの本体を紹介してもらう。 ハドソン創業の地、アマチュア無線ショップCQハドソンにほど近いコロナード平岸Ⅱというビルの2階に事務所と開発室とマイコンショップがあった。 あらためて自作ゲームを携えてそこへ訪れると、そのゲームは即決でハドソンに買い上げられることとなった。
その後ハドソンでゲーム開発のアルバイトを始めるようになる。
【余談】 東芝パソピア発売に際してたくさんタイトルを用意しようというときには、道路を挟んだ向かいにある北成ビル2階の開発分室に住み込んで働いた。 そこには2段ベッドが設えてあり、夜には一人きりになって、僕はしばらくそこを自分の家のようにして生活した。
正式にプログラマー職へ
有限会社ハドソン(※1984年株式会社ハドソンへ組織変更)に入社。
名刺の肩書はSE。(その後 主任→係長→チーフプログラマー)
当時のあらゆるマイコン/パソコン -- NEC PC-8001mkII, NEC PC-8801, SHARP MZ-700, SHARP X1, FUJITSU MICRO 8 / MICRO 7 (FM-8 / FM-7), 東芝パソピア, Sinclair ZX-81, MSX などの自社ゲーム開発やアプリの受注開発などを行う。
初期の開発環境は主にCP/Mで、コードを書くテキストエディターはCP/Mに付属のWordMaster。 その後MS-DOSに移行し、テキストエディタ―もMIFES, FINAL, VZ Editorなど、新しいものが出るたびに試す。
プログラムはFDDブート仕様ならフロッピーディスクに物理書き込みをしてターゲット機でブート、ROMカセット仕様ならPROMに書き込んで起動。 デバッグにはICE (In-Circuit Emulator) も活用。
【余談】アセンブル&リンク、PROMへの書き込みや消去など、当時はいちいち結構な時間がかかったので、その間はみんなマンガを読んで過ごしていた。 よそのことは知らないが、当時のハドソンはそういう社風だった。 その代わり深夜までの残業は当たり前、それが日常の時代だった。
ファミコン登場 → 勝手開発
この年、任天堂から《ファミリーコンピューター》が発売される。
ゲーム開発のターゲットはパソコンからファミコンに移って行く。
当時は開発ツールなど存在しないから、当時の技術部長・岡田節男氏お手製のROMエミュレーターでプログラムをロード・実行。 それ用のデバッガーもお手製なら、ドット絵を作るエディターもお手製。 開発室に来客のあるときは事前に通告してもらい、その秘密兵器は何かで覆い隠しておいたものだった。
CGにのめり込む
レイトレーシング法を知り、CG (Computer Graphics) にのめり込む。
NEC PC-9801に数値演算コプロセッサ Intel 8087 を取り付けたものを何台も用意し、 それぞれに Intel 8255 PPI も取り付けてパラレルインターフェースで相互に通信を行い、並列処理で画像の生成を行わせた。
知識と見聞を深めるためサンフランシスコで開催されたSIGGRAPHにも出かける。 (【余談】現地では、ハドソンと関わりの深かったソフトバンクの孫正義氏と半日ほどご一緒して、楽しいひとときを過ごさせていただいたりも)。
短い期間ではあったが、当時大阪大学工学部助教授の大村皓一先生にハドソンの顧問としてご指導を賜る。 大村先生の《イメージファクトリー》構想に感化され、 自分も独自の《イメージスコア》を設計して、その コンパイラーとレンダラーを作ってみたりした (開発言語:C)。
※《POV-Ray》の原型が作られたのも多分同じ頃だったと推測する。
FCボンバーマンのSE/音楽制作秘話
ファミコン版《ボンバーマン》のサウンドプログラミングを任される。
SE(効果音)は1つ1つそれぞれの再生プログラムを作り、実機画面に"Sound Testing Room"と表示したモードを作って、確認したいSEをゲームパッドで選んで再生してみることができるようにした。 この仕組みはその後も引き継がれた(…まあ、誰がやってもだいたいそんな感じになったでしょうけど)。
爆弾が爆発する音はなんとしてもリアルにしたかったので、外部のプロダクションからSEライブラリーを借りて、良さげなSEをサンプリングしてDPCMで再生することにした。 が、どんな爆発音を取り込んでみても、ファミコンのDPCMでは、どうも今一つ迫力が出ない。とにかくいろんな音を取り込んでは試し、最終的に「これしかないな」と決めたのは、何の爆発音でもなくて、実はライオンの咆哮。これをわざとレベルオーバー気味にサンプリングすることで、あの音ができた。
BGMやジングルは外部の方に発注しようということになり、紹介された音楽家が竹間淳氏だった。 ゲーム音楽を発注するのはハドソンにとっても初めてのことだったし、また竹間氏も、ゲーム音楽を手掛けるのは初めての試みだったが、 氏はファミコンの貧弱なPSGの特性をよく理解した上で、我々の期待をはるかに超える傑作を生みだし提供してくれた。 ボンバーマンのあの名曲・名ジングルは、かくして誕生した。
僕は竹間氏から受け取った楽譜やデータをファミコンのプログラムと結合して再生する仕事をしたが、実は1つ、ミスを犯した。 タイトル画面の音楽は一部、竹間氏の意図と半音違ってしまっている。僕が楽譜を読んでデータ化する際に、調号とナチュラル記号の関係を取り間違えてしまったのが原因だった。 実際にファミコンで再生して竹間氏に聞いてもらった際、竹間氏はすぐにそれを指摘されたが、その時点では、もう修正は不可能だった(たぶん、すでにゲームカートリッジの製造過程が進行していたため)。 僕は青くなったが、竹間氏は「まあまあ、いいでしょう」と寛大に許してくれた。
竹間氏にはその後もたくさんお世話になった。YAMAHAのMSXに載っていたアプリを使って曲データを制作していただき、そのデータを受け取ってコンバートする流れもできた。
デバッガー開発
ファミコン以外の様々なターゲットにもROMエミュレーターを用いるようになり、新しいデバッガーを開発 (開発言語:(開発言語:C)。 GNU Emacsに感化されていたので、その操作感を真似て、コマンド名のオートコンプリート機能を備えたり、Ctrl-Gですべてをキャンセルできるようにした。 僕はこのデバッガーを「MAD (Micro Advanced Debugger)」と名付けた。 岡田部長はこれを気に入って、ROMエミュレーターとそれ用のデバッガーを用いる開発システム全体を「MAD」と呼ぶようになった。
ファミコンで新作ゲーム制作を試みるも…
僕自身もファミコンのゲームを、記憶している限りでは2本作った……というか、そこそこ作り上げたものの、どれも制作途上でお蔵入りとなった。
1つは、4輪バギーで障害を避けながら悪路を走破する斜めスクロールのオリジナルゲーム。仮題《バギージャンプ》または《ワイルドミッション》。 竹間氏に素敵な音楽も作っていただいていたのに、世に出すことができず、無念だった。
もう1つは、ゲームセンターで見て感動したゲーム《Marble Madness》の模倣(つまりオリジナルに非ず)。仮称《ビード・アメイズ》。 3D-CGチックなビジュアルで、市松模様の平面上で鏡面(に見える)ボールをゲームパッドで転がせるようにし、緑色やオレンジ色のグニャグニャした物体も動き回るようにし、 さらにコースもゲーム内でユーザーがコンストラクションできるようにして、「我ながら天才かよ」と悦に浸っていた。 しかし、平面は作れたけど傾斜は実現できず、また、このゲームは慣性を持ったボールをトラックボールで操作するから面白いのであって、 ボールに慣性を持たせてみたところでゲームパッドでの操作では面白みはあまりなく、それならトラックボール付きで販売できないかとも相談してみたけれども、そんな案は一蹴され、 「コースを自分で作れる?で?それが何?」とも酷評され、開発の継続を断念。
X68000発売に向けて
シャープのテレビ事業部(栃木県矢板市)がモトローラのMC68000を採用した新しい個人向けパソコン(広告では〈パーソナルワークステーション〉と呼んでいた)を作るということで、 ハドソンは仕様段階から協力した。
65,536色表示可能なVRAM(フレームバッファ)は、ハドソン内ではCGの研究をしている板垣向きの面(プレーン)ということで、〈イタ面〉と呼ばれた。 (なお、テキスト表示用のビットマップVRAMは、OS開発を担当した本迫芳夫先輩のニックネームにちなんで〈クマ面〉と呼ばれた)。 シャープの当時係長の石持氏からのオーダーで、その〈イタ面〉にデモ表示するグラフィックスをレイトレーシングで作成することになり、少し前に作成したチェス盤の上を玉が跳ねるシーンを少しアレンジしてデモ用の動画を作成。 何とかエレクトロニクスショー'86に間に合った。
また、僕がハドソンで内製し社内で使われていたMS-DOS用のmakeコマンド(ITA Make)をX68000のOS《Human68k》向けに提供 (開発言語:C)。
フレームバッファの縁
僕がCGにのめり込む前には、中本伸一大先輩が《HuDACS》という独自の画像生成システムを開発し、展示会にも出展していた。 そのとき氏が使っていた《NEXUS》という画像表示装置を僕が引き継いだ。とても重くて大きい装置で、記憶が定かではないが、確かRGB各4ビットの4096色表示で、インターフェースはGP-IBだった。
当時はそれでも大したものだったが、やはりRGB各8ビットのフレームバッファ装置を欲するようになり、探したところ、雑誌『PIXEL』の広告で《CAST》という名の会社が目に止まり、僕はすぐにその会社を訪れた。 そこでCASTの社長とお会いし、お話を伺うと、新しい製品を開発中ということだったので、その完成の連絡を待つことにした。
その後、今度はCASTの社長が直々にレイトレーシングソフトウェア《C-TRACE》を携えてハドソンの僕を訪ねて来られ商談となった。 商談は成立しなかったが、雑談の中で僕が「先般発売されたシャープのX68000では65,536色の表示が可能になっているから試してみては?」と提案。 その後すぐにX68000版の《C-TRACE 68》が発売された。
MCC (M-Code Compiler) 開発
ゲーム開発用に、プログラミング言語Cを簡略化して独自に設計した「MC言語」の仮想マシンコンパイラー (開発言語:C, yacc)と、 仮想マシンのPCエンジンのMPU《HuC6280》(通称《Dr.Pepper》)への実装を開発。 ロールプレイングゲーム《邪聖剣ネクロマンサー》の一部に使用される。
Human68k ITA TOOLBOX 開発
プライベートでHuman68k用にUNIX C shellを真似た独自シェル《fish》をはじめとするUNIXライクなツール群 《Human68k ITA TOOLBOX》を開発し、フリーソフトとして頒布。 (開発言語は100% 68000アセンブリ)。
PC-FX開発
JPEGの技術をベースとした画像エンコーダー/デコーダーと ランレングス方式の画像エンコーダー/デコーダーを設計・開発 (開発言語:C)。
デコーダーはLSIの製造を担当するセイコーエプソンの担当者と話し合いながら仕様を決め、 ブレッドボード段階からエンジニアリングサンプル、テストサンプルに至るまで一貫して評価を担当。 このLSIは《HuC6271》(通称《レインボー》)としてチップセット《C62システム》に加わり、NECの32ビットゲームコンソール《PC-FX》に採用された。
3DCG LSIとPC-FXGA開発
3D描画(ポリゴン処理)能力を持つLSIをクボタコンプスと共同開発する。 クボタコンプスの担当者と話し合いながら仕様を決め、《レインボー》と同様に、一貫して評価を担当。 このLSIは《HuC6273》(通称《オーロラ》)としてチップセット《C62システム》に加わり、NECのパソコン用拡張ボード《PC-FXGA》に採用された。 これの普及を図るため、株式会社ドーガ と協働。
【余談Ⅰ】PC-FXにポリゴン機能が搭載されなかった理由と、この《オーロラ》開発の経緯について、誤った説が流れているので、事実を述べる。 まずPC-FX開発時には、そもそもポリゴン処理能力を持たせる計画はハドソンにはさらさら無かったし、何か他社や世間の動向を見てあわてて開発を始めたわけでもない。 《オーロラ》の開発はハドソン中枢の意思で始まったものではなく、 TITAN導入で縁ができたクボタコンプス(TITAN導入時はクボタコンピューター)から僕が話を持ち掛けられて、 社内の合意ができる前から先走って半ば勝手に始動し(少し怒られた)、「次の」PC-FXにはこの新しいLSIをねじ込みたいという狙いで開発したものだ。 結局「次の」PC-FXが作られることはなかったが、パソコン用拡張ボード(PC-FX上位互換ボード)《PC-FXGA》の開発が決まり、 それに、この《オーロラ》を搭載することとなった。
【余談Ⅱ】《オーロラ》の名前はクボタコンプスから提案され採用された。 PC-FXに搭載した画像デコーダーLSI《レインボー》(HuC6271) からの連想だったが、実は《レインボー》は空の虹ではなくレインボートラウト(ニジマス)を意味しており、 また《レインボー》と同時に開発したLSI《キング》 (HuC6272) はキングサーモンを意味しており、フィッシングシリーズとなっていた。 ちなみにPCエンジン用チップセットでは、HuC6260は《鉄観音》、HuC6270は《7up》、HuC6280は《Dr.Pepper》と、ドリンクシリーズになっていた。
画像コーデック HHC 開発
画像コーデック HHC (Hudson Hybrid Color) 開発。筑波大学教授・徳永隆治先生との共同研究開発。
画像コーデック HVQ 開発
画像コーデック HVQ (Hudson Vector Quantization) 開発。筑波大学教授・徳永隆治先生との共同研究開発。
動画コーデック HVQM 開発
動画コーデック HVQM (Hudson Vector Quantization for Movie) 開発。筑波大学教授・徳永隆治先生との共同研究開発。
第1期フリーランス
ハドソンを退職してフリーランスとなり、在宅でコンシューマーゲーム、玩具等への組み込みソフトウェア、デスクトップアプリケーション、 Excel VBAやAccessでの業務アプリケーション、Web開発などを行う。
この間、業務はすべて在宅で行う。
再び会社員に
株式会社スマイルブームで、社内ツールの機能拡張や、海外ゲーム《SPARX》 (PC, iOS, Android) (フレームワーク: Unity, 開発言語: C#) の日本向けローカライズを担当。
HMIオーサリングツール開発
株式会社アートスパークホールディングス(後に社名をセルシスに変更)に入社。 当時の子会社・株式会社エイチアイのHMIツール《UI Conductor》および、後に設立された子会社・株式会社カンデラ・ジャパンのHMIツール《CGI Studio》《Candera Studio》の開発メンバーとなり、 多国籍チームでのアジャイル開発、スクラムなども経験する。 新型コロナウィルスのパンデミック以降はほぼ100%在宅で職務を遂行する。 主な開発言語は C++ および C#。
Manually sort folders 開発
《Mozilla Thunderbird》のバージョンが78となり、愛用していたアドオン(拡張機能)《Manyally Sort Folders》が使えなくなった。 そこで GitHub 上のコードをTB78にも対応するよう改修してプルリクエストし、無事にリリースされた。 その後もTBのバージョンアップとともにまた動かなくなったり不具合が報告されるたびにコントリビューターとして改修を続け、 途中からはコントリビューターではなくコラボレーターとして、より深くメンテナンスに関わるようになる。 開発言語は JavaScript。
Google Chat Thread Switcher リリース
職場でコミュニケーションツールとして利用していた《Google Chat》のスレッド機能の使いにくさを解消するため、 Chrome拡張機能《Google Chat Thread Switcher》を開発して公開。 開発言語は JavaScript。
DeepL Selected Text リリース
ふと思い立って、Thunderbirdアドオン《DeepL Selected Text》を数時間のうちに一気に作り上げて公開。 開発言語は JavaScript。
Charu3 開発引き継ぎ
愛用していたクリップボードユーティリティー《Charu3》の作者にかけあってOSSとしてソースコードを公開していただき、 全体的なリファクタリングと修正に取り掛かる。 開発言語は C++。 ライブラリは MFC。
Mozilla に参加
Mozilla Thunderbird へのコントリビューションを始める。
X68000 Z エミュレーター開発
株式会社瑞起による SHARP X68000 復刻モデル《X68000 Z》 “HACKERS EDITION”の提供を受け、 エミュレーターのテスト、不具合解析、機能拡張などを行う。
Thunderbirdコアにフォルダー並べ替え機能を実装
《Thunderbird》のバージョン115では、UIデザインが《Supernova》に変わって内部実装も大きく変わる大規模なアップデートとなった。 そのため私はアドオン《Manually sort folders》をこれ以上新しいThunderbirdに対応させることを諦め、Thunderbird自体にユーザーがフォルダーを自由に並べ替えることができる機能を実装することにした。 それも《Manually sort folders》の仕組みをThunderbird内部に移植するのではなく、純粋にThunderbirdの新しい機能として、ゼロから既存コードを分析し、新しい機構とUIを設計し、実装を行った。 何度もドラフトを提出し、MZLAの開発者たちや《Betterbird》のJörg氏ともディスカッションを重ね、とうとうThunderbird 139で正式に採用された。 開発言語は C++ と JavaScript。
IoT組み込み開発
SES契約でESP-32を用いたIoTデバイスの開発を行う。プラットフォームは ESP-IDF。開発言語は C。
DeepL-Write Selected Text 開発
《DeepL Selected Text》が好評で、《DeepL Write》にも対応してほしいという声に応え、Thunberbirdアドオン《DeepL-Write Selected Text》を開発して公開。 開発言語は JavaScript。
1Remote 開発に参加
多くのプロトコルをサポートするリモートセッションマネージャー《1Remote》の開発にコラボレーターとして参加を始め、その後開発メンバーの一員となる。
10年ぶりにゲーム業界へ
派遣会社に登録し、ゲーム開発会社でネットワーク対戦ゲームの不具合調査・解析・修正などを行う。
Final Section
面白いことを探し中