研究課題/領域番号 |
22K12320
|
研究機関 | 玉川大学 |
研究代表者 |
塩澤 秀和 玉川大学, 工学部, 教授 (80328533)
|
研究分担者 |
田中 昂文 玉川大学, 工学部, 講師 (30851274)
|
研究期間 (年度) |
2022-04-01 – 2025-03-31
|
キーワード | プログラムの可視化 / 関数型プログラミング / プログラミング学習支援 / ソフトウェア可視化 |
研究実績の概要 |
関数型プログラミングは、コンピュータで行う処理を、副作用のない「数学的な意味での関数」によって記述するものである。これは、記述の簡潔性など大きな利点がある反面、抽象度が高く習得が難しいとされており、実際の開発ではあまり採用されてこなかった。しかし、近年では従来型のプログラミング言語にも、関数型の構文や機能が取り入れられるようになり、その知識は開発者にとって必要なものとなりつつある。そこで、本研究では、関数型プログラミングの初学者にとって特に理解が難しいとされるプログラムの動的な振る舞いを可視化する手法を開発し、評価することを目的とする。 初年度では、まず関数型プログラミングの学習支援において、可視化すべき機能や概念について必要な要件を整理した。そして、それをもとに関数型プログラミングの中でも代表的な機能である高階関数と遅延評価に関する可視化を提案した。高階関数とは、別の関数をその引数や返り値として扱う関数のことであり、遅延評価とは、プログラム内で値が必要になったときに初めて式や関数が実際に評価される評価方法である。 試作したソフトウェアは、filter、map、foldlの3つの高階関数の処理の流れをアニメーションを用いて動的に可視化し、対応するHaskellのソースコードを生成する。本可視化では、関数をノードではなく水平な線分として表現し、関数の評価はノード間の静的な線の接続ではなく、引数が線分をまたいで上から下に移動するアニメーションで表現する。遅延評価では、評価処理が行われた引数だけが移動する。 本研究の途中成果は、国際会議RISP NCSP 2023において、「Dynamic Visualization of Basic High-Order Functions for Learning Functional Programming」というタイトルで発表した。
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
3: やや遅れている
理由
初年度の研究では、関数型プログラミングの中でも代表的な機能である高階関数とそれに関する遅延評価の可視化において、従来の関数型プログラミングの可視化では難しかった高階関数と遅延評価に関する「動的」な可視化方法を考案し、試作ソフトウェアを開発することができた。これは、関数型プログラミングの学習支援において役立つ新規性のある提案であると考えている。 しかしながら、本研究の目指すもう1つの柱である「親しみやすい可視化」という点においては、さらなる工夫が必要である。計画調書においては、本研究の独自性と創造性として「学習者に対する親しみやすさと理解しやすさを重視し、キャラクターのアニメーションを用いるような、より具体的な可視化手法を実現する」と言及している。これを実現するべく、関数型プログラミングの学習にふさわしい要件と、キャラクターのアニメーションを用いるような可視化手法の検討を進める必要がある。
|
今後の研究の推進方策 |
今後さらに関数型プログラミングのプログラミングスタイルや純粋な関数型プログラミング言語について調査を続け、可視化すべきそれぞれの機能や概念について、 初学者のために可視化する上で必要な要件を整理する。特に、従来型のプログラミング言語の経験はあるが関数型プログラミングの経験が少ないユーザからの意見を調査しながら、各機能に対して直感的で親しみやすい(例えば、キャラクターアニメーションを用いるような)可視化手法を検討する。 各機能の可視化手法は、それぞれユーザがパラメータを設定して動的な可視化を表示できるアプリケーションとして実装し、各機能に関する可視化を集めて閲覧できる学習教材の形にまとめる。Processingで開発した試作ソフトウェアを元に、ユーザがWebページ上で関数型プログラミングの機能を選択し、入力欄に関数の引数などの値を設定すると、各機能の説明が親しみやすいアニメーションで可視化されるWebアプリケーションを開発する。その際は、Java、Python、C#といった従来型のプログラミング言 語の使用者が、関数型プログラミングの個別の機能を学ぶといった用途も考慮する。この段階で、ユーザによる評価を行いたい。 最後の段階では、実際のプログラムのソースコードを自動的に解析して、可視化アプリケーションに渡すプログラムを作成し、それをデジタル教科書や統合開発環境に組み込み、学習者の使用状態からその有用性を評価する。例えば、ユーザが教科書に記述されたソースコードや自分が統合開発環境で開発しているソースコードの一部を選択すると、その部分で使われている機能を判別して、それに対応した動的な可視化のアニメーションを表示するようなことを構想している。最終的な成果は論文としてまとめて発表したい。
|
次年度使用額が生じた理由 |
本研究に関連する研究プロジェクトの立ち上げが、所属大学の研究科における1年間の助成対象として認められたため、プロジェクトの関係の整理および予算配分の調整が必要となった。そのような経緯で、両方のプロジェクトの共通の基盤の整備を優先として、そのための機材等の購入には所属組織の予算を使用した。それにともない、本研究課題に関する研究は進めつつも、それに直接関係する機材等の購入については次年度以降に研究費を使用するという対応をとった。また、新型コロナウイルス対策の影響によって、令和4年度は依然としてほとんどの学会がオンライン化されていたため、数十万円を予定していた旅費の支出が不要であった。 次年度は、当初の計画に基づき、コンピュータグラフィックスの処理性能が高く、アニメーション等の動画編集もストレスなく行えるような開発環境(PCおよび周辺機器)を購入する予定である。また、開発したソフトウェアをユーザである学生のPCで実行し、その使用ログを収集、管理するためのサーバーマシンも購入する予定である。さらに、新型コロナウイルス対策の影響によって令和4年度には参加しなかった学会の参加費および旅費などとしてを使用する予定である。
|