ObjectSquare [2000 年 4 月号]

[OOエンジニアの輪!]


OOエンジニアの輪!

〜 第3回 青木淳さんの巻 〜

さてさて、毎回オブジェクト指向技術者の方にディープなお話、私的なお話をうかがっているこの企画。前回の藤野晃延さんからご紹介をいただきまして第3回目のゲストとしてお話しいただくのは、フリーソフトウェア「じゅん」の作者としても有名な、現在 SRA でオープンソース等に関し広くご活躍されている青木淳さんです。

尊敬する人 ゴータマさん
好きな言葉

"I have children, I have wealth." thinking thus,
the fool torments himself.
But when he is not the possessor of his own self.
How then of children?
How then of wealth?

- Dhammapada 62

「私には子がある。私には財がある。」
と愚かな者は悩む。
しかし,すでに自己が自分のものではない。
どうして子が自分のものであろうか。
どうして財が自分のものであろうか。

- ダンマパダ 62


オブジェクト指向、Smalltalk との出会い

--- まず、オブジェクト指向との出会いというか、どういったところでオブジェクト指向に入り込んでいったか、というお話をいただけると。

私はもうすでに 3 社ほど会社を変わっているんですね。親には根無し草とか言われて大変なんですけれど、やっていることは一貫しているんですよ。最初からずっとオブジェクト指向、ならびに Smalltalk ですね。で、一番最初の会社で、ほとんど銀行業務系から大型汎用機が主力の会社でしたんで、私みたいに UNIX, C, Lisp, Prolog, Smalltalk とかっていうのは「よう使わん人材」、会社にはそう見られていたようです。それで結局、ある関係会社に「面白いことやってるやつがいるから、そこにとにかく 2 年間行け」とか言われてですね。まあ、体のいい邪魔者出しというか(笑)。で、そこで Smalltalk に出会うんですね。

そこに伺う前に、ちょうどブルーブックっていうのが、Smalltalk のバイブルみたいなやつなんですけど、それが出てて、それを熟読していた。ハードカバーなんですけれど、背表紙が切れてページがばらばらになるくらいに。そういうような状態で、何とか(Smalltalk を)やりたいなぁと思ってましたね。そのときは、よく例として挙げるのが "3" がウインドウを出すとかね。"3" というオブジェクト自体が存在していて、四則演算とかが "3" 自身でできて、なおかつ "3" が自分自身でウインドウを開ける。「えっ!?」とかっていうカルチャーショックでしたね。そこからもう虜になっていきましたね。

--- その Smalltalk に出会った、というのはたまたまなんですか?

たまたまですね。その当時、C の石田さんのカーニハンの本はまだ出ていなくて、英語版でしか C を(勉強できなかった)。どうしても若い頃って何でも勉強したがるじゃないですか。日本の(本を)読んでもだめだなって、自分に合わないと思っていたんですね。自分に合うものを探すのにどうしても、英語の書籍を全部読めるわけではないんですけれども、読まざるを得なくて、その中の一冊ですね。


Smalltalk の魅力

--- で、その後は割と Smalltalk 一本で?

一番最初は C のコンパイラとか作りましてね。その次に Lisp のインタプリタ、コンパイラを作れ、それから Prolog のインタプリタ、コンパイラを作れ、お前そこまでできるんなら Smalltalk の Virtual Machine もできるだろう、っていうようなノリでですね、結局それも作る。そうすると、それらの言語の中でどれがいいかな、っていうのをある程度選択せざるを得ない状況に(なる)。どれの専門家になっていくのがいいかな、と思ったときに、周りのことは考えずに自分が好きなものをやる。そのときに Smalltalk が選択されていったという経緯ですね。

--- 当時だと AI っていうと Prolog って結構人気ありましたよね。ではなくて Smalltalk だ、となったのはどういったところなんでしょう。

ドグマが少ない。必ず言語にはあるドグマがあるんですよ。それが非常に少ない。その少ないレベルで言うと、僕の思うところでは Lisp も少なかった。Smalltalk も少なかった。Lisp か Smalltalk か最後まで競った。結局 Smalltalk の Everything is object. もうそれだけでいいんだな、っていう、それだけでしたね。

