Rubyist Hotlinks 【第 5 回】 増井俊之さん

はじめに

著名な Rubyist にインタビューを行う企画「Rubyist Hotlinks」。 前回のただただしさんからのご紹介で、今回は、増井俊之さんにインタビューさせて頂きました。

なお、今回のインタビューには、田中哲さんに同席していただきました。

プロフィール

masui-1.jpg兵庫県出身。 元々電子工作に興味があり、それがきっかけでコンピュータの世界に。 ユニークな発想をベースにした、便利なソフトウェア群で広く知られている。 また、富豪的プログラミングの提唱者でもある。

現在は鎌倉に在住。家族は奥さまとご長男。

著作に『‘Perl 書法’』がある。

座右の銘
「将来を予測する一番いい方法は、それを発明することだ」(アラン・ケイ)
尊敬する人
バックミンスター・フラー、ジェームズ・ダイソン
ご本人のサイト
http://pitecan.com/

インタビュー

聞き手
ささだ
語り手
増井さん
野次馬
田中さん
日にち
2004 年 12 月 22 日
場 所
産業技術総合研究所(文京グリーンコート)

人物像

好きな言葉

ささだ
では、好きな言葉とか座右の銘から。
増井
そんなのあるのか、とか思いますけど (笑) 無理矢理考えたのは、アラン・ケイ1が言ったとかいう「将来を予測する一番いい方法は、それを発明することだ」というものです。聞くところによると、これはエジソン2も言ってたとか、ジョン・レノン3も言ってたとか、いろんな話があるんだけど、とにかくそれが好きな言葉です。
ささだ
増井さん自身もいろいろ発明されていて、世の中で実用化されているものもたくさんありますから、まさにその言葉どおりというか。
増井
ぜひ、もっとやっていきたいものです。

尊敬する人

ささだ
尊敬する人はいらっしゃいますか。
増井
別にいないんですけど、他のみなさん挙げてるようですから、発明家を挙げようと思って。バックミンスター・フラー4とか。フラードームという、三角形の集まったでかいドームを発明したり、ユニットバスを発明したり、変な車を発明したり、とにかくいろいろ発明しては失敗するんだけど、少しは残っている、そういう発明おじさんですね。あと、ダイソンさん5っていう、掃除機6作った人。あの人の伝記を読んで感動したんですけど、そういう、発明に命をかけてるみたいな人が好きです。

主なソフトウェア作品、著作

ささだ
増井さんの代表作というと、たくさんあると思うんですけど、ご自分で挙げられるとしたら何ですか?
増井
一番売れたのは、入力システムの POBox です。他にも個人的に気に入っているものは幾つかあるんですが、あんまり広まってない。広まっているものでいえば QuickML とか、今始めてる本棚.org というやつですね。それから、Palm7 用に作ったソフトが幾つかあって、PalmWiki という Wiki ソフト8とか、そういうのは割と流行ってる方じゃないかと。個人的には、論文に書いたような検索システムとかもあるんですけど、全然世に出てないから代表作とは言えないな。
ささだ
著作は Perl の本9ですか (笑)
増井
それだけなんですねえ。質問10に、「インターフェイスの街角」はいつ本になるねん、という話がありましたね。去年ぐらいに、本にしようという話が ASCII と持ち上がったんですが、ぼさっとしてる間に立ち消えちゃってます。ASCII さんとしてもやる気がないわけじゃないんで、そのうち復活させたいと思います。
ささだ
あの連載はすごい回数続いてますよね。
増井
80 回くらいやってるから、そのまま印刷してもかなりの量になっちゃうんで、単行本化するとしても、ピックアップするか最初の方だけにするかになっちゃうんですよね。その辺なるべく手間をかけずに、うまくいい本にするにはどうすればいいか、とか考えてるうちに、ぼやっとして、まだ日の目を見てないです。
ささだ
出版されるのをすごく楽しみにしてます。
増井
ありがとうございます。

生い立ち

