研究テーマの設定を学生が主体的に行えるように,教員がサポートします.すなわち,まず本人に希望を出してもらい,それを基に面談しながら一緒に研究テーマを作り上げていく方針です.

新しいプログラミング言語

既存のプログラミング言語をより使いやすく拡張する研究や,特定の応用に特化したプログラミング言語を設計する研究などを行っています.例えば,使用される環境や状況に応じて実行されるプログラムのモジュール(部品)を自動的に切り替えられる文脈指向プログラミング,「時間変化する値」を保持する特殊な変数を通して,ロボットなど環境に応答するプログラムを簡潔に書けるリアクティブプログラミングなどの研究があります.

プログラミングの活動を支援するためのツール

新たなプログラミングの言語要素やパラダイムを採用することによって,それまで考えつかなかった,あるいは実現するのが困難だったプログラミング支援を可能にすることがあります.例えば,リアクティブプログラミングにおけるデバッグリファクタリングのための支援に関する研究などがあります.

また別の観点から,今まで人が行ってきたプログラミングの活動のうち、コンピュータに任せられる部分はコンピュータに任せてしまうことができれば,プログラミングの作業はうんと捗ります.具体的には自動プログラム合成自動プログラム修正などの研究に取り組んでいます.

新しい言語に基づくアプリケーション

新しいプログラミング言語を使用することによってソフトウェア開発がどのように変化するのかを調べるための事例に関する研究を行っています.例えばIoTDigital Twinsなどの技術は,上述したリアクティブプログラミングとの相性が良いといえるでしょう.そうした事例を積み重ねていくことも,当研究室における大事な取り組みです.

過去の卒業研究題目

  • 永続時変値の分散化に向けた基盤システムの試作
  • JavaScriptにおける永続時変値の実現法の提案
  • オープンデータの活用を支援するプログラミング環境に向けたミドルウェアの試作
  • 自動プログラム修正のためのスクリーニング処理に向けたソフトウェアメトリクスの提案
  • 実行されない文に着目したプログラム欠陥限局手法の提案
  • 模範解答を用いたコンパイルエラー出力法の高度化に関する研究
  • Pythonにおけるオブジェクト列への集約リファクタリングの提案
  • ビジュアル言語からテキスト型言語へのイベント処理の移行を支援する仕組みの提案
  • デザインレシピに基づくプログラミング学習をガイドするシステムの提案
  • プログラミング教育における模範解答を用いたコンパイルエラー出力法
  • プログラミング学習のための入れ子構造を表現できる構文図式の提案
  • クラス名における命名バグの検出手法
  • 自動プログラム修正におけるスクリーニング手法に関する研究
  • 全探索を用いたスケッチによるSQL文の自動生成
  • TimescaleDBの分散データベース化に関する研究
  • CMSと連携可能なCSSのライブ編集における編集結果保存方法の実現
  • RxJavaを用いたObserverパターンの書き換え手法
  • リアクティブプログラミングにおける実行履歴可視化手法の評価
  • 3Dオブジェクトの滑らかな操作を実現するJavaScriptフレームワークの提案
  • CMSと連携可能なCSSのライブ編集手法に向けて
  • ねらいに基づいたプログラミング教育のための支援手法