はじめに
B4の古賀です。 1/22~1/23に伊豆大島で開催されたCN121で「Repro4PDE: コード編集後に動作と操作を任意の地点に復元可能な開発システムの実現」というタイトルで発表してきたので報告です。
研究概要
TL;DR
プログラムの動作確認支援システムに関する研究です。プログラムを修正した後、動作確認のために再実行する時、通常プログラムは最初から実行されます。そのため実行に時間が掛かるアニメーションプログラムであれば動作確認したい位置までプログラムが進むのを待ったり、インタラクティブなプログラムであればマウスやキーボード操作を行う必要があり手間です。ReactやVue.jsなどのWebフロントエンドフレームワークはホットリロード機能があり、この問題を一部解決していますが、Processingのような毎フレームユーザーが定義した関数が呼び出されるアニメーション作成フレームワークにはこの問題を解決するツールがありません。
そこでこの研究では、プログラム修正後の再実行時に前回のアニメーションや操作の状態を復元する手法を提案し、ツールとして実装するとともに、有用性を検証しました。
GitHubにソースコードとインストール方法の説明があるのでぜひ使ってみてください。
システム
システムはメディアプレイヤーのようなUIを持っており、再生/一時停止をしたり、シークバーによって実行位置を巻き戻したり、マウスホバーで特定の位置の画面プレビューを確認することができます。また、プログラムを変更したら自動でプログラムを再起動し、状態を復元します。
状態復元については、アニメーションプログラムの「実行時間の大半を描画処理が占める」という特性を活かして、特定の位置まで変数の値の更新など(図の青)の処理のみを実行し、描画処理など(図の黄)は実行を省略するという方法で行っています。この際に事前に記録しておいたマウス・キーボード操作や、乱数のシード値も再現しています。
この方法で大半のプログラムは実行開始60秒の位置まで1秒程度で状態復元できるので十分実用的かなと考えています。
実験・結果・考察
実験は指定したプログラムを作る課題を状態復元あり群・なし群それぞれ5人ずつに3問解いてもらいました。結果は、アニメーションプログラムの細かいパラメータを調整するという課題に関しては所要時間の改善や、動作確認回数の向上が見られましたが、インタラクティブなプログラムを作成する課題に関しては正答率が減少してしまいました。
これは「操作を再現する」という機能の動作の分かりにくさ(今回の実験参加者は全員システムを初めて使う人だったので特に使うのが難しかった)や、実験に使った課題が適切ではなかった可能性などが考えられます。これを解決するにはシステムの改善はもちろん、システムに慣れてもらうために長期実験も必要であると考えています。
発表スライド
書誌情報
感想
天候の問題で船が運行するか怪しかったので、行きは学会前日の朝の船で行く予定が急遽前々日の夜の船に乗ることになり、帰りも夕方帰る予定が午前中に帰ることになり、なかなか大変でした。去年の淡路島のGNも悪天候で2日目の午後が中止になったので冬の島って怖いですね…
行きの船の特🤔🤔🤔2等席🤔🤔🤔です。オモッテタノトチガッタ
夕日綺麗〜。
みんなでカレー作りました。
今回は観光はできませんでしたが、船で2時間弱でつくので(思ってたより近かった)また行ってもいいかもしれませんね〜。
最後に、研究の相談や発表練習、実験などに協力してくれた中村先生と研究室の人々ありがとうございました!!
ピンバック: 中村研究室 2023年度の成果 – 中村聡史研究室