ささだ
じゃあ、生い立ちを。
増井
私は、今までのインタビューの人より歳がだいぶ上じゃないかと思うんですけど、私が子供だった頃にはコンピュータなんか周りになかったわけですよ。今、情報処理学会で、日本のコンピュータ50 周年記念とか言ってるんですけど、ということは、日本のコンピュータの最初は 1956 年とかそのくらいだったということですよね。この前科学博物館に行ってみたところによると、FUJIC という真空管計算機を富士写真フィルムの人が作ったというのが、日本の一番古いコンピュータの一つなんですよ。電総研とかで作ったんじゃなくて、富士写真フィルムの根性のあるおっさんが、家で真空管を組み立てた、みたいな。それが科学博物館に展示されてるんですけど、それが日本の計算機の始まりみたいなもんである、と。それが 1956 年くらいですね。で、私が 1959 年生まれなので、子供の頃は、世の中に大型のコンピュータはあったらしいけれど、家にコンピュータがあるなんてことは考えられなかったわけで。だから、中学の頃からプログラミングやってます、みたいな人は、いったいどんなんだろうそれ、と思っちゃうわけですね。
ささだ
最近だとそういう人ばっかりですよねえ。
増井
でしょ? それはいったいどういう生活なのかっていうのがうまく想像できなくて。
ささだ
では、どんな子供時代を?
増井
電気工作をやってたんですよ。小学校の終わりくらいから、トランジスタとか真空管とか、そういう電気工作に興味があって、『ラジオの製作』11だとか『初歩のラジオ』12だとか『CQ13とか読んで、変なものを作って、中学高校は半田付けの生活ばかりやってたんですよ。いろんなものを作ったわけですけど、アナログシンセを全部ゼロから作ったりとか、かなり豪快なものを作ってたんです。それで、高校の 1 年か 2 年くらいの時に、マイコンというものがあるらしいということで、それが『トランジスタ技術14に連載されたんですよ。すげー複雑な回路で、いっぱい TTL15 だのなんだの繋いで、すごそうだということで、チップ買ってきて作ってみて、それで、プログラミングというかマシンコードを書き始めたんですよね。
ささだ
そういうマイコンのキットが売ってたんですか?
増井
いや、とんでもない。IC チップを売ってるか売ってないかくらいですよ。IC チップも普通では売ってないから、モトローラから直接サンプルを貰うとか、そういう感じの買い方をするんですよ。電気街に行っても売ってないんですから。売ってる店も後では出てきましたけど、最初の頃はまだ簡単には手に入んないから、何万円とかいうのをなんとか 1 個手に入れてきて。で、その周りには TTL を繋いで、そうやって作ったりしてたんです。プログラミングも、キーボードなんてないから、トグルスイッチをずーっと並べて、スイッチを 0、1、0、1、とかして、write して、アドレスを次に進めて、それでまたトグルスイッチをぱちぱちとやって、write して、そうやってメモリに一個一個書いていくんですよね。
ささだ
うわー。
増井
そんなことをやってたんです。それがプログラミングの一番最初で、現在とはだいぶ違うんじゃないかと思うんですけど (笑)
田中
当時はプロセッサはあったんですか?
増井
マイクロプロセッサができたのが私が高校の時で、それが 800816。一番最初のは、嶋さん17という人が作った 400418 っていうのだったらしいんだけど、その次の 8008 を使ってマイコンというものを作った。当時はメモリチップなんてないから、メモリは 256 バイトとかそんなんで、それにこうやって一個一個書いて。
ささだ
その頃に本当にコアのコアな人だったっていう感じですね。
増井
そんなのだから、ハードが好きだったのであってプログラミングが好きだったわけじゃないんですよ。今でもプログラミングはそんなに得意じゃないし。どっちかというと半田付けのほうが得意だったくらいで。
ささだ
で、その電気工作の趣味が高じて、大学も、就職も、という感じなんでしょうか。
増井
そうですね。最初のうちは、アセンブラもないから、マシンコードなんて全部覚えてんですよね。八進コードだったんで、123 はローテートとか、そんな感じでやってたんですけどね。でも、その頃も、プログラムを作ることよりも周辺装置を作ることに情熱を燃やしてて。プリンタとかカードリーダとかを作ってました。プリンタは、レジというものがもちろん既にありましたから、ああいうやつのジャンク品みたいなのを秋葉原で買ってきて、信号とか仕様書なくてわかんないから、適当にこうやって動くんじゃないかとかやって、適当な信号出すとなんとなく動いたり動かなかったりするわけですよ。
ささだ
なるほどー。
増井
それから、いくらなんでもマシンコードを 1 ビット 1 ビット入力するのはしんどいから、読み取り装置がほしいですよね。でも、その頃は何もないから、レジの紙テープに黒とか白とか書いていって、それをえいやっと引っ張るとプログラムが読まれる、というのを作って。
ささだ
おー、カードリーダですか。
増井
そうですね。そんなアホなことやってましたけど、すごく面白かったですね。
ささだ
それを高校の頃に、ですか。すごい高校生ですね。まさにハッカーですね。
増井
ハッキングの方向が違うけれど (笑) その頃、それを使って何をしたかというと、例えば、ペントミノのプログラムなんてのを作って、計算結果をさっき作ったプリンタで出力するようにしておくと、夜通し計算してやっと答えが一つ出てるとか、そんなことをやってた (笑) それがいわゆるプログラミングで。
ささだ
そういう人はなかなかいなかったんじゃないかと (笑)
増井
だから、キットを買ってきてとかいうのは「なんというアマチュアだろう」とか思うんだよね (笑) TK-8019 とかが 1976 年に出たらしいんだけど、そんなキットを買ってるやつは「なんと生ぬるいんだ」とか「回路なんかできてるじゃん、面白くないな」とか思ってた。自分で回路を考えて、チップを全部揃えて、配線して、それを制御するプログラムを全部書いて、というのがコンピュータの自作だと思ってたんだけど、最近の人は、なんかガワを買ってきて組み合わせて「自作だ」とか言ってるから、あれはけしからん。なんてことを言ってると、また「オールドだ」と言われるんだけど (笑)
ささだ
私も、自作というのは HDD を突っ込んで、とかいうレベルなんで (笑)
増井
あれは自作じゃなくて組み立てでしょう (笑)
ささだ
で、大学に入られて。
増井
はい。大学に入っても、やっぱりコンピュータはそういうもんだと思ってるから、6809 っていう、モトローラの 8bit の MPU を使ったんですけど、やっぱりスイッチのあるやつを作って。そういう考えから抜けられないんですよね。でも、今度のはすごくて、なんと、アドレスを毎回入れなくても、write するとアドレスが一つ増えるんですよ! とかいう世界で。
一同
(笑)
増井
当たり前だろ、と (笑) 今までは write するたびに自分でアドレスを一つ増やしてたんですよ。
田中
今までは、アドレスバスとデータバスのトグルスイッチがあって、パルスを入れると、指定したアドレスに指定したデータが入る、と。
増井
そうそう。
田中
それが、今回はアドレスバスが自動的にインクリメントされるようになった、と。
増井
そういうことです。すばらしい進歩です (笑) で、まあ、スイッチがずらーっとあるんです。そして、ランプがずらずらーっとある。昔のコンピュータって、ランプがずらーとあってスイッチがいっぱあるっていうイメージだったから、そういうのを作ったんです。
田中
アドレスが自動的に進んでも、トグルスイッチだと、スイッチ自体が自動的に切り替わるわけじゃないですよね?
増井
あ、スイッチは変わらないですよ。スイッチは最初にロードする時に使うだけで、後は、アドレスは内部的に変わってて、ランプの点灯がどんどん変わっていくだけ。すごくかっこいいんですよ。光がピカピカしてね。それで、スイッチがずらっと並んでるの。だから、暴走すると光が全部点くからわかるとか。
一同
(笑)
増井
今は暴走しても固まるくらいでしかわかんないけど。
田中
ノートはファンが回るからわかるんですけどね (笑)
ささだ
それは趣味で作られたんですか? 研究とかでなく?
増井
もちろん、その頃は趣味です。高校の時に、阪大の研究室を見学に行ったことがあって、そしたら、そこの大学院生が 8008 でコンピュータを作ってるんですよ。で、どうもそれは研究としてやっているらしい、と。こっちは必死で自腹を切って作ってるのに、向こうは研究としてやっている。なんで同じことしてるのにこんなに違うねん、と不思議に思ったことを思い出しますね。
ささだ
で、大学では yacc20 みたいなのを作られた、とうかがいましたが。
増井
それは修士くらいになったときで。その頃はもう PC-980121 とかありましたし、C コンパイラも売ってるものがありましたから、全然環境は変わってましたね。激変したと言っていい。私が大学に入った頃は、みんなスイッチ買ってきて並べて「キーボードだよ」と言ってみたりね。外部記憶装置はないからテープとか当たり前でしたよ。ディスクとかなくてですね、授業の時に 8 インチのフロッピーディスクを「これがフロッピーディスクだ」とか回覧してたくらいで。私も 8 インチのドライブをどっかから貰ってきたんですけど、両面倍密で 1MB やっと入るってやつが 18 万円とかでしたよ。こんなでかくて、それでもすごく売れてるって言ってました。
ささだ
そういうのは、研究室に入ったら研究室にすぐにあった?
増井
研究室では、あると言っても PC-8822 とか 98 とか、その程度のものしかなかった。それでなんか変な C コンパイラを持ってきてやってましたね。その頃のマイコン用の C コンパイラって、結構変なのが多くて往生しました。Tiny-C とか、変な C がありましたねえ。ポインタが二つまでしか使えないとか。そうそう、PC-8801 用の C コンパイラってのがあって、これがすごかったですね。10 行くらいのプログラムをコンパイルして、風呂に入って出てきてもまだコンパイルしてたとかね。
ささだ
それが、80 年代前半というあたりですか。
増井
そうですね。シャープに行った頃には、もう、UNIX がけっこうあったんですよ。SUN Workstation とかが。すごく高かったですけどね。その頃にはもう Sun のウィンドウシステムとかがあって、割と今とそう変わらない環境でプログラムを開発できるようにはなってたですね。
ささだ
そこで自社製のウィンドウシステムを開発されたわけですか。
増井
そうですね、はい。Sun のをそのまま使うわけにはいかないですから、似たようなものを自社でも作ろうじゃないかということで。ああいうエンジニアリング用のワークステーションじゃなくて、普通の人がオフィスで使うような、表計算とか、ワープロとか、そういうのを。
ささだ
そこで、インターフェイスの方に目覚められた、と。
増井
死ぬほどプログラミングがめんどくさくて。C で書いてるんだけど、画面を描きながら入力を監視して、みたいなソフトを書いてる人のプログラムを見たら、死ぬほど難しいんですね。普通の C なんですけど、どういうロジックで動いてるのかさっぱりわからなくて、それを見るのに 1 日かかったりするぐらいロジックがぼろかった。
ささだ
うんうん。
増井
これはやっぱりツールが必要だろう、とか、いろいろ思いましたね。例えば、状態遷移を書くのにどうするかっていう話があるんですよ。プログラムをいろいろ動かしていくと、状態が変化していったりしますよね。その状態の数がすごく増えた時に、どういう風に書けばいいかっていうのを考えると、やっぱりツールがほしいじゃないですか。普通だったら case 文とか並べればいいんですけど、それだとやっぱりわけがわからなるから、まず図を描いて、丸とか線とかを描いて、こういう条件だったらこうなるとか、そういうツールがあるといいわけですよ。実際にそういうのも作りましたね。あんまり使わなかったけど……。
ささだ
状態遷移を図で示すと、それがコードに落ちるんですか。
増井
そういうことです。図とまではいかなくても、例えばメイクファイルみたいな書き方で、こういう状況でこれが来たらこうなる、とかいうのをたくさん書いておくと、コードに落ちる、とか。そういうのを実際に書いて使ってましたね。
ささだ
シャープではそういうお仕事をされた、と。で、次はカーネギーメロン大学へ行かれた、と。
増井
2 年ほど、無理矢理、留学という形で行きまして。
ささだ
シャープから行ったんですか?
増井
そうです。
ささだ
資料によると、機械翻訳研究所……。
増井
なんでここで翻訳で出てくるのかわけがわからないけど、たまたま、冨田勝23という人がいて、その人がカーネギーメロン大学で機械翻訳研究所というのの先生をしてたんです。その人と、私がいたシャープの所長が知り合いだったから、ちょっと行ってこい、みたいな感じで。で、行って翻訳をやろうと思って一応翻訳の勉強とかもしたんですけど、ずっと勉強しても全然わからなくて、仕方ないから諦めて普通のソフトツールの方ばかりやってましたね。だからほとんど仕事してなくて、一番大きな仕事はピッツバーグ便利帳というピッツバーグの案内を書き上げたことですね (笑) これが私のメインの仕事だったと言われるぐらいで。
ささだ
で、帰ってこられて、またシャープ。
増井
ま、留学の後ですから、しばらくはシャープに。
ささだ
そしてその後、ソニーのコンピュータサイエンス研究所の方に。こちらではインターフェイスの方ですか?
増井
その頃は、学会とか論文書いたりとかいろいろしてましたから、ある程度インターフェイスをやる人だということになってたんで、そういう人だということでソニーに採ってもらえた、と。
ささだ
シャープからソニーに移られて、何か変わったことはありましたか?
増井
それは全然変わりましたね。シャープは研究所が天理の山の中にあって、古墳の上にあるんですよ。本当に周りに何にもないところで、飯を食いに行くこともできないわけですよ。で、奈良なんて、天理の山の中じゃなくても大したところじゃないですから、遅れているというか、何をするにも大阪とか京都とかに出て行かないとだめなんですね。例えば、『bit』24を売ってる店が一軒もないとか。その程度は序の口で、とにかく何もないわけですよ。だから、みんな何かするときには京都や大阪に出て行く。出張はいっぱいあったんで、いつも朝早く起きて京都に行って東京に行って。10 時から会議や、とか言われるわけですよ。10 時から会議やとか簡単に言ってくれるけれど、奈良から行ったら 5 時起きやぞ、とかそういう話になるんですよ。で、もういい加減嫌気がさして東京の方に来ちゃった。ちょっと幸せになったな、と。
ささだ
じゃあ研究自体は?
増井
それは同じようなことをずっとやってましたね。
ささだ
で、現在は、産総研の方で。やってることはやっぱり同じようなことですか?
増井
そうですね。最初は画面上でツールとかやってたんですけど、その後は、モバイル上のツールとか、最近だとユビキタス用の環境はどうなるべきか、とか、そういう風になってきて。だからもう、ソフトがどうのこうのとか、どうでもいいんですよね。結果が一番大事で、ほとんどデザインと一緒なんですよ。例えば、こういうところでいったいどうググるか、とか、そういうことを考えるわけですね。そういう場合は、こう出た方がいいんじゃないかとか、こう入力した方がいいんじゃないかとか、そういうデザインのことが大事であって、その下は Ruby であろうが Java だろうがワイヤレスであろうが、何であっても関係ないんです。今はインターフェイスをやってる人というのはだいたいそういう風になってきてるんですよ。昔は割と言語について話してる人もいたんですけど、今は皆無ですよね。こうなってくると、デザインだったらデザイナーの方が得意かもしれないから、進歩が止まってきてるわけですよね。そんなにかっこいいシステムはできないから。じゃあ何で勝負してるかというと、実装力みたいなところがあって、「こんなのができればいいなあ」というときに、それをぱーっと作ってデザイナーより先にやっちゃえば、少しは「こいつ、やるんじゃないか」と思われるんだけど、「こんなのがいいなあ」というだけのレベルだと、それはデザイナーとかに負けるに決まってますからね。そういう、ラピッド・プロトタイプというか、そういうことのための、ハード、ソフト技術が非常に大事である、と今のところ思ってます。

Ruby について

好きなメソッド、嫌いなメソッド

ささだ
Ruby の好きなメソッド、嫌いなメソッドを。
増井
今までのみなさんは、難しいメソッドを好きとか嫌いとか言ってて……。メソッドと言えるかどうかわかりませんけど、each とか collect とかあるじゃないですか。ああいうのは Perl にないから、これはいいなと思いましたね。あと、これもメソッドじゃなくて基本機能かもしれませんが、yield みたいなのがあるのは、すごくいいな、と。
ささだ
嫌いなのってありますか?
増井
特に嫌いってのはないんですけども、改行の場所によって動いたり動かなかったりすることありません?
田中
あります。
増井
そういうことは普通の言語だとないでしょ? Perl だとそういうことはないと思うんだけど、それがちょっと気になる。あと、バージョン 1.6 と 1.8 で動いたり動かなかったりするじゃないですか。
ささだ
はい、はい (笑)
増井
それも嫌いって言えば、嫌いなんですけど、そんな本格的に嫌いなところは別にないです。気をつければなんとかなるし。

Rubyist になったきっかけ

ささだ
Rubyist にはいつ頃なったとか、どうして Rubyist になったのかとか。
増井
Perl を使ってたら、高林氏25に「お前はなんてオールドな奴だ」と怒られ続けていていたので、そのうち Ruby に変わらないといけないなあ、と思いつつ、まつもとさんの本とか読んでたんだけど、どうもよくわからん。つまり、今までの Perl の資産があるわけで、それを全部捨てて Ruby にする意義がよくわからなかったんです。でも、‘ウサギ本’26が出て、あれを読んでから、ああなるほど、と、やっとわかってですね。あれのおかげでスイッチして。
ささだ
すると、きっかけはウサギ本、と。
増井
そうですね。何年前でしたっけ、2、3 年前だと思うんですけど。
ささだ
で、現在は Ruby をツールとしていろんな作品を作っていらっしゃる、と。
増井
そうですね。作品というか、ちょっとしたソフトウェアツールとか CGI とか全部 Ruby にしちゃいましたね。
ささだ
もう Perl は使ってないんですか?
増井
まるで使ってないですねえ。ていうか、Perl は 5 の頃からほとんど使ってなくて、ずっと Perl4 を使ってたんですよ、わかんないから。で、Perl6 が出るとか出ないとかいうのは、もうどうでもいい、っていう心境ですね。

