ObjectSquare [2006 年 4 月号]

[OOエンジニアの輪!]

line OOエンジニアの輪!

OO エンジニアの輪 〜 第 33 回 佐藤 直生 さんの巻 〜

今回のゲストは日本オラクル株式会社 の テクノロジー・エバンジェリスト 佐藤 直生 さんです。佐藤さんはオラクルでの業務以外にも、稚内北星学園大学の講師や、数多くの洋書の翻訳作業など、様々な活動に積極的に携わっていらっしゃいます。今回は JavaEE、SOA、Ajax *1等の Web アプリケーション関連の最新技術の話題を中心に、お話をうかがわせていただきました。

佐藤 直生 さん
尊敬する人

父親

好きな言葉

為せば成る

愛用のツール

Oracle JDeveloper 10g

エディタとして重宝しています。以前は有償でしたが、2005 年 10 月 3 日より無償提供が開始されました。エンタープライズ系およびデータベース系の機能が最初から組み込まれており、面倒なコンフィギュレーションが一切不要なので、非常に使いやすいです。

*1 Ajax : Asynchronous JavaScript + XML。Java Script を利用して、サーバと XML 形式のデータを非同期にやり取りをすることで、高度なユーザインターフェースを実現する Web アプリケーションの作り方。Ajax を利用して作られた Google MapGoogle サジェストなどの登場で話題を集めている。


オラクルでのお仕事

-- まず最初に、現在の業務についてお話していただけますか?

日本オラクルという会社で、「テクノロジー・エバンジェリスト」という肩書きの業務と、通常のエンジニア業務の 2 つの仕事をしています。

エバンジェリストとしての業務は、オラクル、あるいは他社主催のイベントで、オラクルがどう業界をリードしていこうとしているのか、製品を含めて紹介する仕事です。例えば、Java One Tokyo などでお話させていただいています。

通常のエンジニア業務としては、製品・技術の紹介、デモンストレーション、あるいは、お客様の望むシステムを構築するためにはどういった形で技術・製品を使っていけば良いのか、というところの支援をしています。その他にも、プロトタイプの構築や、弊社コンサルタントに対するコンサルティングなどの間接的な支援も数多くしています。

-- 主にどのような技術を専門に扱われているのですか?

最近は、J2EE および SOA 関連という切り口で Oracle Fusion Middleware という製品を担当しています。具体的には、J2EE アプリケーションサーバ 、Java の IDE 、O/R マッピングフレームワーク *2 TopLink、BPM *3 の実行エンジン Oracle BPEL Process Manager、ESB *4 を担当しています。

*2 O/R マッピングフレームワーク : アプリケーション内に存在するオブジェクト(Object)をリレーショナル・データベース(Relational DB)のテーブルにマッピングするためのフレームワーク。

*3 BPM : Business Process Management。ビジネス・プロセスを分析、設計、実行、管理し、継続的なプロセス改善を目指そう、というコンセプト。

*4 ESB : Enterprise Service Bus。SOA に基づいたアプリケーションを統合する際のインフラストラクチャとなるマルチプロトコルをサポートする高機能なメッセージバス。


OO と DB の架け橋

インタビュー風景

-- 佐藤さんは、データベース製品にはそれほど関わられていないのでしょうか?

データベースは素人みたいなものです(笑)。

私が入社した 1999 年当初は、まだ J2EE の無い時代で、オラクルは今以上にデータベース中心の会社でした。私も最初は、プリセールスの舞台でデータベースの製品に関連した仕事に携わるのが、一生の夢だったんです。ところが配属 1 年後ぐらいに、アプリケーションサーバ の部署に配属されて、それ以来ずっとこの仕事に携わっています。

ただし、私自身データベースを知らないとはいえ、データベースを売りにしている会社の中にいますので、他部署と技術的なやりとりをすることができます。その環境の中で、「オブジェクト指向のナレッジの追求」と「昔ながらの方法論」とをうまく結びつけるために、オラクルあるいは他の製品をうまく活用して、より効率よく、生産性を高めていこう、というのが私のテーマの 1 つです。

そういう意味では、TopLink、Hibernate などの O/R マッピングのフレームワークや EJB3.0 は非常に面白いですね。

-- 日本では O/R マッピングとしては Hibernate が有名ですが、TopLink と Hibernate の違いは何ですか?

