研究課題
汎用的なホスト言語上にライブラリとしてDSLを実装する技術である埋め込みDSL (embedded DSL) の実装技術について引き続き研究開発をおこなった。今年度はとくにメソッド呼び出しやフィールドアクセスの連鎖で埋め込み DSL プログラムを表現する fluent API と呼ばれる技法のためのプログラミングシステムの研究に注力した。Fluent API による埋め込み DSL を実装するにあたり、ホスト言語が静的な型システムをもっていれば、その型システムを用いて fluent API のメソッド呼び出し等の鎖の並びの正しさをコンパイル時にその静的型システムを用いて検査することができる。そのような検査手法は、Java 言語のような産業界等で広く使われる言語の場合、実用的な速度で実施するのは容易ではなかったが、本研究では、Java 言語のような比較的弱い型システムを持つ言語であっても、実用的な効率で検査を実施する手法を開発した。本研究の手法は、検査可能なメソッド呼び出し等の鎖の種類を制限することで、実用的な効率を実現している。我々はこの制限にともなう実用的な問題は小さいと考えている。我々は、研究で得られた手法を実際に利用可能にするため、Silverchain と呼ぶ fluent API 生成器を開発し公開した。利用者が fluent API のメソッド呼び出しの鎖の正しい並び順を、そのメソッド呼び出しをトークンとする文法規則として記述すると、その記述にしたがって fluent API の雛形を Silverchain は出力する。
2: おおむね順調に進展している
Fluent API とよばれる埋め込み DSL の実現方法について研究した。ホスト言語の型システムを用いてメソッド呼び出しやフィールドアクセスの正しさの検査をおこなう手法の実現にあたり、入れ子の扱いについて研究を深めたため、当初の計画通りではなかったが平成 30 年度にかけて研究計画を達成することができた。
ホスト言語の静的型システムを用いた fluent API の静的検査に関する H.29 年度の成果をさらに深めて実用性を高めてゆく。
すべて 2017 その他
すべて 雑誌論文 (2件) (うち査読あり 2件) 学会発表 (2件) 備考 (1件)
Proceedings of the 16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences (GPCE 2017)
巻: vol.52 issue 12 ページ: 199-211
10.1145/3136040.3136041
巻: vol.52 issue 12 ページ: 146-156
10.1145/3136040.3136057
https://github.com/csg-tokyo/silverchain