学位論文要旨



No 112269
著者(漢字) 千葉,滋
著者(英字) Chiba,Shigeru
著者(カナ) チバ,シゲル
標題(和) コンパイル時メタオブジェクト・プロトコルに関する研究
標題(洋) A Study of Compile-time Metaobject Protocol
報告番号 112269
報告番号 甲12269
学位授与日 1996.12.16
学位種別 課程博士
学位種類 博士(理学)
学位記番号 博理第3128号
研究科 理学系研究科
専攻 情報科学専攻
論文審査委員 主査: 東京大学 教授 平木,敬
 東京大学 教授 小柳,義夫
 東京大学 教授 萩谷,昌己
 東京大学 助教授 今井,浩
 東京大学 講師 小林,直樹
内容要旨

 本論文はメタオブジェクト・プロトコル(MOP)の新しい設計手法について提案する。MOPはプログラム言語を拡張可能にするための手法であり、近年注目されている。汎用プログラム言語は、様々な機能をもつライブラリ(再利用可能なコード)を作成するには、充分ではない。分散や永続といった多数の重要な機能をライブラリにする場合には、汎用言語が提供する汎用の言語機構だけではなく、しばしば特別な言語機構が必要になる。言語の拡張性は、そのような特別な言語機構を、必要に応じて実装するために必要である。現在のソフトウェア開発にあたっては、多くのコードをライブラリから再利用することが重要であるので、言語の拡張性は大切な課題である。

 MOPは拡張可能な言語を設計するための手法として広く認められている。しかしながら、実行時性能や拡張能力において、この手法はいくつかの問題をいまだ含んでいる。現在提案されている解決法のひとつは、コンパイル時MOPと呼ばれる方法である。論文が提案する手法は、これに分類される。過去のコンパイル時MOPは、それを持ちいたプログラムを書くのが難しかったため、広く認められなかった。本論文のコンパイル時MOPは、新しい抽象化に基づいて過去の設計手法を再検討し、この欠点を回避する。本論文の研究の最終的な目標は、今日の主流言語のひとつであるC++言語に、MOPを導入することである。本論文ではさらに、提案する設計手法に基づいたC++のためのMOPを示す。

審査要旨

 本論文は7つの章からなる。第1章は序論であり、本論文の研究に向うにあたって動機となった背景について論じている。ソフトウェアの開発を容易にし、開発コストを低減するためには、ソフトウェアの部品化が重要であるが、現状では必ずしもうまくいっていない。本論文では、この原因のひとつとして、部品化(ライブラリ化)したい制御・データ抽象は、しばしばプログラム中の他の部分と密接に結びついていて、独立した部品としての切りわけが難しいからであると主張している。そして、この問題を解決するためには、プログラムを処理して、ユーザプログラムに特化したコードをライブラリが提供できるようにする機能を、言語に組みこむべきであると主張し、その機能の開発を研究の主題に設定している。この主題の設定は、学位論文の主題として十分、かつ妥当であると認められる。

 第2章は、C++言語の既存の機能では、第1章で述べられた機能を満足するには不十分であると分析している。本論文では、研究の対象言語として、C++言語をもちいているので、この分析は必須である。さらに、この章では、分析を通して、具体的には、文脈依存かつ非局所的な変換をうまく扱えることが重要であると論じている。

 第3章は、既存の関連研究を概観して、Lispマクロ、自己反映言語、メタ循環した自己反映言語について議論している。その結論として、プログラムのメタ構造を抽出してプログラマに与えることが重要なこと、さらにその方法として、メタ循環なメタオブジェクト・プロトコルを用いることがよいこと、をあげている。また、Lispマクロのようにコンパイル時に主要な計算をおこなってしまえることの重要さも指摘している。

 第4章は、前章の議論をふまえて設計、開発したOpenC++MOPの概説である。メタ循環でコンパイル時に実行可能なシステムになっていることを述べ、また、文脈依存かつ非局所的な変換をどのように扱えるようになっているか、が説明されている。

 第5章は、純粋なメタ循環なシステムでは、実装レベルの混同、と論文提出者が呼ぶ問題が発生し、プログラマを混乱させバグの要因となることが指摘されている。そして、この問題を避けるために、OpenC++ MOPでは、メタらせんというメタ循環を元に新たに開発されたアーキテクチャを用いていることが述べられている。

 第6章は、この論文で示されたOpenC++ MOPを使って、実現できるライブラリの代表的な例を紹介している。それらの例は、通常のC++では実装できないライブラリ、通常のC++では実装できるが、十分効率的に動かないライブラリ、さらにOpenC++ MOPを使ったメタレベル・プログラミングを支援するためのメタクラス・ライブラリ、そして、やはりメタレベル・プログラミングを支援するために、メタ・メタレベルを使ってメタレベルにほどこした言語拡張、である。

 第7章は、論文全体の内容をまとめ、今後の研究課題について論じている。特に、本論文の成果が、言語本体を小くて理解しやすいものにし、一方で多くのデータ抽象を言語拡張ライブラリとして提供できるようにする技術の基礎となることを示唆している。

 本学位論文は、従来の言語機構では実現が難しい、あるいは実現できても十分な実行効率を確保できない、ライブラリを実現できるようにするための、新しい言語機構について提案、実証実験をおこなっている。本研究は、従来の伝統的な手法であるところの、個々のライブラリに対応するために、無数の機能を言語に追加していくというものや、あるいは、コンパイラの解析能力を単純に高めることによって対応するという手法に比べ、単一の強力な機能を言語に加えるだけで、包括的に様々なライブラリに対処しようとする点において、独創的かつ、関係分野の今後の研究に寄与するところ大であると認められる。特に従来手法による言語処理系の改良が行き詰まりつつある現状においては、他の研究者に与える影響も小さくないと言える。以上のように、本論文は言語設計の研究において、他に類をみない優れた研究であり、極めて有意義な成果を得ている。この点で、本論文は高く評価され、審査委員全員で、博士(理学)の学位を授与するにふさわしいと判断した。

 なお本論文の内容の一部は、共著論文として印刷公表済みであるが、論文提出者が主体となって研究および開発を行なったもので、論文提出者の寄与は十分であると判断する。

UTokyo Repositoryリンク http://hdl.handle.net/2261/54548