ObjectSquare [2002 年 1 月号]

[OOエンジニアの輪!]



OOエンジニアの輪!

〜 第 13 回 浅海 智晴さんの巻 〜

インタビュー写真


今回のゲストは浅海 智晴さんです。浅海さんは、Java / XML を中心として、雑誌や自身のホームページ「あさみくんのほーむぺーじ」、「じゃばじゃば」等の執筆活動、「Relaxer」*1 、「Smartシリーズ」*2 等のツール開発など、幅広くご活躍されています。

*1 Relaxer:RELAX で定義された XML モデルに従った XML ドキュメントを操作するための Java クラスを自動生成するプログラム
*2 Smart シリーズ:「SmartMake」、「SmartDoc」、「SmartTable」。プログラマの文房具として使えるツール

尊敬する人 升田幸三
大山康晴
実力制第四代名人
第十五世名人
好きな言葉 真実は具体的である




オブジェクト指向を始めたきっかけ

-- 最初に現在のお仕事についてお聞かせ願えますか?

今年の 9 月 20 日に会社を辞めて、今は無職という感じですね (笑)。いろいろ面倒なことがあるので、有限会社として個人事務所を立ち上げましたが。これからは、個人で活動しようかなと思っています。以前は、某大手メーカーで、入社してからずっと OS をやっていました。OS は 10 年程前から技術的にフリーズしていておもしろくなかったので、趣味でオブジェクト指向やっていたんですよ。

-- 会社では具体的にどのようなことをされていたのですか? 

会社にいた頃は、RPC とか分散ファイルシステム等の分散基盤開発の仕事をやっていました。当然 C 言語ベースでやっていたんですけど、それでは解決できない問題があったんですよ。それを解決する手段を考えていくと、オブジェクト指向的なアプローチにしていかなければいけないな、というのが1つありました。当時 (10 年ぐらい前)、CORBA の ORB が出てきていろいろ見ていたんですけど、CORBA の ORB は大仕掛け過ぎて、現場の SE さんが簡単に使える技術になっていないな、と常々思っていたんです。また、当時使われていたオブジェクト指向言語の C++ をかなり調べたんですけど、C++ を使った開発だけは絶対に外部に発注したくないな、と言う印象を受けたんですね。それで、分散基盤とオブジェクト指向言語の両方に関して、当時まったくソリューションがないなと思っていました。


Java との出会い

-- そこで Java に出会われたのですね。きっかけは、どのようなことだったのですか? 

1995 年の秋頃、Bill Joy が Java の宣伝のために、当時勤めていた会社に来たんですよ。たまたま知人に頼まれて講演を聞きに行ったんですが、当時の私の認識としては、Java というのはブラウザの上で動くインタプリタ言語でちゃちなものかな程度のものでした。しかし Bill Joy が言うには、当時 Java の応用で騒がれていた JavaApplet はデモでしかない、Java は汎用言語だと力説していたんですよ。

それを聞いていろいろと調べていくと、 分散基盤や C++ で駄目だった所が、JVM や API の所でかなりうまい具合に直されていたんですよ。おそらく欠点としては、性能だけだろうと。性能に関しては時間が経てば克服されてくるので、これはいけるかなと思ったのが Java をはじめた最初のきっかけですね。


Java の弱点・・・そして、 XML

インタビュー風景

-- XML を始められたきっかけは何だったんですか? 

Javaをやる中で RMI (Remote Method Invocation) 等を調べていたんですけど、分散ということを考えると克服できていない壁があるな、と思っていたんですよ。どうしようかなといろいろ考えていたんですけど、ある日 XML というのがあるのを知りまして。その時、Java と XML を組み合わせるとすごいことがおきるんじゃないかという印象を受けました。それが、きっかけですね。

-- Java で克服できなくて、 XML を使うことによって克服できた点というのは、具体的にどのような所ですか? 

Java の分散基盤には2つの問題点があると思います。 1つは、他のプラットフォームとのデータの共有ができない所。分散基盤では、ヘトロジニアス (異機種間接続) が前提なので、それができないアーキテクチャはおそらく分散基盤として成り立たない。核となる部分は Java をベースにするのがよいと思うのですが、他の言語や環境とも連携できないと話にならないので・・・。

