研究課題/領域番号 |
23K19961
|
研究種目 |
研究活動スタート支援
|
配分区分 | 基金 |
審査区分 |
1001:情報科学、情報工学およびその関連分野
|
研究機関 | 京都大学 |
研究代表者 |
田邉 裕大 京都大学, 情報学研究科, 特定研究員 (30985198)
|
研究期間 (年度) |
2023-08-31 – 2025-03-31
|
研究課題ステータス |
交付 (2023年度)
|
配分額 *注記 |
2,860千円 (直接経費: 2,200千円、間接経費: 660千円)
2024年度: 1,430千円 (直接経費: 1,100千円、間接経費: 330千円)
2023年度: 1,430千円 (直接経費: 1,100千円、間接経費: 330千円)
|
キーワード | プログラミング言語 / ソフトウェア更新支援 / ソフトウェア互換性 / バージョン |
研究開始時の研究の概要 |
本研究はソフトウェアの更新を支援する手法の確立を目的とし、意味的バージョンを介して互換性を検査・保証するプログラミング言語の研究を行う。ソフトウェアの更新は多大な実装コストを伴うが更新の支援技術は不足しており、開発の硬直化が問題となっている。本研究は意味的バージョンをプログラミング言語に導入し(1)意味的バージョン計算機:ユニットテストや型検査を用いた新旧の実装の互換性の分類法(2)漸進的プログラム更新:更新で破綻したプログラムの式単位での新バージョンへの移行法を開発する。本研究は更新エラーの原因や修正法の指示を可能にし、更新で破綻したプログラムを自動で特定・修復する技術への展開が期待される。
|
研究実績の概要 |
研究項目Ⅰ「意味的バージョン計算機の開発」現在、当初の目的であった意味的バージョンを利用した言語機構の開発からさらに粒度高く非互換性を制御することを目的とし、非互換性による変更の影響を言語意味論内で直接制御・吸収する機構の開発に向けて新たな言語機構を設計している。
研究項目Ⅱ「漸進的プログラム更新手法の開発」(1)複数のバージョンの実装を安全に使うための関数型言語VLの開発・実装・コンパイル手法の定式化・安全性の証明を行った。VLは先行研究の関数型コア言語Lambda VLの表面言語である。VLはLambda VLの持つ複数のバージョンを安全に利用可能というメリットを損なうことなく、プログラムに対して外部的に定義されたバージョン情報を利用することで、Lamvda VLの持つ難解な構文やプログラムの振る舞いの予測の困難さといったprogrammabilityの問題を解決している。本成果は国際会議APLAS2023に採択・発表された。また、国内会議PPL2024にて、既発表論文として口頭発表を行った。(2)オブジェクト指向言語に対する本研究の適用の可用性を高めるため、先行研究であるBatakJavaの理論的拡張・実装を行った。本成果は現在、夏の論文誌採択に向け論文執筆中である。(3)本研究の機構を動的型付言語にも導入可能であることを示すため、Pythonの拡張であるVythonの予備的な実装を行った。Vythonの特徴は動的バージョン検査:一貫しない仕様に基づくプログラムの実行をプログラムの実行中に検知・エラー原因をフィードバックする機構を特徴としている。本成果は2024年春の国内会議PPL2024でポスター発表を行った。
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
2: おおむね順調に進展している
理由
研究項目Iについては、非互換性を符号化されたバージョン情報に希釈することなく、言語意味論の中で直接的に扱う方針へと転換した。どの程度本方針が機能するかは未知数であるが、転換後の手法は直接的に非互換性を扱うことができるため、転換前の手法と比較して完成した際の可用性は高いと考えている。 項目IIについては、現実的なプログラミング言語が持つ多くの言語機構との相互作用の調査が順調に進展しており、(1)(3)について少なくとも一つ以上の発表の成果((2)は投稿準備中)を得た。限定的な言語の範囲ではあるものの、(1)(2)(3)のいずれにおいても漸進的更新のためのフィードバック機能を備えた機能する実装が得られており、半年という短い期間の中では当初の目的以上に進捗していると言える。
|
今後の研究の推進方策 |
研究項目Iについては、引き続き言語意味論の中で非互換性を扱うための言語機構の開発を続ける。現在までの予備的な調査では、すべての非互換性に対して完全に自動化された更新や非互換性の吸収を行うことは不可能だという直感を得ており、提案機構でどこまで現実的な更新の手間が軽減可能かを評価する予定である。 研究項目IIについては、開発者の更新の手間を削減するためのフィードバック機能の強化を行う予定である。このための予備的なアイディアの実装は既に(3)にて実装されており、本手法を発展させる予定である。
|