TopLink の方が Hibernate よりも、分散キャッシュの性能が優れています。 それから TopLink は Hibernate とは異なり、マッピング先をリレーショナルデータベースに限定していません。例えば、XML スキーマへのマッピングも可能です。

逆に Hibernate は利用者が多いので、必要な情報を見つけやすいところが良いですね。 TopLink は海外では広く使われているのですが、日本では未だあまり使っていただけていないので、日々努力しているところです。

-- EJB3.0 はいつごろから普通に使われるようになると思いますか?

EJB3.0 は幸い早い段階から、技術者の方々には興味を持っていただけています。そのおかげで、現在でもプレビュー版は趣味レベルでは広く使われていますね。 ただし、現実的なコマーシャルな環境で使われるには、やはりあと 2 年くらいは必要だと思います。

-- ところで、データ中心のビジネスシステムでは、純粋なオブジェクト指向ではなく、「振る舞いをあまり持たないエンティティ」と「手続きオブジェクト」の組み合わせで開発することが多いのですが…

やはり後者の方が作りやすいですからね。 ただし、後者の方法で開発を進めると、「ロジックが分散してしまう」という問題に直面します。 どちらの方法が良いかは昔から議論されていて、私も考えてはいるんですが、残念ながら完璧な解は未だ見つけられていません。


SOA を取り巻く環境

インタビュー風景

-- 最近、一部のアプリケーションサーバベンダは、本業のアプリケーションサーバよりも、 SOA 関連製品に注力していっているように思えるのですが・・・

そうですね。 JavaEE がコモディティ化したために、JavaEE のみをメインに据えたアプリケーションサーバで勝負する、というのは厳しくなりました。そのため、どのベンダも SOA に力を入れるようになってきたんだと思います。

-- SOA というと、最近は ESB が注目を集めていますが、定義が曖昧な印象を受けています。

ESB は BPM と機能的に重なるところが多々あるために、定義が混乱してしまっていますね。 また、ESB あるいは BPM のどちらか一方だけの製品を持っているベンダの中には、「こっち側だけで全部できるよ!」というメッセージを出しているところもあって、余計に混乱させてしまっています。

私は、ESB は XML のメッセージを、バスを解してやりとりする単なる通信基盤として捉えた方が良いと思います。ですから、ESB にはプロセスの概念は実は無いんですね。 一方の BPM は、ESB の対極に位置していて、プロセスとその組み合わせを考えます。 確かに ESB だけでも BPM ライクなことはできなくはないんですけど、餅は餅屋、ということで、きちんと使い分けた方が良いと思いますね。

-- ところで、私は以前、「サービス」を組み合わせてシステムを作る、という今で言う SOA に似たアプローチを取った際に、ロバストネス分析がうまくマッチしなくて悩んだ経験があるのですが・・・

そうですね。 1 個のデータベースにアクセスする Web アプリケーションを作るためのモデリング手法・方法論は、ロバストネス分析も含めてある程度確立されていますよね。 ところが、SOA なり BPM という概念を入れこんだ、複数のシステムを繋いだシステム全体をどのようにモデリングして実装に落とすのか、という方法論はまだデファクトスタンダード的なものが無い状況です。 現在は、過去の経験やビジネスモデリング的なところから何となくやっているところが多いですね。

SOA で成功する上では、多くの場合、サービスのインターフェースをどう決めるか、あるいは、サービスの粒度はどうするか、といったあたりが重要だと思います。上流のコンサルをしている企業は、これに関して独自のストラテジを持っているようです。もちろん、オラクルでもそういった方法論は持っています。 ただし、世の中に広く受け入れられたものはまだ無いので、逆に、そこを作っていくのは非常に面白いと思いますね。


より簡単に、より楽しく

インタビュー風景

-- EJB3.0 以外に注目している技術は何ですか?

「標準」という観点で言うと、Spring Framework や Hibernate などのように、「オープンソースの技術の動きが標準に取り組まれる」というトレンドが確立したのが、個人的には嬉しく思っています。

それからやはり、Web アプリケーションを簡単に作れるようにするための技術に興味がありますね。JavaEE では JSF *5 に注目しています。それから、Ajax のようなリッチクライアントを作るための技術にも非常に興味を持っています。