Ruby の好きなところ、嫌いなところ

ささだ
では、Ruby の好きなところ、嫌いなところというと? 先ほど出た話で全てなのかな。
増井
んー、それだけじゃなくて、Perl でできることは何でもできて、ちょこちょこっと書くのもできるんだけど、がんばれば綺麗にも書ける。それから、メソッド呼び出しの形式が変数参照と一緒ですよね。あれも Eiffel かなんかの伝統だと思うんですけど、あれもいいですよね。とかまあ、割といいことが多くて。それと、Ruby 界隈にはかっこいいソース書く人が多いじゃないですか、なぜか。だから人のソースが見やすいとか。それは Ruby がいいからかどうかはわかりませんけど、そういうよさもある。Perl だと、自分が書いたプログラムすら、後で見たら何がなんだかわからないことが多いんですけど、Ruby だとそういうことはない、と。
ささだ
Perl と比べて Ruby の可読性はいい、ということですかね。
増井
それから、最近気がついたことは、セミコロン打たなくていいですよね、あんまり。キーボード入力してる時、セミコロンって小指にあるじゃないですか。これは非常にいいポジションなんだけど、C とか Perl では打つけど、Ruby では打たなくていいですよね。で、使わないキーがこんないいところにあるのはもったいないから、これリターンにしちゃったんですよ。
一同
(爆笑)
増井
だから、私の機械は今全部、右手の小指がリターンなんです。すると手を全然動かさなくていけるんですよ。普通の人は、バックスペースで右手を動かすし、リターンでも動かすから、かなり無駄なんですよ。日本語を入力しててもかなり手が動いてるはずです。でも、ここをリターンにしてから、ほとんど手を動かさずに舐めるように入力できるようになりましたよ。
ささだ
ほほー。
増井
これも Ruby 様のおかげかもしれないです。関係ないけど (笑)
ささだ
キーボードの配列は日本語配列なんですか?
増井
私は ASCII 配列です。いわゆる HappyHacking 配列というか。
masui-3.jpg
ささだ
バックスペースは?
増井
Ctrl+H で入れます。
田中
リターンは Ctrl+M でいいんじゃ?
増井
そういう説もあるけど、なぜかそれには慣れてない。
ささだ
vi は使わないんですか?
田中
vi で使うと ESC が遠いってことですか?
増井
ESC は Emacs でも使いますよ。
田中
いや、本当の Emacs 使いはメタキーを使うんですよ。
増井
ああそうか。私はメタはあんまり使わない。でも、ESC はリターンに比べると頻度は少ないんじゃない? vi だと多いけど、Emacs だとたいしたことない。まあ、その辺のキーを ESC にしちゃうのもいいかな、とか思わなくもないですけど。ところで、セミコロンはどこへ行ったかというと、キーボード右下部のキーを全部セミコロンにしちゃった。
一同
(爆笑)
ささだ
この、下の方の特殊キーのあたりですか。
増井
だって、Alt とか使わないじゃないですか。だから、これほとんど全部もうセミコロン。
ささだ
OS は何を使われてるんですか?
増井
Windows なんですけど、自由に配列を変えられるソフトがあるんで。
田中
日本語キーボードだったらキーが多くていいですよね。
増井
(笑) 嫌なんだけど、かえっていい場合があるかもしれないですね (笑)
田中
英語キーボードだとキーが足りないじゃないですか。
増井
ファンクションキー27が足りない (笑)
田中
私はウィンドウマネージャ用のキーに、とか使ってますよ。個人的には Windows キーをウィンドウマネージャ用のキーに割り当てることにしてるんだけど、ThinkPad にはそれがなくて。
増井
ウィンドウマネージャ用のキーって何に使うの?
田中
最大化するとか、最小化するとか。あと、modifier 用キーは普通は Shift とか Ctrl なんだけど、Shift や Ctrl そのものを使っちゃうと入力に不備があるので、modifier 専用のキーを割り当てる、と。で、その割り当て用にその辺の Windows キーとかが非常に都合がいい。
ささだ
じゃあ、その辺の英語キーボードを交換しないと。
田中
英語キーボードにも Windows キーはあるから。まあ、いろいろとやりたい時には、日本語キーボードはキーがたくさんあって楽しいですねえ。
増井
昔はこの辺全部スペースにしてたんですけどね。
ささだ
私も自宅で試してみようかな。でも C が書けなくなっちゃいますかね。
増井
C やるとちょっとやばいですよ。かなり慣れないと。慣れるとこれでうまく打てるけど。
田中
エディタで改行を押した時に、それが C の文の終わりだったらセミコロンを入れるというのは?
増井
かえってうざいんじゃない? 自分の意図と違うのを勝手にやると嫌がられる。それは予測インターフェイスと一緒だというか。そういうのは、大抵うざいと言われている (笑) でも、やってみたらどうですかね (笑) コメント文でも改行したら必ず入っちゃったりとか。
田中
そこはちゃんと解析します (笑) Ruby で問題ないなら C でも問題ないかもしれない。
ささだ
問題ない、というのは?
増井
さっき Ruby で改行の位置で問題が、と言ってたのは、結局、セミコロンがないから起こってることでしょ。
田中
Ruby の改行は、文の終わりと解釈できる時はセミコロン相当になる。逆に言えば、二項演算子のところで改行する時は、二項演算子の後ろなら行が続くと解釈しているので、二項演算子を次の行の先頭に書いちゃうと……。
増井
そこで行が終わっちゃうから、次の + はなんなんだ、っていうことになるわけだ。
田中
そうそう。+ だったら単項演算子もあるからまだいいんですけど、掛け算とかの場合は困る。だけど逆に言えば、Ruby みたいなスタイルでバックスラッシュを使わないで書けるということは、そういうスタイルで書けば C でも予測インターフェイスがあまり問題なく使える。
増井
そういうコンパイラを作ればいいんだね。セミコロンなくてもいいよ、という (笑)
田中
そうですね (笑) でもコンパイラがそうなっちゃったら C 言語のコンパイラとは言えなくなっちゃう (笑)
増井
ワンパス増やして。
ささだ
プリプロセスとか。
田中
まあ、エディタでやるのが一番かなあ。
ささだ
話を Ruby に戻しまして (笑)
増井
セミコロンがないのは、最初は不思議だったけど、慣れるとその方がいいと思うようになりましたね。
ささだ
周りの人にセミコロンがないと楽でいいよ、と言うと、そんなの本質的じゃない、と言われちゃうんですが、実際に使っていると、書いてる側には結構影響ありますよね。
増井
はい。
田中
Perl だとブロックの最後しか省略できませんからね。
ささだ
この間 Perl を書いてたらセミコロン忘れちゃって。
増井
そうそう、そうなんですよ。絶対忘れるでしょ。
一同
(笑)
増井
C とかでも忘れるし。
田中
Java でも忘れるんですよね。
ささだ
わかります (笑)

Ruby を使った事例

ささだ
これは Ruby を使ってよかったな、という例はありますか。
増井
特に、Ruby だから成功した、ってことはないかもしれませんけど、ライブラリいっぱいあるから楽チンだったとかいうことはあります。それは Perl にだってあるんでしょうけど……。Ruby じゃないとできないことって特にあるわけじゃないですけど、Ruby だと少しは開発早かったりするんじゃないですかねえ。
ささだ
では、どんなライブラリがよかった、とか。
増井
例えば、mobileimap ってありますよね。あれを作る前に、私が元になるコードを CGI で書いてたんですよね。IMAP ライブラリがあって、それで CGI でいろんなの作って、とやっていたら、高林氏がやってきて「ダサいプログラムを作ってるんじゃない。これはこう書くんだ」とか言って持っていかれて公開されちゃったんだけど (笑) とにかく、それで IMAP ライブラリを使ってたんだけど、えらいもんだと思いましたね。メール関係とかだって、なんでもありますですしょ? MIME を使うライブラリだとか、ネット関係で何かしようとしたときに常にライブラリがあるというのは、非常に助かりますね。
田中
MIME は標準ではないんですけどね。追加インストールするものはある。
ささだ
TMail とか RubyMail とか。
田中
追加インストールがめんどくさいとかそういうのはあるかも。
増井
そういうのは、だんだん、標準に入りつつあるわけでしょ?
ささだ
そうですねえ。
田中
そう期待したいところですけど。
ささだ
ただ、そうすると、リリースがどうの、という話になっちゃって。たくさんありすぎるとまつもとさんの負担が、とか。
増井
あ、それから、あんまり使ってないけど、open-uri なんてすごいな、と。
ささだ
あれは私いつも使ってますよ。
田中
あれは、マニュアル見なくてもだいたい使えるのがいい。
増井
そうそう。普通の open の代わりに、open-uri って書くだけでちゃんとできるところがいい。そういうのが簡単に書けるところが、Ruby の一つの見所なんでしょう。
ささだ
では、アプリケーションとかだと?
増井
他人の Ruby アプリってあんまり使ってるわけじゃないんだけど、bsfilter を使ってますね。ベイジアン spam フィルタですか。
ささだ
食べられちゃったやつ (笑)28
増井
あれは bsfilter が悪いんじゃなくて、勉強させてなかったのが悪かった。でも、一度勉強させた後、1 年くらい放っておいてもなんとかなった、というのがかなり偉かった。最近は毎日振り分けた後学習させるようにしてるので、かなりマシになりました。
ささだ
QuickML は私がかなりお世話になってるアプリケーションの一つなんですが。
増井
それはもちろん私もいつも使ってます。でもまあ、これは高林氏が書いたものなんで。

Ruby の習得

