奥深いデータベースの世界を究めたい――IPA 未踏IT人材発掘・育成事業採択のスーパークリエータ、郷原浩之氏と語らう!

ソフトウェア関連の分野で独創的なアイデア/技術力を有し、それらを活用していく能力を備える優れた個人(クリエータ)を発掘/育成すべく、情 報処理推進機構(IPA)が実施している未踏IT人材発掘・育成事業。その2008年度下期の未踏ユース枠に採択されたテーマ「オープンかつポータブルな データベースガーベジコレクション」の担当クリエータが、今年3月に東京大学工学部の修士課程を卒業した郷原浩之氏だ。今回は、この気鋭の若手エンジニア に、日本オラクルで製品開発/提供に従事するベテラン・エンジニアらが、プロジェクトの内容や郷原氏の"データベース観"などについて聞いた。
 
 
■プロジェクトは研究フェーズを終え、今後は普及活動に注力

郷原氏"
郷原浩之氏
1985年神奈川県生まれ。2004年に東京大学に入学し、工学部システム創成学科数理社会デザインコースに進学。2009年に同大学を卒業した後、東京 大学大学院工学系研究科に入学。同年、未踏IT人材発掘・育成事業 未踏ユース枠に「オープンかつポータブルなデータベースガーベジコレクション」を申請して採択されるとともに、同年のスーパークリエータにも選出される。 2011年に東京大学大学院を卒業。趣味は鉄道旅行。
――郷原さんが担当されたプロジェクト「オープンかつポータブルなデータベースガーベジコレクション」とは、簡単に言えば「JavaとO/Rマッピング・ツールを使ったプログラムで、データベース内の不要になったデータを削除するため仕組み」ですよね。この仕組みを思いついたきっかけは何だったのでしょうか?
 
郷原:私は、もともとデータベースが好きで、その基礎理論などを勉強してきました。初めてデータベースの仕組みを 知ったときは、データを入れて出すだけのことに対して、非常に高度な技術が使われていることに感動しました。データベースを理解するには、コンパイラや OSの知識も必要になります。情報工学に関するすべての知識を総動員してできたプロダクトとして、データベースに心を奪われたのです。
 
データベースのガーベジコレクションは、ある会社でアルバイトする中での必要性から生まれました。当時、Javaを使ってプログラ ミングしていたのですが、O/Rマッピング・ツールの「Hibernate」でデータベースを操作する中で消えないオブジェクトがあることが知られていま した。それを消すことが業務上の理由で必要だったのです。
 
――取り組みの成果は論文にもまとめられているようですが、このプロジェクトで特に重要な課題となったのはどういったことでしょう?
 
郷原:今回のプロジェクトで解決すべき課題は4つありました。1つ目は「どの行がゴミになるのかを同定するための SQLの作成」、2つ目は「そのSQLを発行するために必要なテーブル情報や関連情報などを、Hibernateのメタ情報からどうやって抽出するか」と いうこと。3つ目は「トランザクションの管理」、そして4つ目は「不要なデータが確実に消えていることを保証する機構」です。
 
――それらの課題を解決するのにいろいろとご苦労がおありだったでしょう。
 
郷原:アルゴリズムなどを考えるのに苦労した部分もありますし、すでに答えはわかっていても、その実装に苦労した部 分もあります。例えば、Hibernateからメタ情報を取得して整形する部分では、取得すべき情報が何かはわかっていたのですが、それをどうやって取得 するかという点で苦労しましたね。
 
――プロジェクトの現在の状況はいかがでしょうか?

立野氏"
立野広樹氏
2000年に日本オラクル入社。2005年までカスタマーサポート部門にてJava EEを中心とした各種ミドルウェアの技術サポートに従事。2006年から、Sustaining Engineering部門にて、OC4JおよびWebLogic Serverの障害解析/修正業務に携わっている。
郷原:今は研究フェーズが終了した段階です。現在の実装で確かにこの方法が適用できることがわかったので、今後はど うやってこの仕組みを普及させるかを考えていくことになります。現状の実装はあくまでも研究用に作ったものなので、これから実用に堪える実装を進めていき たいと考えています。
 
 今回はぜひ、私のプロジェクトについて、日本オラクルでデータベース製品をはじめとする製品の開発/提供に携わっている立野さん と柴田さんにもアドバイスをいただければと思っています。このプロジェクトで実現したガーベジコレクションの仕組みについて、どのようにお感じになりまし たか?
 
