ObjectSquare [2006 年 11 月号]

[OOエンジニアの輪!]

line OOエンジニアの輪!

OO エンジニアの輪 〜 第 35 回 千葉 滋 さんの巻 〜

今回のゲストは、東京工業大学の千葉 滋 さんです。千葉さんは、アスペクト指向を専門にご研究されている研究者で、Java のバイトコード変換ライブラリ Javassist*1の作者でもあります。今回のインタビューでは、研究内容を中心に語っていただきながら、オブジェクト指向とアスペクト指向の関係性についてもお考えをお聞かせいただきました。

*1 Javassist:JBossSeasar ファウンデーションにも取り入れられている

千葉 滋 さん
尊敬する人

特になし。

好きな言葉

Life is too important to be taken seriously.  by Oscar Wilde

愛用のツール

特になし。
技術者は、自分が慣れ親しんだ愛用のツールをもつと、そこに閉じこもってしまう傾向があります。だから、モットーとして愛用のツールを決めていません。これが愛用のツールだと思ってしまったら、それはちょっと頭が固まってしまっている状態です。常に新し物好きでなくてはいけないと思っています。


今までのお仕事について

-- まず今までの経歴を簡単にご紹介いただけますか?

博士まで大学に残って、博士課程の途中にアメリカのゼロックスパークというゼロックスの研究所に居候しました。帰ってきてから、東大の助手をやって、筑波大へ行って、5年ほど前から東工大にきているという感じです。

-- 今までの研究内容は?

研究内容は、今と大体同じようなことですね。プログラミング言語とかオペレーティングシステムとかそういうインフラストラクチャーのような部分をずっとやっていました。


アスペクト指向とオブジェクト指向〜 個人の生産性を高める

-- アスペクト指向に興味を持たれたきっかけを教えていただけますか?

興味を持って始めたというよりは、研究を続けていたら、ここへたどり着いたという感じです。大学院生のころは、アスペクト指向の源流のひとつであるリフレクションの研究をしていました。そもそもアスペクト指向っていうのは、私がゼロックスにいたときのチームのボス (Gregor Kiczale*2) が始めたことなんです。最初はそのチームだけがやっていた研究だったので、仕事としてアスペクト専業で研究する気にはなれませんでした。でも、そのうちに AspectJ などが立ち上がって人気が出てきたんです。その一方で源流の方のリフレクションの研究はだんだん下火になってしまいました。はやりものに乗り遅れるなという感じで、それまでリフレクションの研究者だった人たちが皆、気がつくとどんどんアスペクト指向のほうに鞍替えしていったんです。まあ研究としては自然な展開だったのですが、それで遅ればせながら私も看板を付け替えて今に至るというところです。 ですからあまり立派な話ではありません。もちろんアスペクト指向には可能性もあるし、やっていて面白いテーマだとは思っていますよ。でもオブジェクト指向に興味を持ったきっかけの方が、話としては面白いかもしれないですね(笑)。

*2 Gregor Kiczale:アスペクト指向を提唱したグループの中心人物。

-- では、オブジェクト指向に興味をもったきっかけをお聞かせいただけますか?

学生の頃のアルバイト先で、GUI のクライアントを沢山作る仕事をしていた時に興味を持ちました。当時 Motif が出たばかりで、Motif を使って作るのが素直な方法だったんです。でも Motif って結構クセがあってレイアウトをうまくやるのが難しいんです。Motif は自動でレイアウトをしてくれるのですが、逆に指定された位置にレイアウトしようとすると、おそろしく難しいことになります。私は結構難しいレイアウトを行う仕事をしていたので、Motif を使うのはやめて、手動でレイアウトしやすいように工夫した Motif もどきを自分で作ったんです。これがオブジェクト指向のとてもよい勉強になりました。で、同じような仕事が何度も来るので、その Motif もどきは、徐々にまともなツールキットになり、その結果、最初は 6 ヶ月ぐらいで作っていたソフトが、最後は 3 日でできるようになったんです。それでもらえるお金は一緒。技術によって個人の生産性をあげることがすごく大事だと強く思いました。それでこの道に入ったというと、少し脚色が入ってしまいますが。

-- GUI ライブラリの本*3を書かれていますが、作られたライブラリは公開されているんですか?