それとやっぱり、自分がそれを学ぼうとするときに、それを調査しなければいけないんですけれど、下の下のレベルまで見せてくれる、隠しているところがない、これは今活動しているオープンソースにも繋がるんですけれども、つまり隠蔽されているところがない、ソースは最初から出ている、Virtual Machine のコードも全て出ている。技術屋はオープンな環境で成長していかなきゃいけないと思ってましたんで、そういうところからすると Smalltalk は一番オープンなシステムでしたね。使われてはいませんでしたけどね。

昔、C 言語を勉強しているときも、これからは COBOL や FORTRAN の時代で C なんかやったって、と馬鹿にされました。今度 C を終わって Smalltalk に移ったときに、これからは C の時代で Smalltalk なんかやったって、とか言ってやっぱり馬鹿にされました。でも、そういうのは全然気にしない。

--- Smalltalk 自体は 90 年前後は今と比べるとかなり注目を浴びて、実際に動いたシステムとかありましたよね。

私自身はですね、Smalltalk っていう言語自体をアプリケーションを構築するための言語と見てないんですよ、最初っから。多分そこが普通のプログラマーたちと違うんでしょうね。ドグマが少ないから、その上で何でもできる。つまり試すことができるんですよ。発想したものをすぐに表現することができて、なおかつそれによって自分が増幅される、って言うんですか。だから、それ自体で作ったものがアプリケーションになるとか、例えば銀行計算業務をするとか、そういう話ではないんですね。

もっと正確に言うと、probe って言うんですか、探り針って言うんですか、道を開けるためのものなんですよ。ラッセルとも言いますし、パスファインダーとも言いますけど、とにかくまだ道がついていないところにラッセル車のように入っていって、食い込んでいくような武器として Smalltalk を抱えている、と。

--- なるほど。そういう意味で言うと、前回藤野さんのお話の中に「オブジェクト指向は内省的なプロセスだ」ということがあったんですけど、そこと通じてくると言うか、まさに内省のプロセスに適した環境と言えますね。

そうですね。あと、適度な粒度を与えてくれるでしょ。えっとね、居るんですよ、そこにオブジェクトが。つまりプログラマーとしてあるプログラミング言語を使って計算機とお話しするんですけれども、そこにつかめるものがある、っていうのがすごく大事で。…これも言うと言語的にいろいろ問題があるかと思うんですけれど、独断と思って聞いてください。コンパイル言語では得られない直接操作感、つまりプログラマーがそこにあるものをつかんでいるという感覚が Smalltalk の中にはあるんですね。

僕も Java でもプログラムしますし、他のオブジェクト指向言語も使いますが、その感覚が得られない。(というのが)僕をして、Smalltalk 以外の言語になかなか移らさせない、移ることを可能にさせない理由の一つですね。もっと言うと、Smalltalk は工事中のオブジェクトを簡単に表現できる。これは今作りかけとか、試行錯誤しているときにはですね、最初からきれいに作られるわけではないんですよ。そうすると、その工事中であるオブジェクトを出現させることができるかどうかが、試してみるときの鍵なんですよ。でも、静的型づけがきっちりされるとですね、それすらができない。…要はアプリケーションを作るプログラミング言語ではないんですよ。


パターンの弊害

--- オブジェクト指向技術一般についての使いどころ、という観点ではどうでしょうか。

基本的にオブジェクト指向って、世界を記述できたと思って喜ぶためのものでしょ?

--- (笑)

つまり、現実にある世界があって、それをコンピュータの中に移したい。移したいときに、それをそのまんまできるだけ持ち込んでいきたい。そうしたときにコンピュータの中にあるものが現実にとって代われば一番よいわけで。これもよく皆さんに申し上げるんだけれど、例えば、昔は本当に物々交換で、自分の財産を物と物で交換していたと思うんだけれど、その中に貨幣とかいろんなものが入ってきて、今やカードになって、今やコンピュータの中の数字だけで結局はやり取りをしているわけですよね。ある意味で現実がコンピュータの中の数字に入れ替わったということですから。つまりそういうことをするためのある一つのやり方がオブジェクト指向で、それはとてもよいやり方だと思うんで、それはもう完璧に agree なんですけれど。