立野:私自身は、RDBを本来の目的で普通に使う限り、今回のプロジェクトで取り上げられている"ゴミ"はあまり問 題になるものではないと思っています。データベース上にあるデータはそもそも永続化されているわけですから、基本的には勝手に消えませんし、逆に消えない ことが求められます。つまり、それを消すためには、「消えなければならない」という明示的な意思表示が必要なのです。その観点からすると、不要なデータが あるのなら、まずはプログラムの側で明示的にそのことを指示すべきですし、それによってRDBの側にもその指示が伝わり、不要なデータが削除されるのが大 前提だと思います。
 
 もっとも、現場でアプリケーション開発に当たる方々の間には、「オブジェクトからの参照が切れたデータを手軽に削除できる仕組み があったら便利だ」という考え方/要望があるかもしれません。そうしたニーズに応えるものとして、このプロジェクトは面白い取り組みだと思います。なの で、今日は郷原さんに興味津々で参加させていただきました(笑)
 
郷原:ありがとうご ざいます。私も、立野さんのご指摘のとおりだと思います。実は学会や未踏ユースの集まりなどでいろいろな方とお話しする中で、今のようなご指摘をたくさん いただきました。そして私自身も、O/Rマッピング・ツールを使わないのなら、RDB側としては明示的に指示されたデータのみを削除するというのが基本だ と考えています。ただ、今回のプロジェクトはO/Rマッピング・ツールの利用を前提としたものなので、その点からRDB中心で見たときとは考え方が違って きたのだと思います。
 
■オープンソース・データベースと商用データベースの世界の違い
 
――このプロジェクトを通して、郷原さん自身がスキルアップしたと感じていることはありますか?
 
郷原:今回はソース・コードを書く時間よりも読む時間のほうがはるかに長かったせいもあり、プロジェクトを始める前 よりもソース・コードを速く読めるようになりましたね。また、例えば大規模なソフトウェアにおけるシステムの設計など、Hibernateのソース・コー ドを読む中で多くのことを学びました。
 
立野:私の経験でも、読んだソース・コードの量は、そのままエンジニアの糧になりますね。コードを読み取る力はエン ジニアに求められる基本的な能力であり、今後も重要であり続けると思います。今回は、Hibernateという多くの優れたエンジニアの手が入ったプログ ラムのコードを精読しつつ、その改良まで考えたわけですから、郷原さんは非常に良い経験をされましたね。

柴田氏"
柴田竜典氏
2004年に日本オラクル入社。2005年にインメモリ・データベース「TimesTen」の製品担当プリセールス・エンジニアとして証券、通信、航空、 防衛産業などの超高速レスポンスが要求されるOLTPシステムに関わる。2009年からはExadataの製品担当パフォーマンス・チューニング・エンジ ニアとして、流通、製造業界などの大規模DWHシステムや大規模バッチのベンチマーク/チューニングを担当している。
[柴田氏インタビュー記事]
Oracle Databaseのスマートな開発/運用の鉄則 第3回
柴田:私は日頃、お客様から実データをお借りして製品のベンチマークを行い、挙動におかしな点があればバグであるか どうかを判断し、バグだと認識したものは開発チームに修正を依頼するということをやっています。ただし、バグかどうかはコードを見て考えるのではなく、表 面的な事象から判断しています。その際、大量のソース・コードを読んだり、自分でコードを書いたりした経験が生きてきます。例えば、「この部分は、自分な らこうしたコードを書くだろうから、こういった点で問題が生じる可能性があるんだな」といった勘が働くんですね。やはり読み込んだソース・コードの量は、 エンジニアとして大きな財産になると感じています。
 
 もっとも、「勉強になるから」というだけでは、なかなかコードを読む時間がとれなかったり、読んでもすぐに飽きてしまったりす るかもしれません。そんなときは、何か目的を決め、そのためにコードを読めばよいと思います。私の場合なら、先日、「SQLでURLのパース処理をいかに 速くやるか」という課題に突き当たったのですが、その解決のヒントを得るためにApache HTTP Serverのソース・コードを読みました。Apache HTTP ServerのURLのパース処理が非常に速いことを知っていたからですが、コードを読むことでいろいろなヒントが見つかりましたよ。
 
