Topics記事

記事を絞り込む

「未然課題」連続インタビュープロジェクト

インタビュー#18 合田 和生

東京大学生産技術研究所 准教授|データプラットフォーム工学

合田和生氏は学生時代にデータベース処理を100倍速くするアルゴリズムを発明し、以来、大規模データ処理システムの「スーパーカー」を開発してきました。このテクノロジーは、全国民のレセプト(診療報酬明細書)データの利活用にも貢献しています。
合田氏のこれまでの研究についてうかがいました。

合田研究室の研究アプローチ

私は現在、大規模データを対象とするシステムソフトウェア、特にデータベースシステムやストレージシステムの研究に従事しています。
コンピュータには普段、我々が目にすることがないバックエンドに、WindowsやMacOSといったオペレーティングシステム(OS)や、記憶装置内のデータを管理、操作するファイルシステム、人間に分かりやすい言語で書かれたプログラムを機械が理解して実行できる形式に「翻訳」するコンパイラなど、コンピュータを動かす上で必ず必要なソフトウェアがあります。これらを総称して、システムソフトウェアと言います。
システムソフトウェアは、一見、ユーザの目になかなか触れない地味な存在なのですが、ある時、その「縁の下の力持ち」的な役割に神秘性を感じてしまい、より深く勉強したい、いやむしろ自分流のシステムソフトウェアを作り上げたいと思うようになりました。学部は工学部の電気系に進学し、大学院では当時、東京大学生産技術研究所(東大生研)にいらした喜連川優先生に師事しました。
喜連川先生がデータベースの専門家だったことから、とりわけ大規模データを扱うシステムソフトウェアに傾倒してゆくことになり、以来、この道を一貫して進めています。
コンピュータは、ハードウェア、システムソフトウェア、アプリケーションといったいくつかの機構が一緒に動作する複雑系です。機構と機構を繋げるために、共通の界面(インターフェース)が取り決められていて、その界面の制約の中で新しいことに挑戦するのが、エレガンスとされています。
私は、少々趣向が違っていて、むしろ積極的に従来の界面を変えてやろう、その代わりに従来の界面ではできないような大きな利得を獲得してやろうというアプローチで研究に取り組んでいます。今は大規模データを扱うソフトウェアを圧倒的に高速化する、省エネ化する、簡単化にするという三本柱を掲げています。「大きすぎて、とても扱えないよ」と悲鳴を上げられているようなデータが好物(!)です。

合田和生氏

最近のコンピュータ

具体的な研究の紹介の前に、まずコンピュータのしくみについて簡単に説明します。コンピュータ(計算機)という名前の通り、コンピュータには情報の計算を担当するプロセッサ(演算装置)というものが入っています。例えば、PCの場合、CPUという名前がついていますが、これもプロセッサの一種です。
プロセッサは半導体で出来ていて、ただそのテクノロジの進展には驚くものがあります。以前は、プロセッサそのものの動くスピードがどんどん高速化していて、いい加減に言うと毎年60%くらい速くなっていました。10年で100倍になる感覚です。ハードウェアが毎年勝手に速くなるので、ソフトウェアは速くすることには頑張らなくてよくて、むしろ速くなったハードウェアの能力を使っていかに新しい機能を提供するかということが競われていました。
しかし、そういった良い時代もどこかで限界を迎えます。プロセッサを速くするために、半導体を駆動する電子回路の周波数をどんどん向上してきた結果、プロセッサは膨大な熱を生み出すようになり、プロセッサ自身がその発熱に耐えられなくなってきました。そこで2000年代の半ば頃からは、もう周波数を上げてプロセッサ自身の動作スピードを向上することはやめてしまって、1つのパッケージの中で同じ周波数のプロセッサを複数並べることにとって計算能力を高めるという戦略にシフトしました。
周波数を2倍にすると、計算能力も2倍、しかしながら発熱は4倍になります。しかし、同じ周波数のプロセッサを2つ並べると、計算能力も2倍、発熱も2倍で済むという訳です。こういったアプローチをマルチコア化と言います。
さて、ここで問題が起こります。繰り返しになりますが、以前はコンピュータの中に、計算を担当するプロセッサが1個だけ居る、その1個が毎年速くなっていました。ソフトウェアは、この構造を前提に作られています。例えば、Aの計算をやって、次にBの計算をやって、という指示が順番にプログラムされていて、プロセッサはそれに従ってAの計算をやって、次にBの計算をやって、と淡々と仕事をこなします。
ところが、ある頃から、コンピュータの中に、2個のプロセッサが居るようになりました。このコンピュータに、同じプログラムを与えたとします。片方のプロセッサが先ず、Aの計算をやっている間、もう片方のプロセッサは何もすることがありません。次に、片方のプロセッサがBの計算をやっている間も、もう片方は手持無沙汰です。折角2個のプロセッサがあるのに、その計算能力を活用することができません。そして、もう個々のプロセッサは速くはならないので、このままではコンピュータの進化が止まってしまうのです。
分かりやすいように計算を中心に話をしましたが、実はコンピュータには計算以外に、もう1つ重要な役割があります。それは情報の記憶です。コンピュータには、プロセッサと共に、必ず情報の記憶を司る記憶装置が付随しています。役割によって、メモリとかストレージと言いますが、これも半導体や磁気媒体が利用されていて、情報を出し入れするスピードを向上するために、半導体の場合は周波数を向上したり、磁気媒体の場合はモータの回転速度を向上したりしていました。
こちらも20世紀末頃から、徐々にそういったアプローチが苦しくなり、今ではプロセッサと同じく、個々の記憶装置を速くするというよりは、パッケージの中に同じものを複数並べることによってスピードを向上するという戦略にシフトしています。そして、プロセッサと同じ問題が記憶装置にも生じます。ハードウェアとして沢山、記憶装置を並べても、その潜在的なスピードをうまく活用できないのです。