2つ目は、Java の RMI の機構で使っているシリアライゼーションですね。シリアライズされたオブジェクトは、送信したクラスと受信したクラスがまったく同じでないと受け取れないんです。ということは分散環境上で、同じバージョンのプログラムを常に動かしていなければならないことになるんですよ。これでは、使い物にならないなと思いました。そこへ XML が出てきて、もうこれしかないかなという感じがしましたね。

-- XML はコアな技術として定着していますよね。それによって技術が広がりすぎて、現場の SE からすると非常に大変になってきたな、という感じがあります。例えば、マークアップ言語としての側面だけでなく、データストアの技術や、プレゼンテーションデザインとしての XSLT*3 等の広がりがありますね。これらの中で、今後どのあたりが中心になるのでしょうか? XML の本質はどのへんにあるのでしょうか? 

*3 XSLT:XML によって記述された文書を他のXML文書に変換するための簡易言語

ちょっと抽象的な話になりますが、データの取り扱いのパラダイムが、関係モデルから半構造モデルに移行しつつあると思うんですよ。その底流の中で、ある1つの側面として出てきたのが XML ですね。半構造モデルのデータをオブジェクトからどう使うのかという観点で XML に取り組んでいくといいんじゃないかなと思います。

-- XML とオブジェクト指向との相性はどうですか? 

半構造モデルと XML とは若干ニュアンスが異なります。XML の1つの癖は、ドキュメント系の技術だということです。半構造モデルとオブジェクト指向とは相性がいいと思いますが、XML は半構造モデル + シリアライゼーション (直列化) です。シリアライザブル (直列化可能) な性質を持たせるために、内部をツリー構造にする必要があるとか、あるいは要素間に順序が完全に決まってないといけない等の制約が入ってくるんですよ。そこが、オブジェクト指向との相性が悪い部分だと思います。

-- JavaWorld や XMLWorld 等で連載されていた記事で、J2EE にスコープをおいて書かれていましたね。私は、J2EE によるアプリケーション開発においては、プレゼンテーションデザインの部分とアプリケーションの部分との役割分担が大切なのかなと、思っています。浅海さんは連載記事の中で、J2EE のプレゼンテーションにおいての TagLib*4 の効用と、XSLT の利用例を書かれていましたが、役割分担という視点で XSLT をどのように扱うべきでしょうか? 

*4 TagLib:タグライブラリ

ボクの感触では、例えば Cocoon 等でやっているような、HTML のドキュメント全体を XSLT で吐き出すというアプローチもあるんだけど、TagLib で表示したいある部分だけに XSLT を使う、そういう使い方が便利なんじゃないかと思います。

-- デザイナーの人は TagLib でやっていけば良いということでしょうか? 

TagLib の中に指定された XSLT の名前を書けばいいとか。XSLT のスクリプトは、プログラマーでも限られた特殊な人しか書けないと思うので。

-- プレゼンテーション側で書くものじゃないということですね? 

そうですね。XSLT はプレゼンテーションの技術だと思わないほうがいいと思います。XSLT は、単に半構造データをデータコンバートするための技術であって、プレゼンテーションのほうは CSS*5 (Cascading Style Sheets) を使われたほうがいいですね。

*5 CSS:WEB ページのレイアウトを定義する規格

-- 全体のアーキテクチャの中では、エンタープライズ側との接続や B2B 等のいわゆるデータ交換のほうで使われるのでしょうか? 

そうですね。たぶん、モデルとしては、コンポーネントというある程度大きな粒度のものをたくさん接続して使うんだけど、コンポーネントとコンポーネントの間でデータの若干のミスマッチがおきてくると思います。そこの変換の所に使うということだと思いますよ。それがメインの使い方で、 XSLT で WEB ページを作る等に注力しないほうがいいと思います。

-- ほっとしました。今後 XSLT が WEB プレゼンテーションの主流になるとちょっとつらいなと思っていましたので (笑)。 