…ところが、どうも最近はあまりいい流れではないですよね。

--- そこを是非、お聞かせいただきたいなぁと(笑)。

…やっぱりパターンあたりが出てきたのがまずいんじゃないんですかねぇ。と思います。

--- …是非。ここからが面白くなるんだと思います。

いやいや、困ったなぁ(笑)。やっぱりパターン系統を掲げておられる人が巷に多いんで。僕は、パターンは確かに言いますが、あまり表に出さずやりますね。で、パターンはある意味で世界の切り方、見方ですから、僕みたいに Smalltalk をラッセルとかパスファインダーに使う人にとって、ある意味でパターンは邪魔なときもあるわけですよ。

--- なるほど。

つまり、逆にそれに縛られる。Smalltalk の良さはドグマの少なさだ、という言及をしたと思うんですけど、それと同じようにですね、パターンがあまりにも多すぎてパターンに合わないものはだめだと決めつけた瞬間に、それはもうドグマなんですよ。その(ドグマの)数がどんどん増えていく、決していいことではないなと思うんですよ。

でも、業務をやったりルーチンでプログラムを作らなきゃいけない人にとっては、それは福音なわけですよ。だからメリットを被る人はいます。そのためにそれは大事だ、それも認めます。ところが、そうじゃない使い方をしている人にとってある意味では足かせになっている部分があるかと思いますよ。

で、本当は Christopher Alexander さんたちが言っているのは、パターンを決めてその中に押し込めることを言っているんじゃないですよね。パターンがゆっくりとだけれども熟成されて、それがまた新たなパターンの中に取り込まれていく、っていうフレームワークをとっても大事にしているんで。

--- そうですね。

…だから、質問状にあったじゃないですか。「好きなパターンはありますか?」っていう。ありません(笑)。


オブジェクトの定義

昔、Smalltalk Odysseia というのを書いたことあるんですよ。社内報なんですけれど、Web でも公開していますので。どういうことかと言いますと、やっぱり「オブジェクトの定義」はこれだろう、って書いてあります。Dan Ingalls さんの言葉なんですけれども、

「利用者からアクセス可能な要素であるオブジェクトは、利用者が観察したり、操作したりする際に、いつも意味のあるやり方で、自分(オブジェクト)自身を提示できる能力を持つ」

というのがもともとのオブジェクトの定義だと思うんですよ。オブジェクトがデータと手続きをパックしたものだとか、カプセル化したものだとかいろいろな説明のされ方をするかと思うんですけれど、でも僕が一番最初に Smalltalk が良いな、と思ったのはこれでしたね。たかが "3" のようなオブジェクトですら自分を見せようとする、自分を見せるためにウインドウを "3" 自身が開ける。やっぱり基本はそこだろうな、と思っているんですね。

(編集者注:青木さんが書かれた Smalltalk Odysseia を読んでいただくと、上述の、青木さんのオブジェクト指向、パターンに対する考え方を垣間見ることができると思いますので、ご参照ください...)


オープンソースへの流れ

ご存知ですか?フランスの政府が新しい法案を 1999/12/7 に出したんですけれども、政府機関のソフトウェア自身はオープンソース、ないしはフリーソフトウェアでないと認めない。これはどういうことかと言うと、査察可能っていうことですよね。つまり最後まで調べられる。で、「じゅん」を使っているフランスの友人なんですけれども、彼が「日本の科学技術庁のページも侵入されたみたいだけど、オープンソースを採用するように流れてる?」とか。「ちがうちがう、話は全然逆。」とか言って(笑)。

--- そうですねぇ。

結局サーバが、xxx 製だから大丈夫だとか、xxx が作ったから OK とか、全然話が違うわけですよ。それをずーっと突き詰めていくと、どこまでいっちゃうかと言うとやっぱり原発の問題になっちゃう。JCO と同じように、とにかく任せちゃう。中まできっちりと調べるということなしにやってしまうということ自体の方が問題ですね。

