[OOエンジニアの輪!]
「寒くなりましたね」(そうですね)…もういいですか、すみません。さて、12月号から始まったこの企画、予想以上の好評を得ているようで、担当者としてもうれしい限りです。第2回目となる今回は、前回の友野晶夫さんからご紹介いただきました、現在InArcadiaを主宰されている藤野晃延さんです。
藤野さんは、オブジェクト指向技術の影のフィクサーじゃなかった、もとい日本のソフトウェアエンジニアのレベルアップをボランティアで支援しているとも、ソフトウェアエンジニアのインサイダー情報はすべて藤野さんのところに集まるともいわれています。とにかく間違い無く日本のソフトウェア産業の方向付けをしていく上で欠かせない人だといえるでしょう。
![]() |
|
オブジェクト指向との関わり
--- 本日はよろしくお願いいたします。早速ですが、ます藤野さんのオブジェクト指向との関わり、あるいはバックグランドのようなお話をいただければ、と思うのですが。
これは JPLoP でも言ったんだけど、コンピュータに関わっていて僕が何を一番感じているかって言うと、人間の頭脳の中に入っている知見がね、すごくものをよく知っている人がいても、死んじゃうとそれでおしまいじゃないですか。それがいかにも、もったいないなぁって常に感じていて。私が思うのは、その頭だけでもいいから残して、アーカイブとしてアクセスできるようにしてほしいなぁと。
--- その、可能な第一歩が計算機というわけですか。
そうですね。コンピュータでそういうことができればいいかなって思っているんですよね。書かれたもの、っていうのはどうしても一面的になっちゃうじゃないですか。そうではなくて、その人の解釈、という点を含めて残せていけたらいいんじゃないかな、残していくだけじゃなくて、みんなで共有してアクセスできるようになればいいなぁと思っているんですよね。
そういう意味では、ソフトウェア工学の中でも「再利用」ってのが一番バックボーンにあって、その延長線上でオブジェクト指向ってものをとらえると、ということですね。今可能になっているソフトウェア工学的な手法の中では、多分オブジェクト指向が一番実現しているだろうと思うんですね。
「オブジェクト指向」とそれに関わる人々
---オブジェクト指向の好きなところ、嫌いなところという観点では何かあるでしょうか。
オブジェクト指向で嫌いなところ、っていうのはないなぁ。とにかくやらなければいけないことが一杯なので。
ただ、「オブジェクト指向」という言葉が指す対象そのものがどうこうということではなくて、日本の場合、言葉自体がいい加減に使われるじゃないですか。それでいわゆる buzzword になっちゃうっていうところですよね。言葉っていうのは概念と対応しているから、よりものが分かってくれば同じ言葉で広いものを指したりするわけで、それは当然あり得ると思うんですよね。
僕はリゾリューションという言葉をよく使うんですけれど、分かってきて解像度が上がってくれば、同じ言葉でより広いものは指せるわけで、それに対して批判する人っているわけじゃない。つまり、「なんでもかんでもオブジェクト指向って呼ぶ」みたいな。そういう批判だけは違うんじゃないかな、っていう気がする。それが嫌だったら、もともと「オブジェクト指向」って言葉を使わなきゃいいんだけどね(笑)。
--- 私達なんか、オブジェクト、オブジェクトって馬鹿の一つ覚えみたいに言っているわけですけど、私なんかが最近思うのは、XML なんかもそうですけど、特にオブジェクトの技術じゃない、かといってオブジェクトと無関係でもない、そういったものとの関係を明らかにしていくというのが実は我々のミッションなのではないかな、とも思うのですが。
前回のインタビューで友野さんも言ってましたけど、オブジェクト指向の場合は割と自己研鑽的なところがあるから、って。本当にそうで、オブジェクト指向やってる人たちが他の人たちと違うのは、非常に内省的ですよね。自分のやってることとか考え方とか、それ自身を見直していこうっていうところですよね。内省的だからこそ、デザインパターンのように「同じことが出てくるってどういうことなんだろう」と思うわけで。そういう意味で、従来のやり方に比べて問題を見つけやすいし、問題に対する新しい解決策を自分たちで探していける、ということでしょうね。
オブジェクト指向、もうかりまっか?
---
「オブジェクト指向、もうかりまっか?」という話があるんですけれど、藤野さんは現在 InArcadia の主宰をされているわけですが、…いかがですか?(笑)
そうですね。オブジェクト指向だけで(お金を)取れるかどうかっていうのは、日本の場合、ソフトウェアに対価を払うっていう習慣がどれだけできているかっていうことだと思うんですけどね。サービス業に対する評価全体がまだ見えてないし、目に見えない部分に関してっていうのが非常に多いですね。
--- 確かに
メンタリングなんかやっているとそうですけど、お客さんは自分が悩んでいることが、「オブジェクト指向で開発をやれば直るんだ」って単純に思い込むわけじゃないですか。でもお客さんの話を聞いてみると、よくあるのは、お客さんは自分たちの開発のやり方がノーマルだと思っているんですよね。つまり、オブジェクト指向ってのは自分たちに対しても適用できるし、他も同じように悩んでいたのが解決したんだろう、って思うわけですけど。実は、いろいろ話を聞いてみると、お客さん個々っていうのは非常に問題が特殊なんですよね。いくつかの問題が絡み合っているんですよね。通常のアプリケーション開発だとこちらも思って行くんですけど、話聞くと2、3種類ぐらいのスレッドが同時に走っていて、「そりゃあ大変だよなぁ」というのがあるんですけどね。開発ってのはこのスレッドだし、コンポーネント作りってのはこのスレッドだし…、それを全部開発っていってやっちゃっているからそれはやっぱり大変でしょうね。
--- それって何なのでしょうね?
やっぱりお客さんの方ももう少し自分たちの抱えている問題の本質をきちっと理解したほうがいいと思いますね。そうじゃなくて今、オブジェクト指向だの、コンポーネントだの、パターンだのってただそのまま適用すれば、というのがあるじゃないですか。だから、同じお金でメンタリングをやっても、きちんと全部やろうとすると、やっぱり3つのスレッドがかかっていると、3倍時間がかかる、というふうに言いたいわけですよ。「ちょっとこれって、見積もりし直させてほしいな」って(笑)。でもお客さんは自分の問題が1つだと思っているわけで、やっぱりそういった点がソフトウェア、特にコンサルがらみでやってると、言っちゃ悪いけどお客さんの意識があまり高くなくて、「言ったんだったらはじめの値段で」みたいに言われるんですよね。
--- そうですね。
お客さん自身が、その3つの複合したものを解決することによって、どれだけ gain が得られるの?っていう。そういう考え方が普通になってこないと、なかなか本当の意味で我々がリッチになる、ということにはならないのかな(笑)。
--- なんて言うか、OOに救いを求めて来ちゃうっていうか。逆に言うと、結構ものを考えない人が多いなって僕は思っていて…
言えますよね。だからさっきも言ったように、オブジェクトやっている人は内省的なので、問題が1つ来ると、いくつくらいの問題がかたまっているんだろうと分けて(考えるので)、だからみんな解決できちゃうんで割とうまくいっちゃうんですね。で、「あ、それをみんなやってくれるのがオブジェクト指向なんだ」と(一同笑)。そうじゃないんだ、それ、サービスでちょっとやっているんだと(笑)。因果な商売ですよね、問題見ると解決したくなっちゃうんですから。3つの問題を「これとこれと、これがあるでしょ」って言っちゃうわけですね。それを言わずに、「うん、大変ですね」とか言っていればいいんでしょうけど。
GoF パターンから Pattern Language へ
--- GoF のパターンで好きなパターンってありますか?
GoF のパターンねぇ…。友野さんの Facade が好きだっていうのは、友野さんらしいよ。中なんでもいいっていう(笑)。僕はやっぱり Composite かなぁ。自分自身が自分自身を含んで、オブジェクト指向的っていうと変ですけど、僕の望んでいるものの典型な感じがします。
ただ、GoF のパターンそのものに関して言うと、ちょっとメジャーになりすぎちゃったので、不満はあるんですよね。だから、僕にとっては GoF もそうですけど、本当に Pattern Language、パターン言語というものを考えると、スタートポイントでしかないんですよね。いつまでもあれに拘泥していちゃ良くなくて、と思っていて。なぜかというとあれは、まず適用するのにどれ選ぼうかというのも問題ですし、じゃあ組み合わせて適用しようかというときにも問題はあるし、そういう意味で非常に painful ですよね。State じゃなくて Strategy を選んで、じゃどっちがいいの?って話ですね。Command と Chain of Responsibility にしたってそうですし。
やっぱり、Alexander が言っている Pattern Language っていう意味で言うと、パターンというものを考えたときに重要なのは、generativity(オートポイエーシスに絡んだ用語で「意味や構造の生成能力」を示す)なんですよね。ソリューションを生み出していくような方向性というものを持っていなければいけないんだけど、あれはソリューションそのものであって、ソリューション自身を生み出すというところにはまだ至ってないんですよね。パターンというものを理解してもらうためには非常に重要なんだけれども、僕に言わせれば小学校ぐらいのレベルかな。早くあそこを卒業して次のところに(行ってほしいですね)。それにはまず自分でパターンを書いたり、Pattern Language で提供されるものをうまく利用していってもらいたいなぁ。
--- なるほど
だから、JPLoP のアクティビティもまさしくそうで、そこを目指しているから、パターンを書いてって。パターンを書くとそこら辺も分かってきますよね。なぜ GoF のパターンよりもっと先が必要なのかってことも。
--- パターンを使うっていうのと、書くっていうのは違うスキルじゃないかなと思うんですけれど。
まさしく違いますね。難易度っていう意味で言うと、出来合いのパターンを適用するっていうのを 1 とおけば、新たなパターンを書く、っていうのは 10 ぐらいの努力を必要としますよね。それに比べてさらに、Pattern Language として複数のパターンの連合と、generativity を持たせようとすると、多分労力としては 100 あるいは 1000 くらい必要かなと。
--- オブジェクトの広場を読んでいる人達っていうのは、アプリケーションプログラマとして使う立場の人がかなりの割合ですし、あともちろんそういったものを作って提供している人達もいるのかなぁと思いますが、今オブジェクトでプロジェクトに携わっている日本のプログラマたちはどういったところを目指していくべきとお考えですか。
適用するときに、GoF なんかも言っているように、variation だとか mutate させる、ってことを勧めているわけじゃないですか。それがただ単なる variation(変異形、変化系列)なのか mutation(突然変異、状態変化)なのかってよく考えてみるといいと思う。そこに随分自分の固有のアイディアだとかノウハウが入っているんじゃない?っていうのであれば、その知見自身を含めてパターンとして書いてみるべきですよね。パターンって全員でそういう風に generative にやっていくわけで、それを繰り返していくことによって、個々のノウハウじゃなくてソリューションとしての generativity を作っていくことができると思っているので。そういった意味では、個々の人が努力して Pattern Language を作るのではなくて、コミュニティとして知見を共有するってことができて初めて Pattern Language ということができるんじゃないかな、って思うんですよ。
--- それこそ、イタラティブな開発とはまさにマッチしますよね。
そういう意味では、オブジェクト指向のプロセスと非常にマッチしているんじゃないかなと思うんですよね。
神奈川県警密着 24 時(!?)
---最近の話で何かあるでしょうか?うれしかったことでも、腹の立ったことでも…
何が一番嫌かって、警察の対応って頭にきますよね(笑)。
目黒通りの三車線のところを、(一番左の車線が)朝 10 時までがバス専用になっているんですよね。僕それまで真中の車線を走っていたんですけど、左折するんですぐ手前で左の車線にいったんですよ。そしたら、一人青い服着てヘルメットかぶった警官が、一番左の車線の真中に突っ立っているんですよ。「何こいつやっているんだろう」と思ったんですけど、ひいちゃう訳にもいかないからもう一度右の車線に移ったの。そしたら「お前、ここはバス専用なのに、何でこんなところ走るんだ」って言うわけ。
「あなたいたでしょ?あなたよけなきゃしょうがないじゃない。」
「そうじゃなくて、俺が警官だから、俺を見たから元(の車線)に戻ったんだろ。」
「そうじゃない。この先左に曲がるからもうそろそろこっちに来てようと思ったの。50m もないしね。それなのに、あなたが堂々と真中に立ってるからよけるしかないでしょ?ひいて欲しかったの?」
「いや、そうじゃない。お前は嘘をついている。」
もうカチンときちゃってさ。「何を理由に嘘をついているとか、あなた言うわけ?警察手帳見せてよ」って。
--- (笑)
警官とは何回もやりあっているんですよ、そういうわけで(笑)。車買い換えてすぐのときかな、だいぶ前ですけど、普通のヘッドランプではなくて、プロジェクタのランプが初めて僕の車についたんですよ。東京タワーの近くでミーティングがあって帰るときだったんですけど、一斉(取締)やってて、プロジェクタのランプってなんか青く見えるらしいんですね。だから、「違法改造してるんじゃないか」って僕の車を脇に止めて言うわけよ。「何言ってんの、まだ納車されて1週間だよ」とかって。彼らも知らないから、何だこのランプは、みたいな。やっぱり若い警官だったんだけど、そのときも頭にきちゃったから「警察手帳見せてよ」って(笑)。そしたら後ろの年配の警官が「まあまあまあ」「いやすみませんねぇ。いい車に乗ってらっしゃいますねぇ」って。今さら遅いよ!(笑)
まあ、神奈川県に住んでいるから言うわけじゃないけど、なんか勘違いしているよねぇ。
… さらに面白い話は続きますが、これ以上は自主規制させていただきます …
--- (笑) …生きるのつらくないですか?っていうと変ですけど(笑)
オブジェクト指向の人って、結構物事をきっちり考えるじゃないですか。ルールの名目じゃなくて本質を学ぼうとするじゃないですか。よく言われるんだけど、「お前はルールを守らない」だとか。どっちがルールを守ってないか、きっちり追究しちゃうもんね(笑)。
--- そうそう(笑)
怖いですね。オブジェクト指向やっちゃうと、そういう人付き合いの悪い人間になるって、私よく言っているんですけどね。
--- OOの悪いところですね(笑)。
正字・正仮名版ワープロソフト(???)
私、割と古典が好きなんですよ。ちゃんとした日本語が好きで、若かりし頃、全部旧字・旧仮名でものを書いたりとかしていたんですよ。
--- はあ
それから、当時知人が某所で、ワープロソフトの開発をやってたのを見て、仮名送りってものすごくイレギュラーなんですよ。それ嫌で、正字・正仮名の方が仮名送りが非常にルール化されていて、例外が少ないですから、裏で作れって、唆して(笑)。
--- へぇ〜(笑)。
そいつも面白がってやって。そしたら、そっちの方が全然楽!(笑)いわゆる「てふ」って書いて「チョウ」と読むとかっていうやつですけど。読みは良いんだけど、送り仮名は絶対あっちの方がルールが明らかで良い。仮名変換やる上でも楽。
--- そうなんですか。
漢字ってそういうふうになっていて、例えば、「回転する」の「転」ね。今「云」っていう字を書くじゃないですか。でも、この略字で覚えちゃうからさ、「囀る(さえずる)」っていう字を書いてごらんなさい、といったときに書けないんですよ。「云」の正字を書くんですけど。
(…当然のことながら、このとき担当者も「囀」を書けませんでした…)
漢字ってこういうふうにすごくシステマティックにできているのね。ところがこれは、書くのに大変だ、ってああいう略字ができたんだけど、もう今ワープロでやっていると書くのに大変てことないじゃないですか。書くときには漢字忘れているんだから(笑)。読めればいいんだから。そういう意味では、漢字ってもう昔の字に戻していいと思うんですよね。 今回のインタビューは藤野さんのオフィスで行わせていただきましたが、驚いたのは、そのオフィスのビルと、弊社オフィスのビルがなんと隣り合わせだったことでした(住所を見て近いな、とは思っていましたが…)。お忙しい中、貴重なお時間を割いていただきまして本当にありがとうございました(このインタビューの最中も何度も電話がかかってきていて、ご迷惑をおかけしました)。 | ![]() |
© 2000 OGIS-RI Co., Ltd. |
|