RELAX に力を入れる理由

-- RELAX に力を入れるようになった経緯をお聞かせ願えますか? 

もともとスキーマで定義したものから、Java にマッピングして連携するような仕組みを考えていたんですよ。それで 1999 年の春夏ぐらいに、W3C の XML Schema等を調べていたんですが、理解できなかったんですね。その時に RELAX の話があり、触ってみると分かりやすいし、強力なのでちょっとやってみようかなと。

-- RELAX と TREX を統一する方針が決まり、名称は RELAX NG (リラクシング) となりましたね。これで、スキーマ言語は大きく 2 つに分かれることになりましたが、今後 RELAX NG はどうなっていくのでしょうか? 

RELAX NG が勝つと思いますよ。ボクの知っている人で、XML Schema を使っている人がいないんですよ。先日、某ベンチャーの方とお話をしましたが、最初 XML Schema を使っていたけど、結局使えなくて今は RELAX を使ってますとおっしゃってました。XML Schema は学習が難しすぎて、資金力のある大手ベンダでないと、開発に取り組めないのではないかと思います。

-- 今後、技術的な部分で興味を持たれている部分はありますか? 

コンポーネントの再利用を考えた時に一番多いパターンが、まずある部分のホットスポットを特定する、そしてインヘリタンスを使ってインタフェースを出し、サービスプロバイダをアドオンしていくという形ですよね。だけど、これだとできないことがいっぱいあるんじゃないかという気がしているんですよ。

本当に再利用をする時には、ジェネリックな機能がどうしても必要になってくると思うんです。でも、ジェネリックな機能というのは、まだおもちゃのようなものしかできていないので、これから伸びていくんじゃないかと思います。ボクは言語屋さんじゃないので、ジェネリックな機能を持った言語を作ろうとかは考えていないです。ボクの切り口は、スキーマ言語ですね。例えば、Relaxer でいうと Visitor といったデザインパターン等をアドオンしたプログラムを生成するんですけど、これは一種のジェネリックな機能かなと。そういう観点でジェネリックっていう技術と実際の応用の接点について、スキーマの世界でやってみたいなと思っています。

-- XML とかメタ言語の性質がそういったものを作り出せるということですね。 

そうですね。半構造データ、スキーマ、メタ等のキーワードを今後もやっていきたいと思っています。


浅海さんといえば XML と Java、そして・・・

インタビュー風景

-- 浅海さんといえば XML や Java と並ぶほどラーメンで有名ですが・・・(笑)

あれねー、そんなに食べているわけじゃないんですけど・・・。でもよく食べますね (笑)。

-- WEB ページでは横浜が中心ですが、そこからの広がり等、東京への進出等はありますか?

あれはね、休日の暇な時にふらっと行く所のエリアしか書いてないんですよ。わざわざ食べに行くとかないので。横浜のラーメン屋はネタが切れちゃって。もう、あんまりネタがないんですよ。次はどうやろうかな、とすごい悩んでるんですけど。

-- 身近な話題でも、何でも表現していくのが好きなんですか?

とにかくね、文章を書くのが好きなんですよ。何かあると書いてみたいなと思うんです。

-- 今度は技術書ではなくてそういう方面も・・・

いやあ、そこまでは無理なんで、趣味程度に。


コンピュータとの関わり

-- いつ頃から、コンピュータと関わっておられたのですか?

コンピュータに最初に触れたのは、中学生の頃に父親が買ってきた TK80 ですね。その後、高校生になってから PC-8001 を購入しました。当時は、もちろん BASIC なんだけど、機械語でやってました。

-- その頃は、どのような作品を作られていたんですか?

ボクは、アプリを作る才能がなくてね。アプリには、テクニックとは別に何を作るかっていうコンセプトが必要じゃないですか。だから、作品とかぜんぜん作ってないんですよ。

-- それで、目的がはっきりしている Relaxer 等のツールを作られるようになったということですね。