ささだ
さっきの、改行の場所によって動いたり動かなかったり、というのが Ruby の習得でつまづいたところなんですかね。
増井
それはつまづくってほどじゃないですね。ちょっと触ればなんとかなるんで。習得については、Perl と Ruby でそんなに特別違うわけじゃないし、クラス定義とかは別に Ruby に限ったことじゃないから、ひどく引っかかったことはないんです。でも、yield はこう使うのが正しいとか、module はこう使うのが正しいとか、言語仕様じゃないけど決まってる、みたいなのが結構あるじゃないですか。そういうのがちょっと難しかったとは思いました。結局 Ruby をあんまり詳しくないんですよね、今までのみなさんがコアな人たちばっかりであれなんですけど。純粋にツールとして使ってる感じなんで、すごく難しい機能は使ってないです。
ささだ
callcc とか難しいですけど、田中さんしか使ってないですし (笑)
増井
あれは田中さんのために作ったんですか。
ささだ
あれは田中さんが core を吐くために作ったんですよ。
田中
いや違いますよ (笑) あれは修吾さんでしょう。
ささだ
まあそうですけど (笑) 実装できるからしちゃった、という。
増井
インターフェイスにはあの手の機能を使ったらいい、って話もあるんですけど、本当にやってる人はいないですよね。
ささだ
イベントドリブンで continuation をそこに入れるとか?
増井
どう使うのがいいのかな……。よくある X Window 的なプログラムってのは、誰か一人だけイベントを待ってる人がいるんですよね。で、イベントが来たら仕事をして、帰って、それをぐるぐる繰り返しながら待ってる、と。それが当たり前になっちゃってるけど、すごくダサいですよね。みんなそうやってるから、世の中そんなもんだと思ってるけど、もっとかっこいいやり方がきっとあるはずで、そういうところでうまく使える言語的な技ってのがあるんじゃないでしょうかね。昔はそういう、インターフェイスを書くにはどういった言語がいいか、という研究分野があって、並行記述言語がいいだとか関数型の言語がいいだとかいろいろ言ってたんですけど、一つも流行んなかったですねえ。そういう研究がなくなっちゃったのは、みんなごりごりぐりぐり回してるとか、ツールキット使ってライブラリ呼ぶのが当たり前になっちゃったからなんですけど。
ささだ
流行らなかったのはなんででしょう? 難しいんですかねえ?
増井
理由の一つはそうですね。イベント待ちっていうのはすごくわかりやすいし。でも、二つの操作を同時にやったら同時に一つのものを待つことになるから、イベント待ちでは書けないっていう問題がありますよね。順番にやっていかないといけないから。その辺をプログラマが自分で全部がんばって書かないといけないんだけど、実は、それも複数のプロセス走らせておいて協調すればいいわけですよね。だけど、それですら、あんまりやられていない。咳さん29が作った Rinda っていうのがあって、複数のものを同時に動かすのが簡単にできるんですけど、ああいうのを一つ入れるだけで書きやすくなるはずだと思うんだけど、あまり使われていないのが残念というか。Rinda 自体も全然流行ってないように見えませんか。
ささだ
dRuby とか、ああいう、分散っていう言葉がついちゃうと敬遠しちゃうってところがあるんでしょうか。
増井
dRuby の場合は、明らかに複数の機械でやるからまだいいんだけど、Rinda だとなんで複数投げないといけないのかがわからないんでしょう。普通の仕事だと、逐次処理で十分なことがたぶん圧倒的に多いからだと思うんですけどね。でも、インターフェイスの場合は並行的に動いてほしいことがいっぱいあるじゃないですか。バックで何か動いててほしいとか、一気にたくさん入力が来るとか、喋っても触っても動くとか。そういうのを適切に記述するためには、Rinda のようなものが非常にいいんですけど、なぜか流行ってないですね。私も使ってないくらいなんですけど (笑)
ささだ
では、Ruby の習得自体は簡単でしたか。
増井
ウサギ本はよく書けてて、あれのおかげですごく簡単だった。その前も、いろいろ見てたんですけどね、Ruby のホームページとか本とか。でもあんまりよくわかんなくて (笑) 文法がどうとかいうよりも、なぜ Ruby を使わないといけないかがわかんなかった。あの本は、そういうところを説得力があるように書いていてくれて、すごくよかったです。最近の人は、いろいろいいものがあるからそれを最初に覚えればいいわけですよね。ところが、Perl ばっかりやってた人がいきなり Ruby に行くというのは、最初から行く人よりもしんどいじゃないですか。そのために、Ruby に行けずに留まっている人が多いんじゃないかと。Perl の場合だって、バージョンが上がるたびに少しずつ変わっていくから、いちいち勉強しないといけなかったんですけど、めんどくさいですよね。私なんて、Perl を 2 の頃から使ってて、それってたぶん80年代ですよ。そこから 3 にして 4 にして、そこまではなんとか着いていったんだけど、5 とかになったら、もういいや、みたいな。そんな感じで 4 ばっかり使ってたんですけど。
田中
そのウサギ本にあったという、なぜ Ruby を使った方がいいか、というのは、どういう点なんでしょうか。
増井
やっぱり、すごく綺麗に書けるということですよ。同じ処理は Perl でもできるんでしょうけど、それを Ruby でやると、いかに綺麗にできるかという。でも、Perl みたいに書くこともできないわけじゃないし。Java でいきなり a = 3 とか書いたら怒られるけど Ruby では怒られない。その辺は Perl みたいな言語を好きな人のことも考えてるから。
田中
Python には行かなかったんですか。
増井
Perl やってると、Python がすげえいい、すげえいい、っていう人がいたんですよ。それでいろいろ調べたんですけど、どうしてすげえいいのかよくわかんなくって。それは、初めて Ruby 見た時にどうしてすげえいいのかわかんなかったのと同じなんですけど。そうこうしてるうちに、どの人に聞いても「Ruby でいいんちゃう?」と言ってるから、あ、そうなんだ、と。
一同
(笑)
増井
だから、もし周りに Python のすごい伝道師みたいな人がいたら、たぶん Python になってたでしょうねえ。
ささだ
周りの環境が一番重要ですよねえ。
増井
まあ、その方が、Zope とか使えて幸せだった可能性はないではないと思うんですけど (笑) 例えば、日本にいなかったら、その方がよかったかもしんないですね。

インターフェイスとしての Ruby

ささだ
プログラミング言語として Ruby を見たときに、インターフェイス的に、と言っていいのかちょっとわからないんですが、何かありますか?
増井
なんでもすぐに使えるという点では、CGI とかちょっとしたツールを作ったりとかするには、お手軽で便利ですよね。……それはインターフェイス的に、というのじゃないですね。インターフェイス的にも使えるようにはなってほしくて、いろいろ調べたんですけど、まだ決定版がないですよね。例えば、すごく GUI を作りたいという時に、Ruby で書くかというと書けないんですよね。それはちょっと残念なところです。Ruby/Tk とかいろいろあるみたいですけども、なんかうまくいったためしがなくて。インストールが失敗したりして。今はもっぱら Cygwin を使ってるんですが、Cygwin だと、動きそうなんだけど動かないとか、そういうのがよくあってなんか苦労する。それに、そんなに Tk を使いたいわけでもないから、もっと気の効いた GUI ライブラリというかグラフィックライブラリが欲しい、と本当に思いますね。江渡さん30という、そこにいる人が作ってた sgl っていうのがあって、それなんかもそんなに悪くないんですけど、そんなに流行ってないですよね。sgl ってご存知ですかね、Ruby でウィンドウ出したりできるんですけど。
ささだ
SDL をラップしたという。
増井
そうそう。
田中
その話って、普通の GUI のインターフェイスを Ruby で書くっていう話ですよね。
増井
sgl の場合は GUI というより絵が描けますというレベルですけどね。
田中
いや、今の質問ってたぶんそういう話じゃなくて、プログラマーとコンピュータのインターフェイスとしての Ruby という言語はいかがですか、ということじゃないかと。
増井
あ、そういう意味ですか。それは、非常にいいと思います。つまり、本当にやりたいこととその実像がかなり近いんではないかと思うんです。つまんない例かもしれないですけど、each みたいのがあるというのは正しいことですよね。
ささだ
それは、直感的に使えるということで?
増井
本棚を作りたいと思ったら、本棚.each とやったら本が順番に出てくるとか、それは直感的ですよね。そういうのが今までの Perl だったらうまく行けなかった。もちろん、うまくやれる言語はいくらでもあると思うんですけど、Ruby はその辺がやりやすい、と。

富豪家から見た Ruby

ささだ
あともう一つ、「富豪家」ということで非常に有名な増井さんですが、富豪家として見て Ruby はどんな言語ですか?
増井
つい富豪的なのを書いちゃえるから、いいと思いますね。すげーでかいのを collect しちゃったりして、よく動かなくなったりするから、非常にいいんじゃないでしょうか (笑)
ささだ
なるほど (笑) 逆に気にすることができないっていうか、富豪的にしか書けないっていうのはあるかもしれないですね31
増井
富豪的にしか書けないっていうことはないと思いますけどね (笑) 綺麗に富豪的に書けるっていうのは、すごくいいことだと。
ささだ
なるほど。
増井
よく怒られるんですよね。なんでそんなに遅いんだとか。本棚.org とかも、あまりに富豪的にしすぎてすごく重くなって、共同で使ってる人に怒られたりとかして(笑)

最近取り組んでいること

実世界インターフェイス

: masui-5.jpg