――郷原さんは日頃、どのようなRDBMSをお使いになっているんですか?
 
郷原:Webアプリケーションを構築するアルバイトではPostgreSQLを使っていましたが、私自身は研究用や自分の趣味でMySQLをよく使います。また、これらのほかにも実装ごとの得意領域を調べるために、いろいろなRDBMSで遊びます。
 
立野:オラクルのデータベースについてはどういった印象をお持ちでしょうか?
 
郷原:オラクルのデータベースに対しては、非常に堅牢で信頼性が高いというイメージがあります。ただし一方で、個人 で使うものではないという印象もあります。私の研究目的では信頼性が厳しく要求されるようなシステムを扱うことはあまりないため、費用の点からもフリーの ソフトウェアを用いることが多いんです。
 
立野:私も学生時代はPostgreSQLをよく使っていました。私にRDBMSの面白さを気づかせてくれたのは オープンソースのプロダクトで、とても良い経験をさせてもらったと思っています。その後、商用プロダクトの世界に入り、ここには"データベース一筋、数十 年"の積み重ねがあることを知りました。この蓄積は覆し難い大きなものですね。
 
 その蓄積は何かと言えば、やはりOLTPという使い方に対して求められる信頼性です。世の中のデータは、アップデートやインサー トがない限りは非常に簡単に扱えます。しかし、OLTPでは同時にものすごい数の端末が大量のアップデートを行うわけです。それを安定して長期間にわたっ て処理する、しかも運用面のさまざまな課題も解決しながらシステムとして安定動作させるという世界は、やはりオープンソースの世界とは根本的に違います ね。
 
柴田:例えば、1行分のデータをインサートするのと、何億行分のデータを一度にインサートするのとでは、やり方を変 えたほうがよいかもしれません。そのどちらかに特化するのなら、ある程度簡単に速い実装を作れますが、商用プロダクトはどちらも速く処理できなければなり ません。そうした点で、オープンソースのプロダクトとは求められるものが大きく異なると感じますね。
 
――そうした違いを、郷原さんも意識されることはありますか?
 
郷原:それは強く感じますよ。私は昨年就職活動をしたのですが、研究者と技術者、どちらの道に進むかで悩みました。 最終的に技術者としてキャリアを積むことにしましたが、それを決めた理由は、やはり商用プロダクトの世界に対する興味でした。オープンソースの世界と、企 業が作る商用プロダクトの世界を見比べたときに、興味は俄然、商用プロダクトに向いたんです。
 
――最後に、郷原さんの今後の活動計画を教えてください。
 
郷原:未踏ユースのプロジェクトに関しては、その成果を普及させていくことが主なミッションになります。それを遂行 するうえでの課題の1つは、プロジェクトの成果の一部をHibernate本体の実装に反映していただくことです。それには、まずプロジェクトに当たる中 で見つけたHibernateのバグを修正することから始め、その後で私が考えた仕組みを提案していきたいと思っています。
 
 また、今日はお二人のお話を聞いてますます商用データベースへの関心が強まりました。今は会社に入って何を担当するかがまだ見え ていないのですが、もし仕事で直接データベース開発にかかわることがなかったとしても、オープンソースでRDBMSの世界に関わったり、また機会があれば オラクルの認定技術者試験を受けたりしていきたいと思っています。
 
――今回の取材は郷原さんにとっても良い刺激を受ける機会となったようですね。本日はありがとうございました。