その査察可能、検査可能ということは、ソフトウェアに携わる者としてとっても大事な、クリティカルな部分だと思うんですよ。その部分に関しては僕もエネルギーを割いて、同調もしますし、協力もするし、貢献もするし、自分自身でも日本発のフリーソフトウェアを出していくっていうスタンスをとっているんですね。

…大丈夫ですよ、中なんか公開したって。真似できる人にしか真似できないんだから。真似できる人は相当な技術力ですからね。ものを持ってない人が一番塀をまくんじゃないですかね。中に何もないことを見られるのが嫌で(笑)。

--- またそれも耳が痛いですね(笑)。


自分は本当に自分のものか?

--- やっぱりオープンへの流れというのと、城壁を築く流れというのは常にせめぎあいがありますよね。例えば、昨年ぐらいからのビジネスプロセスの特許とか、ビジネスモデル特許とかという話…

そうそう、あと概念特許、アルゴリズム特許、遺伝子特許…、たくさんありますよね。

--- あれって、どう思われます?

…私がですか…。うーん、まずいですねぇ。まずいっていうのは、私が言及してそのまま載るのがとってもまずいんですけど(笑)。やっぱり猛烈に反対しています。

特許自身はそういう目的のために作られたんじゃないんですよね。つまり、特許自体が企業同士のパワーゲームのための道具として使われていますよね。それは正しい特許の使い方ではないですよね。それにはあまり賛成しない。新案とか、今までなかったアイディアを特許として申請したりすることに関しては全然。ただ、それを運用していって実際に行っていく人たちのやり方がまずいんだと思いますね。

例えば、LZW の GIF の問題でも、もともとは LZ ですから、Lempel さんと Ziv さんがいて、その後 Welch さんがやってきて、実際にはそれが特許になっちゃって、とか言うけど、じゃ LZ が特許になっているかと言うと、なってないわけですよね。で、LZW というアルゴリズムが LZ なしに出来上がったかって言えば…、それはやっぱり無理でしょう。そうしたことを考えたときに、自分がやっていいことと悪いことがちゃんと判断できるシステムが必要ですよね。それを会社のパワーゲームに使うなんて、もうほとんどナンセンスですよね。

--- 今面白い言葉なのは、「自分がやっていいことと悪いこと」あるいは「できることできないこと」ということなんですけれど。

例えば、自分が今日本語を話してますけど、日本語で思考もしてますよね。そこからいろいろと発想も出てきてて、じゃ、自分が発想したものっていうのは本当に全部自分のものって言えるのか、っていうことですよ。僕はもう四十何年も生きてきてますから、この間に読んだ書籍の数は計り知れないでしょ。で、たまたま自分がご縁があって斬新なものを作ったと。「それは全部お前のものか?」と言われたら、僕は「違う」って言いますよね。そこがいるんじゃないのかなぁ。

--- 「共創」って言葉を使われてますよね。

はい。だから、僕もある意味では他の人たちに創られてきましたし。自分自身のオリジナリティはどこにあるのか探さなければいけないとは思いますが、でも実際に探せるのか、と言ったときにやっぱり否定的な答えしか出ませんよね。

で、そういうパワーゲームをしている方たちにとって一番のカウンターパンチっていうのは何かって言うと、全てがオープンです、全て無償です(ということ)。向こうは秘匿しながら価格競争をしているわけですから、秘匿に秘匿で対抗したって、価格競争している人に対して価格で攻撃していったって、力のある方が勝ってしまいますから。

それに、LZW の GIF の話でも、GIF の技術を守るための特許だったのが、みんなが世界中で GIF ないしは LZW をボイコットする方に動いてしまうでしょ。そうしたら、せっかく人類の知見として得られたものが全く利用されない状況になっていくんですから、おかしな話ですよ。


仕事とプライベート

