研究課題
汎用的なホスト言語上にライブラリとしてDSLを実装する技術である埋め込みDSL (embedded DSL) の実装技術について引き続き研究開発をおこなった。今年度もとくにメソッド呼び出しやフィールドアクセスの連鎖で埋め込み DSL プログラムを表現する fluent API と呼ばれる技法に着目し、この連鎖の正しさを静的に検査する手法の研究をおこなった。まず、比較的弱い型システムをもつが産業界等で広く使われている Java 言語向けに開発した、fluent API生成器 Silverchain の実装技術について、前年度発表の論文の内容をさらに深めた論文を発表した。さらに Java 言語より強力な型システムをもつ Scala や Haskel, C++ 言語向けにも同様の fluent API 生成器を開発した。この生成器 typelevelLR が生成する fluent API は、誤った連鎖でその API を利用すると、ホスト言語のコンパイラの型検査器がエラーを発する API である。正しい連鎖の定義は、LR 文法の形で生成器に与えられる。我々が開発した同様の生成器である Silverchain は LR 文法の形で与えられる連鎖の定義を処理することはできなかった。関連研究には Java 言語で LR文法の形で与えられる定義を処理可能であることを示した研究も存在するが、実用的な速度で型検査できる fluent API を生成することはできなかった。我々の typelevelLR は type class を活用し、実用的な速度で型検査できる API を生成する。また Ruby 言語から Python 言語の上の埋め込み DSL を無用な混乱なく利用できるようにするフレームワーク Yadriggy も研究開発した。
平成30年度が最終年度であるため、記入しない。
すべて 2020 2019 2018
すべて 雑誌論文 (6件) (うち査読あり 6件)
The Art, Science, and Engineering of Programming
巻: 4 ページ: -
10.22152/programming-journal.org/2020/4/9
Journal of Computer Languages
巻: 50 ページ: 70-83
10.1016/j.jvlc.2018.11.001
Journal of Information Processing
巻: 27 ページ: 479-488
10.2197/ipsjjip.27.479
The 18th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences (GPCE 2019)
巻: - ページ: 1-13
10.1145/3357765.3359521
The ACM Proceedings of the ACM on Programming Languages (PACMPL)
巻: 3 ページ: 134:1-134:24
10.1145/3360560
Proc. of 33rd Annual ACM Symposium on Applied Computing (SAC 2018)
巻: - ページ: 1256-1259
10.1145/3167132.3167416