-- JSF は裏では JSP を使っていますよね。となると、デザイナーとデベロッパーの分業問題 *6 が発生しませんか?

分業問題については、日本ではよく聞かれます。 ところが、海外ではなぜかあまり問題視されていないようで、この問題に対するニーズは強くないんです。 そのせいか、残念なことに JavaEE の仕様には、この問題に対する解決策はなかなか取り込まれないようです。

インタビュー風景

-- アプリケーションサーバベンダは、Ajax にはあまり力を入れていないようですが?

業界全体としては SOA の方に流れてますからね。 しかし、どのベンダも多少の差はあれど、Ajax 等の Web2.0 系の技術にも手をつけるようになると思います。

オラクルは既に動きだしています。 例えば、昨年 12 月にオープンソース Apache MyFacesに寄贈した ADF Faces という JSF コンポーネントの中には、Ajax スタイルのレンダーキットが含まれています。 これは HTML + JavaScript を裏で生成してくれるようになっていて、 例えば、画面をリロードすることなく裏でサーバと接続する、といったことが簡単にできます。

ただし、オラクルの全社的なメッセージはやはり SOA になっていますので、 ADF Faces などの面白い話は、残念ながらなかなか表に出てきにくいんですね。 僕個人でどこまで変えれるかは分からないですけど、 セミナーやブログ等で情報発信していければ、という思いを持って活動しています。

それから、ベンダ以外でも、オープンソースで Ajax 関係の面白いものが幾つか出始めていますよね。 そういう動きも、嬉しく思っています。

-- 以前は、エンタープライズ系システムの開発者と Web アプリケーションの開発者は、文化も技術も異なり、あまり交流がありませんでした。ところが、オープンソースや Ajax、Web 2.0 などを通じて、同じ技術を使ったり、議論したりすることができるようになってきています。こういった社会現象は非常に興味深いと思っています。

Ajax や Web 2.0 系の話題は分かりやすいですし、自分のマシンで動かせる、というのは面白いですからね。 そういった、楽しい・面白い、という感覚は、開発者にとって非常に大事だと思います。 皆さん各々、会社から与えられたミッションがあるとは思うんですが、 それとは別の、自分だけの喜びや楽しみがないとやっていけませんからね。

-- まったくおっしゃる通りです。

逆に、僕はミッションを無視して、自分のやりたいことばかりやっているんで、 会社からすれば困ったちゃんなんですが(笑)。

*5 JSF : Java Server Faces。Web アプリケーションをコンポーネント指向で簡単に構築するための仕様。

*6 分業問題 : アプリケーションを開発する際に、デベロッパーとデザイナーの責務を明確に切り離せない、という問題。JSP は本来、この問題を解決すべく登場した技術だった。ところが実際には、デザイナーがロジックを含めた JSP ページを記述するのは困難なため、結局デベロッパーもデザインの世界に足を踏み込まざるを得ない状況に置かれている。


知識の蓄積 → 社会への貢献

インタビュー風景

-- 佐藤さんはオラクルの業務以外に、稚内北星学園大学で教えられてますよね。そこではどのような授業をされていますか?

以前よりカンファレンス等を通じて交流がありました丸山先生からお話をいただきまして、昨年の 4 月から客員助教授として関わっています。 今年度は「実際に動く Web システムをモデリングから経験しよう」というテーマで、学生さんのサポートをしています。それから、「データベース特論」という講義の中で、データモデリングや EJB 3.0 を紹介しています。

-- どうして教育に興味を持たれたのですか?普段のお仕事とは全く違いますよね?

私は自分の中に知識を蓄えていく事がすごく好きなんですが、「単に蓄積していくばかりではもったいない。貯め込んだ知識をもとに、会社の内外に何らかの形で貢献したいなぁ。」と、かねがね思っていたんです。確かに、人に教えるということと、セミナーで話をするのとはまた違っているので、最初は「自分にできるかな ?」という不安はありました。しかし、丸山先生からせっかく良いお話をいただきましたので、やらせていただくことにしました。

講師もエバンジェリストの仕事も、 「自分の中で分かっていることを、きちんと相手に伝えるよう」心がけています。

-- 洋書の翻訳にも多数関わられていますが、やはり同じような思いがあってなんでしょうか?

