川井: |
その後はどういうプログラマー人生を歩まれたんですか? |
光一郎: |
高校になると、それまでBASICしかしてこなかったので、プログラマとして仕事をするんであれば、これからは「C言語」ができないとって思って、「C MAGAZINE」とか創刊から買っていました。雑誌にかける毎月のお金が厳しかったですね。当時、学校に置いてあった端末でN5200というのがあって、N−BASICとかが動いて、その授業とかあったのですが、Cをしてたのであまり興味なくて(笑)、競馬に詳しい友人と結託して、競馬ゲームを作って友達に配ったりしました。 |
寧子: |
それって、高校の授業であったの? 女子高じゃあそんなのない! 私が高校の授業で面白かったのは、数学の数列。?のときはプログラミングに似てるって分かって楽でした。 |
光一郎: |
そこから私はコンピュータで食っていこうというのがあって、大学にいかずに専門学校にいきました。他に興味がもてずに決めてましたね。専門学校くらいからは、次はC++だとかいわれて、Cをやっと覚えたのに、もう++なのかよって思ったんですが、Bjarne Stroustrup の「プログラミング言語C++」を頑張って読んだりしてました。
寧 子 私も似たような道をたどってるんですが、受験勉強に飽きてくると、98LTで受験勉強用のソフトを作っててたんです。今の「頭の体操」みたいなものですね。 |
川井: |
受験勉強用のソフトですか? |
寧子: |
そうです。紛らわしい事例とかをわざと問題に出してくるソフトとかを作ってたんですが、そうこうしているうちに98LTが壊れてしまったんです。そして受験が終わったあとにめでたく98FAというマシンを買ってもらったんです。 |
笠谷: |
FAが家にあったんだ・・・ |
寧子: |
ちょっとFAを買ったのは失敗だったかもしれないんですが、私にとってはLTに比べれば、かなり標準的なものになったという印象でした。 |
光一郎: |
それは失敗だったかもね。FAというのはファクトリーオートメーションという工場向けのラインナップでマルチメディア機能がほとんど削られていたでしょう。 |
寧子: |
大学に入ると、プログラミングの授業とかもあって、ろくに雑誌も読まないのでよく分からないんですけど、C言語をやっておいた方がいいのではというのは分かるようになって、Cはできますというようになって卒業して、C++はジャストシステムに入ってからですね。だからオブジェクト指向自体は就職してからです。 |
川井: |
さきほど、「東大かるた会」っておっしゃってましたが・・・ |
寧子: |
東大っていっても文学部ですよ。それも国文学科! もともと古文とかが好きだったんです。日本の古代が好きで歴史にいくか文学にいくか迷ったんですが、自由度の高い文学部に流れました(笑) |
光一郎: |
この人(寧子)は、どっからどこを切り取っても文系ですね。 |
寧子: |
数学も受験まではおつきいあいしたんですが、やっぱり文系でしたね(笑)でもゲームを作りたいっていう情熱は衰えてなくて、迷路を自動生成して、その中をウィザードリーみたいに動き回るプログラムも作りました。 |
光一郎: |
川井さん、ウィザードリーってイメージつきますか? |
川井: |
いえ・・・・ちょっと・・・・。 |
光一郎: |
ほら、もっとお母さんにもわかるように説明しなきゃ(笑) |
川井: |
お、お願いします(笑) |
寧子: |
わかりました。たとえばドラクエとかって真上からみたような感じで動くじゃないですか。ああいうのじゃなくて、3Dで迷路の風景が見えて、1歩進むと1歩進んだ風景に見えて、右を向くと右の風景が見えるとか。擬似3Dですね。罠とかつけたり・・・ゲーム好きなものですから。あとは、ゲームをつくりたいっていう情熱はずっと衰えてなかったので、マルチペイントとかいうプログラムがあって、グラフィックが描けたんですけど、それをゲーム中にロードしてくるローダーを作ったりしてました。私としては難しかったんですけどね。 |
光一郎: |
(BASICをやっていた)その時期からバイナリーをいじるってのは難しいよね。 |
川井: |
それは、ゲームへの情熱がそうさせたんですか? |
寧子: |
そうですね。 |
光一郎: |
そうでないとオートマッピングとかしないよね。 |
川井: |
今でもゲームとかしてるんですか? |
光一郎: |
かかさずしてるよね。 |
寧子: |
日課かな? |
川井: |
どんなものをされるんですか? |
寧子: |
ネットゲームやシミュレーションとかですね。 |
川井: |
例えば何を? |
寧子: |
今日もこの「CRISIS CORE」を買ってきたんですよ。FFはあんまり好きじゃないんですけど、どう考えても好きなキャラが出てて、この人に会いたいっていう状態になってて(笑) |
笠谷: |
誰が好きなんですか? |
寧子: |
まだ顔しか見たことなくて名前はわからないんです(笑) |
川井: |
そろそろ時間も危なくなってきたので、光一郎さんの専門学校時代のお話をお聞きしてもいいですか? |
光一郎: |
はい。専門学校に入ったら、学校から全員に98ノートが支給されたんですが。モノクロ8階調でCPUがV30ってチープなやつで、グラフィカルなPC98のソフトとかは動かなくて、ノート専用の松とか一太郎だけしか使えなかったんです。BASICの授業にはそれでも十分だったんですけど、ちょうどその時にWindows3.1が出て、付属のゲームについてきたマインスイーパーにはまっちゃんたんです。 |
川井: |
あれははまりますよね。 |
寧子: |
うちではマインスイーパーでボタンを押しすぎてこわしちゃいました(笑) |
川井: |
あれは最初の数発が勝負ですからね |
光一郎: |
仕組みは単純なのにこんなに面白いゲームがあるのかって思いましたね。でも、みんなのマシンじゃ動かないからって、皆のマシンでも動くやつを作ろうって思ったんです。あのパネルをめくる際のアルゴリズムを考えるときに再帰処理とかを覚えたりしました。普通の手続きでCを書いているとあまり使わないんですけどね。 |
寧子: |
再帰って最初にわかったときに本当に感動するよね。純粋な再帰だと最初に1つをたたくと全部いくとか、ちゃんと条件を書けばちゃんと帰ってくるけど、ちょっと間違えると帰ってこないとかぎりぎりの感じがすごく面白くて大好きです。 |
光一郎: |
(わかったときの)あれは素晴らしいです。何か降りてきたみたいな感じでしたね。で、マインスイーパーはCで書いたんですが、「C MAGAZINE」を読んで感化されていたのか、当時はC言語のANSI C規格に厳密に準拠してるかとか、いろんなプラットフォームでコンパイルできるかとかに興味があって、画面を制御するような部分やキー入力とか爆弾のキャラクターとかそういう部分がマシンに依存するので、そこを抜き出してライブラリにして、メインのプログラムはどんな環境でもコンパイルできるようにポータブルな状態にして、抜き出したライブラリの部分だけ各プラットフォーム専用に用意するような形をとって、同じプログラムでX68000とPC98のどちらでも動くようにしたのが面白かったですね。簡単なものなのですが、1つの環境だけで見てるだけだと分からないバグを片方で再現したりしてデバックにもなったりしますね。 |
寧子: |
今、JRubyやってるけど、ある意味すごく似たような視点が必要だよね。 |
光一郎: |
そう、根底は一緒。そんな感じでCをずっとやってたんですが、専門学校では皆、情報処理試験の対策でCASLって簡易なアセンブラをやるんです。でも私は一人でC言語を選択して・・・合格したんですが、あとで「俺が教えた2年間をなんだと思ってるんだ」って先生に首を絞められましたね(笑) |
川井: |
就職は地元ですか? |
光一郎: |
そうですね。地元のソフトハウスに就職して、半年後に東京に出ました。 |
川井: |
常駐先が東京ってことですか? |
光一郎: |
そうですね。そのまま東京に住み着きました。このソフトハウスではいろいろありました・・・でもよかったのは、営業支援から設計〜開発〜納品〜指導〜保守まで一人でやれたことですかね。 |
川井: |
ワンストップサービスですね。何年くらいいらしたんですか? |
光一郎: |
5、6年くらいでしょうかね。結構いましたね。 |
川井: |
なるほど。じゃあ、そろそろまた選手交代しましょうか。寧子さんはジャストシステムに入社されたんですよね? |
寧子: |
余談ですけど、100人くらいいた新入社員代表だったんですよ! |
川井: |
それはすごいですね! それで入社後はどんな仕事をされたんですか? |
寧子: |
研修を経て、そこでオブジェクト指向とかC++に馴染んで、私は自然言語処理とか研究系の部署にいってシソーラス辞書とか構文解析とか、自然言語でのヘルプとか文系を行かせることをしていました。もともと日本語が大好きだし、大学時代に一太郎で会話するマクロを自分で改良して遊んだりしていたり会話プログラムに興味もあったのでその流れですね。その後段々、Javaに移行していきまして、Javaも覚えて、そのうちXMLというキーワードが出てきたんです。そもそも最初の配属が徳島だったんで、東京に戻りたいのと、この人の下で仕事がしたいっていうのがあったんですが、その上司がやっていたのがXMLだったんです。 |
川井: |
え、最初は徳島だったんですか? |
寧子: |
そうなんです、いきなり徳島っていわれて、「えー、徳島!」って言って帰ってきて地図を見て卒倒しました。「ぎゃー!」みたいな(笑) いつかは東京にいきたいって言ってたんですが、結局戻らせてもらうまで4年位徳島にいました。それから無事に東京に戻って、XMLとJavaをずっとやっていて、周りがXMLコンソーシアムとかJavaコンソーシアムとかいう活動をしている人たちだったので、私も自然とそういうものに関わるようになりました。その中でXSLTに触れる機会があって、それがとても気にいってしまったんです。再帰が多いとかもあるんですけど(笑) |
笠谷: |
珍しい・・・ |
光一郎: |
川井さんにもわかるようにお話すると、XSLTというのはプログラミング言語なんですが、XMLで書くんです。XMLっていうのは開始タグ、終了タグみたいな非常に冗長な形で書かなくちゃいけなくって、それだけでかなり常人離れしてまして、さらにXSLTは関数型のプログラミングモデルを持っていて、それを使いこなせるっていう人はあまりいないんです。 |
寧子: |
そもそもプログラムがどこからきてどこに去るのかがパッと見るとわからないんです。変換対象のXMLの構造に従ってXSLTのテンプレート部品が呼ばれていく非常にマニアックなものなんですけど、面白いんですよね。ちょうどその頃、「Java World」のXMLWorldっていう雑誌内のコーナーに?モードとXMLの家計簿の記事を書く機会があって、それが家計簿と私が最初に世の中に出たきっかけなんです。 |
川井: |
なんでまた家計簿なんですか? |
寧子: |
家計簿にとても興味があったんですが、すぐ挫折して続かないんですよね。それで悔しいんで、私でもつけられる家計簿を作ろうとしたんです。自分の勤勉さを改善するよりツールを改良させようって思い、携帯で買い物をした直後に入力すれば続くだろうと考えて携帯で作って、どうせならXMLでと思ってついでにXSLTで作ったら、ちょうどキャッチーな感じになって記事になったみたいな。 |
川井: |
それも当時としてはすごい発想ですよね。ちょうどSFA支援ツールみたいですよね。商談が終わったら直後に入力させる感じですね。 |
寧子: |
そうなんです。もう、帰ってきてから交通費とかつけるのはとてもできないんですよ。乗ったときならつけられるんじゃないかと思ってやったんですけど、当時はまだ通信費が高くて、「つければつけるほどお金がなくなる家計簿」って笑いはとれたんですけどね(笑) |
川井: |
なるほど(笑) |
寧子: |
でもジャスト時代は、仕事の方は自然言語処理がメインでWebアプリとかはほとんどやってなくて、趣味でPerlのCGIをやっててちょっと馴染んでたくらいでしたね。 |
光一郎: |
なんか今、驚いてたんだけど、2人でリハーサルをしてきた展開だね。 |
川井: |
つながりがあるんですか? |
光一郎: |
ええ、そうなんです。98年とか99年とかはJavaの黎明期で、ネットのブラウザの世界では流行りそうって言われてたんですけど、当時、会社の中ではCかVBでWindowsプログラムを書くのが仕事だったんであまり手を出してなかったんです。たまたま出向で行ったプロジェクトでJavaで航空会社のWebブッキングシステムを書くっていう当時では先進的な案件をやらせてもらって面白かったんです。そのときにこれからはWebだなって思いましたね。ちなみにこのプロジェクトはちょっと呪われていて、プロマネが事故にあったり、9.11の同時多発テロ事件で航空会社が軒並み予算縮小になってしまって、想定していたゴールには及ばなかったんですけどね。そのときはソフトハウスを辞めたり辞めなかったりと微妙な時期で、オフィスが新宿2丁目にあったんですよ。 |
川井: |
新宿2丁目ですか? |
光一郎: |
そうなんです。「女人禁制」とかいう札があったりとかなりあやしかったんですが、ある日、仕事でちょっと遅くなって帰ろうとしたら、エレベーターホールでポリスアカデミーみたいな革ジャンの白人の男性二人が立ってまして、片方はガッチリした太っちょタイプと片方はひょろひょろの男性が抱擁をしながら熱いベーゼを交わしているんですよ。「もうこれはやばい!」って思って、非常階段をダッシュして逃げたんですけど、エレベーターの方が早いじゃないですか。 |
川井: |
ですね。 |
光一郎: |
1Fにつくころには追いつかれて、「ダーリン!」って叫びながらを両手を広げて待ち構えてるんですよ。もう回れ右してプロジェクトルームに戻りましたね。 |
一同: |
(笑) |
川井: |
すごい武勇伝ですね(笑) |
光一郎: |
そのプロジェクトでたまたま一緒になった人が今のCTCの上司でして、彼にひっぱられて私がCTCに入ったんです。2001年でしたかね。 |
川井: |
CTCのどこにひかれたのですか? |
光一郎: |
CTCはJavaをこれから推進していこうという勢いがすごくあったんですよ。CTCはどちらかといえば、SunとかSolarisのハードウェアに強いイメージがあったんですが、当時、SunもJavaを推進しててCTCもそれと協力してJavaのアプリケーションサーバーもどんどん担いでやろうとしてたんですよ。前の会社は、Webって感じでは全然なくて、パッケージソフトを作りたいとかWindowsべったりだったので、やりたいこととは大分違うなと思ったのでCTCにしました。でも一番は、その上司が素晴らしくよかったことですね。とても魅力的な上司です。 |
寧子: |
おー。 |
川井: |
まだ奥様とは知り合ってないわけですね? |
寧子: |
もうすぐです。もう非常にすぐです。私の方がジャストシステムを辞めてあるベンチャーに移って最初のプロジェクトの時にCTCさんに応援を頼んで、やって来たのが彼だったんです。 |
川井: |
そこで意気投合されたんですね。 |
寧子: |
そうなんです。それで、ジャストシステムには5年くらいいたので、彼と似たようなタイミングで私はベンチャーに移って、主な仕事でWebアプリをやるようになったんです。当時の流行りでEJBをやったのは失敗だったと思いますけどね(笑) 以後はServletでやってますよ。 |
川井: |
その後はどんな状況だったんですか? |
寧子: |
私はCTOというか技術のトップとして入ったんですけど、そういうポジションにいるとなかなかコーディングができないし、やるとみんな嫌がるんですよ。その他にもいろいろあってあわなくなってきてしまいました。そして、やっぱり実装したいっていうことで辞めたんです。しばらくは、個人事業主で手伝ったりもしてましたが、実装したくて辞めてるので有給消化の頃からコーディングしたくてしたくてむずむずしているわけですよ。それで、Javaで家計簿を作りたいっていたんですけど、Javaの環境なんか作るのは面倒だし維持も大変だから自分でやればって(光一郎さん)にいわれていたんですよ。私、インフラが弱いんでそんなこといわれるとできないわけですよ。「Rubyなら作ってあげるよ」ってRailsの本を渡されて・・・ |
川井: |
強制Rubyですね・・・ |
寧子: |
しょうがなくて他に選択肢がないんで、嫌々ながら始めたんですが、1日たったらもうご機嫌になってきて、「チョー素晴らしい」みたいな(笑) |
光一郎: |
もうこっちはしてやったりですよ。「やればわかるだろ」って(笑) |
寧子: |
それでジャンジャンバリバリ作ってたら、この人がドリコムの“Award on Rails"ってのを見つけてきて、申し込むといいよって言うんで、ちょうどタイミングがよかったのもあってそのまま応募したんです。 |
光一郎: |
“Award on Rails"を知ったのは、本当にタイミングよくて、もう家計簿を実戦投入したあとだったんです。 |
寧子: |
もう最初の1ヶ月でガーっと作ってて、その時には使いながら作ってたんですよ。ですから本当にタイミングもよくて第1回だからライバルも少なくてラッキーでした。Railsは本当に素晴らしいと思ったんですよね。なんで嬉しいって思ったかというと、当初は少し不自由なんじゃないかとかいろいろ我慢しなきゃいけないんじゃないかとかコードを自動生成されてそれにあわせなきゃならないんじゃないかと先入観があったんですが、実際にやってみると本格的で、Javaでやることあれこれのエッセンスと一脈通じてて、それで別に何かを強制されることはほとんどなくて、ほとんどのことは喜んで従いたいことだし、どうしても嫌なら他の道もあるし、これは泳ぎやすいなと思って、Javaでいろいろ苦労してた準備体操的なことはほとんど入ってて、すっかり好きになりました。本格的ってことが一番大きかったですね。 |
光一郎: |
今は、Rubyの人っていう顔をしてこういうこと言ってますけど、当初はやっぱり7年のJavaの経験が捨てられないじゃないですか。相当な抵抗にあいました(笑) |
寧子: |
本当にJavaで作りたかったんですよ。 |
光一郎: |
うちのサーバーとして動かしているマシンのOSがFreeBSDだったんですよ。FreeBSDでもJavaは動くんですけど、その上でコンパイルするのが手間がかかって、それで1回インストールしたとしてもバージョンアップのときの維持が大変なんで限界があるなと思って、強力にRubyを推しました。サーバーだけでなくて彼女のパソコンに開発環境もセットアップしてあげて、Rubyもインストールして必要ライブラリも入れて、本も渡して全部お膳立てしてあげました。 |
寧子: |
それでもぶつぶつ言いながら、朝は行ってらっしゃーいって言って、夜帰ってきてみたら超ご機嫌でやっているみたいな(笑) |
光一郎: |
ちょっと最初の道筋をつけてあげれば、この人はDIYなので、あとはやれるんです。 |
川井: |
なんか、2つの流れが一つになってきましたね。 |
光一郎: |
そうですね。美しい感じになってきましたね。一つ、補足させてください。Meadowプロジェクトの件です。東京に出てきたくらいで、どうしてもWindowsの開発をしなければならなくなったんですが、それまではX68000でEmacsとか使ってたんですよ。WindowsではEmacsがないのでかなり支障をきたしていたんですが、そのときにMule for Win32っていうプロジェクトがあって、これはUNIXのEmacsをWindowsに移植して動かすプロジェクトだったんです。このWindwsで動くEmacsを作った宮下さんという人がやっていて、Mule for Win32をかなり初期から使わせていただいて、私もなんとかWindows上で開発ができるようになってそこのメーリングリストに参加するようになったんです。それでMule for Win32のプロジェクトがEmacsのバージョンアップとともにMeadowプロジェクトという名前に変わったんです。 |
寧子: |
Meadow、キーワードですね。これで一番最初に世間的に名前が出たんじゃないですかね。 |
光一郎: |
オープンソースとの関わりはこの宮下さんとの関係が大きくて、Emacsのバージョン21が出て、フロントのグラフィックエンジンが全部書き換わって、UNIX上ではテキストとグラフィックデータも一緒にインラインで文字と同等に扱えて、JpegだとかPINGだとかそういうイメージ情報もワープロみたいに扱えるような機能がついたんですよ。でもWindowsに移植されたMeadowではそういうグラフィックの扱いがUNIXと全然違うので、単純には移植できなくてそういう機能がなかったんですよ。そこの最初のとっかかりというか、いろんな画像フォーマットをバッファに読み込むような機能を宮下さんに助けてもらいながら、私がImageMagickというライブラリーを使って、いろいろな画像フォーマットを読み込めるような機能を追加しまして、それをMeadowに入れました。この部分の最初のとっかかりを作りました。 |
川井: |
これでお名前が世の中に出たんですね。 |
光一郎: |
まあ、ちょっとなんですけど。Meadowプロジェクトに関してのAuthorは宮下さんですし、今、一番精力的活動しているのは三好さんという方で、私はどちらかというと最近はソースコード面ではほとんど活動してなくて、サーバー運営手伝いだとか主に宴会担当です(笑) 若い方はあまりEmacsを使わないみたいで新しい人がなかなか入ってこないんです。 |
笠谷: |
え、そうですか。Emacsは使ってますよ。MacになってからMeadowは使わなくなっちゃいましたけど。 |
光一郎: |
Emacs使ってますか? Carbon Emacsですか? |
笠谷: |
そうです。Carbon Emacsです。 |
寧子: |
余談ですけど、こういうバックグラウンドなんで、私、UNIXダメダメなんですけど、Emacsを使わないと家庭の危機で、メーラーとかもEmacsで動くWanderlustとかものすごく気に入らないんだけど、これを使わないっていうと離婚の勢いになるんで仕方なく(笑) |
光一郎: |
女性でWanderlustとか使ってるのは相当なものですよね。 |
寧子: |
でもそれがものすごく有難くって、いくらインフラ嫌いでも、こういう仕事しているとサーバーセッティングとか調査とかあるじゃないですか。でもそういうときにとにかくEmacsさえあればなんとかなる、見知らぬ空間でここだけ私の味方みたいな(笑) |
光一郎: |
この人もEmacsが起動すればUNIXが使えるんですよ。最近、彼女の会社でパソコンを買わなくてはならないっていう状況になって、“Award on Rails"の大賞をとった後のこれからの道筋として、UnixがベースになっているMac OS Xを使ってないとRuby開発者としてのプレゼンスが上がらないんじゃないか、と勝手に思いこんでMacBookを使いなさいって言ったんですよ。それもすごく嫌がられたんですけど(笑) |
寧子: |
そういう嫌がるときは従った方が得なんで、嫌だけどまあいいかって従いました。 |
光一郎: |
それも初期セットアップは全部私がやって、Carbon Emacsを入れて、MySQLをコンパイルして・・・ |
一同: |
(笑) |
光一郎: |
でも、この前、MacBook使ってKeynoteでプレゼンしてご機嫌で帰ってきたよね。 |
寧子: |
何がご機嫌って速いんですよね。コンソールとかがとても早くて、Windowsで開発するより相当時間が節約できるんですよね。やっぱ速いっていいですよね。思考が中断されなくて。 |
光一郎: |
Emacsと彼女との接点はもう少しあって2002年ぐらいにMeadowの宮下さんと呑んだ折に「これからはXMLだろう」みたいなことを言っていて、自分でも調べてみたら、確かに可能性があるなって思ってXMLにのめりこんだりしてたんですが、彼女はXMLコンソーシアムをやってて、そういう接点があって家に帰るとXMLのことで議論したりとかしてました。 |
川井: |
家では、そういうプログラミングの話とかするんですか? |
寧子: |
結構しますね。喧嘩も結構しますよ。 |
川井: |
プログラミングのことで喧嘩するんですよね? |
一同: |
(笑) |
寧子: |
あのコードはこうじゃないかとか言われてへそを曲げたりとか、やっと出来たって思ったらなんとかプラグインを入れるといいよとか言われて、「えーまたなの」って感じでした。 |
光一郎: |
この人はないとわかると嬉々として作っちゃうんで、すでに世の中にあると分かるとへそ曲げちゃうんです。 |
寧子: |
まあ、渋々入れるんですけど。(笑)もうこれでいいじゃんみたいな。 |
笠谷: |
それわかります。自分で作りたいですよね。 |
光一郎: |
まあ、そっちの方が本当にいいやつだったら入れる必要はないんですけどね。あんまり流行ってみんなのものになるとなかなか追いつくのも難しいじゃないですか。そういうバランスがね。 |
寧子: |
よくそういう文脈で喧嘩しますね。 |
光一郎: |
開発環境なんかもリビングの一番良いところに横に長いPCデスクでケーブルを這わせやすくしてますね。 |
寧子: |
上に3台くらいとか下に何台かで、計5台くらいバーっと。それでアローンチェア・・・と双璧をなすLeapチェアが2台、横に並べて・・・常時ペアプロみたいな感じです。普通ならテレビとソファのところなんですが、完全にマシンのスペースみたいな。だから私はそのために西日のあたらない窓の少ないPCの配置しやすい部屋を選んではじめからそのつもりした。 |
光一郎: |
間取り図からもうここはパソコンみたいな(笑) |
川井: |
すごいことですね・・・ |