目指す場所は自分の原点
1995年。Windows95が発売された年。関西にある立命館大学の学生で、3回生(関西の大学では3年生のことをこう呼ぶ)だった私は、日夜プログラミングのアルバイトに明け暮れていた。
大阪の西中島にある、学生集団の立ち上げたベンチャー企業にアルバイトとして参加して、寝ても覚めてもプログラミングをしていた。その会社には、私よりすごいプログラマばかりがいた。
彼らといったら、飲み会に行ってもソフトウェアの話をして、そこで思いついたら、そのままオフィスに帰ってきて皆で作る。そのまま机の下で寝るなんてこともザラだった。
今で言えば労働環境としてはブラック企業なのかもしれないが、学生にしてみると破格の給与だったし、何より自分よりもレベルの高いメンバに囲まれて、プログラミング好きな連中ばかりとつるむのは純粋に楽しかった。圧倒的な成長の機会だった。
そんな訳で、学生の本分である学業はないがしろにしていたのは否めない。なんとか単位は落とさずにいたけれど。
そのままベンチャーに就職することも考えたが、まだ当時の私にとって、会社で働くってことや、社会人になるってことに実感も覚悟もなかった。
そんな覚悟のない理系の学生にとって、選択肢の一つは大学院に進むことだ。ああ、なんて不純な動機だったろうか。
果たして、自分の学力で大学院なんて入れるものだろうか。
ただ、コンピュータ系の学科だったこともあり、専門課程の成績は悪くなかった。いや、むしろ実習のある課程だけは優秀な方だった。一般教養は最低だったが、なんとか大学院に進むことはできそうだった。
そんな私が研究室を選ぶ際の基準は一つ。プログラミングができること。プログラミングの能力だけで卒業ができること。
そんな研究室は一つしかなかった。ゲーム好きの教授が、研究室の予算で最新のゲームができるハイスペックなマシンばかり買っているという噂の研究室だ。
そんな研究室だから、真面目な学生からの人気はダントツの最低だったため、競争などなく入ることができた。そこでの研究テーマは「オブジェクト指向」。そして、論文の代わりにプログラムを実装することになる。
当時の研究室には教授が趣味と実益を兼ねて買ったAppleのマシンがゴロゴロしていたし、NeXTSTEPも現役で動いていた。そう、Objective-Cがもともと動いていたマシンだ。何十年後かに、それが元にMacやiOSになって、XCodeでアプリが作られるなんて想像もしていなかった。
私は、そこでNeXTSTEPに触れて、そこから着想を得て、C言語のビジュアルプログラミングのツールを作ることを卒業研究にした。
そして無事、卒論を提出し、私はマスターコースに進むことになった。
そして、その研究室で人生を変える出会いがある。そのあまり人気のない研究室で、さらにヌシのように何年も学生を続ける先輩がいるという噂。普段は旅に出ていて、半年も姿を見せないこともあるらしい。
ある日、研究室に立ち寄った私に、今風に言えばまるでホームレスのように小汚い格好で、グレーのスウェットを着た見知らぬ男が、関西弁で話しかけてきた。
「きみ、プログラミングできるんやって?ゲームとか興味ない?」
それが、そのヌシであり、私の人生を変えたSさんとの出会いだった。
当時の私は、ベンチャーで働いた経験からプログラミングの腕に自信があり、何か作りたいという思いがあったけど、何を作りたいか、それが思いついていなかった。プログラマにとってよくある話だ。
だから、私にとって題材は何だって良かった。ゲームが欲しいならゲームを作ろう。だから、彼が欲しいというゲームを作ることにしたんだ。
何よりユーザがいるというのは、プログラマにとって最良の機会だ。たとえ、それがたった一人であろうとも。
彼は、彼自身もプログラマだった。それも、とても優れたプログラマで、手取り足取りは教えてくれなかったし、自分もプライドがあって教わるというより盗むように学んだ。彼から学ぶことは沢山あった。
そんな彼のためのゲームを作っている時に、一つ閃いたことがあった。
ゲームのプログラムを作るのは良いんだけど、結局は、ゲームのシステムは似たようなもので良い。当時、作っていたのはストーリーを辿っていくロールプレイングゲーム(RPG)だ。
RPGなら、システムは同じでも、シナリオが違えば楽しめるはずだ。だったら、システム自体は共通化すれば良いのではないか、と閃いたのだ。
そこから役割分担が始まった。彼が作るのは、ゲームを実行するエンジンと呼ばれるプログラム。私が作るプログラムは、シナリオを作るためのエディタ。
私の作ったエディタを使えば、そのエンジンで実行できるシナリオを作ることができる。これで、システムは共通、シナリオはゲームごとの仕組みができた。
二人のプログラマが、共通のデータフォーマットで別々のプログラムを作る体験は最高に楽しかった。本当に楽しかったんだ。
ゲームのデザインは彼が担当し、私はアーキテクチャやデータの設計を行なった。ゲームのグラフィカルなプログラミングは彼が得意としていたのでエンジン作りが向いていて、ビジュアルプログラミングのようなUI設計をするのは私が得意だったから、エディタを作った。
この時期は、まさしく没頭していた。議論をしては、プログラミングをし、動かして遊んでは、また議論をする。カラオケや飲み会なんかよりも、市販のゲームで遊ぶよりも、作り上げることが数千倍も楽しかった。
1997年。Windows95が広まることによって一般層にインターネットが普及する兆しをみせていた時代。しかし、まだ利用者の人数は少なく、インターネットは牧歌的な時代だった。
そこで、私たちは完成したゲームをインターネットで公開することにした。
公開した目的はシンプルで、自分たちが遊ぶためのシナリオを他の人に作ってもらいたかった。そこには、功名心も承認欲求も、成り上がる気持ちもなかった。ただ面白いものを共有したい、それだけだった。
だけど公開したら、すぐに何千人もの日本中の人たちにダウンロードされることになった。今ほど広大でもなかったし、すぐに見つかったからだろう。
驚きだった。ウェブサイト、当時はホームページと呼んでいたが、そこに設置したカウンターが面白いようにカウントアップされていく。一晩寝て起きたら、掲示板への書き込みが異様なほど盛り上がっていた。
興奮した。見知らぬ人からの反応に手が震えた。
そこから私たちはさらに改良を重ねる。ユーザからのフィードバックを受けて、仕様を検討する。時にはハネのけ、時には受け入れて、バージョンアップに明け暮れた。
私は、そこで第3者からの要望でソフトウェアを育てていくことの楽しさと難しさを知った。
コミュニティのようなものができ、その調停役もしなければいけなかった。エンジンを作るSさんはゲーム作りだけが好きな人だったので、マネジメントからウェブサイト構築やユーザ対応まで全て私がしていた。
そこで、またある時に思いついた。もう自分が間に入るのはやめて、ユーザが勝手にシナリオを投稿してダウンロードできる仕組みを作ろう、と。
そこからCGIの仕組みとPerlを勉強して、ウェブアプリを作った。
ゲームで作っていたネイティブアプリとの違いを楽しみながら、ネットワークの勉強をしながら作り上げた。
同時に、サポートも大変なので、ユーザ同士で助け合える掲示板も作った。コミュニティの古株の人たちが対応してくれるようになった。
今にして思えば、コミュニティとプロジェクトのマネジメント、全体のスキームやアーキテクチャの設計など貴重な経験ができた。あれは、作りたい人と遊びたい人を結ぶプラットフォームだったんだ。
当時、たくさん出ていたインターネットやゲームの雑誌などに収録されたり、特集を組まれたりするようになった。
ある日、アスキーから連絡をもらって、本を出さないかという話になった。よくわからないまま、東京に出て行って、大人の人から説明を受けて契約して、何かご飯を奢ってもらって、帰ってきた。
まるで夢を見ているようだったけれど、その本は、しばらくして本当に本屋に並んだ。
そのあとも、いろいろなことがありながらも、プログラミングとインターネットの可能性を身を以て体験することができた。
この当時のエキサイティングな経験は2度と忘れられない。いや、もう一度、体験したい。もう一度、体験するために、それが出来るように、これまでの人生を積み重ねてきた。
私の目指す場所は原点だった。
もう一度、あの体験を得る、そのためのプロダクトを作る、それが個人的な人生の密かな目標でもあるのだ。