ささだ
もしよろしければ、最近はどんな研究をされているのか、とか、最近のトピックみたいなものを教えてほしいんですが。
増井
じゃあ、実世界インターフェイスの話をちょっとしましょうか。どういうことをしてるかというと、今は実物がないんですけど、ビデオを……。
ささだ
これは公開されているものですか?
増井
はい。論文も書いてありますから……。いわゆるコンピュータとかがなくても、ちゃんとしたいことができるということをしたいわけです。いちいち計算機のキーボードを触ったりとかしたくないわけですよ。これは塚田君32という慶応の学生と一緒にやってたやつで、こういうデバイスさえあれば、キーボードとか何もなくてもいいよ、という話。……ここに CD を置くと音が出る。で、右へ回すと音が大きくなる。左へ回すと音が小さくなる。置くだけでこれがボリュームになっちゃってるんですね。下に動かすと次の曲に行ったりとか。結局、単なる台なわけですが、その下にちょっと仕込みがあって、それだけでこれができちゃうんです。こういう感じの台があって、そこに CD を置いてちょいちょいってやると演奏されて、別のもの、例えばビデオとか置くと、別のことができる。
ささだ
CD だけじゃない、と。
増井
これで Web を見るとかも全部できるわけですよ。例えば Google みたいなのを置いたら Google に行けて、ぱっと検索できる、と。
田中
でも Google は入力しないといけないんじゃ。
増井
大丈夫、入力なんて簡単なんですよ。
田中
えー、検索語ですよ?
増井
うん、簡単簡単。では別の例を。このピテカン辞書というのを使いましてね。これはシャープの時に作ったんですけど、これ、ズーミングするんですよ。これは英語の辞書なんですけど。
ささだ
よくわからないんですけど?
増井
まずね、これが全部出てる状態なんですよ。で、こうやってズームアウトしていくと、半分ずつ消えていくんですよ。だから、2 個ずつ、4 個ずつ、という感じでシュリンクしていって、最終的にだいたい全部見えるようになる。
ささだ
ほうほう。
増井
今は domain という単語にカーソル合わせているんですが、これを動かすと domain を中心に全部見える。これがおもしろいのは可逆的に動くということで、ズーミングしてるんだけど、常に domain の上にカーソルがあるから、何をしても大丈夫なんです。
ささだ
ちょっと上の単語を知りたい、という時には?
増井
じゃあ、なんでもちょっと単語を言ってみてください。
ささだ
じゃあ、例えば、ruby を。
増井
ruby だと、r の……下の方でしたね……。
ささだ
ああ、出ましたね。
増井
という風に、今はマウスしか使ってないんだけど、すぐ出たでしょ。そういうことをやればいいわけです。で、今度は ruby の周りでいろいろと……。
ささだ
なるほど……。日本語でも同じようなことはできる、のかな。
増井
そうですね。ま、今のは、キーボードは全然使わなくてもできるという話でしたけど、キーボードを使うと、例えば、rub と入れたら、rub で始まる単語が全部見えます。もしくは、先頭にスペースを入れておけば * と同じになるから、なんとか rub っていうのが全部出るわけです。
ささだ
なるほど。増井さんのサイトのドメイン名が pitecan というドメインですよね。
増井
それはなぜかというと、これがピテカン辞書だからなんですけど、なぜピテカン辞書というかというと、ピテカントロプスをすぐに検索できるからです。ピテカントロプスを検索しようとすると、pitecan と入力するわけですよね。すると最初は見つからないんですが、気にせずに入力していくと見つかるんです。
ささだ
最初になかったのは?
増井
見つかったのは pite で始まるのがこれしかないからなんですが、実は綴りが間違ってるんです33
ささだ
あっ!
増井
でも、気にせずに入れると、あいまい検索を自動的にやるから見つかるんです。
ささだ
なるほど。
増井
今の例はここが c でしたけど(pitecan)、k でも(pitekan)別に問題なく。
ささだ
なるほどなるほど。
増井
つまり、単純にマッチしたものじゃなくて、一番近い単語を出す、と。だから何でも出るんです。多少間違ってても出ます。なんか難しい単語を一つ言ってみてくれません?
ささだ
私の研究分野で、サイマルテイニアスマルチスレッディング(simultaneous multi-threading)っていうのがあるんですけど、サイマルテイニアスで。
増井
それだと、どう綴るかわかりませんけど……さ(sa)、い(i)、ま(ma)、る(ru)、て(te)っと。ありますね。
ささだ
あ、これですね。
増井
最初の a はないし、a が u になってるけど、それでも出るでしょ。
ささだ
すごいですね。あー、なるほど。
増井
たくさん入れるほど出るんですよ。
ささだ
すばらしい。このあいまい検索の候補はあらかじめ設定しておくってことですかね。候補というか、simultaneous だったら、si にするか、sai にするか……。
増井
そんな情報は持ってないです。正しい綴りしか持ってないです。検索する時に、いくつのエラーでならマッチしたか、というのを計算するアルゴリズムがありますから、それで一番小さいやつを。簡単ですよ。
ささだ
なるほど、非常におもしろいですね。
増井
それと、スペースを入れるとそこがワイルドカードになって、この場合でも出てますよね。だから怪しいところは打たないという例もある。こうやると、ほとんど絶対出るわけです。であれば、検索語の話であっても、適当に入れて選べばいいわけですよ。ピテカン辞書の場合は全ての単語が同等だけど、よく使う単語は見えやすいとか出やすいようにしておけば POBox みたいな感じで使えるわけです。POBox のアルゴリズムっていうのは全くこれと同じなんですよ。見栄えが違うだけで。
ささだ
あっ、なるほど。POBox はたくさんの携帯に載ってますよねえ。
増井
携帯に載ってるものだとさすがにあいまい検索はやってないんですけど、Palm くらいだとやってますね。例えば、この Palm の POBox で t と入れると、「トイレ」とか出るじゃないですか。そこで気にせず tkkd と入れると「東京工業大学」と出る、と。これは特別に登録してあるんじゃなくて、tkkd に一番マッチするのが「東京工業大学」だからなんですね。これはあいまい検索をやってるからこういうことができるんです。
ささだ
おもしろいですねえ。
増井
日本語だとどうなんだという話がありますけれど、それも大丈夫です。高林氏が、日本語をローマ字で検索する Migemo というのをやってて、そういうのを使うこともできるし。さて、これは Yahoo! の全エントリを検索するものです。エントリは 30 万件くらいあって、この数の中から普通に延々探していると、とてもじゃないけど見つからないんですが、さっきと同じようにこんな風にやると、あっという間にフィルタリングできるわけですよ。「ささだ」を検索しようとして「ささ」まで入力すると、「ささ」が入ってるのがこれだけある、と表示される。マッチしないやつを表示しないようにしてて、このエントリとバックグラウンドとを対応させてるんで、全体のこの線のある辺りが表示されている、と、そんな風に見て頂きたいんですけど。最初は全部見えてるから、あらゆるパターンにマッチしたやつを眺めることができるんですが、こんな風にすると、「こまご」にマッチするのがこれだけあったからこれだけ出てる、と。で、「こまごめ」にすると、またこんな風にズーミングできるんですよ。実は、さっきのズーミングがここでも使えるようになっていて、階層が深いやつがどんどん消えるようになってるんですよ。今、この状態だと、一番トップレベルのカテゴリなんだけど、ここで、「メディアとニュース」にチェンジすると、こんな感じに、階層的にさっきのピテカン辞書が使えるようになってるわけです。で、こうやって、フィルタリングを効かせたまま、ズーミングをすぐできる。すると、今度は重要なやつが出てくるようになる。すると、トップカテゴリの重要なやつプラス「こまごめ」にマッチするやつが出てくる。で、「ビジネスと経済」カテゴリの、「企業」の、「旅行」の、「宿泊」の、「ユースホステル」の、「こまごめユースホステル」だった、とわかるわけです。こういった操作を可逆的にできるから、フィルタリングした結果と、全体での結果を、両方見られるというわけです。これも大して入力してるわけじゃなくて、ちょっとしたキーワードと、ズーミングしただけでいけるんですよ。割とこんな程度でいけるんですよ、たぶん。
ささだ
これ、ずいぶんサクサクと動いてますが、何で作ってるんですか?
増井
これは C なんですけど、今だったら Ruby でもいけるかもしれませんよ。Ruby の GUI ツールをうまく使えば。
田中
ズーミングインターフェイスは Web に載りにくいのが悲しいですね。
増井
うん、まあ、今表示してたのは結局全部テキストでしょ。だからテキストだけ送ってくればいいんですよ。
田中
Javascript を使えばいい?
増井
いや、そういう意味じゃなくて、Web との通信はテキストだけだから、量はたいしたことはない。サーバで検索して、表示は Javascript でも Flash でもなんでもいいんですけど、それで出せば。
田中
でもサーバだと通信が遅くてレイテンシーが。
増井
レイテンシーは関係ないんですって。表示するところは遅くなるけれど、ズーミングは速いです。ズーミングのところはローカルでやるんで。ズーミングのところに何を表示するかは通信で取ってくる。そうすると、ちょっと歯抜けでズーミングするんだけど、ズーミングしてるようには見えて、そんなに気にはならない。実際、そういう位置づけでJava で実装したこともあるんだけども、全然その後やってないんですよね。ちゃんとやりたいとは思ってるんですけど。何年来の懸案事項です、これ。
ささだ
なるほど。
増井
ま、いずれにしても、そういう検索システムがあれば、どこでも、こういうところでもちゃんとググれるようになるわけですよ。そういうのの標準みたいのを作りたいな、と。そういうのが、一番やりたいことなんですが、えー、本棚.org というのをやっていて、そういうユビキタスでもなんでもないものもやっている、と (笑) これはまあ趣味ですけども。

本棚.org

ささだ
流行ってますよね。
増井
割とぼちぼち流行ってるんですよね。自分で使う分にはものすごく役に立ってます。他の人が面白いのをどんどん登録してくれるからどんどん買っちゃうんですよね。
ささだ
こういうのは、どういうところで、インスピレーションというか、発想したんですか?
増井
これは、自分が買いたい本を書影を並べて管理してたんですけど、それを見た人が「こんなの俺もほしい」と言ったわけです。それだったらみんなで登録できるようにしちゃおうか、と。これに気をよくして地図帳.org というのもやってるんですけど、これはあんまり流行ってなくて。
ささだ
これは、いろんな地図が……。
増井
これは、著作権的にも問題があるというのは置いておいても、なかなか登録してくれる人が少ないのかな。これは私のとっておきの酒屋地図なんだけども、これがいかに大事なリストなのかということをわからない人も多いようですね (笑) 非常に貴重な情報なんですけどね。
ささだ
やはり、技術的には Web との連携が大切になってくるんですよね。
増井
それはそうだと思いますよ。Web 上で情報を集めたり共有したりして、それをどこでもユビキタスで使うというのが大事なんじゃないですかね。あちこちでいろいろ使うようになってきたら、情報をどこかの Web でまとめておかなきゃしょうがないじゃですか。だから、こういうのが一個あって、携帯でも PDA でも見られると嬉しいし。私は自分のスケジュールも Web 上にしか置いてないんですよ。だから、こういうところでメモしたという場合には、一時的に PDA 上にしかデータがないということはあるんですけど、最終的には全部 Web 上のやつしか信用しないことにしてるんです。そういう Web 上のやつを、あちこちでいかに共有したり修正したりアクセスしたりするかという、そういうことのためのインターフェイスってのは大事だと思いますよ。ブックマークだって最近はWeb 上に置いちゃってますし。普通はブックマークはブラウザが管理してますけど、Firefox の機能で自分の好きな検索を入れられますよね。そこで sch と入れるとスケジュールに飛ぶとかですね。
ささだ
あ、なるほど。
増井
このスケジュールを私は基準にしてるんですよ。全部ここに書いてあるわけですけれども、これさえ見られればそこら辺のインターネット端末からでもいいし。だから全部そういうので管理するのがいいんじゃないでしょうかね。で、3 文字入力すると URL に変換するというのをサーバ上で動かしてるから、jor と入れるとジョルダンに飛ぶとか。3 文字だけ覚えてれば。
ささだ
これは公開されてるんですか?
増井
これは昔の『UNIX MAGAZINE34に書きましたから35tinyurl.com という、URL を短い URL に変えてくれるサービスがあるんだけど、そんなサービスいつなくなるかわからないから、それは自分でやっておいた方がいいでしょう、と。TinyURL は全員のやつを扱わないといけないから生成される URL も結構長いんだけど、自分のブックマークしたいものだけだったら 3 文字もあれば絶対十分でしょう?
ささだ
さっきからの連想で、あいまい検索とかしてるのかと (笑)
増井
それはしてないんですけど、それもできるかもしれませんね。ちょっとくらい間違えても飛んでほしいですから。その手のくだらないアイデアは、全部その時の『UNIX MAGAZINE』に書いたんですが、今の実装は Ruby の CGI ですね。ちょいちょい、と。あ、さっきの本棚.org も、もちろん全部 Ruby です。ただ、CGI 直打ちというか、cgi.rb くらいしか使ってないからあんまりよくないですね。本当はもっといいフレームワークを使うべきなんだろうけど。何がいいんでしょうか?
田中
どうなんでしょう。
増井
Zope であれば簡単だよ、とかいう話があったような気がするんだけど……。
ささだ
Zope だとちょっと大掛かり過ぎるんじゃないかなあ、とか。
増井
そうですね。
ささだ
cgi.rb もいいですよ、とか (笑) 私もそれしか使ってないんで (笑)
増井
そうなんですか。
田中
やっぱり、標準であるのはいいですよ。追加インストールがいらないのは素晴らしい。
増井
そんなに追加インストールってめんどくさいですか?
田中
いろんなところで動かすとか考えると、ね。
増井
あ、人に配る時ですか。それは言える。
田中
でも、HTML のメソッドいらねえよ、とか。
増井
え、いりますよー。それは私がちゃんとしたフレームワークとか使ってないからなんですけど。じゃあ、何であればいいんですか?
田中
そっちは、テンプレートエンジンですね。
増井
前に Amrita とか使ったけどよくわかんなかったから。標準的なことはすぐできるんだけど、ちょっとけったいなソースなせいか困ったことがあったんで。それは使い方が悪かったのかもしれないんですけど、じゃあ直打ちでいいじゃん、って。cgi.h1 とかそんな感じの (笑) すいません、だめですか (笑)
田中
悪くはないですけど (笑) cgi.rb の HTML 生成機能がよくないのは、いらないという人にも漏れなく付いてくることですね。分離してあればいいんですけど。
増井
実は、出力するところは、分離したというか、自前の使ってるんですけどね。だから確かにあれはいらない。なんで引数取ってくるのと出力するのが一緒になってるんだ、というのはよくわかんないですね。
田中
そうそう。