そうですね。 本好きなので、色々な 書籍や Web のドキュメントを読むんですが、ただ読んでるばかりじゃ面白くないんですね。 「自分で良い。」と思った書籍を推薦、監訳して出版する、という過程を楽しんでいます。

-- 翻訳の活動は会社とは関係なく、個人でやられているんですよね?

はい。会社とは関係ないです。夜中や週末にやってます(笑)。


Java は初恋の相手 !? ダイナミックな言語も面白い !

インタビュー風景

-- 佐藤さんはいつ頃プログラミングを始めましたか?

子供のころに BASIC で遊んだことがありましたが、その時にはのめりこみはしませんでした。 大学に入って、宇宙天文学を専攻する過程で、Pascal、FORTRAN、C 言語に触れていきました。Java と初めてであったのは 97 年くらいですね。最初に分厚い書籍を 1 冊買って、それを見ながら、"Hello, World" を書いたり、アプレットを書いたりしました(笑)。 その後オラクルに入って、企業システムで使うプログラミング言語として Java と再会しました。それ以降はエンタープライズ向けの技術として、ずっと接していますね。 現在は Java をメインにしてますが、Java と比較するためにちょこちょこっと .NET や C# もやっています。

-- やっぱり Java が好きですか?

うん、好きですね。 Javaと比較できるほど他の言語に深くのめりこんだことがないので、 ある意味初恋の相手に近いですね。 いつかは浮気するかもしれないですけど(笑)。

-- ダイナミックな言語に惹かれたりはしませんか?

仕事の都合上 Java に軸足を置いていますが、興味はすごいありますね。 生産性の面で、動的な言語は非常にメリットがあると思います。 現時点では、大規模システムにも使えるのか疑問視されていますが、 きちんと使えることが証明されれば Java の立場も危ういかな、とも思いますね。 生産性という観点では、Ruby on Rails *7 も含めて面白い技術が出てきてるので、 動向は常にウォッチしています。

-- Ruby on Rails は、単純な Web アプリケーションのみにターゲットを絞ったアーキテクチャを選択することによって、生産性を追求している点が面白いですね。

そうですね。J2EE の出始めの頃とは異なり、現在は JavaEE 関連以外にも Ruby on Rails や PHP のような、他の選択肢が数多く存在します。 ですから、JavaEE の枠のみにとらわれずに、間発上のニーズに適した技術を上手く使っていった方が良いと思います。

実はオラクルも、PHP には注力しています。Zend と協力して、オラクル製のDB のアクセスドライバを提供し、性能向上を実現したりしているんです。

-- PHP を使った開発でも、オラクルのデータベースを使うことがあるんですね!

確かに PHP というと、皆さん LAMP *8 というキーワードを思い浮かべるので、驚かれるかもしれませんね。 しかし、データの規模が大きくなってくると、オープンソースのデータベースでは間に合わなくなってきます。そうしたときには、データベースだけは商用のものを使って、残りは従来どおりオープンソースのものにしたい、というニーズが実際にあるんです。 ですから、企業としては Java のみに限定するのではなく、そういった現場のニーズを満たすべく努力をしています。

*7 Ruby on Rails : Ruby を使った Web アプリケーションを作るためのオープンソース・フレームワーク。非常に高速にアプリケーションを構築できるため、開発者の注目を集めている。

*8 LAMP : Linux + Apache + MySQL + PHP。Web システムを作るためのオープンソース・ソフトウェアの組み合わせ。


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

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

会社や組織から言われたことをただ単にこなしていくだけではなく、 それ以外の面白いと思ったことも追求していって、業務・ミッションとは別の基本軸を自分の中に持って欲しいですね。 幸いなことに Web がこれだけ発達したので、 情報はいくらでも取れる時代になっています。 やる気さえあれば、ドンドン学んでいける環境はあると思うので、是非、頑張ってください。 僕も頑張ります(笑)。

-- 佐藤さんは、どういった手段で情報を集めていますか?

基本は Web ページですね。 その他に、コミュニケーション手段として、ブログ、Wiki、メッセンジャー、メーリングリストも利用しています。

特に最新情報は、英語圏のコミュニティサイトやメーリングリストから得られることが多いので、英語は超重要です。英語は是非とも勉強しておいた方が良いですね。



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