コンピュータを100%働かせる

乱暴に言ってしまえば、従前のソフトウェアでは、スピードの向上をハードウェアの進化に頼り切っていました。でもハードウェアの仕組みが変わったのだから、ソフトウェアも変わらないといけません。私の研究室では今どきのハードウェアの能力を100%活かしきるためのソフトウェアの構成法の研究を進めています。
例えば、上記の例では、Aという仕事を更に細かくA1とA2に分割してしまい、A1を片方のプロセッサで、A2をもう片方のプロセッサで実行させます。2個のプロセッサを活かすことで、上手くいけば半分の時間で済みます。ただ、この時に重要な条件があって、A1とA2の間に一切の依存性があってはいけません。
依存性とは何だと言われると、短時間で説明することは難しいのですが、例えば、従来1名の従業員にやってもらっていた仕事を、2名の従業員にやってもらうことを考えてみてください。100枚のコピーを2人でやってもらって時間を半分にするのは簡単でしょう。これはコピーを50枚と50枚に分けた後は、2名がそれぞれ独立に仕事ができるからです。
では、論文の概要を2人で書いてもらうのはどうでしょうか? 恐らく、時間を半分にするのは恐らく無理で、現実には殆ど速くならないか、かえって遅くなってしまうでしょう。2名で1つの作文を完成させるにはそれなりの議論をする必要があって、その仕事は独立ではないからです。このように、ソフトウェアに記述された仕事をいかに沢山の独立な仕事に分割するか? そして、沢山のプロセッサや記憶装置を使って分割された仕事を如何に高効率に実行するか?
これらの問題に取り組むべく、基礎理論の探求から現実のソフトウェアとしての実装に至る研究を進めています。ソフトウェアの作りを根本から変えてしまうお話ですので、なりふり構わずアプリケーションが持っている情報も、ハードウェアが持っている情報も使ってしまおうという訳です。例えば、仕事の分割方法を考える際には、ソフトウェアの裏にあるビジネスロジックが役立ちます。分割した仕事をどうハードウェアに分配するかを考える際には、ハードウェア構成の仔細が役立ちます。
大規模データを扱う代表的なソフトウェアにデータベースというものがあります。正確にはデータベース管理システムと言います。主にビジネスの世界で使われるソフトウェアで、世界中で何らかの情報を扱う組織はほぼ全てがこのソフトウェアを使っています。現代社会に欠かせないインフラ技術と言えます。
こういったデータベースの典型的な処理を対象に上記の高速化の技術を確立しました。実験室では1,000倍を超える高速性を確認しています。1時間かかっていた処理が、数秒で完了する感覚です。研究パートナの日立製作所が、この技術をもとに更に品質保証等の工学的な鍛錬を重ねて、製品化に成功しており、今では徐々に産業界で使われ始めています。

ソフトウェアの爆速「スーパーカー」から省エネ「エコカー」へ

このように、私の研究室では、大規模データを扱うソフトウェアを圧倒的に高速化する、いわば「スーパーカー」のようなソフトウェアを作ること一点に集中して研究を進めていました。
しかしながら、歴史を振り返ると、多くの技術領域では、その黎明期には規模や性能を競っていたものの、徐々に効率性の競争にシフトしてくるといった動きが見られます。コンピュータの業界は、どんどん新しい技術やサービスが生まれ、規模を拡大してきていますから、依然としてまだ黎明期と言えるかもしれませんが、徐々にエネルギー効率の問題が意識されるようになってきています。
コンピュータは電気がなければ動きません。実は毎年、コンピュータが消費しているエネルギーは増大を続けていますが、いつまでもそんなことを続けられる訳はありません。そういった未来を先取りした研究として、大規模データを扱うコンピュータシステムを圧倒的に省エネ化するための研究を始めています。「スーパーカー」だけでなく、「エコカー」も作り始めているのです。

省エネデータベースエンジンの試作機

テクノロジーを開発するだけでは足りない理由

