[OOエンジニアの輪!]
![]() |
|
-- まず、現在のお仕事について簡単に説明をお伺いしたいんですが。
部署としては、キヤノンという会社の本社部門で、いろいろな事業部の製品に共通に必要な基盤技術の開発を行っているところになります。中でも、私の所属しているところは、インターネット技術をずっとやってきたところです。キヤノンの中で、Java を専門にやり始めたのもわれわれのグループです。
私も、5 年ぐらい前から Java を専門にやってきたんですけれども、今現在は、Java というよりは XML が専門ということになりますね。一言で言えば、キヤノンの中で XML を推進してゆくのが私の仕事だということになります。
-- 藤沢さんについて、Web 等で拝見させていただいたんですけど、最近は SVG に関してかなり注力されているようですが、キヤノンさんとして、SVG に対して積極的に取り組まれているという位置付けなんですか。
そうですね。キヤノンとして XML をやるということは、電子商取引をやるわけではないし、サーバ側のアプリケーションを作ることでもない。我々はイメージングのメーカーですから、XML の中でもグラフィックスの言語とか仕様の方が大事になってきます。
携帯電話とか BS デジタル放送とかで、デバイスが実際に直接制御するようなフォーマットとして XHTML が採用されつつありますが、同じようなことが、事務機器とかプリンタとか、場合によっては将来のデジタル家電とかでも起こってくると思います。そういう意味では、イメージング機器メーカーであるキヤノンは SVG 技術に非常に期待しています。
-- 藤沢さんとしては W3C の方の活動もメンバという位置づけでされていますよね。
W3C の場合は個人ではなく企業がメンバーということになります。それで、企業として、企業の代表として仕様作りをするワーキンググループというところに所属するわけなんです。例えば、HTML や SVG でのワーキンググループでは、各社から 1 人ずつとか 2 人ずつとかが参加して、それぞれたいだい 15 人や 20 人ぐらいの規模でメンバが構成されることになります。
ワーキンググループ活動は、一般的な標準化の委員会よりも負担としてはずっと大きいです。W3C の場合、コミットメントとして 0.3という数字が目安として挙がっているんです。つまり、一週間のうちの 2 日間はその仕事に従事するということです。
-- ほー、そんな決まりがあるんですか!!
そうですね。時間的にもコミットしなければならないし、もちろん会議に参加する費用も会社が負担するということになっています。ですから、ただ情報収集をするために、委員として参加するというスタンスは全然とれないですね。会社としても、一人を週の内の 2 日間従事させるという目的意識を持っています。
-- いわゆるオープンソースコミュニティのベストエフォートみたいなわけにはいかないんですね。
W3C というのは、両方の側面を持っていると思いますね。IETF などからのインターネット標準の精神と、業界標準といえる、業界のメーカーが集まってその中で本当に実用化できる技術を短期間で作っていきたいという、2 つの精神が合わさっている気がしますね。
-- SVG 自体は、W3C の中で生まれたものですか。それとも別のところで開発され、これは良いということで W3C で標準化されたのでしょうか。オリジナルはどこからなのでしょうか。
アイデアそのものはずっと以前からありました。というのは、もともと Web が CERN で生まれたときに、HTML でテキストを記述したい、そして、これで学術論文を情報交換できるようになるとすばらしいという流れがありました。ところが、学術論文には、テキストだけでなく、さらに図や数式が入るので、その当時から、ハイパーテキストには、何らかのグラフィックスを記述する言語と、何らかの数式を記述する言語が、当然必要だという要求がありました。ところが、そういう構想はあったんだけれども、HTML が爆発的に普及してしまったので、結局は数式とかグラフィックスの方が実用化されたのはその後ずっと経ってからのことになりますね。 XML ができて、それが実用化されて初めて SVG という形ができたんです。そういう意味では、Web が生まれた当初からそういうものが欲しいという要求がずっとあったし、XML が誕生したときにも、その XML を使っていよいよグラフィックスや数式を実現できるねという話があったんです。
それが非常に大雑把な経緯ですけど、直接誕生のきっかけになったのは、98 年の春にあった W3C への 3 つのサブミッションになります。それらが SVG の原型になっているような仕様です。まず一つは、Adobe 社から出されたポストスクリプトを XML ベースにしたような PGML という仕様です。そして、それからひと月も経たない内に、Microsoft 社と Autodesk 社とかが別の仕様 VML を出してきました。そして、もう一つ、Web Schematics という同じようなことが出来る仕様が出されて、3 つ揃ったんですね。それが追い風になって、W3C の中で、いよいよそういう仕様を作るべき時期がきたし、ニーズがあるし、それの仕様に携わるべき人達も集まってきているので、今こそやるときだということでスタートすることになりました。
-- 基本的に、W3C というのは国内ではないですよね。海外での活動というのが主になるのですか。
典型的な W3C のワーキンググループだと年に 6 回 Face to Face のミーティングがあります。これは、打ち合わせというよりは、全体ミーティングという位置づけで、メンバのそれぞれの企業が持ちまわりでホスティングをして開く会議です。その会議が一番大きなイベントで、それを補足するものとして、電話会議とメールでのディスカッションがあります。SVG の場合は、電話会議が週 2 回、火曜日と木曜日にあります。火曜日が 1 時間半、木曜日が 1 時間、計週 2 時間半、電話会議をやるという形です。
-- ということは、業務としてやらないと全然できないものなんですね。
電話会議は、すごく大きな負担ですね。順番としては、まずメールベースで簡単なディスカッションをして、アイデアを出し合って、週 2 回の電話会議で決定をする。年 6 回の全体会議では、Face to Face でまとまった仕事をしますね。言ってみれば合宿みたいなもんですよね。数日間をかけて、例えば、勧告仕様を作るという目的を達成するようなことをしますね。
-- Mozilla SVG プロジェクトは会社として取り組まれているんですか。
それは、微妙ですね。W3C の活動をするということは、会社として標準技術を実用化したい、世間に広めたいということが当然含まれているんですけれど、W3C で単に仕様を作るのではなく、実装を世の中に広めていくというのも、ある意味ではミッションの中に含まれていると思うんですよ。そういう意味では、一応業務として 例えば SVG について何か講演の依頼があった時に、それを受けるというのは標準化活動の一部としてやるんです。でも、Mozilla みたいなオープンソースを自分が毎日開発に取り組むというのは、おそらく業務としては認められないんでしょうけど。
-- Java との関わりについて伺いたいのですが、そもそもオブジェクト指向はどこで興味を持たれたのですか。お仕事関係が先なんですか。
ずっとさかのぼってしまうと、学生の頃に Mac を使って趣味でオブジェクト指向プログラミングをはじめたのがきっかけでした。最初に使ったオブジェクト指向言語って、Object Pascal なんです(笑)。Object Pascal は Macintosh の前身である Lisa で使われていた Classcal がベースになって生まれたもので、当時ようやく Mac だけで開発できる環境が整ってきたんですね。しかも、オブジェクト指向だっていうことで夢中になってやったのがきっかけです。
それから次に Smalltalk が Mac で使えるようになりました。しかも、ほとんど無料で配布されているような形で、当時、8 MHz の MPC68000 を搭載した Macintosh Plus みたいな機種で、フロッピーディスク 2 枚で Smalltalk が動くんですね。「もう、なんてすばらしい幸せな世界なんだ!!」と思って、一生懸命やっていたんです。その辺が一番最初ですね。
-- オブジェクト指向との関わりというのも、どちらかというと Object Pascal という言語の方から使い始めたということですね。
そうですね。当時はまだオブジェクト指向が、一般的というよりは実験的なニュアンスであったと思うんですが、Object Pascal や Smalltalk を通じて先端的な技術に触れていました。
-- Java House で Mac 系の質問といえば、まず藤沢さんというイメージがあるんですけれど、今 Mac における Java というのは、どういう位置付けになるんですか。
それは Apple の人に聞いていただきたいところですね(笑)。
いろんな答えができると思うんですよね。Mac OS X というのが、今 UNIX の FreeBSD ベースになっているんですけども、それまでの Mac OS と比べれば、Java の環境がまったく違うんですよ。今までは、Mac で Java というと、Windows で Java を使うのに比べると、非常に大きな制約があったり、独特の世界があったりしたんですね。例えば、コマンドラインすら使えないという世界なんですよ。ところが、Mac OS X になると、基本的には UNIX の環境ですから、ごく普通に Sun の提供するツールもコマンドラインからそのまま使えるので、まったく違和感がなくなりましたね。僕が Apple の代わりに言うことはないんですけども、Mac OS X の中では、Java がインテグレ−トされているというのがすごく大きな特徴で、Java の開発ツールも含めて、プリインストールの状態ですべてのユーザに供給されますし、Mac OS X のフレームワークも、ほとんどすべて Java から使えるようになっています。
-- デベロッパーからすると、Mac 上では Java は趣味の言語ではなく、かなり使える環境になってきているんですね。
なっていますね。そういう意味では、遅れてきたデスクトップの最高の Java 環境かなと思います。でも本当は、遅れてきちゃいけないんですよね。つまり、デスクトップの Java って結局、花開かなかったじゃないですか。
-- 言い切っちゃうのは、かわいそうな気はしますけどね(笑)。
そうですかね。
Mac OS X は最初から Java Web Start が入っているんですけれど、その仕組みを使って Java のアプリケーションを使える。Look and Feel も、Mac OS X の Aqua を使っている。パフォーマンスも、実は場合によってはネイティブなアプリケーションよりも早い場合もある。例えば、描画なんかも、OpenGL のハードウェアアクセラレーションに対応しているんで、Swing で作ったアプリケーションでも描画に関しては、すごく効率的にできるんですね。Mac OS X の Swing って実は Pure Java じゃないんですよ。
-- えっ、そうなんですか。
描画は、そのようにハードウェアでアクセラレートされているし、UI のコンポーネントはネイティブのコンポーネントが使われているんですよ。
-- じゃ、Windows での環境の JDK と基本的には違うんですね。
違いますね。だから、遅れてきたデスクトップの Java の最高の環境と言っているのは、デスクトップアプリケーションを特別な Java アプリケーションと意識させないで、本当にネイティブなアプリケーションと区別なく使えて、しかもパフォーマンスがでて、その他全く遜色なくて、API もネイティブなアプリケーションと同じものが使えるという、そういうものが提供されていることを言っています。だけど、それはやっぱり遅れてきたもので、今それが求められているかというと、ちょっと疑問かもしれませんね。
-- キヤノン販売さんが iMac とか、その前 NeXTSTEP とか扱っていたと思いますが、キヤノンさんとして Mac とのつながりは強いものなんですか。
実は NeXTSTEP をやっていたのは、私達のグループなんですよ。
学生時代オブジェクト指向をやって、中途でキヤノンに入ってきたのは、まさにその NeXTSTEP をキヤノンがやるということだったんです。当時 1990 年頃にキヤノンが NeXT と契約をして、いよいよ本格的に日本語化もするし、国内でも開発をするしということで、当時キヤノンにオブジェクト指向のエンジニアとか、ソフトウェアのエンジニアがいなかったので、かなり大規模な中途採用をしたんですよ。で、当時その NeXTSTEP をやるために作れられたプロジェクトがあったんですが、その中で開発のメンバというのが 20 数名いたんですけれど、9 割以上が中途採用でしたね。
-- そもそも全体量が少なかったですもんね。
そうですね。Smalltalk をやっていた人達とか、X Window System を作っていた人達とか、そういう中に僕も入っていました。そして、キヤノンの中で、NeXTSTEP の技術をやっていたというのがわれわれのグループだったんですね。
-- キヤノンさんとしては、NeXT 上での応用アプリケーションを作るという位置づけなのですか。
NeXTSTEP の日本語版オペレーティングシステム自体を開発していました。NeXT のコンピュータを、キヤノンの標準のコンピュータにしたいという考えがありましてね。つまり、キヤノンとして、DOS/V 等の PC とかがない時代に、NEC の 98 とかに対抗するようなものを作るんではなくて、もうちょっと筋の良いもので、自分たちが頼りにできるようなコンピュータのプラットフォームを見つけて、それをオフィスの中核において、それに連携するようなプリンタであるとか、複写機であるとか、あるいはアプリケーションであるとか、そういうソリューションを提供していこうという構想があったんですね。
-- それは特にエンジニアリングワークステーションという範囲ではないわけですね。普通のビジネスアプリケーションのプラットフォームとしても対象としていたわけですね。
そうですね。まったくその通りです。キヤノンとしては、オフィスに置くコンピュータのプラットフォームとして注目していたんです。ですから、まず NeXT を日本ではやらせて、有力なプラットフォームにしなくてはいけないということで、当時、アメリカの NeXT と行ったり来たりしながら、日本語化する、国際化対応するところもほとんどキヤノンが自力で開発していたんです。
-- ビジネスアプリケーションは、NeXT 上では何で作ることになっていたんですか。
Objective-C という言語です。NeXTSTEP っていうのがオブジェクト指向フレームワークの環境で、その上で Objective-C という言語を使ってプログラミングをするという感じです。
-- 生粋のオブジェクト指向でこられたわけですね
そうですね。多分当時だと、商用のシステムでオブジェクト指向をあれだけ高いレベルで使っていたシステムというのはなかったですね。今となってはそうでもないですが、当時あのような環境で大規模なプログラムを作っていたグループっていうと、意外に珍しい存在なんじゃないでしょうか。
-- NeXTSTEP は金融さんとかで使われていましたよね。いわゆるデリバティブ系とか、複雑な金融派生商品を計算するようなところでは、オブジェクト指向というのは結構注目されていて、ある金融トップの IT ベンダーさん等では NeXTSTEP のアプリケーションがごろごろしていましたよね。
NeXTSTEP は、場合によっては一番古いフレームワークになるかもしれないですね。
-- フレームワークという意味ではそうですね。
今でも、やっぱりある意味では一番優れたフレームワークだと思います。NeXT にものすごい優秀なエンジニアがいるんですよ。スティーブ・ジョブズの下で、平均的なエンジニアというよりは癖のあるけれども、ものすごく仕事のできる人とか何人かいまして。そういう人達に触れて作られた環境でフレームワークの真髄が味わえたというのかな。
-- いわゆる、今でいう Java の SDK とかのレベルではなくて、フレームワークがもともとベースとしてあるようなイメージなんですか。
いや、やっぱりアプリケーションのフレームワークなので、例えば Java の Swing と同じレベルのものではあるんです。でも、Java の Swing と比べると、大分 Java も進化してきたとは思うんですけれども、最初に NeXTSTEP の世界を触ってしまうと、やっぱり雲泥の差がありますね。
NeXTSTEP だと実際ソースコードなしでシステムが作れるんですよ。つまり、ドキュメンテーションとヘッダファイルというインターフェースの約束ごとだけで、きちんと作成できる。こんなことが実現できないと思っていても、それはフレームワークをよく理解してなかったという場合がほとんどで、非常にそういう意味ではよく考えられていました。ところが、Java に初めて触れて、Java のフレームワークを使ったとき、どうしてもソースコードがないと本当のところの動作が分からないというか、API の関係が分からないというところがものすごく沢山ありまして。確かに Java はソースコードをオープンにしているから、それで良いんだといえばそれでいいのかもしれないけれど、完成されたフレームワークとしては、やっぱりまだまだだなと思います。
-- 本来ブラックボックスで良い部分がブラックボックスのままであるというのが、本当の良いフレークワークなんでしょうけど、中身を見ないと駄目というのは、まだまだということなんですね。
まだ Swing でもそのレベルに達していないという印象を持っていますね。逆に、Swing ができる前に AWT の後に IFC というフレームワークが出てきたんですよ。これは、Netscape のインターネットファウンデーションクラスといって、当時の Netscape のブラウザが Java をサポートしたときに、そのフレームワークで今の Swing でやっているようなことを実現しようとしていたものができたんですね。それを作ったのが、元 NeXT のジェーソン・アダムスという人なんですけれど、それが NeXTSTEP の非常にいいところを取り入れていて、まさに「この環境を Java の上で実現するとこんな風になるね」というのをそのまま実現したようなものなんです。実は、それが出たときに、Java でも同じようなレベルのことができるようになりそうだっていう感覚はあったんです。このフレームワークを使って Web 上で Applet とか、アプリケーションが作れるんだなと思ったんです。だけど、それをベースに Sun が主導になって、JFC/Swing というものを作ろうという話になったんですよ。Microsoft 社も対抗技術みたいな AFC という技術を出してきましたよね。それで、どっちかを採用するというんじゃなくて、それを両方土台にした上で、Sun が中心になって作りましょうと。
-- Swing のベースには、一応なっていたんですね。
なっていましたね。だけど出来上がったものをみると、結局、元のシンプルな IFC に決して勝ってないなと思います。
-- 一回見てみたいね。
今でもダウンロードできますよ。
-- NeXT 自体はハードウェアはやめたんですけど、OS 自体はキヤノンさんがしばらくやっていましたよね。
当時、NeXT のハードウェア部門をキヤノンが引き継いで、Firepower 社という PowerPC マシンの会社を設立するという形でやりましたね。
-- 今キヤノンさんとしては、NeXTSTEP を売っているということはないんですか。
もうないですね。
-- 今 NeXT はどういう形で残っているんですか。もうないんですか。
ビジネスとしては残っていないですね。でも、当時 NeXTSTEP をやっていたメンバが、ほとんど Java に注目して、次にこういう技術が必要になってくるということで、キヤノンの中で Java をやり始めたグループにつながっています。
-- では、藤沢さんは、脈々と流れているオブジェクト指向的な流れのその中心を歩いてこられたんですね。
中心というか、うちみたいなメーカーでは、端っこかもしれないですけど(笑)。
-- 弊社では、UML をキーワードにその辺の普及活動をしているのですが、我々のこういう活動もある意味オブジェクト指向の啓蒙活動の一つなんですが、UML とか方法論等の開発スタイル全般の標準化といったものは、キヤノンさん全体では行われているのですか。
一応ありますね。でも、ありますけれども、私は関わってないし、正直言うとそちらの方は私はあんまり興味がないですね。大規模なプロジェクトのエンジニアリングの問題というよりは、もうちょっと先端的なところで新しいことをやりたいですね。
-- キヤノンさんは、ビジネスアプリケーションの SI とは位置づけが違いますもんね。
今はもう、機器のファームウェアの開発もオブジェクト指向になってきていて、昔みたいにアセンブラで書いているということはないですね。そういう意味では、UML も大いに活用して、ファームウェアのエンジニアの方がむしろそういうのをやっていますね。
-- 携帯の Java とかありますよね。そちらの方とかは取り組まれていますか。
大好きですよ。Java は、キヤノンの中でやり始めると同時に、プライベートでもこれは面白いということで夢中になった技術です。安藤さんと同じですけどね。
入り方としては、NeXTSTEP、次に Java という流れですね。NeXTSTEP がなくなって、Java がそういうものを担っていくのかなと思います。最初はやっぱり、アプリケーションフレームワークがどうなってんだろう、Swing っていうのはどうやってできていくのだろう、というようなところを追っかけているのが最初は好きだったんですけれども。途中からそっちの方はあんまり実りがないというか、まだまだだなと思いだしまして。その頃から業務で Java をやるようになったんですが、業務の Java の方は、明らかにイメージングやグラフィックスの方に重きを置いているので、そういう面では、Java2D とかグラフィックスの高速描画化とか、そういうところに業務的には関心が強いと思います。
でも、プライベートの方はそっちではなくて、小さい機器で Java が動く、これがすごい面白いことだと思っています。何で面白いかっていわれると説明し難いんだけど、結局オブジェクト指向でやりたいことって、誰もがプログラミングすることだったと思うんですね。
当時、Hyper Card というのがあって、これは非常に面白いオブジェクト指向のシステムだと思うんですけれど、今では当たり前かもしれないけど、ボタンとか機能のツールがまさにパレットのように並んでいて、カットアンドペーストで貼り付けて、そこにスクリプトが書けるんですね。それが全部一体となって目に見える形でっていうのが、普通の人がちょっとしたアプリケーションを作るのに分かりやすくて、本当に面白いシステムでしたね。そういうような部分が携帯の Java でもあったんですよ。
-- 前回の安藤さんは、プライベートな趣味と仕事が紙一重なところがあって、完全に仕事と関係ない趣味を聞かれても思いつかないというお話を伺ったんですけれども、藤沢さんはプライベートでこれが趣味だというものはありますか。
うーん、そうですね。オープンソースとかの活動はしていますけど、これはプライベートではないかもしれませんね。まったくプライベートというと、僕が学生時代からずっとやっている演劇になりますかね。今でも続いていると言って良いのか分からない状態ですけども。当時、学生時代一緒にやっていたメンバと、2 年に 1 回とか、3 年に 1 回とか、最近は 5 年に 1 回ぐらいに減ってきているかもしれないですけれど、一緒に公演したりしていますね。
-- 演じる方ですか。
いや、一通りです。今はもう舞台に立つということはないんですけども。今はどっちかっていうと、スタッフとして若い人と一緒にやっています。
-- 文系も理系も両方こなされるんですね。すごいですね。
-- 最後にこれからの若手エンジニアに一言お願いします。
コンピュータの技術系の仕事は若い人の方がし易くなっていると思うんですね。つまり、Java だ、XML だといっても、10 年前、20 年前にはなかったんで、キャリアを持っている人には不利ですよね。そういう意味では、若い人は同じ土台で仕事ができるので、若い人の方が吸収が速いし有利ですよね。これから若い人にもどんどん大きな仕事ができるような環境にますますなっていくだろうし、逆に若い人にそういう大きな仕事をやってもらいたい。
ただその時に、若い人に割りとありがちなんですが、自分が大きい仕事をできるようになってきたときに、自分で手を動かしてプログラミングするっていうことを早い段階ですっとばすんですね。そして、設計に携わるんですが、設計も中途半端に終えてしまって、人を使うことをどんどん覚えいく。人を使えることで自分はいっぱしのエンジニアになったという風に、プロジェクトマネジメントができるような立場になったという風に、どんどん思ってしまう傾向の人がいるんですね。それは非常に良くないなと思います。大きな仕事を自分中心でやっていくというのは、若い人に是非ともやってもらいたいのだけれども、その一方でやっぱり、自分で手を動かして苦労をして、細部にわたるようなプログラミングをしてもらいたいです。それが、将来すごく大事になっていくという、そこのところを是非とも忘れないで、意識して心がけてやってもらいたいです。
-- 同感です。そのような過程を踏まなくても、そういう職種になっちゃうんですよね。
それをやっているか、やっていないかで、上位のレベルの判断をするときに、実は嘘があったとしても見抜けない。これは、実証された技術じゃないっていうのが見抜けない。本当にそんなことができるのかを自分で身を持って体験している人は、これは言っているだけで原理的にはできるかもしれないけど、本当はそんなもんじゃないという感覚がつきますね。この経験は、結構上位レベルの判断で必要で、例えば、他社と大きな技術提携をするときに、本当にその技術が必要になるかという判断まで引きずることになりますね。
©2002 OGIS-RI Co., Ltd. |
|