そうですね。ボクがプログラムを作る時に一番気をつけているのが、自分が使って便利なものを作ろうということです。そうすれば、自分が使って便利なものは同じシチュエーションの方は、便利だと思ってくれるだろうし。当時は、自作のツールで便利というのがなかったですね。当時のコンピュータの力だと、おもちゃみたいになってしまうので。


企業の枠から飛び出したきっかけ

インタビュー風景

-- 会社を辞めようと思い始めたのはいつ頃ですか?

30 代の頭から、やめるような気がしていたんですよ。DOM の本 ( XML / DOM programming ― For JAVA programmers 秀和システム) を書けたので、辞めてもやっていけるかなって。

-- 独立前にもかなりいろんな執筆活動等をされていて、非常に大変だったと思うのですがどのように時間を作っておられたのですか?

完全フレックスだったので、時間は作りやすかったですね。あと、朝 5 時半ぐらいにおきて会社へ行くまでにずっとやったりしてましたね。ボクは、もの作りという部分が趣味というか、好きなんですね。でも、会社では年を取ると自分でプログラムを組まないんですよ。あと会議も多いし。それで、会議の時に次どうしようかなと考えて、家に帰って作ってましたね (笑)。そんな感じですよ。

-- Smart シリーズや Relaxer 等のツールを精力的に作られていますが、浅海さんにとってオープンソースのプログラムを作成して公開するということの意味合いって何なのでしょうか?

情報処理の学会誌にも書いたんですが、これから仕事の仕組みが変わってくると思うんですよ。ボクなんかは、ずっと製品開発をしていたんだけど、これからはプログラムを作って売るという商売が成立しなくなると思うんですよ、すごく極端に言うとね。

プログラムで最もコストがかかる所というのが、メンテナンスの所だったりしますよね。作った当初は売れてよかったと言っているんだけど、ビジネスを 5 年 10 年まわすとなると、メンテナンスの部分がだんだん溜まってきて、うまくまわっていかなくなるというのが現実としてあると思うんです。しかも営業サイドからの圧力等で、ソフトが 1 万円とか 10 万円とかめちゃくちゃな値段で売る羽目になる。そのような仕組みの中では、今の開発体制は維持できなくなるんじゃないかと。プログラム自体は作って売るとかじゃなくて、公開しても何の問題もないし、逆に公開することによって使ってくれる人が増えれば、そこからプログラムに派生するナレッジとかができてくるわけですよ。そこでもたらされる価値の方が、すごく大きいと思いますよ。ボクの今の生活ぐらいはその上澄みで何とかできるんじゃないかな、と思ってますけど (笑)。


今後の活動

-- 今後、どのような活動をされるのでしょうか?

執筆と、機会があれば教育ですね。現在、オブジェクト指向や RUP を中心にして、かなり硬い方法論とか出来上がってるじゃないですか。だけどそこに、コンポーネントとか XML とか新しい素材が入ってきたので、もう一段進化しないといけないんじゃないかと思ってるんです。RUP だとできないこととかいっぱいあるので。そこで試した結果をお知らせしていくとか、そういったことをやっていきたい。例えば、XML を使ってオブジェト指向開発をする時、どの段階で XML をどう使っていくべきかを、書籍やセミナー等を通して、いろんな方と一緒にやっていきたいなと思っています。

-- 実開発には、参画されないのですか?

プロジェクトに入ると時間がなくなるので、それはちょっと難しいかな。斜め横ぐらいからちょっとお手伝いをしたい、そういうスタンスでできたらいいなと、ちょっとわがままなことを思っています (笑)。

-- 先ほど、もう一段進化しないといけないよいうお話がありましたが、それは方法論でもないんですよね?

インタビュー風景