Visualization

: masui-4.jpg

ささだ
Web ページを拝見したところ、Visual Language というものにたくさん言及がありましたが。
増井
Visual Language は私はあんまりやってないですね。Visualization というものははやってますけど。さっきのズーミングなんていうのが一つの Visualization ですね。Visual Language と一般に言うのは、ビジュアルなものを使ってプログラミングする、と。例えば、四角を並べてプログラムの動きを表現する、とか。そういう分野は私はあんまりやってないんですが、これからそういうのは復活する部分もあると思ってます。というのは、携帯で Google で探せるようになった時代にですね、これでテレビだの電話だのをコントロールしたいとか思うようになるでしょ? その時に、Visual Language の技術が生きてくると。今まで、こっちで画面上で丸を描いたり線を引っぱたりしてやってたことを、ここでできるようになるでしょ。こう回したらあの蛍光灯が消えるようにしてくれ、っていうプログラムを、こうやりながらできる、と。そんな風になっていくとおもしろい。
田中
ここのスイッチとあれを繋ぐ、と。
増井
そうそうそう。つまんないことでやりたいことがいろいろあるわけですよ、電話が来たらテレビの音量を下げるとか。そういうのをコンピュータに向かってやるのは嫌じゃないですか。電話からテレビに線を引いて、電話をこうやるとテレビがこうなるってやればいいんですよね。そういうような Visual Language というのがいいんじゃないかと。
ささだ
シェルスクリプトの代わりをやる、と。
増井
そうそう。実世界のシェルスクリプト。大して複雑なことはいらないんですよ。ループとかいらないの。condition と action だけあればいい。目覚まし時計なんてそうですよね。あれは、針がここに来たら鳴る、という Visual Progiramming をしてるんですよね。わかりやすい。よくある、ビデオの録画指定というのは、その辺がいまいちわかりづらいですよね。ちょっと抽象的思考が要求されるから。
田中
最近は、EPG という、電子番組表を見て選ぶというものもありますね。
増井
でも、番組表のテキストとテレビに出ている本当の映像とはやっぱりちょっと違うもので、その対応付けを頭の中でやってるわけですよね。そこで、例えば障害者用のレジというのがあるんですよ。ふつうレジっていったら、お釣りが 350 円です、とか出るじゃないですか。それを見て 350 円出すでしょ? ところが、その350 円と 350 という数字のマッピングを取るのには、やっぱり頭を使ってるわけなんです。ですが障害者用のレジっていうのは、100 円玉 3 つと 50 円玉 1 つの絵が出るんですよ。その絵と同じものをドロワーから出してきて渡せばいいんです。人間は余計な計算とかしないんですよ。
ささだ
例えば、日本の貨幣のシステムとかわかってない外国の方とかでもできる、と。
増井
できちゃうんです。それは、実物と画面という違いはあるけれども、ほとんど同じ感覚で操作できるから。そうなってくると本当に計算のできない人でもできるわけですよ。
田中
それは、レジを使ってる人がお釣りを出す時の話?
増井
貰う時も同じ。お客から 1000 円貰ったら、その金額を入力する代わりに 1000 円札の絵を選ぶ。お客が買ったものの額はバーコードリーダでスキャンするでしょ? それで、いくらって出ますよね。そして 1000 円貰ったら、その絵を押す。そしたらお釣りがこれだけだという絵が出るから、それをドロワーから出して返す。だから、出てるのをこのまま行動そればいいんです。計算いらないでしょ。だから、今、普通、番組表と番組をマッピングしてる、なんてのは当たり前やと思うけれども、実はそこにプロセッシングが入ってるんですよ。それをさらにさらに減らすというのは、さっきのプレイスタンドであるとか、障害者用レジであるとか、そういうやつなんですよ。例えば、この電気消す時はあっち行くでしょ。それも、すごくマッピングをやってるわけですよ。それはめんどくさいから、これはやっぱり電灯を直接操作して消すべきなんですよ。
ささだ
なるほど (笑)
田中
スイッチと位置とのマップですか。こうやるのが一番いいとして、ああいう順番がマップされてないのが最低で、ということですか。
増井
例えば、ガスレンジがあるわけですよね。レンジが 4 つ、四角に配置されてるんだけど、火力のつまみが一列に 4 つ並んでると、左から 3 つ目がどのレンジに対応するかというのがわからないわけですよね。つまみも四角になってたら、たぶん左下のはこっちだろう、とわかるから、まだその方がいい、と。しかし、もっと言ったら、レンジの上で鍋を回したら熱くなってくれたらもっといいですよね、とか。
田中
止める時にちょっと苦労しそうですが (笑)
増井
もう触れない、とか言って (笑) そういうギャップというのは意外とあるわけですよ。なるべく小さくしないとならないわけです。そういう点では、Ruby は割と思考と字面のギャップが少ない方なんではないかと思います。

プログラミング全般

Ruby 以外のプログラミング言語

