研究課題/領域番号 |
15K01075
|
研究機関 | 香川大学 |
研究代表者 |
香川 考司 香川大学, 創造工学部, 准教授 (50284344)
|
研究期間 (年度) |
2015-04-01 – 2020-03-31
|
キーワード | e-ラーニング / Webアプリケーション / プログラミング |
研究実績の概要 |
HaskellのC言語パーサーライブラリーであるlanguage-c-quoteを利用して、C言語のソースファイルにプログラム可視化のための改変をおこなうプログラムを作成し、これと2017年度より開発しているWappenLiteDocker(Docker (https://www.docker.com/) を利用してプログラミング言語処理系やコンパイルされたプログラムを実行するためのWebアプリケーションプログラム)を組み合わせたWebベースのC言語プログラム可視化システムを作成した。 Blockly(ブロック方式のビジュアルプログラミングエディター)に対して、Haskellに対応したいくつかのブロックとソースプログラム生成器を実装した。また、PythonとJavaScriptのジェネレーター関数に対応したブロックを実装した。 教師やTAがタブレットなどからソースコードにコメントを入力するためのシステムでは、拡張性を考慮し、サーバー側で動作するパーサーをJava言語で実装されたEclipse CDTライブラリーによるパーサーから、Haskellで実装されたlanguage-c-quoteライブラリーによるパーサーに切り替えた。 Docker, JVM以外のプログラム実行方式の選択肢として、Kotlin/JS, TeaVM(JavaクラスファイルからJavaScriptへのコンパイラー)などを利用して、JavaScriptに変換されたコードを利用するWebアプリケーションを実装した。
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
3: やや遅れている
理由
WappenLiteDockerに関しては、今年度実際に授業で使用できると考えていたが、いくつかの理由で提供できていない。まず、DockerサーバーをクライアントPC側で実行する方式では負荷が集中しないため動作が安定しているものの、DockerサーバーをWindowsにインストールすることは一般的でないため、授業などで大々的に使用することはできていない。一方で、Dockerサーバーをサーバーコンピューター側で実行する方式では、負荷がある程度かかったときにWappenLiteDockerに不具合が発生しており、やはり授業での使用を見合わせている。 Blocklyを利用したUIに関しては、手続き(procedure)定義に類似したブロックに対するメニューを定義する方法がわからなかったため、HaskellやPrologなどの言語でいくつかのブロックが用意できなかったが、現在のバージョンのBlocklyではドキュメントが整備され方法が明らかになった。 教師とTAのコメントの入力を支援するためのシステムについては、サーバー側の実装言語をJavaからHaskellに切り替えていたため、新しい機能の実装が止まっていたが、切り替えが完了したため、クライアント側の機能の実装に着手する。
|
今後の研究の推進方策 |
WappenLiteDockerについては、負荷がかかったときの不具合を解消するために改良と小規模な実験を繰り返す必要がある。またステートレスなサービスを利用できる部分はできるだけ切り分けて、できるだけWappenLiteDockerの負荷を避けられるようにする、JavaScriptをターゲットとする処理系を利用したシステムをできるだけ活用する、Windows Subsystem for Linuxを活用したDockerのWindowsへのインストールを推進する、などいくつかの方策を並行して提供し、授業で使用できるようにする。授業としては学部・大学院で担当しているものほか、教員免許状更新講習でも一部を使用する予定である。 Blocklyを利用したUIに関しては、引き続きHaskell, Prologなどの言語用のブロックとソースプログラム生成器の実装を増やしていく必要がある。また、パーサーを利用したC言語用のカスタムブロックの生成についても実装を続け、小さな画面でも利用できることを実験で確認したい。
|
次年度使用額が生じた理由 |
側言語処理系実行環境の主力をJava仮想機械ベースから2017年度から開発したDockerベースのものに切り替えたことによる遅れなどにより十分な成果が得られなかった。 また、ほとんどが国内で開催される国際会議での発表となったため、旅費の使用が少なかった。
次年度はサーバーとして利用できるPCを購入する。システムの更新を容易にするために複数台用意する予定である。機種としては大学外の授業などでも利用できるよう、持ち運んでサーバーとして利用できるSmall Form Factor PCまたはLinuxを搭載したノートPCを購入する。カスタムブロックを利用したシステムの実験のため、小さめの画面のスマートデバイスでiOSとAndroidプラットフォームのものを購入する予定である。
|