ジェネリックなことって、ツールで自動生成するって話になってくると思うんですよ。例えば、Relaxer みたいなツールを使ってね。プログラミング言語にジェネリックな機能を入れると、いろんな制約が出てくるし、そんなに良くないなと思い始めています。昔、C++ のテンプレートを Java に入れるべきだと考えていたんですが、最近はあの手のやつは外部のツールですればいいと思っています。プログラム言語に別になくてもいいかな、という気がしているんですよ。外部のツール自体は、例えば C++ のテンプレートみたいにコレクションライブラリをやる範囲でしか動かないような性質のものではなくて、ある仕組みを使ってドメインナレッジといったものを形式知化していく。パラメータを与えると、何かが出てくるといったジェネリックな世界といったものが、これから大きな分野として伸びてくるんじゃないかと。そういうのが、オブジェクト指向開発にすごい影響を与えると思います。つまり、今はオブジェクトのタイプとかで取り出してくるんですが、それがジェネリックなツールに入れるための仕様として出てくるわけですよ。いままではオブジェクトのみを取り出す、それを主眼としていろんな開発プロセスが構築されていますが、ジェネリックなツールに入れるための仕様を取り出すためには、例えばドメインアナリシスからテストまでの流れの中で、どういう順番で何をするべきなのか、そういった新しい枠組みみたいなものが必要になってくるんじゃないかと思うんですよ。

-- MDA*6 みたいな考え方ですね。プログラムを作るのではなく、ジェネリックなモデルを作っていくことによって、それをインプットしていろんなものが出来上がるというような感じですね。

*6 MDA (Model Driven Architecture) :モデリング主導のシステム開発やライフサイクル管理を実現するアーキテクチャ

Jacobson が言っているように、モデルだけですべてができるという世界もあるかもしれないけど、そこまでは行かないと思っているんですよ。5 年ぐらいのスパンで現場で使えるかどうかについて考えると、3 割は自動生成できて、7 割は自分で作るというバランスになると思います。そこで、どういう形でどういうものを組み合わせていくかという所に興味がありますね。トータルな流れの道筋を教えてくれるものがあれば欲しいですよね。

-- それにはガイドラインとかツールとかが、セットになっていないといけないんですよね?

そうですね。あと重要なのが、現場の SE さんにわかるようなシンプルさがあることだと思います。今のオブジェクト指向ってのは、かなり難しくなっちゃってるんですよ。新しくやろうとする人が入ってこれないと思うんですよ。先日入門書 (やさしいUML 入門 - Java オブジェクト・モデリング ピアソン・エデュケーション) を出したんですが、あれぐらい簡単にしないとわからないだろうなと。

-- まだまだ敷居を低くしていかなければならないですよね。

最先端の人が、すごいことをやっているのは当然良いのですが、現場に近い SE さんってプログラムのテクニックとか開発方法論に割ける時間がすごく少ないんですよ。それよりも、業務知識のほうがよほど大事なので。だから、業務知識を学んだ SE さんに対して、最小限の手間で、新しいテクニックを使っていただけるような環境を作っていくというのが重要じゃないかと思います。

-- ちょっと意外でした。スペシャリストとして濃い部分に主眼を置いておられると思っていました。

やっぱりメーカーにいたので、現場がどうかというのが気になるんですよね。


後輩のエンジニアに対してメッセージ

-- 最後に、後輩のエンジニアに対してメッセージをお願いします。

迷ったら、楽しいと思うほうを選べ」。自分が楽しくないと、結果が出てこないと思うので。何もできない人が我慢しないのはいけないけど、迷うことができるぐらい経験を積んできたら変な我慢はしないほうがいいと思いますよ。


読者プレゼント

やさしい UML 入門 - Java オブジェクト・モデリング Relaxer - Java / XML によるWeb 開発

浅海さんとピアソン・エデュケーション様のご厚意により、本文中でも紹介されている「やさしい UML 入門 - Java オブジェクト・モデリング」と先日発売されたばかりの「 Relaxer - Java / XML による Web 開発」を ( なんと3冊ずつ !! ) 頂きました。こちらの図書を 6 名様にプレゼントしたいと思います。
ご希望の方は、お名前ご住所電話番号ご希望の本「オブジェクトの広場」の感想を明記の上、メールの Subject に「浅海さんの本プレゼント係」と書いて
oosquare-editor@ogis-ri.co.jp 宛に、お送りください。

期限: 2002 年 1 月 15 日まで。
当選者の発表は、2 月号にて掲載させていただきます。また、ご本人宛にメールにてお知らせいたします。



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