僕自身は、Smalltalk で年間に 1 万行書けなくなったらこの業界は去ろう、書けなくなったらソフトウェア技術者はやめざるを得ないよね、と思ってます。それを達成するために土日頑張ってますね。年齢が上がれば上がるほどプログラミングをしなくていい、とか言われちゃうんですけど、もともと自分がプログラマーとしてあがってきたものですから、その土台の部分だけは押さえようということで。

--- 休みの時間も使われて、ということですが、時間の管理というか、自分の時間と会社に取られていく時間というのをどうされているか、ということなんですが。

一番いい方法は分けないことだと思うんですよ。嫌だという方も多いと思いますが、私は線を引かない方の立場を取っている方です。だから、会社人間としての自分と、個人としての自分の境がないですね。できるだけ、会社の環境よりも自宅の環境を良くしておこうと、いつも努力はしています。だから、会社で使うマシンより高性能なマシンはいつも自宅にあり、ハードディスクの容量から何から、大体自宅の方が(上です)。いつ会社を辞めてもいい状況というか。

--- (小声で)見習わないといけないなぁ...

寝てて、ぱっと発想したときに、さっと向かえてそれを試してみられる環境っていうのがすごく大事で、そのときにやらないと、「まあいいや、後からやろう」っていうのはやらないのとほとんど同じになっているっていうのが、ここ 20 年ぐらいの自分の中にありますので、そのために必要なものを自分の周りに置く。で、そこで得られたものは隠さない。そういうような状況に自分を無理矢理追い込んでますよね。決して誉められることではないと思いますよ。やっぱりカミさんとか子供には迷惑かけてますので。「結婚した相手が悪かったね。残念ね」とか言ってますけど(笑)。

--- (笑)土日も働けるっていうのは、半分うらやましい気もするんですよ。家族と会社っていうのは利害が相反して。

会社の機密事項を家で話すようなことはしないにしても、とりあえず女房に話してもいいな、子供に話してもいいなってことは話すことにしてます。そうするとやっぱり理解もありますし、大変そうなんだなっていうことも分かってくれますので。それをきっちり分けてしまうことによって、家庭の方もおかしくなったり仕事の方もおかしくなったりするケースの方が、私から見ると多いように見受けられます。


若い技術者へのエール

--- これからの若い技術者の方へのエールですとか、コメントとかあればお願いします。

やっぱり、周りの人に認められたら終わり。Minority is the best というか。人から変わっているな、って思われるのをむしろ勲章のように思ってやって欲しいなと思いますね。自分がそうだったから。自分が成功しているかどうかは別問題ですけど、自分がそれでよかったな、と思ってますので。若いときのことを考えてみると、「そんなものやって」とか周りの人から非常に揶揄、中傷されたことを記憶しています。その際に、自分の信じるところに従って、周りに流されない、周りがやっているから自分もやるとかっていうんじゃなくて。失敗したって失うものなんて何もない、少なくとも僕ぐらいには生きられるはずだよ、っていうのが最低の線だとは思うんで(笑)。

特にオブジェクト指向やっている人は、僕なんかが一番最初にオブジェクト指向がすごいな、って感じたときの感覚ってあるじゃないですか。で、それを周りの人に理解してもらおうと思ったって無理だ、っていうものを探す。もっと正確に言うと、若いときは、人に話せて理解させることができないような発想を自分が注目する。そういう風なところに目を向けていてメジャーを追わないようにして欲しい。マイノリティーの中に自分を置いておいて欲しい、と思いますね。

オブジェクト指向はもうすでに四半世紀過ぎた技術ですから、ある意味ではパターンが出てきた状態で頭打ちの状況だと思うんですよ。それがメジャーになっているときに必ず隠れているものがありますよね。はみ出しているもの、オブジェクト指向がすくえなかったものというか、取り込むことができなかったものがあるんですよ。そういう部分に目を向けていて欲しいですね。で、僕が 50 か 60 ぐらいになったときに、「青木さん、間違ってましたね」って言うような若い子が出てくれると安らかに眠れると思うんですけど(笑)。


© 2000 OGIS-RI Co., Ltd.
Prev Index Next
Prev. Index Next