eJS: 組込みシステム向けJavaScript処理系

IoT(モノのインターネット)という言葉をテレビや新聞でよく聞くようになりました.現在では,ほとんどの電気製品に計算機が搭載されています.もちろん,電気製品に搭載されている計算機は,デスクトップパソコンのような何でもできる高性能な計算機ではありません.ほとんどの場合は,メモリが少なくCPUの速度も遅い制御用の計算機が使われています.

このような計算機のプログラムは,熟練のプログラマがアセンブリ言語やC言語を使って極力少ないメモリで動作するように作っています.JavaScriptなどの高級言語ではプログラム本体とは別に,プログラムを動かすためのソフトウェアである仮想機械が必要になり,多くのメモリが必要になります.もちろん,高級言語でのプログラミングに比べて大変で時間がかかります.せめてプロトタイプ(試作品)だけでもお手軽に作れると,生産性は大幅に向上します.

そこでこのプロジェクトでは,JavaScriptを使ってお手軽に電気製品に搭載されているような計算機のプログラムを作れるようにすることを目標にして,そのような計算機でも動作するJavaScript処理系を開発しています.熟練のプログラマのプログラムと同等とまではいきませんが,プロトタイピングに使えるようなものを目指しています.

一番の課題は仮想機械の大きさです.ブラウザ上で動くプログラムをお手軽に作れるJavaScriptには,様々な機能が詰め込まれており,いろんなプログラムが実行できるようになっています.そのため,仮想機械が巨大になってしまいます.しかし,実行するプログラムを固定すると,それに必要な最小限の仮想機械は小さく作ることができます.

このプロジェクトでは,実行するプログラムに合わせて仮想機械を自動的に合成する仕組みを開発しています.また,仮想機械の部品をできるだけ小さく作ることで,組込み機器で動作するJavaScript処理系を開発しています.

この研究は電気通信大学の岩崎研究室と共同で進めています.

合宿に行ってきました

発表

  • Takafumi Kataoka, Tomoharu Ugawa, Hideya Iwasaki:
    A Framework for Constructing JavaScript Virtual Machines with Customized Datatype Representations,
    The 33rd ACM/SIGAPP Symposium On Applied Computing (SAC 2018), ACM, Pau France, April 9-13, 2018 (to appear)
  • 片岡崇史, 鵜川始陽, 岩崎英哉, 仮想機械における型ディスパッチャの自動生成. プログラミングシンポジウム2017 ポスターセッション, 静岡県伊東温泉, 2017年1月6日〜8日