ささだ
今、Ruby 以外で使ってるプログラミング言語は?
増井
本当に速度が必要なものは C とかを使います。それから、最近興味を持ってるやつは Processing というものです。これはご存知でしょうか? これは、本当にちゃんとした言語をやる人から見たら、屁みたいなもんだと思うんですけどね。こんなことができるんですよ。……えっと、これが Processing というシステムなんですけど、(10,10) から (100,100) に線を引いたりとか……。ほら、これで線が引かれた。
ささだ
ほうほう。
増井
BASIC みたいでしょ?
田中
BASIC ですねえ。
増井
と、このように、言語というか環境というか、動かすと編集画面が出てきて、書いて run すると動く。これと同じことを Java とかでやると大変ですよね。まずクラスを定義して、ウィンドウを引っ張ってきて開けて、どっかから描画ライブラリを呼んできて、と、えらいことになるんですよ。そういうのを全部すっ飛ばして、(10,10)、(100,100) だけでいい。実はこれ、中身は Java なんですよ。Java なんだけど、いらないところを全部すっとばして、大事なところだけ書けばあとは勝手に全部やってくれるという。これは実によい。つまり、「Java って何?」「クラスって何?」「オブジェクトって何?」とかいう人でもちゃんとラインを引けるというところが。しかも Java で。だから Java のライブラリも全部使えるし、がんばればクラスとかも全部使える。こういうのがやっぱりいいんじゃないかと思います。最近のパソコンというのは、PC-88 とか 98 とかと違って BASIC インタプリタが付いてないから、プログラミングというのをみんなやらなくなったわけですよね。それはそれでよかったという話もあるんだけれども、やっぱりこういうのも用意しておいてほしいというか。だって、今のパソコンで線を引くプログラムを書くっつったら、もう普通の人には絶対にできませんよね。Visual C++ とかをまず買ってきて、C++ なんかを勉強して、それから出てこい、みたいな。Processing の場合はそんなのいらないから、デザイナーみたいな人がたくさん作ってるんですよ。だからすごくたくさん例があってですね。例えば……、この作品とか、何かわからないけど。ブラウン運動? これはあまりにも簡単すぎましたけど、こういうのをちょっと書きたいと誰かが思ったとしても、これを書くためにはまずウィンドウの開き方から勉強しないといけない、とか言われたら嫌ですよね。Processing はそういうのが全然なくてできちゃうんですよ。テレビだってできますよ。これは福地君36という人が作った作品……。これなんかもすごいですよ。
ささだ
おー。
増井
こういう効果も Processing で書いてあるんですけど、20 行くらいしかないですよ。
ささだ
えー。じゃあ、デバイスからなんかするというところも、全部簡単にできるようになってるんですか。
増井
うん。だから、beginVideo とやるとビデオが始まる、とか、そういうむちゃくちゃな処理とか。それから、マウスのアドレスなんかは決め打ちで mouseX とかいう変数に入ってるとかね。本当のプログラマが見たら吹き出しそうな仕様になってるんだけども、でもこれで動いちゃうからこれでいいんですよ。こういう、Processing という言語……、言語は Java なんだけど、環境は、おもしろいと思ってます。
田中
まじめな言語研究者が作ると、上に 10 行、下に 10 行、真ん中に initialize が 100 行くらい、とかになるわけですよね。それは、いろんなことをできるようにするために必要なもので、という言い訳なわけだけども、どっちも取るというのは可能だと思うんですよね。
増井
そうだよね。Ruby だったら、例えば、別にクラス定義とかしなくても a = 3 で動くじゃないですか。それは Java だったら動かないですよね。
田中
mouseX とかも、Ruby でやるんだったら、Mouse というクラスがあってそれのクラスメソッドで取ってくればいいのかもしれない。そういう、簡単さを失わずにかつ generic な世界で、っていうのは不可能ではないんだけど……。
増井
だけど、そこで「クラス」という言葉が出てくる時点でもうアウトですよ。
田中
まあ、説明という点ではそうだし、例えば Ruby だと require がきっと必要になっちゃいますよね。
増井
require くらいはまあいいとしよう。「おまじないを 1 行」で済むから (笑)
田中
いや、でも、C を教える人の話を聞くと、#include <stdio.h> っていうのを説明するのにすごく悩む、と言いますね。
増井
「こうだっ」っていうのはダメなんですかね。
田中
そう、「おまじない」と言うしかないんだけれども、Python のようにそれがいらない言語に比べると、ずいぶんとめんどくさいことが多い。
増井
じゃあ、cc をちょっと細工してですね……。
一同
(笑)
増井
なけりゃ入れちゃうことにしとけばいいんじゃないですか (笑)
田中
そうなっちゃったら C の勉強にはならない (笑)
増井
言語を作ったりする人は、絶対に #include を書かないといけない、と思うかもしれないけど、ユーザーの目からすると、なんで main() なんだ、とかなんですよね。
田中
おまじないが多ければ多いほど嫌ですよね。
増井
そうなんですよ。
田中
で、これはまさにユーザーインターフェイスの話だと思うんです。書きたいことだけ書くと後は適当にやってくれる、ということをやってほしいんだけど、言語設計者は言い訳をしたいものなんですよね。言語設計者は「何でもできます、ここを変えればできます、これがほしいんであればここを変えてください」と言いたくなるものなので、そういう風に何でもできるアーキテクチャを作ちゃったら「後は誰かがんばってね」という例が非常に多くて (笑)
増井
Java の場合は、この Processing の作者がその「誰か」なのかもしれませんけどね。
田中
だから、Processing は、言い訳をしない代わりに、特定用途のために言語設計的には汚いことをたくさんやっているのではないかと思います。
増井
そう、そうですよ。
田中
で、言語設計的に綺麗なことをやって、かつ、やりたいことも妥協せずにできるところまで設計するだけの気合が続く人はあんまりいないようで。Ruby で言えば、ライブラリの設計はどうもそこまで作者の気合が残ってないようだ、とか。組み込みライブラリまではいいんですけど、require する連中はちょっと云々、という……。インターフェイスが悪くて、あんまり手間がかかってないなあ、と思うのがたくさんあるとかですね。
増井
Processing だと、この mouseX というシンボルは int とかいうシンボルと同じようなもんなんですよ。
田中
メンタルモデルとしてもそう思えるようになってるものは非常にすばらしい。
増井
そういう風に統一は取ってると思います。マニュアルもそういう感じで書いてあるんですよ。
田中
でも、そういうのは作る側からすると言い訳できないんですよね。それで「うまくいかないじゃないか」って言われたら言い訳できない。だからそういうのを作るのには無謀さが必要だと思いますね。じゃあどうしたらいいかっていうのは、なかなか難しくて、気にしつつ書くしかないんですけども……。私は、ライブラリライターとしての立場から言ってるんですけど、言い訳したくなるんだけど、それでもやりたいことだけ書けば動くように、ということを常に考えていかないと、いつも言い訳だらけになってしまうというか。インターフェイス同士ということで同じような話をすると、電気を点けるにも、あっちとあっちを 3 箇所くらい押さないと電気が点かないのは非常に悲しい、っていうのと同じだと思うんですけど。
増井
でも、この場合には、美しさっていうのがまったくないよね。この電気を消すのに部屋の隅にスイッチを置いた方が美しい、という理由が金輪際ないから。
田中
それが普通ですからね。でも、これはかなりオプティマイズされてはいるとは思うんですよ。一つスイッチを触れば電灯が一つ動く、という意味合いでは。今の「何でもできます」と言いたがるデザイナーが設計したら、ここにはスイッチが 3 つ並んでるから、3 つで何でもコントロールできるようにしよう、とか思ったりしませんかね (笑) 普通のライブラリ作者とかの感覚でやると。
増井
ああ、変なメソッドがいっぱいある、みたいな (笑)
田中
例えば、スイッチが 3 つあったら 8 種類の状態ができるじゃん、とか言って「よし、蛍光灯の明るさを 8 段階にしてみよう」とか。 だから、現在のやつはそんなにひどくないところまでは慣習ができていて、考えなくても慣習に従っているだけでまともなものができるところまでは行ってるんだと思うんですよ。
増井
でも、それがこれからは厳しいわけですよ。このハードディスクレコーダに 1 週間分溜め込んだのを、ここのビデオじゃなくあっちで見たい、とかいう時に、どうするかとか。
田中
そうそう。新しいものが出てくると、まだ慣習ができてないから、時間とユーザーのフィードバックによるオプティマイズがまだかかってないものがたくさん……。
増井
そこを、なんとか想像力をたくましくして早めに提案しよう、と言っているわけですね。
田中
まったくもって必要ですよね。
増井
どっか、家電界のマイクロソフトみたいな人が、変なのを「これが標準だ」とか言って……。
一同
(笑)
増井
ソニーとかもよくそういうことを言って (笑) まだ今のところ成功してないからいいけど、もし変なのが成功したらえらいことですよね。
田中
普及しちゃうと人間が慣れちゃうから、出ていけなくなっちゃう、という問題がありますよね。
増井
機械が学習するより人間が学習する方がはるかに簡単なんで (笑) 昔、音声合成の研究者が、すっげー変な音質なのに「なかなかいいのができた」とか言ってるんですよ。なぜかと思ったら、自分の耳がそれに慣れちゃって、それが自然だと思う耳になっちゃってるんですよ。音声合成装置を進化させる前に、自分の耳の方が学習しちゃって、もう評価者としては使い物になんないわけですよ。
田中
音声認識でも同じような話を聞いたことがありますねえ。どんどん綺麗な発音になっていく (笑)
増井
語尾を必ず発音するとか (笑)
ささだ
すると、ライブラリ作者も、いろいろ作ってるうちに、変なライブラリでも使えるようになってしまう、と。
増井
そうだろうね。たくさんオプションがあるのに、すかすかすかっと指定できちゃうとか。ありそうだなあ (笑)
田中
で、みんな使えてるから「これはこのままでいいじゃん」と。
一同
(笑)
田中
素人が入ってきて「使いにくい」とか言うんだけど、「みんな使ってるし!」とか「文句を聞いたことがないよ!」とか。
増井
Windows とかその状況なんですよね。すっげー使いにくいはずなのに、みんな使ってるし……。コンピュータはこんなもんだと思ってて、それでいいと思ってるんです。最近の子供は生まれたときから Windows があるから、コンピュータといったらこれなんですよ。他のものが考えられないんですね。
田中
だから、インターフェイスを気にするためには、不満を持った時に「それは別にわがままではないんだ」と思うことかなあ。
増井
私は幸い、まだまだ気になることがいっぱいあるからいいんですけど、それでも気がつかずに適応しちゃってるところも多いんでしょうねえ。

日常生活など

何を食べてる?

ささだ
まつもとさんから質問があって、「何を食べたらそんなにユニークな発想ができるんですか?」と。
増井
別にユニークな発想なんかできてないですけど (笑) 普段からやはりそういうことを考えてやっているといいんじゃないでしょうかね。毎日ワインは飲んでますけれども (笑)
ささだ
(笑) ワインは晩酌かなんかされてるんですか?
増井
そうなんです。趣味はお酒なんです。普段家で何してるんですか、というと、酒飲んでます。
ささだ
(笑)
増井
あと、mixi してます。

普段の仕事

: masui-2.jpg

ささだ
普段のお仕事はどんな感じでされてるんですか?
増井
そうですね、正確に、何時に来て何時に帰って、とか表明すると非常に問題があるかもしれないから……。
ささだ
でも、フレックスですよね。
増井
はい、フレックスだからいいんですけど。適当に来て適当に帰ってるって感じですね。
ささだ
アイデアを出すのは、机でうんうん唸ってるという感じですか。
増井
いや、そんな人はいないですよね、きっと。いつアイデアが出るかというと、問題意識を持ってあとはぶらぶらしてると出る、という話はよく言いますよね。それはたぶん右脳が動く時じゃないと出ないということで。よく、風呂の中とかトイレの中とか山の上とかそういうところで出ると言いますが、それは他の物音が聞こえてこないところで出るっていう話でしょうね。普段から問題意識はいっぱい持ってるんだけども、ぼけーっとしてる時に、パッと「あっ」と思うのがたぶんいい。だから、本当に何も考えずにぶらぶらしてるだけだったらたぶんダメです。と、いう風にしたらいいんでしょう、きっと。
田中
メモは取ってます?
増井
メモは取りますよ。
田中
メモを取るデバイスは?
増井
携帯と PDA と。大事なことは全部同じところにまとめおかないといけないんですよ。どこにいったかわからなくなると困るんですよね。だから、携帯でメモを取る場合は、取ったメモをメールすると Web の Wiki の上に入る、と。PDA の場合は、PDA 上の Wiki に書いておいて Web の Wiki と sync する、と。だから常に Web の Wiki に全部書いてあって、データを取ってきたければ携帯から取れるようにしてます。そうすると、原理的には必ず取れるはず、なんですが (笑)
田中
でも、書いてる途中に忘れちゃうことがあるんだよなあ (笑)
増井
あるかもしれないなあ。そこが大事だよね。取り出して起動してる間に忘れちゃったら困りますよね (笑) 最新のに換えた方がいいかも (笑) でもそうやって途中で忘れちゃうのはどうせ大したアイデアじゃないでしょ。
田中
そうかもしれません (笑)
ささだ
じゃあ、紙のメモは使わない、と。
増井
使わないですね。
ささだ
Palm でもすらすらすら、と。
増井
Palm でやるときは、こういうキーボード付きのを使ってます。Palm は長めのメモを取る場合に使って、アイデア一発だったらもう携帯で出しちゃう。
ささだ
携帯で?
増井
ほんのキーワードだけ。MicroIdea という名前の Subject を付けて自分に送ると、それがどんどん Wiki に足されていくんですよ。
ささだ
それは 10 秒くらいでさっさと書いちゃうわけですか。
増井
はい、1 行だけを、書くのは 10 秒くらいで。歩きながらでもできますから。後でメモしよう、とか思ったらたぶん忘れちゃう。ま、どうせ大したアイデアではないんですけど (笑) で、その Wiki なんですが、ホームがこれで、ここでずらっと並んでるのが Wiki で、例えば「AirMac Express」というのは、AirMac の情報をまとめてるページで、こんなのはよくあると思いますが、この MicroIdea というページが掲示板形式になってて、このずらーっとあるのが携帯かなんかから書いたものですね。だからくだらないことしか書いてないでしょう? こういうのはどっからでもメモを取るというのにはよかったですね。本当にアイデアに詰まると「何かいいことはないか」とこれを見るわけですよ。で、いくら見てもいいのは出てこない。
一同
(笑)
ささだ
でも、一月に一回『UNIX MAGAZINE』に書いてるということは、それだけガンガンとアイデアを出してるということで。
増井
それは、この Wiki に「UNIX MAGAZINE ネタ」というページがあって、いろいろと考えてるわけですよ。既に書いた記事もあるし、まだ書いてないのもありますけど。
ささだ
たくさん溜めていらっしゃるんですねえ。
増井
それはそうでないと。没になったアイデアもいっぱいありますけど……。で、これは、Wiki と掲示板みたいなやつを使ってるわけですよ。そのいいところは、何月何日何時何分何秒にこのデータ、っていう情報しか持ってないんですけど、それだと、PDA のWiki と同期しやすいですよね。同じタイトルだったら一番新しいのをこっちへ持ってきて、もっと新しいのがあったらこっちへ持っていく、と。同じタイトルでいっぱいエントリがある場合は並べて表示すれば掲示板っぽくなるし、実際これはそのまま掲示板になってる。私しか投稿しないんですけどね、ここは。でも、外部からでも投稿できるページもあって、それは普通の掲示板として使える、という風にしてます。

生活スタイル

ささだ
えーと、生活スタイルというのは、あんまり言わない方がいい?
増井
いやいや、スタイルは別に (笑) 全然普通だと思いますよ。土日仕事してるというわけじゃないけど、いろいろ考えてはいる、ということで。プログラムを書いていることももちろんありますし。いわゆる「会社の仕事」っていうのが上からバンバン降ってくるんじゃなくて、何か面白いものを作って提供する、っていう立場なんで。まあ、いろんなことをしたいと思ってますね。

仕事とプライベートの両立