随分昔のものなのでライブラリは公開していません。この本は、GUI の教科書として GUI ライブラリの作り方について書いた本です。普通の人は興味を持たないみたいで、まったく売れてません(笑)。業務では、GUI ライブラリは買ってきたり、オープンソースのものを使うから、ライブラリの作り方や中身を知っている必要はない、ということらしいです。でも中身を勉強すると、この手の色々なツールキットやフレームワークの API が複雑な理由がわかるんですよ。ですから、教育として特にオブジェクト指向を知る上では良いんじゃないかと思って書きました。でも、中々そういう意見に賛同してくれる方はいないみたいです。

-- アスペクト指向の本*4も執筆されていますが、対話形式で面白い書き方をされていますよね。

あまりに売れないと出版社の人に悪いですし、読んでもらうためにはどうしたらよいだろうと自分なりに努力したら、ああなりました。最初の堅い原稿はボツにされてしまいましたし(笑)。実はこれは「初めての人のための LISP*5」という名著のマネです。この本は、Lisp の初心者が読むとさっぱりわからないけれども、熟練の Lisp プログラマが読むと抱腹絶倒という本です。あんな感じの本になったらいいなという願望も込められています。それから職業柄、あんまりいい加減なことは書けないのですが、アスペクト指向は発展途上の技術ですよね。個人的な主観ですとか、人によって意見が違う所が沢山あります。対話編では、そういう部分を半分冗談で好き放題に書きました。

*3 GUI ライブラリの本:千葉 滋 著「GUI ライブラリの仕組み - ソフトウェア設計のケーススタディ

*4 アスペクト指向の本:千葉 滋 著「アスペクト指向入門 - Java・オブジェクト指向から AspectJ プログラミングへ

*5初めての人のための LISP」竹内 郁雄 著。

-- オブジェクト指向とアスペクト指向の関係はどう捉えていらっしゃいますか?

インタビュー風景 その1

アスペクト指向っていうのはオブジェクト指向を補完するものだと考えています。アスペクト指向は、まだ生まれて間もない技術なので、まだ不完全なところもあると思います。コンセプトが広く理解されてるとも思えないですし、研究者の中でも人によって考え方が大分違うと思います。でも技術的には、オブジェクト指向と並立し、その足りないところを補っていく技術だと思います。でも、アスペクト指向はオブジェクト指向の拡張だといってもそんなにおかしくはないですね。名前がどうなっていくかは、マーケティングの問題だと思います。

-- マーケティングの問題と言いますと?

今は普通、アスペクトはオブジェクト指向とは独立した概念という捉え方をします。でも将来の風向き次第では、オブジェクト指向に吸収されるかもしれないし、あるいはオブジェクト指向の方がアスペクト指向に吸収されるかもしれません。アスペクト指向もアスペクト指向と名前がついてからメジャーになりました。名前はマーケティングの産物ですね。

-- 今後研究分野で盛り上がってきそうな技術は?

それは私が聞きたいくらいです(笑)。個人的な考えですが、個人の生産性を高める方向に進んでいくと思いますし、進んでいってほしいと思います。アスペクト指向にしても、そういうところで注目されていると思います。

-- アスペクト指向でどのように生産性が高まるとお考えですか?

アスペクト指向を業務で使うときの良い例は、コーディング規約ですね。最初にこういうメソッドを呼ぶとか、初期化メソッドはこういう名前にしておくとか、何かするときはこのメソッドを呼んでから始めるとか、そういうコーディング規約がありますよね。コーディング規約を書くのに AspectJ を使うのは、よい使い方だと思います。チームで仕事をしている場合、一番最後にチームのリーダー格の人が、全員がコーディング規約を守っているのかをチェックしますが、結構大変な仕事です。それよりは、コーディング規約をリーダー格の人がアスペクトとして書き、チーム全員のコードに自動的に組み込む方が、少し楽になります。実際にそうしたら生産性が少し上がったという記事を読んだことがありますが、これはアスペクト指向で開発者(チームリーダー)の生産性をあげている好例だと思います。

-- すでに使われている例はありますか?

IBMのWASでトラブルが起こるとフィールドエンジニアの人が飛んでいって、アスペクト のコードを入れるらしいんです。そうするとログが取れる。ロギングアスペクトを使ってるだけらしいんですけど。それでログが取れたらそれを持って帰ります。それを会社の方で解析してバグフィックスを出したり、チューニングの指示を出すということになっているそうです。フィールドエンジニアは SE ではないので、彼らに直接コードを書き換えさせてログを取らせるのは危ないですよね。けれども、アスペクトのコードというのはコンパイル済みのバイナリですから、比較的安全に組み込んでログを取れます。そういう形で使っていると聞いています。