大学院に上がった時に、自分はシステムソフトウェアの研究をしたいので、そこだけに集中させて欲しい、個別のアプリケーションのことはやりたくない、と指導教員にお願いしていました。有難いことに、その通りに自由に研究をさせていただいたのですが、いざ新しいテクノロジーを創り出すと、「すごいのは分かるのだけど、何の役に立つの?」と言われ、悔しい思いをすることが出てきました。
徐々に分かってきたのは、ちょっとした技術的な変革は、変化が連続的ですから、理解しやすくて、活用のイメージも湧きやすい。他方、大きな技術的な変革は、変化が非連続的なので、どう活用してよいか分かりにくい、ということでした。大規模データを扱うソフトウェアを相手に、圧倒的な高速化や省エネ化といった大きな変化を目指す研究を進めている私にとっては、苦い現実でした。
自分の好きなシステムソフトウェアの研究に留まるだけでなくて、生み出したテクノロジーを活用していただく応用領域も自分で開拓していなければならない、と考えるようになり、少しずつ研究の幅を広げて来ています。

活用されていなかったビックデータを掘り起こす

大きな成果につながった一例に、ヘルスケアの分野でのレセプト情報の利活用があります。レセプトは医療機関から保険者へ発行される請求書である診療報酬明細書のことで、どういった患者に、どういった医療サービスを提供したか、例えば、診断した病気や、処方した薬等が全て記録されています。日本は皆保険制度を導入していますから、国内の医療サービスの殆どでレセプトが生じています。
我が国は2009年からレセプトの匿名化された全電子データを収集しています。毎年、データベースのレコードにして約350億件程度のデータが蓄積されています。医療の実態を国家レベルで分析することのできる世界的に見ても稀有で貴重なデータなのですが、その巨大性ゆえに、医学分野の先生方の手には負えず、分析が進まないといった話をお伺いしました。
そこでいろいろな検討や手続きを経て、駒場リサーチキャンパス内に専用のセキュリティルームを作り、匿名化したデータをお預かりして、我々の高速化技術を駆使した高速解析システムを開発し、医学分野の先生方にご利用いただけるようにしました。分析内容によって差はあるものの、従前に1時間以上かかっていたような処理が数十秒程度で完了することから、中には頻繁に生研に通っていただいた医学系の先生もおられます。
当初は、国家レベルのレセプトを使った分析そのものの事例がなく、医学分野ではエビデンスとして認められなかったのですが、色々な実証データを積み上げてゆくことによって、今では、抗菌薬の処方実態や生活習慣病の罹患と治療実態といった国家レベルの悉皆分析を論文で報告できるようになりました。

新たな価値を生み出したレセプトデータ

当初は政府から提供された医療のレセプトのみだったのですが、徐々にプラットフォームが発展し、最近では、地方自治体からも介護や健診といった様々なデータが提供されるようになって来ています。折角のプラットフォームを学術だけに活用するのはもったいなく、地方自治体の方にも直接プラットフォームを活用していただくのがよいだろうと考え、地方の医療体制を分析する目的志向型の解析ツールを開発し、現在では、自治体の職員のPCから直接、研究室のデータセンタにアクセスして、当該ツールをご利用いただけるようになっています。
例えば、過疎地域では医療資源が乏しく、都市部と比べて住民の医療アクセスには困難が伴います。エビデンスをもとに、きめ細やかな医療政策を立案する等の実験を進めています。

データ分析空間

ビックデータの利活用を社会ソリューションにつなげる

非常に長い時間はかかりましたが、ここに来てようやく、私たちのテクノジーで何ができるか、どのような社会ソリューションを打ち出せるかを示せるようになってきました。
ヘルスケアはその一例ですが、培ってきたテクノロジーをいかに多様な社会ソリューションにつなげていくかが大きな課題だろうと考えるに至りました。そこで、先進的な情報技術を製造業等の産業界へ横展開する仕組みを作るために、日立製作所の協力を得て、「ビッグデータ価値協創プラットフォーム工学」と名付けた社会連携部門を2022年にスタートさせました。
大学の研究部門として新しい技術を開発しつつ、それをもとに今まで使われていないデータを掘り起こし、事業課題や社会課題の解決につなげたいと考えています。
特に日立製作所は、ITベンダーでありながら、家電メーカーでもあり、巨大な製造レーンも持っています。我々と、日立製作所の研究者、さらにユーザー企業も巻き込んで実証実験などを始めているところです。
ITの分野では、アプリケーションだけをやりたい人、ハードウェアだけをやりたい人など、特定の分野に特化しがちです。私自身、「システムソフトウェアだけやります」と言っていましたが、そうした殻をどんどん破り、新しいことを率先してやっていくことの重要性と面白さを感じています。

合田研究室:https://www.tkl.iis.u-tokyo.ac.jp/~kgoda/

(2023年2月10日 東京大学生産技術研究所 CCR棟5階会議室において)

#「未然課題」連続インタビュープロジェクト #システムソフトウェア #大規模データ処理システム #レセプトデータ