ささだ
じゃあ、仕事とプライベートは混ざっちゃってるんですか?
増井
そうだと思いますね。最近はうちの家内も、なんかコンピュータ触って mixi で書いてるから、半分似たような感じになってきて。
ささだ
うちではお酒と mixi ですか (笑)
増井
そうです、とか言っちゃったりして (笑) それじゃあんまりだから、もっとスポーツとか音楽とかやっている、ってことにした方がいいのかしら?(笑)

コンピュータ以外の趣味

ささだ
では、はまってる映画とか、本とか、スポーツとか。
増井
本は、本棚.org で見られるんですけど、そんなに特にないですね。今は鎌倉に住んでるんで、最近ウィンドサーフィン始めて、これがなかなかいいんですよ。そんなの始められるのか、とか思ったんだけど、意外と始められるもんなんですよ。こないだも行ってみたら、70 歳くらいのおじいさんと一緒のクラスになって、「何をやってるんだこのジジイ」と思ったら、けっこううまくてすいすい行っちゃって (笑)
一同
(笑)
増井
ジジイでもできるもんだな、と (笑)
ささだ
そういう講習会みたいなものがあるんですか?
増井
そうです、あるんです。行くといろいろ貸してくれて。楽しいですよ。高校くらいの時に、貸しバイクを最初乗った時、こうやるだけですーっと行くっていうのにすごくびっくりしたことがありますけど、それと同じように、風があるとすーっと行くというのは、なんか非常に快感ですよ。だからヘタクソでも楽しい。
ささだ
夏の間だけなんですか?
増井
やる人は 12 月でも 1 月でもやりますよ。冬用のウェットスーツというのがあって、がんがんやるみたいです。
ささだ
増井さんも?
増井
いや、私はそこまで根性ないけど (笑) でも 11 月にも 1 回やりました。やってみるとできるもんなんですよ。海の温度ってのは気温よりも一月遅れるらしくって、だから 3 月くらいが一番寒いんですって。
ささだ
じゃあ、スポーツはけっこうされるんですね。
増井
あとは山登りとか。それは別に技術があまりいらないから、ふらっと行くだけですけど。こないだ屋久島に行ってきたら、すごく楽しかったです。
ささだ
では、趣味はスポーツが好き、ということで。
増井
いや、そうでもなくて (笑) そんなにしてるというほどではないです。後は、ジャズピアノを弾くのが好きだ、とかいうことにしておいてください (笑)
ささだ
ピアノも弾かれるんですね。
増井
mixi にジャズの仲間というのがあって、そこでいきなり集まってセッションをしようというのがあって、そういうのをやってるんですよ。で、指定されたスタジオに行くと、いろんなやつが楽器持って集まってて、見たことないやつばっかりなんだけど、「じゃあ、これやろう」とか言っていきなりそこでセッションを始めるんですよね。それでけっこううまくいったりしてね。おもしろかったです。
ささだ
へぇー。何人くらい集まるんですか?
増井
このあいだは 15 人くらいいましたよ。トランペット持って来るやつとか、サックス持って来るやつとか、ちょうど適当にいるんですよ。このあいだ行ったら、ピアノ弾くやつが俺くらいだったから、最初から最後までピアノ弾いてて楽しかったです (笑)
ささだ
なるほど。プライベートでも充実されてるということで。
増井
そういうことにしておいてください。

使用しているマシン

ささだ
使っているマシンはどんなんですかね?
増井
もっぱらこのノートなんですけど、スペックは低いですよね。VAIO の TR1 ですね。実はもう捨てようと思ってて、というのは電池がもたないからですけど。Let’s note かなんかの電池がもつやつに替えたいと思ってるんです。でも、いろんな人が言ってましたけど、確かにこの程度で十分ですよ。なんでも動いちゃう。さっきの画像処理だって動いちゃうでしょ? Java であんな速さであんな勢いで動くんだったら、何でもいいやってなるじゃないですか。

好きな女性のタイプ

ささだ
で、本題なんですけど、好きな女性のタイプは?
増井
(笑) それはもう、奥さんみたいな。ということになってるんですよね?(笑)
一同
(笑)
ささだ
みんなご結婚されてるんですよね、これまでは。……じゃあ、奥さんということで。
増井
(笑)

今後の展望

ささだ
今後の展望なんかは。
増井
ユビキタスコンピューティングのインターフェース方式を、自分のやつを標準化して、そこで満足して、かつ、幾分お金も入ってくれば、嬉しいな、というところですかね。今はまだウィンドウが出現する前のコンピュータみたいな状態でしょ。全然標準も何もないんだから。だから、いかにここでがんばるかが大事だろうと思ってまして。

Rubyist の輪

ささだ
前のインタビューのたださんとはどういうご関係だったんですか?
増井
なんだったかな、あんまりよく覚えてなかったりして (笑) 昔 Palm で POBox を作った時、たださんはけっこうパワーユーザーだったんで、メーリングリストとかでやりとりしてたんです。それは tDiary とかより全然前の話なんですけど、その後、いろんな方面で有名になられて、私も使わせて頂いたり、いろいろしてます。ま、そういう関係で、最近はオフ会でよく会ったりもしてますね。
ささだ
たださんもインターフェイスに興味があるということで、そっちかな、と思ったんですけど。
増井
あの人は、いわゆる学会とかには全然出てきてないですからね。でも、やりたいことっていうのはすごく近いと思います。
ささだ
では、次のインタビュイーは……。
増井
どうしましょうかね。この辺で探せばいくらでもいるんですけども、どういう人がいいですか? 江渡さんもけっこう Ruby 使いですよ。江渡さんってご存知ですか?
ささだ
はい。
増井
じゃ、ちょっとハッカー続きだから、江渡さんぐらいの方がいいってことかな。
田中
あ、江渡さんはあんまり知られてませんよね。面白いと思います。
増井
本当に Ruby を使ってる人だし。いわゆる言語ハッカーとは違うからいいんじゃないでしょうかね。

これからプログラミングをやりたい人へ

ささだ
若手の方に何か一言というのはありますかね。あと、私の興味で聞くんですけど、どんな風に教育されているのかとか。
増井
教育なんかしてませんよ (笑) この辺にいるのは、みんな私より優秀な人ばっかりですから。私は教えて頂いてるばっかりなんだけど、最近はあまりにオールドなことばっかり言ってるから、教えてもらえなくなって困ってます (笑) でも、最近の人は恵まれてるっていうか……。最近、梅田望夫さんのブログ高速道路の話があったじゃないですか。将棋の羽生に聞いた話で、最近の将棋の人っていうのはいろんなツールがあるから高速道路に乗ってるみたいにあっという間に強くなって、でもそこから伸びるのは大変なんだ、ってそんな話をしてたらしくて。計算機界もそうでしょ。昔と比べて、コンピュータは速いわ、開発環境はあるわ、本はあるわ、Web はあるわ、もう何でもあるから、みんなあっという間にプロになっちゃうじゃないですか、ある程度まではね。そういう状態で、じゃあそこからもうひとつどうやって抜けるか、っていうのは難しいだろうなあ、と。だから、ご苦労な人が多いでしょうけど、がんばってください。こっちは、乗り遅れないようになんとか引っ張っていってもらう、っていう感じです (笑) 私は、さっき言ったみたいに Perl に引っかかったおかげで Ruby に乗り換えるのに苦労しましたけれど、きっとそれと同じようなことが起こるかもしれないから、オールドと言われないように気をつけてみたらどうですかね (笑)

読者への一言

ささだ
では最後に Rubyist へ、読者の方へ、何か一言ありましたら。
増井
別にないですねえ。みなさん何を言ってましたっけ?
ささだ
みなさんは自分のものの宣伝を (笑)
増井
うーん……。本棚.org でも使ってください(笑)
ささだ
(笑) 本当に、今日は、お忙しいところをありがとうございました。
増井
いえいえ、ありがとうございました。

おわりに

今回はインターフェースの研究で著名な増井俊之さんにお話を伺いました。少年時代のハッキング話や、研究分野の大変興味深いご紹介、そしてプログラミング言語に関してのご意見など、たくさん喋って頂きました。実に 2 時間、お忙しいところありがとうございました。

次回は、最近 qwikWeb でホットな江渡 浩一郎さんにインタビューしてきます。お楽しみに。

(インタビュー:ささだ、編集:なかむら)


  1. Alan Kay (1940-) Smalltalk の中心的開発者。パーソナルコンピュータ、ワークステーション、ダイナブックなど、現代のコンピュータにまつわる概念で彼が提唱したものは多い 

  2. Thomas A. Edison (1847-1931) アメリカの発明王 

  3. John W. O. Lennon (1940-1980) The Beatles のメンバーの一人 

  4. R. Buckminster Fuller (1895-1983) 建築家、発明家 

  5. James Dyson (1947-) デザイナー、発明家 

  6. サイクロン式掃除機 

  7. PalmOS。PDA 用の OS 

  8. 自由に書き換え可能な Web ページを提供するシステム 

  9. 『Perl 書法』のこと 

  10. 事前に編集部から増井さんに質問のリストを送ってあった 

  11. 電波新聞社の月刊誌。1955 年創刊、1999 年休刊 

  12. 誠文堂新光社の月刊誌。1948 年創刊、1991 年(?)休刊 

  13. 『CQ ham radio』CQ 出版社の月刊誌。1946 年創刊 

  14. CQ 出版社の月刊誌。1964 年創刊 

  15. Transistor Transistor Logic。論理回路の一種。実現する論理によって様々なものがある 

  16. Intel によって開発された 8bit CPU。後述の 4004 の発展型 

  17. 嶋正利氏。4004 の開発者 

  18. Intel によって開発された世界初のマイクロプロセッサ。4bit の演算能力を持っていた 

  19. NEC が 1976 年に発売したマイコンのキット 

  20. 有名なコンパイラコンパイラ 

  21. NEC が 1982 年に発売した 16bit パソコン 

  22. NEC が 1983 年に発売を開始した 8bit パソコンのシリーズ 

  23. 慶應義塾大学環境情報学部教授、慶應義塾大学医学部教授(兼担) 

  24. 共立出版の月刊誌。1969 年創刊、2001 年休刊 

  25. 高林哲氏。UNIX 系雑誌などでお馴染み。Ruby によるアプリケーション、ライブラリを多数発表している 

  26. 『プログラミング Ruby』表紙がウサギなので、通称ウサギ本 

  27. ここでは、自由に機能を割り当てることができるキー、という意味 

  28. このインタビューを申し込む際、最初に増井さんに送ったメールが増井さんの spam フィルタに spam 判定されていた 

  29. 関将俊氏。dRuby や Rinda の作者 

  30. 江渡浩一郎氏。産業技術総合研究所 

  31. ささだは Ruby を使うこと自体が富豪的だと思っている 

  32. 塚田浩二氏。慶應義塾大学大学院 政策・メディア研究科 

  33. 正しい綴りは Pithecanthropus 

  34. ASCII の月刊誌。1986 年創刊 

  35. 2004 年 6 月号の「インターフェイスの街角」を参照 

  36. 福地健太郎氏。電気通信大学