研究課題/領域番号 |
22K12320
|
研究種目 |
基盤研究(C)
|
配分区分 | 基金 |
応募区分 | 一般 |
審査区分 |
小区分62030:学習支援システム関連
|
研究機関 | 玉川大学 |
研究代表者 |
塩澤 秀和 玉川大学, 工学部, 教授 (80328533)
|
研究分担者 |
田中 昂文 玉川大学, 工学部, 講師 (30851274)
|
研究期間 (年度) |
2022-04-01 – 2025-03-31
|
研究課題ステータス |
交付 (2022年度)
|
配分額 *注記 |
4,290千円 (直接経費: 3,300千円、間接経費: 990千円)
2024年度: 1,170千円 (直接経費: 900千円、間接経費: 270千円)
2023年度: 1,560千円 (直接経費: 1,200千円、間接経費: 360千円)
2022年度: 1,560千円 (直接経費: 1,200千円、間接経費: 360千円)
|
キーワード | プログラムの可視化 / 関数型プログラミング / プログラミング学習支援 / ソフトウェア可視化 / プログラム可視化 / プログラミング教育 / ビジュアルプログラミング / 学習支援システム |
研究開始時の研究の概要 |
関数型プログラミングは、コンピュータで行う処理を、副作用のない「数学的な意味での関数」によって記述するものである。これは、記述の簡潔性など大きな利点がある反面、抽象度が高く習得が難しいとされてきたが、近年、開発者にとって必要な知識となりつつある。本研究では、関数型プログラミングのための視覚的な学習教材の開発を目標として、初学者にとって理解が難しいとされるプログラムの動的な振る舞いを可視化する手法を開発する。具体的には、キャラクターの画像や実物のロボットを動かすといったプログラミング学習支援の知見を応用し、関数型プログラミングの各機能に関して、親しみやすく理解しやすい可視化手法を開発する。
|
研究実績の概要 |
関数型プログラミングは、コンピュータで行う処理を、副作用のない「数学的な意味での関数」によって記述するものである。これは、記述の簡潔性など大きな利点がある反面、抽象度が高く習得が難しいとされており、実際の開発ではあまり採用されてこなかった。しかし、近年では従来型のプログラミング言語にも、関数型の構文や機能が取り入れられるようになり、その知識は開発者にとって必要なものとなりつつある。そこで、本研究では、関数型プログラミングの初学者にとって特に理解が難しいとされるプログラムの動的な振る舞いを可視化する手法を開発し、評価することを目的とする。 初年度では、まず関数型プログラミングの学習支援において、可視化すべき機能や概念について必要な要件を整理した。そして、それをもとに関数型プログラミングの中でも代表的な機能である高階関数と遅延評価に関する可視化を提案した。高階関数とは、別の関数をその引数や返り値として扱う関数のことであり、遅延評価とは、プログラム内で値が必要になったときに初めて式や関数が実際に評価される評価方法である。 試作したソフトウェアは、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#といった従来型のプログラミング言 語の使用者が、関数型プログラミングの個別の機能を学ぶといった用途も考慮する。この段階で、ユーザによる評価を行いたい。 最後の段階では、実際のプログラムのソースコードを自動的に解析して、可視化アプリケーションに渡すプログラムを作成し、それをデジタル教科書や統合開発環境に組み込み、学習者の使用状態からその有用性を評価する。例えば、ユーザが教科書に記述されたソースコードや自分が統合開発環境で開発しているソースコードの一部を選択すると、その部分で使われている機能を判別して、それに対応した動的な可視化のアニメーションを表示するようなことを構想している。最終的な成果は論文としてまとめて発表したい。
|