Javassist 〜論文が売り上げ

-- Javassist は、アスペクト指向の研究の過程で生まれたのでしょうか?

私は、もともと C++ で仕事をしていてOpenC++ というソフトを作っていたんですが、同じことを Java でもやれるようにしようというのが、Javassist を作った直接の動機です。アスペクト指向とは関係なくて、リフレクションの研究として論文にしようと思っていたんです。

インタビュー風景 その2

-- OpenC++ とは?

当時 Smalltalk のようにクラスオブジェクトを取ってきて動的にメソッドを付け加えられるようにする研究をしていました。それを C++ でやるためのシステムが OpenC++ だったんです。アカデミアの研究者がほとんどですけれど、産業界にもユーザがいまして、長いこと保守していました。

そのうちに、 C++ にもテンプレートが導入されて、対応するためには全部書き直さないといけなくなりました。でも、全部書き直したとして労力に見合うだけの研究成果が出せるかというと、出せないと思ったのです。いつも言っていることなんですけれど、私たちは職業研究者で、ちゃんと研究成果をださなければなりません。研究成果の見込めないソフト開発は、仕事ではなくて遊びです。遊びは大切ですが、遊んでばかりいるわけにはいきません。

研究室の学生さんには「うちでは論文が売り上げだから」と言っています。外部からいただいた研究費が投資で、それに見合った売り上げをあげないと、つぶれてしまいます。本当につぶれるわけではありませんが。「自分が使っている機材や使ったお金の分ぐらいは論文を書いてね」と学生さんにはお願いしています。

-- そこでJavassitを作ろうと思われたんですね?

その時は、世間では Java が流行っていて、学生さんが「次は Java やりましょう」と言ってきたんです。私も Java でプログラムを書こうと思って、Javassist を作りました。ですから私が最初に書いた Java のプログラムは Javassist です。

--名前の由来はなんだったんですか?

Java でプログラムを書くときのアシスタントという意味なんです。 "Java programming assistant" です。その "Java assistant" をつなげたものが Javassist です。Java なんとか、という名前をつけると Sun から商標を侵害していると文句をつけられるので、つなげて新しい造語にしてみたらどう言われるだろうと思ってつけました。今のところ何も言われていませんが、将来はどうでしょうね。

進歩するために海外に打って出たい

-- Javassist は JBoss のサブプロジェクトになっていますが、その経緯を教えていただけますか?

研究者の世界では昔からオープンソースを使う習慣があって、良いソフトウェアができると、他の人もそれを使って研究する文化があります。ですから、Javassist のドキュメントも整理して公開しておいたんです。それをアメリカの大学の学生が、JBoss に紹介したと聞いています。 ある時、「JBoss に入れてあげるよ」というオファーが来たんです。実は私は当時 JBoss なんて知らなかったんですけど、学生に聞いたら「それはビッグネームですよ」って言われたので、面白そうだし入ってみることにしたんです。

インタビュー風景 その3

-- JBoss に入る前も研究者の間では色々使われていたんですね?

研究者の中ではそれなりに知られていたはずです。でも、一般の人が知るようになったのは、 JBoss のお陰だと思います。 Enhydra の ASM*6Geronimo の BCEL*7と JBoss の Javassist の3大バイトコードライブラリが、巨大オープンソースプロジェクトに1個ずつ入っていて、とてもキーになるコンポーネントになっていますね。

-- ASM や BCEL とどんな違いがあるのかを簡単に紹介していただけますか?

ASM や BCEL は基本的に Java のバイトコードを知っている人が使うライブラリです。 一方、Javassist は中にコンパイラを持っていて、Java プログラムを文字列で渡すと、勝手にバイトコードに直して挿入してくれたりします。 ですからバイトコードを知らなくても、バイトコード変換できるというのが、わかりやすい説明かもしれません。

ASM と BCEL の違いは、XML で例えると、 DOM パーサSAX パーサの違いのようなものです。 DOM に対応するのが BCEL です。小さいファイルに対しては良いんですが、大きいファイルになると遅くなります。 SAX に対応するのは ASM です。ワンパスの変換は速いのですが、マルチパスになると非常に面倒になります。 Javassist は DOM と SAX の真ん中ぐらいの設計になっています。最初大雑把にパースして、必要に応じて細部をパースするという形をとっています。ですから、速さと扱いやすさを兼ね備えた構造になっているつもりです。

