研究課題/領域番号 |
22K11981
|
研究種目 |
基盤研究(C)
|
配分区分 | 基金 |
応募区分 | 一般 |
審査区分 |
小区分60050:ソフトウェア関連
|
研究機関 | 法政大学 |
研究代表者 |
佐々木 晃 法政大学, 情報科学部, 教授 (90396870)
|
研究期間 (年度) |
2022-04-01 – 2025-03-31
|
研究課題ステータス |
交付 (2022年度)
|
配分額 *注記 |
3,120千円 (直接経費: 2,400千円、間接経費: 720千円)
2024年度: 1,300千円 (直接経費: 1,000千円、間接経費: 300千円)
2023年度: 1,040千円 (直接経費: 800千円、間接経費: 240千円)
2022年度: 780千円 (直接経費: 600千円、間接経費: 180千円)
|
キーワード | プログラミング言語 / プログラミング言語処理系 / 構文解析 / エディタ / 言語処理系 |
研究開始時の研究の概要 |
プログラミング作業を行う際に言語処理システム(言語処理系)から得られるフィードバックは、プログラム作成者にとって理解しにくいものである場合が多い。本研究では、言語処理システムが、適切なタイミングで適切なフィードバックを提供することで「なめらかな編集作業」を可能とすることを目標とする。言語処理システムの問題点として、編集中のコードを正しく解析しない点、利用者を想定せずに単一のフィードバックしか提供しない点が挙げられる。そこで、(1) 言語仕様の拡大により編集中コードの解析を可能とする、(2)言語仕様の縮小により利用者が必要とするフィードバックを与える、以上の2手法により問題の解決を図る。
|
研究実績の概要 |
本応募課題では、ソフトウェア開発時にコード作成者がプログラミング言語処理系や開発環境から、効果的なフィードバックを得ながら開発を行う手法の提案を目指す。本手法の主要なアイディアのひとつは、開発者がプログラムの編集操作を行うと、即時に実行結果に反映される、ライブプログラミングの手法を活用することである。これにより、フィードバックの頻度を高めることが可能となる。この研究の一環として本年度は、ブロック言語とライブプログラミングによるGUIアプリケーション開発の研究を行った。GUIアプリケーションは、主にユーザによるインタフェース機器操作によって発生するイベント列によって動作が定まるという特徴がある。このように入出力が単純な形式ではない、より実用的なアプリケーション開発におけるライブプログラミングの適用法の研究を進めた。
また、本手法を適用する社会シミュレーション分野のドメイン特化言語(DSL)の検討を目的として、群集シミュレーションおよび道路交通シミュレーションに関する研究を進めた。これらの社会シミュレーションは、個々の主体が高度な意思決定・振る舞いを持つという特徴がある。実際にシミュレーションシステムの開発を行うことで、その実装にDSLを導入することが有用であることを確認した。この成果は、本課題における手法の検討等で用いるDSLが表現すべきモデルの具体例として活用する。さらに、ウェブページを表現するhtmlやcssの効率的なコーディングを補助する手法の研究を通して、命名規則によって名前空間に構造を導入し、統合環境のエディタの援用のもと効果的なプログラム開発を行う手法の検討を行った。
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
2: おおむね順調に進展している
理由
本年度は、効果的な編集作業を行うためのライブプログラミングの手法について主に研究を進めた。なお、本課題では、プログラミング言語の拡張および縮小に基づくアプローチにより、編集作業の効率化をはかることを検討していたが、本年度はこの点についての進展は少なかった。一方で、htmlやcssの効率的なコーディングを補助する手法の研究において、命名規則を通した言語に対する制約によるアプローチを通して、異なった角度から言語縮小に関する考察を行った。また、本年度対象としたシミュレーションの研究では、DSLの開発に向けて、エージェントの振る舞いをはじめとするシミュレーションの実装法についての知見を得た。
|
今後の研究の推進方策 |
言語仕様の拡張および縮小によるカスタマイズを中心に「なめらかな編集」を実現することが、本研究の主眼である。今後、これまでに行ってきた準備的なプロトタイプ的研究に基づいて、より汎用的に適用可能とするための理論的研究を進める。これと同時に、本年度行ったGUIプログラミングを行う上での、ライブプログラミングの手法について、さらに研究を進める。また、本年度に研究を行ったシミュレーションについて、これらのモデルを簡潔に表現するDSLのプロトタイプを作成する。
|