[OOエンジニアの輪!]
今回のゲストは、NTT アドバンステクノロジ株式会社の佐藤隆さんです。佐藤さんは、映像をつかんで動かすという、新しいタイプのドラッグモーションを実現した DRAGRI の開発者です。DRAGRI 開発の経緯から、「目的より手段を作ることに燃える」というフレームワーク作りのお話、Prolog についてまで、幅広く語って頂きました。
|
動作環境:
・Windows IE 4.0 以上、Netscape 4.7 以上
(MicrosoftVM または Sun Java Plugin 1.4以上)
・Macintosh IE5以上, Safari1.0以上
(MacOS9 は MRJ2.2.5 以上)
※ Mac 版 Netscape での動作は確認しておりません。
-- では、現在のお仕事についてお話して頂けますか
今は DRAGRI というソフトを作って売っています。
DRAGRI を電話とか紙ベースで説明するのは非常に難しいんですが、ホームページ上でマウスを使って映像を動かすことができるというものです。実際に触って頂ければすぐにわかると思いますが。
DRAGRI は、Web プラウザ上で再生できる Java アプレットなんですが、線に沿ってマウスをドラッグすると、あたかも映像の中をつかんでいるかのように動かせます。
NTT の研究所にいた時に映像処理の研究をしておりまして、その中で出てきたひとつの技術だったのですが、それだけ切り出して売れないかなということで、NTT アドバンステクノロジ(以下、NTT-AT) に出向して事業化してるんです。
※ DRAGRI のサンプルです。線上を、マウスでドラッグしてみて下さい。
例えば、スポーツのフォームチェックなどに使うこともできます。好きなところで止めるのが簡単ですね。これはおじさんにウケがいいんです。他のデモを見せても、すぐに「あ、ゴルフに使えるね」と言われますね。
-- DRAGRI はエディタに 2 つグレードがあるみたいですね。
そうですね、 DRAGRI は Lite 版とフルスペック版の 2 種類のグレードがあります。
※ 以下に説明して頂く、ウォークスルーの DRAGRI ファイルを、別ウィンドウで開きます。
こちらがフルスペック版を使ってウォークスルーを編集したものなんですが、こちらのコンテンツは地図をなぞっていくと映像が再生されます。
基本的なアイデアとしては地図の上に線が引いてあって、これが時間軸になっているんですね。DRAGRI のインタフェースは、領域をクリックすると飛んでいくクリッカブルマップと、時間軸を操作するスライダーのインタフェースを合体させた新しいアンカーなんです。ちょっと時間的な幅をもったクリッカブルマップといったところでしょうか。
-- こういったコンテンツは実際に使われているんですか?
はい、徐々にですね。道案内なんかはまだですが、NTT の電報サイトでドラえもん電報の商品紹介をしてたりします。あとはペットサイトでワンちゃんを動かしたりとかですね。徐々にですけれども、ファンを増やして、、、このまま世界制覇に(笑)
-- 適用方法というのはご自身で考えられるのですか? それとも、他の所からいろいろとアイデアが出るとか。
両方ですね、こちらから提案して持っていくこともあります。
また、これまでクリエータさんたちと交流して作り上げた経緯がありまして、道案内などもクリエータさんが企画して作ったようなものなんです。ちょっとしたゲームのようなものもクリエータさんが作ってくれました。
※ その他の、DRAGRI サンプル(クリックすると、別ウィンドウで開きます)
-- DRAGRI は Java のアプレットで動いているわけですね。
そうです。名目上は Java 対応の全ての Web ブラウザで動くようになっています。ただ、Web ブラウザごとに微妙なバグがあって対処にするのに苦労しましたけれども、最近だんだん収束してきましたね。
-- JDKのバージョンは 1.1 代だそうですね。だいぶ苦労されたかと思いますが。
そうですね、本当は JDK1.4 にしてバリバリ Java2D*1 とかやりたいところですが、まだちょっと、、。
*1 Java2D: JDK1.2 より導入された、AWT のグラフィックス処理を拡張する API。
-- なぜ Java アプレットにされたのですか?
いろいろな Web ブラウザで再生させたいなというのとプラグインのインストールが拒否されるっていうのが多かったので。じゃあアプレットかなと。
「Write Once, Run Anyway」*2ですか(笑)
anyway とにかく動かそうって感じで。なかなか理想どおりにはいかないようですけれども。
*2 「Write Once, Run Anywhere」ですよね、、(笑)
-- エディタは Windows 版と Macintosh 版があるわけですけれども、作ってしまえばどこでも動くわけですね。
はい。やっぱりクリエータさんと話しても、プラグインのインストールはとにかく避けようみたいな話だったので。
今でこそ Flash はどこでも動きますが、数年前は Flash はまだまだみたいなところがあったので。
-- どういった経緯で DRAGRI を開発されたのでしょうか。
NTT の研究所は昔からいろいろとやっているんですが、その中にヒューマンインタフェース研究所*3というのが横須賀にありまして、私はアプリケーション系のところに在籍していました。そこでいろいろな映像処理の研究をやっていたんですが、これはその中の一つの VideoSpaceIcon というものです。
*3ヒューマンインタフェース研究所:現 NTTサイバーコミュニケーション総合研究所
奥から手前に時間が進むんですが、映像のフレーム画面が、トランプのカードが横にズズッとずれているみたいな感じで積み重なっているんです。
-- ドラッグするとビデオみたいに動くわけですね。昔のパラパラ漫画みたいですね。
基本的にそうですね。
で、カメラを動かして撮っているわけなんですけれども、それを画像から計算してずらしているので、正面から見ると背景がパノラマ的に合成されているんです。その上で映像を再生すると、お猿さんが歩いているように見えるというわけですね。これは従来の四角い枠の中で見ている映像を超えた新しい表現かな、ということで。研究所ではこういうものをやっていたんです。で、何が楽しいのかという話もあるんですが(笑)
-- いつぐらいからこういったアイデアを思いつかれたんですか?
VideoSpaceIcon のアイデア自体は 95 年ぐらいに発案されていました。まだ私が入社する前の研究所で、外村さんというすごく有名な方がやっていたのですが、私はそれを見てこの研究所に入ろうと決めたんです。私が見たデモはモックアップだったのですが、入社してから空いた時間にこういう 3D で動くものを作って見せたら結構ウケたんです。で、さらにこの上でドラッグして動かすのに、逆向きにしたときでも動かしたいなぁとか、どういう風に制御したら良いのかなというのを考えたんです。じゃあ中にスライダーを埋め込んじゃえば、どういう風になっても時間軸が対応付けられるのじゃないかなと考えまして。ここからさっきの線を埋め込むっていうアイデアが出てきたんです。
、、というようななんだかよくわからない経緯で生まれたんですけれども(笑)
こういう新しい映像表現とかインタフェースを追及する中で出てきたアイデアを一般化して、使いやすい形にまとめたんです。
-- 研究所では何年ぐらいやられていたんですか?
DRAGRI の一番基礎になるようなところは 2 週間ぐらいでできたんですが、そこからいろいろな実験を重ねて、世の中に出そうっていうのにかれこれ 2 年ぐらいかかりました。で、この NTT-AT 社でさらに製品化のための作りこみをしたんです。
-- その 2 年までというのが研究所でのお話なんですね。
そうです。クリエータさん達と機能やコンテンツについて議論しました。それから、ちょっといろいろな問題がありまして、研究所で作ったものをそのまま売り出すわけにはいかなかったもので、その製品化のための作業に、さらに半年掛かりました。
-- NTT-AT さんは NTT グループの中ではどういう位置づけなんですか?
(広報部 後藤さん)弊社は、今年で 27 周年を迎えた、グループの中でも古い方の会社で、NTT が日本電信電話公社の時代から、いろいろな企業に NTT 研究所の成果を技術移転、商品化といったことをするために出来た会社です。研究所の成果というのは、やはりそのままでは民間に出せませんので。
-- 他にもいろいろと面白い製品だとか、研究があるんですよね。
(広報部 後藤さん)新宿に本社がありまして、本社の展示ルームには、本当にいろいろなものが展示されています。
それこそ「超はっ水材料」といった、水をはじく塗料の研究もしておりますし、この DRAGRI のようなソフトウェアを販売したりもしているんです。
-- DRAGRI の開発での苦労話やエピソードは何かありませんか?
DRAGRI には Macintosh 版と Windows 版があるんですが、下のところにフレームワークがあって、その上に共通のアプリとして作ってあるんですよ。 8 割ぐらいが共通で、残りの 2 割が機種依存のところです。だからバージョンアップなども Macintosh と Windows を同時に行っています。そういった Macintosh と Windows で共通のものを作ろうとして、1 枚レイヤーを分けていろいろなものを吸収するのが非常に難しかったですね。パターンも勉強しながらいろいろと使ってきれいな形で作ったつもりなんですけれども、やっぱりちょっと作り直したくなってきましたね、ここまでくると(笑)
-- パターンとおっしゃったのは、デザインパターンのことですか?
そうですね。例えば映像ファイルが QuickTime や MPEG や AVI などいろいろなフォーマットに対応してるんですけれども、そこは Factory で作って対応しました。
-- フレームワークは独自に開発されたんですか?
そうです。Qt*4 なども使えればよかったんですが、Macintosh の対応がいまいちで。
*4 Qt: Troll Tech 社が開発した、C++ の GUI ツールキットライブラリ。
-- ちなみに処理系は Borland ですか?
いや、これは Visual C++ です。MFC などは使っていないので Borland C++ でもコンパイルできると思いますが。MFC を覚えるのは面倒くさくて(笑)
-- 他にこぼれ話はないですか?
DRAGRI は製品化する前の段階から、作りながらクリエータさんに使って頂いて、頻繁にバージョンアップしていたんです。
クリエータさんからのリクエストがあったら、すぐに返さないと情熱が冷めてしまうので、前日の要望を徹夜して次の日には返したりして、お互いに刺激しあいながら開発していました。その時のクリエータさんのノリも大事ですから。そのあたりが大変でしたがエキサイティングではあったかなと思います。
-- 先ほどデザインパターンを使われているとおっしゃってましたが、どんなパターンを使われているのですか?
さっき申し上げたように Factory を使っています。あと Memento とか Singleton ですね。簡単なやつしか憶えていませんね(笑) クラスライブラリみたいな感じでまとめています。
-- 佐藤さんがオブジェクト指向に関わった、きっかけはどういったものだったのでしょうか?
僕はオブジェクト指向を C++ で覚えたんです。結城浩さんがサークルの先輩で、飲み会の時に「C++ というのはこういう言語でね、コメントが 2 種類あってお互いに消しあうことができるんだよ」(笑)とか教えて頂いたのが最初です。
あとサークルの横のつながりで、小山裕司さんとも知り合いまして。ARM*5 の翻訳とかした人なんですが。他にも Linux とか Perl の本を出してます。
小山さんにも「C++ いいっすよ」と言われて、洗脳されて覚えたというわけです。
*5 ARM: 『The Annotated Reference Manual』
-- 佐藤さんにとってオブジェクト指向とはどのようなものなんでしょうか?
最初は、基本的に構造体の延長から移行したような感じですね。今はあんまりそんな感じではないですけれども(笑)
オブジェクト指向の思想そのものは、情報科学の勉強の時にいろいろと読んでいたので Smalltalk などは言葉では知っていました。あとは Alan Kay の本を読んだんですが、それによるとオブジェクト指向の一番の元の考え方は「コンピュータの中に小さなコンピュータをいっぱい作ってお互いに協調させてものごとを作っていく」ってものなんだそうです。なるほど、と思いまして。
だから僕の場合、構造体の延長だっていいながらも、どちらかというとモジュールの延長で考えているというところもあるんです。
つまり関数の集まりですね。結局インスタンスが 1 個しかないこともあるような感じで。そういった部品として、コンポーネントとしてのオブジェクトというのが、今の自分の中での整理になっています。
なんか自分でしゃべっててもよくわからなくなってるんですけれども。
-- DRAGRI を作る上でオブジェクト指向が役立ったということはありますか?
フレームワークの構成では、昔 X11 *6 にあった InterViews というフレームワークを参考にしました。Mark Linton という人が作ったものです。
これまた小山裕司さんとか斎藤靖さんっていうすごいハッカーがいるんですけれども、その人たちに「これはすごいぞ」って教わって、ソースを読んで勉強したんです。
InterViews はデザインパターンの本を読んでも GUI の構成の仕方とか結構参照されていますね。
で、そのあたりは DRAGRI のフレームワークにも同じような考え方を入れて作ってます。
昔からフレームワーク作りのような「手段」に燃えますね(笑)。「手段」のためには「目的」を選ばないと(笑)。ほとんどフレームワーク作りに終始してますね、これまで振り返ってみると。
*6 X11: X Window System version 11
-- 今までのコンピュータとかプログラミング言語への関わりを教えていただけますか?
僕が最初に小六か中一の時に本屋さんで買った『マイコンの使い方遊び方』って本で初めてコンピュータの世界に触れたんです。マイコンと言っていた時代のものですね。(笑)
生まれは名古屋なんですが、矢場町のカトームセンというパーツ屋に行って、ポチポチ打ち込んだりしてました。恐いお兄さんが来たりするので(笑)、隙を見ながら。
-- ご自身では持っていなかったわけですね。
パソコンはあまり買わないんです。
-- 言語は BASIC ですか?
BASIC ですね。私が高一の時に、兄が PC-8001mk2 というパソコンを買いまして、これ幸いとばかりに私が使い倒しまして、BASICでいろいろと作っていました。
ちなみに幸か不幸か PC-8001mk2 はゲームがあまり移植されなかったんですよ。FM7 とか PC-8801 ユーザはみんなゲームをやってたんですけれども、私はゲームなんかなかったので作るしかないと、自分で作って遊ぶようなことをやっていましたね(笑)で、アセンブラも勉強したりしました。
その後、大学では人工知能研究会というサークルに入りました。そのサークルを作った人が吉川永一さんという人なんです。最近、吉川さんが『コンピュータ言語 Interlog 』という本を出しまして、これ結構凄い本なんですよ。
で、この吉川さんの周りも凄い人が揃ってて、今で言うとオープンソースの環境で C 言語とかを教えて頂いて勉強しました。
-- Interlog というのは新しい言語なんですか?
Interlog は Prolog の派生なんです。Prolog の出力結果がさらに解釈されると、いろいろな世界が広がるよって感じですね。吉川さんの世界が広がっています。
その吉川さんが、「Prolog って言語は、これでプログラムを作る言語ではなくて処理系を作る言語だ」って(半分冗談で)おっしゃっていたんです。要するに「手段が目的の言語なんだよ」みたいなすごい偏った見方をしてて、それが面白かったですね。結構いろいろなところで「研究の目的は?」と聞かれるんですが、困っちゃいますよね、目的聞かれても(笑)
-- 最近あまり Prolog という言葉を聞かないので久しぶりに聞きました。
一度は触っておいた方が良い言語だと思いますね。で、そのうち C++ とか使えるようになってきまして。
-- 大学時代はわりと Prolog にはまってたんですか?
Prolog も C++ も使ってました。一番使ったのはC++ですね。Prolog は自分の研究の道具として使ってました。
-- Prolog にはどのような形で関わられたのですか?
大学コンピュータサークル連盟というコンピュータサークルの横のつながりがあったのですが、この大学コンピュータサークル連盟が『C MAGAZINE』立ち上げの時に編集に協力したんです。創刊号の後付に名前が載ってたりします。それでバイトをさせて頂きました。
当時『C MAGAZINE』と提携している米国の雑誌があって、『Prolog による数式の解法』という英語の記事があったんですよ。これ幸いとばかりに「Prolog のインタプリタを付録に付けるから、これ翻訳させてください」と(笑)
で、そのインタプリタが S-Prolog というものです。サークルの先輩方もそれぞれ Prolog のインタプリタとかバーチャルリアリティとかいろいろなことをやっていたのでソースとか参考にさせて頂きました。
こんな感じでバイトしながら勉強したし、単に記事書くだけじゃつまらないので簡単なゲームとかユーティリティを作って付録に入れるとか、こまめにやってたんですよ。
-- Prolog は処理系を作るための言語だという話が出ましたが、何か参考になるようなものはあったのでしょうか?
影響を受けたものとして HyperNeWS があります。
Arthur van Hoff という人が、Sun の NeWS *7 の上で動く GUI 系のツールを作ったんですよ。昔 Macintosh にあった HyperCard のようなインタラクティブなコンテンツを簡単に作れるシステムです。それが HyperNeWS なんですね。それを使って卒論をやったんですよ。
*7 NeWS: PostScriptベースのウィンドウシステム。Java の父 James Gosling のプロジェクト。Arthur van Hoff は、Java の初期の開発者。後にスピンアウトしてプッシュ型配信を行うマリンバ社を設立する。
-- 具体的にはどのようなシステムなんですか?
HyperCard というのは Macintosh 上のアプリで、ドローツールみたいにボタンを配置していって、ボタンをクリックした時のアクションをスクリプトで書いておくと、ページを送ったりアニメーションを簡単に再生できるというオーサリングツールなんです。
で、HyperNeWS っていうのは Sun ワークステーション上の NeWS の上で動いて、それもやっぱりボタンとか配置してクリックするといろいろな動作を設定できるものだったんですよ。そのスクリプト言語は PostScript だったんです。PostScript をバリバリ書いてやるといろいろな挙動ができますよ、と。HyperNeWS 自体も PostScript で書いてあって、フレームワークになっていました。JDK1.0 のライブラリの構造やメソッド名は、HyperNeWSとよく似てるんですよ。
それに、触発されたわけじゃないんですけれども、S-Prolog をベースに作った GUI 系のシステムを作りまして、もうお察しの通りそのスクリプト言語が Prolog なんです。ボタンとか配置してクリックした時に Prolog がバッと動くと。
それでどんどんいろいろな部品を作っていって、それを研究にしていたんですね。その時は映像を認識して「これはニュースだ」、「これはゴルフだ」とか、テレビなんかを勝手に自動分類するようなシステムを研究していたんですね。それが Prolog で動いてたんです。ちょっと無茶苦茶やってました。もう少し手段を選べばよかったかなと思いますけれども(笑)
ただまあ、 Prolog ではあったんですけれども、部品化するみたいなところでオブジェクトをうまく使っていたんです。
-- これが S-Prolog なんですか?
-- (ここで実際にソースコードを見せて頂く)
GOLS って名前です。S-Prolog を拡張して、GUI とか映像処理とか画像処理のライブラリをくっつけたものです。
-- 先ほど Prolog で処理系を書くとおっしゃっていたように、S-Prolog で処理系を書いているのですか?
GOLS は S-Prolog の発展系で、普通の Prolog としても動くのですが、オブジェクトモデルでその中に GUI の部品も配置できます。インタフェースビルダーで部品をくっつけていろいろなアプリができたりします。で、 Prolog は推論が得意なのでボタンをクリックするといろいろ推論して、「あなたの健康診断をしましょう」みたいな挙動ができるんです。
研究室の人は画像認識システムをこの GOLS で作って、図面を読み込んで、このへんは建物でこのへんは道路だってのをインタラクティブに学習できるようなシステムを作ったんです。これはなかなか面白いなぁと。
Prolog って言語はイベントドリブンに非常に適しているんですね。部分的に切っても、どこからでも実行できるようになってまして。例えば「タイマー割り込みがあったらこうしなさい」みたいなのをチャチャッと書けるわけですね。あとはオブジェクトの中に変数もメソッドも宣言的に定義でききるので、「位置はこうです」「ラベルはこうです」みたいなのを宣言的に書くと、それがそのまま反映できる、というようなシステムになってるんです。例えばこんなふうに書くとウィンドウとボタンが表示されます。
@ win : c_window {
shape(0, 0, 200, 100).
label(‘test’).
@ but : c_button {
shape(50, 50, 100, 50).
label(‘Push me!’).
action :- alert::show(‘Hello!’).
}.
}.
:- win::(draw, show).
こういうふうに、画像認識する部品も作っていき、組み合わせてアプリを作るというものでした。同僚に使ってもらいながら改良していきました。いろいろ変なものを使っていくといろいろ面白いことができると。そういう意味ではオープンソースみたいな関係は絶対に必要かなと思いますね。サークルや研究室自体がそういう風にソースを見せて互いに啓発していた関係があるので。
-- DRAGRI の今後とか、お仕事とか、どのようにお考えになっていますか?
世界中に普及させるのが夢なんですけれども、そうは問屋が卸しませんので。まずは売上を上げないと(笑)
基本的に映像のアーカイブとか、それを自動化するといったことをやってたんですよ。研究所の時は何百時間もの映像のデータベースを作っていたんですね。今は数秒の映像をいじって遊んでいますが。
やっぱり映像メディアをもっと使いやすく、身近に、楽しくしたいなってのが基本的な志にあるので、それはもうこれからずっと死ぬまでやろうかと思っていますよ。
DRAGRI 自体は普及の手段は問いませんが(笑)、皆さんに買っていただけると嬉しいですね。今はいろいろな場面で使って頂けるようにしたいなと思い、開発兼営業で飛び回っています。これに関連する、映像系のシステムもつけていきたいなと思いますね。
-- ホームページではちょっとしたおかずとして、ポイントポイントで使うと面白いですね。
今は教育分野でプロモーションしています。子供たちも結構楽しんでくれてますし、ホームページ作りとかマルチメディアへの入門とかにも結構いいんじゃないかと思いますけれども。
-- DRAGRI のファイルを作るのも簡単ですし。
デジカメからも取り込めますからね。少しでも多くの子供たちにも楽しんでもらえ、同時に私も楽しくなるようにしたいと思っています。今はアプレットで動くようになりましたけれども、動くプラットフォームを広げて、携帯とか PDA でも動くようにもしているところなんです。
製品としては DRAGRI のコンテンツと連動したデータベースシステムとか、そのためのシステム作りなどをしています。同時に、元いた研究所の人たちとも交流が続いていまして、研究所にはいろいろと面白いアイデアがあるので、そういったものをもっと楽しくなるような方向で世に出していきたいですね。
それから、この DRAGRI のおかげでいろいろなクリエータさんや業界の方とお付き合いができたので、研究ともども発展させていきたいなってのがありますね。
そのためには今の職場でやってもいいし、研究所でやってもいいし、どこに行ってもできるかなと思っているところです。
-- お話は変わりますが、お休みの時は何をされているんですか?
最近はわりと睡眠時間に費やしていることが多いんですけれども、ほかに買い物と読書とテレビですね。小さいころからテレビが大好きでして、テレビばっかり観てたんですよ。ビジュアル系というか(笑)
裏番組があることが許せなかったんですよ。
-- 全部観たいと?
全部観たかったんですよ、とにかく。今は CoCoon みたいなのができたんですけれども。どっかに裏番組を追放できる仕組みがないだうろかと。CoCoon 欲しいんですけどまだ買ってません。
ビデオ借りてボーっと見たりとか、最近はちょっとたるんでます。ただ本は読んでますね。最近読んで面白かったのは『150cmライフ。』って本ですね。背の小さい女の子の話なんですよ。うちの嫁が背が小さいんですよ。背の小さい女性はこんなにも苦労してるんだって話なんですよ。あとは『アホでマヌケなアメリカ白人』が面白かったですね。
-- それでは最後に、後輩へのメッセージをお願いします。
「五感を使ってコンピュータを使おう」
五感を使ってコンピュータを使うべきかな、と思ってるんですね。コンピュータって音がするじゃないですか、例えばファンの音とかですね。あとはマウスの重さとか、匂いがしたりとか。味はさすがに私はしませんが。何というか、全身全霊でコンピュータに向かうべきじゃないかな、というのがありますね。単にキーボードとかマウスの重さだけじゃなくて。といいますのも、ある先輩は「デバッグのコツは匂いだよ」、「バグの匂いがするんだ」って。「そうかー」と思いましたね(笑)
あとさっき言った吉川先輩はですね、「RAM ディスクのシーク音が聞こえる」って言ってましたね。それぐらい集中したりとか、微妙なレスポンスの違いをみて、「何かおかしいんじゃないか」とか。システムがそれで動いているのかな、とか。それくらい、全身全霊を込めて物を作ったり、テストすべきかな、と思っています。
ということで、「五感を使ってコンピュータに向かいましょう」といったところですね(笑)
-- 面白いお話を、ありがとうございました。
©2003 OGIS-RI Co., Ltd. |
|