*6 ASM : ObjectWeb の J2EE サーバーである Enhydra に採用されているバイトコード変換ライブラリ。

*7 BCEL : Apache の J2EE サーバーである Geronimo に採用されているバイトコード変換ライブラリ。

-- ドキュメントは英語が多いのですが、研究成果はやはり英語でまとめるのですか?

日本語でやるとどうしても日本のコミュニティの中で閉じてしまいます。国内だけだと研究者の人口も開発者の人口も少ないので、より多くの機会を求めて海外の人たちを相手にするようにしています。Javassist も日本で名前を知っていただけるようになったのは極々最近です。アメリカで先に知られて逆輸入されてきたのだと思っています。Ruby もそうだったと聞いてますけど。


比嘉さんとの関係

-- Javassist は Seasar2 にも取り入れられてますが、紹介者である比嘉さん*8とのご関係を教えていただけますか?

よくお話できるようになったのは、丸山先生*9のセミナーに呼ばれた時にご一緒したのが縁ですね。丸山先生が JBoss のコミッターが日本にいるらしいってことを知って、私に JBoss の話をしてくれませんか?と依頼されてきたんです。ところが正直言って、私は JBoss でプログラムを書いたことはサンプルプログラムぐらいしかなかったんです。それで、私は JBoss のことは知らないのですが、アスペクトの話ならできます、と申し上げてセミナーでお話させていただきました。

-- その頃 Seasarでは、まだ Javassist が使われてなかったんですか?

ちょうど Javassist を使おうとしていた頃だったと思います。会ってから入ったわけではないですね。その後、 IPA の未踏ソフトウェア創造事業で PM をやることになって、私が Seasar プロジェクトの Mayaa をサポートしたので、一緒にお仕事をする機会が増えてきました。

インタビュー風景 その4

-- 未踏ソフトウェア創造事業に関わるようになったきっかけはなんだったんですか?

ある日突然「あなたを次期 PM 候補に選ばせていただきました」というメールが来たんです。知り合いの方に相談したんですが「それを断る人はいない」と言われたので、やることになりました。

-- 未踏ソフトウェア創造事業には Seasar プロジェクトのものが多いですよね?

私は何も手を下していないのですが、 最初は Seasar と無関係だったプロジェクトが、未踏に採択された後にスカウトされて、どんどん Seasar のサブプロジェクトになってゆくんです。

-- Tuigwaa もそういうプロダクトですか?

Tuigwaa もそうです。採択した時、失敗するとしたらこのプロジェクトだろうと、周囲はささやいていたそうです。ところが蓋を開けたら大成功で、 Seasar にスカウトされて今では Seasar の看板のひとつになっています。PM としては、まさに良いプロジェクトを発掘できたことになるので、とてもうれしく思っています。

*8 比嘉 康雄 氏。OOエンジニアの輪! 〜 第34回 比嘉 康雄さんの巻 〜 に登場いただいている

*9 丸山 不二夫 氏。OOエンジニアの輪! 〜 第32回 丸山 不二夫さんの巻 〜 に登場いただいている。


趣味が仕事

-- 休日の過ごし方を教えていただけますか?

家族と過ごすことがほとんどです。昨日は子供を連れてポケモンの映画を見に行きました。元々趣味が仕事になってしまったタイプなので、他に話すようなことは何もないですね。

-- 家で仕事されたりとかもあるんですか?

家で仕事していることは多いと思います。子供が小さく早く寝てしまうので、その後夜遅くまでせっせと仕事をします。

-- 出張で観光地に行かれたりとかはされませんか?

私はワーカーホリックなのか、出張に行っても観光地には行かないですね。お好きな方は仕事の合間にあちこち行かれるみたいですけど、私は何もしないですね。家族にお土産を買うのに忙しいので(笑)。

この間、学生を連れてドイツに行ったときは、3〜4時間空港で待ち時間があったので、学生と一緒にフランクフルト三越に行きました。ヨーロッパの人ってあんまりお土産買わないと思うんですけど、日本人はものすごくお土産買いますよね。だから、日系のデパートに行った方が効率よく買えるんです。というわけで、世界中の日系デパートの場所はおさえてあります... というのは嘘ですが(笑)。電車で市内まで1時間位で、時間が押してるのでそこから早足で三越まで歩いて行きました。着くなり「30分経ったら出発しますので、時間厳守でお買い物をお楽しみください」とツアーコンダクターのように宣言して、買い物しました。帰りは、ほとんど走るように駅まで行ったので、「歩いていけるって言うから行ったのに、あれは走ってました!」と後で学生から文句言われました。


