見出し画像

リソースアウェアなリアクティブプログラミング言語

2023年度研究会推薦博士論文速報
[プログラミング研究会]

横山 陽彦
(DMG森精機(株)/(株)WALC 研究員)

■キーワード
リアクティブプログラミング/組込みシステム/プログラミング言語処理系

【背景】安定動作する組込みデバイスの需要が高まっている
【問題】簡潔な記述(FRP)による安定な組込みシステムの開発支援は可能か?
【貢献】簡潔な記述方法と「計算リソース」の詳細な管理機構を両立した小規模組込みシステム向け特化言語を提案した

 安定動作する組込みシステムは重要である.近年ではサイバーフィジカルシステム(CPS)の発達とともに,その重要性はことさらに高まっている.CPSとは,コンピューターによる計算と実世界の物理情報をネットワークによって統合し,それらの相互作用によって実現されるシステムの総称である.スマート家電,ヘルスケア,工場の自動化,自動運転,電力網制御など大小さまざまなものが例に挙げられる.CPSにおいて,実世界の情報を観測するあるいは実世界に対して作用する主体は,エッジデバイスと呼ばれる組込み機器である.エッジデバイスは,小規模な計算機と通信装置に加えていくつかのセンサーやアクチュエータから構成され,不確実な環境のもとでも安定的に動作することが求められる.

 エッジデバイスのように,外部からの非同期的な入力に対して内部状態を変化させながら反応し続けるシステムをリアクティブシステムと呼ぶ.これを一般的な手続き型プログラミングで記述する際には,非同期的な入力に対応するための技法が用いられる.それらの技法の多用は,処理や値の流れ(コントロールフロー,データフロー)を分断するため,プログラムの可読性や保守性を損ねることが知られている.特に関数コールバックが多用され,可読性が損なわれる現象はコールバック地獄と呼ばれ問題とされてきた.

 この問題を解決するために提案された関数リアクティブプログラミング(FRP)では,ユーザーはシステムの入力から出力までを自動的に値が変動するデータフローとして記述する.そのため,入力から出力までの流れが明示された簡潔かつ保守性の高いコードが記述可能となる.FRPはその提案当初から関数型言語Haskell上のドメイン特化言語として発展してきたが,組込みシステム記述との相性の良さから組込み環境やIoT環境を想定した特化言語(Emfrp,Juniper,ReactiFiなど)が研究,開発され組込みシステム開発の一助となっている.

 しかしながら,Emfrpやその他の組込みシステム向けFRP言語では計算リソースを詳細に扱う機構が不足していたため,安定動作が要求される組込みシステムを記述することに難があった.そこで,本研究では組込みシステムにおいて重要な3つの計算リソース(メモリ,CPU,電力)に注目し,それぞれのリソースにまつわる既存のFRP言語の問題点の分析と,新たに言語拡張を導入したFRP言語の提案による解決策の提示を行った.メモリリソースに関しては,サイズ制限つきの再帰データ型を導入することで,実行時メモリ使用量の上限を決定できる言語を提案した.CPUリソースに関しては,リアクティププログラミング固有の現象であるReactive Thread Hijacking Problemを解消するアプローチとして非同期実行基盤の導入を行った.電力リソースに関しては,低消費電力化のためにシステムの状態更新頻度の柔軟な切り替え機構を持った言語を提案した.本研究では,リアクティブプログラミングによる抽象度の高い記述とリソースアウェアなプログラム記述が両立できることを明らかにした.その成果は,組込みシステムの簡潔かつ詳細な記述を支援するものであり,安定動作するエッジデバイス開発等へさらなる貢献が期待される.

(2024年6月1日受付)
(2024年8月15日note公開)

ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー
 取得年月:2024年3月
 学位種別:博士(工学)
 大学:東京工業大学
 正会員

ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー

推薦文[コンピュータサイエンス領域]プログラミング研究会
本論文では,計算リソースの限られた小規模組込みシステム向け関数リアクティブプログラミング言語に対し,非同期実行,データのサイズ,計算タイミングを陽に記述する拡張機能を導入し,それぞれに対して組込みシステムにおいて特に重要な応答性,最大使用メモリ,消費電力の各観点における効果を,実験を通じて確認した.

研究生活  博士課程に進む際に,(博士課程に進みそうな)学内の友人を集め情報共有グループを立ち上げたことが,学生生活をうまく送れた秘訣だと思います.長いようで短い3年間ですが,その途中ではうまくいかないことや落ち込むこともあります.そのようなときに友人たちに頼ることができたのは非常にありがたかったです.逆に自身や友人たちに嬉しいことがあったときは,みんなでお祝いをすればもっと嬉しい気持ちにもなります(物理的にも心理的にも).孤独になりがちな博士生活ですが,信頼できる友人関係を保ちながら乗り切りましょう!

博士課程の3年間では,自身の研究のみならず,その周辺分野(処理系実装,型システム,プログラム検証など)についてもじっくりと腰を据えて考えたり勉強したりすることができました.人生の中でここまで自由に好きなことを学ぶ機会はないと思います.

また,自身と合った研究室を選ぶことも大切です.私は学部4年生の研究室配属から数えて6年間同じ研究室にお世話になりました.自身の性格と研究室の雰囲気が非常にマッチし,のびのびとした研究生活を送ることができました.指導教員,研究室メンバーに本当に感謝しています.