トレンドに乗り遅れてはいけない

-- 愛用のツールはないとのことなのですが、エディターは何を使われているんですか?

自分で作ったエディターを使っています。学生ころから Emacs クローンを作ってまして、今でもその流れで、Java で書いた簡単な Emacs クローンを使っています。昔は Mac 版の native のエディタも作っていました。

インタビュー風景 その5

-- なんていうソフトなんですか?

Nitemacs っていうソフトです。フリーソフトで出していたんですが、そこそこシェアを持っていました。その後、 WindowsNT が出てから Windows で仕事ができるようになって、私は Mac を使うのをやめてしまったのです。それで Nitemacs の開発も終わってしまいました。

-- 今はMacを使われてますね。

所属する学科の学生演習用 PC を Mac にしましょうって言ったんですよ。それで私も去年の1月ごろ Mac を買いました。それが結構大変で、色々なソフトが動かなかったり仕事に支障が出てしまったんです。もう Windows に戻ろうと思いました。

-- それでもMacを使っているんですか?

その頃、ヨーロッパに出張に行ったんですが、会議の席で、私だけが Windows マシンを持っていたんですよ。隣に座っていたアメリカ人に「何で Mac 使ってるんだ?」と聞いたら「That's a trend!」って言われました。それで、トレンドなら乗らなくちゃいけないなって。そこで帰りの飛行機の中で、まずエディターを作ったんですよ。 Java で書いたのですぐできました。これが今使っているエディターです。

-- ツールは自分で作られているんですか?

作っちゃったものは使ってます(笑)。仕事以外のプログラムを書きたくなるときがあって、ときどき遊びで色々なツールを作るんです。そういう意味ではこれが趣味なのかもしれません。


若手エンジニアへのアドバイス

-- 最後に、若手エンジニア・学生へのアドバイスをお願いします。

日本では謙譲の美徳というものがありますが、もっと図々しく生きてもよいと思います。必要以上に海外がすごいと思っている人がいますが、もっと対等に考えたらよいのです。欧米の人がすごくできる訳ではなくて、自己アピールの基準が違うだけです。 また、理想(目標)を高く持ってほしいと思っています。実現するのは大変ですが、最初から日本の中に閉じてしまわないで、大志を抱いてほしいと思います。

-- 千葉さんは最初から海外へのコンプレックスは、なかったんですか?

私がいた大学の学科が、極端に海外かぶれだったので日本語で論文を書いても全く価値を認めない雰囲気がありました。最初から仕事の面では海外の人を相手にしないと意味がないと教えられたんです。外資系の会社に入ると最初から海外との壁を感じないかと思うのですが、それと同じような感じでしょうか。

-- 本日はお話ありがとうございました。

こちらこそありがとうございました。


千葉先生執筆の書籍 〜 読者プレゼント 〜

今回、千葉先生著の 『アスペクト指向入門 -Java・オブジェクト指向から AspectJ プログラミングへ 』 (写真 左) と 『GUI ライブラリの仕組み - ソフトウェア設計のケーススタディ 』 (写真 右) を頂きました。 この書籍を抽選でそれぞれ 1名 の方にプレゼントいたします。 ご希望の方は、以下の内容を明記の上、メールの Subject に「読者プレゼント係」と書いて OOSQUARE-EDITOR@ogis-ri.co.jp 宛にお送りください。

千葉先生執筆の書籍

  1. ご希望の書籍のタイトル
  2. お名前
  3. 郵便番号
  4. ご住所
  5. 電話番号
  6. 「オブジェクトの広場」で取り上げてほしい記事
  7. 千葉先生へのメッセージ

締め切りは、2006 年 11 月 30 日まで。当選者の発表はご本人宛にメールにてお知らせいたします。

 ご応募で頂いた個人情報につきましては、本件「千葉先生の書籍」プレゼントのご連絡のみに使用いたします。
 お客様の個人情報は、当社の個人情報保護方針に基づき、適切にお取り扱いいたします。また、ご本人の承諾なしに、第三者機関へ提供することはありません。

プレゼントの応募は締め切らせていただきました。
たくさんのご応募ありがとうございました。
抽選の結果、当選された方には 12/15 までに案内メールをお送りいたします。
(2006/12/04)


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