C4-3

プログラミング課題の文章問題を対象とした問題解決過程のモデル化と学習支援環境の提案
Modeling of Problem-Solving Process and Proposal of Learning Support Environment for
Text Problems in Programming Assignments
白髭 虹輝*1, 松爲 泰生*2 東本 崇仁*3
Koki SHIRAHIGE*1, Taiki MATSUI*2, Takahito TOMOTO*3*1 千葉工業大学大学院情報科学研究科*1Graduate School of Information and Computer Science, Chiba Institute of Technology*2 東京工芸大学大学院工学研究科*2Graduate School of Engineering, Tokyo Polytechnic University*3 千葉工業大学情報科学部*3Faculty of Information and Computer Science, Chiba Institute of Technology
Email: s2381022nq@s.chibakoudai.jp
あらまし：プログラミング学習では，文章題により要求が与えられ，学習者は要求を満たすプログラムを作ることが求められる．しかし，どのように要求を満たすプログラムを作ればよいかが分からない学習者が存在する．また，そもそも文章題から要求を満たすプログラムをどのように作ることができるのかという問題解決過程についても暗黙的である．そこで本研究では，力学などの問題解決過程を参考に，プログラミングの文章課題における問題解決過程をモデル化し，モデルに沿った学習支援方法の提案を行う．
キーワード：プログラミング，定式化，問題解決過程，ソースコード，文章問題

1.

はじめに

プログラミング学習では，問題文の要件を満たすソースコードを作成する文章問題がよく出題される．
この文章問題を解く際，学習者は問題文の情報を整理し，要件を満たすために必要な処理を思考してから，ソースコードを構築することになる．しかし，通常の授業では，最終的な結果であるソースコードのみを評価することが多く，そのため，学習者がどのような過程で躓いているのかを把握できず，学習者の状態に応じた支援を行うことはできない．
そこで，本稿では数学や力学の領域で平嶋ら(1)がモデル化した文章問題の問題解決過程を活用し，プログラミング課題における問題解決過程のモデル化と，モデルに沿った学習支援方法の提案を行う．

2.

関連研究

2.1 数学や力学における問題解決過程
数学や力学の領域で平嶋ら (1)は，問題文から解である目標構造を作成する過程として，問題解決過程をモデル化した．この問題解決過程は，表層構造作成過程，定式化過程，解導出過程の三つに分かれている．表層構造作成過程は，問題文の中にあるオブジェクトと属性の関係を表す表層構造を生成する過程である．定式化過程は，表層構造に数量関係を適用した定式化構造を生成する過程である．解導出過程は，定式化構造に数量関係を用いた変換を行い，解である目標構造を生成する過程である．また，解導出過程で目標構造を生成するまでの一連の数量関係を表したものを解法構造としている．解法構造に含まれている数量関係については，問題が対象としている状況に対して，一部のものにすぎず，問題の状況におけるすべての数量関係を表現したものを制約構造としている．
2.2 問題解決過程のプログラミング領域への応用
白髭ら(2)は平嶋らがモデル化した問題解決過程を活用し，プログラミング課題における解法構造を構築させる学習支援システムを開発した．白髭らは，問題文に存在するオブジェクトと属性の関係を表現する構造を定式化構造と定義した．そして，属性と属性を構成する関係式を表現する構造を制約構造と定義した．また，属性と関係式を使用し，解を求める一連の流れを表現した構造を解法構造と定義した．
白髭らはこの 3 つの構造を学習者に順に作成させる，プログラミング課題の文章問題における解法の理解を促す学習支援システムの開発を行った．
しかし，白髭らのシステムでは平嶋らの構造をプログラミング領域に適用するにとどまっており，問題文によって与えられる情報から，どのように要求を満たす構造を作ることができるかまでしか扱えていない．そのため，具体的に要求を満たす構造をどのようにソースコードに変換するかというプロセスは扱えていなかった．

3.

プログラミングの文章課題の問題解決過程

本稿では，平嶋ら(1)がモデル化した問題解決過程を活用し，プログラミング課題における問題解決過程をモデル化した．
図 1 に本稿で提案するプログラミング課題の文章問題における問題解決過程を示す．図 1 中の問題が対象としている領域の枠内は平嶋らの問題解決過程― 259 ―

教育システム情報学会 JSiSE2023
第48回全国大会 2023/8/29-8/31と同一である．本稿では，この過程に対して，制約構造を操作構造に変換する過程と，操作構造と解法構造から処理構造を導く過程を追加した．操作構造とは，制約構造において記述された数量関係を導くための具体的な操作を記述した構造である．通常物
理などでは，F=ma などの数量関係が存在するとき，F や m が既知であれば，a の値を求める操作は自明である．しかし，プログラミングの場合は，「a と bのうちの大きい方の値が c となる」という数量関係が判明しても，その操作は自明ではない．そこで，このような数量関係に対して，「if a>b then c=a else
c=b」などの操作を対応付けた関係が操作構造である．
この操作構造は，いわゆるプログラミング領域におけるライブラリ関数のように一定の領域で使える問題独立な形で記述できることから，制約構造と同様の層と見なすことができる．次に，文章題により既知あるいは入力を想定される値から，求めるべき値を求めるための過程を記述したものが解法構造であるが，この解法構造は定式化構造に制約構造が組み合わされたものであり，具体的な操作は暗黙的である．そこで，解法構造における数量関係に操作構造を適用したものが処理構造である．この処理構造が作られることで，学習者はソースコードを構築することができる．ている要件を満たす具体的な操作を作成する．
図 3 に処理構造作成画面を示す．処理構造作成画
面では，システムが処理部分について暗黙的な解法構造と，学習者が操作構造で求めた具体的な操作を提示する．学習者は提示された具体的な操作を選択し，解法構造の処理部分に入れることにより，プログラミング課題の文章問題の解を表す処理構造を作成する．例えば，図 3 では，a と b から矢印が出ている．そして，学習者が操作構造で作成した具体的な操作を介して c に向かって矢印が出ている．これは，a と b を使用し，操作構造で学習者が作成した具体的な操作を用いることによって，c を求めることができることを表している．

図 2 操作構造作成画面

図 3 処理構造作成画面

5.

図 1 プログラミング課題の文章問題における問題解決過程

4.

提案システム本提案システムは，定式化構造作成画面，制約構造作成画面，解法構造作成画面，操作構造作成画面，処理構造作成画面の 5 つの画面に分かれている．本稿では，操作構造作成画面，処理構造作成画面について説明する．
図 2 に操作構造作成画面を示す．操作構造作成画
面では，システムがソースコードのひな型と，制約構造で学習者が求めた処理を提示する．学習者はひな型を使用し，当てはまる値や変数を選択することで，制約構造で求めた処理を具体的な操作に変換した構造である操作構造を作成する．例えば，図 2 でシステムは「a と b のうち，値が大きい方を c に代入する」を構成するコードを作成してくださいと表示している．学習者はひな型を選択し，ひな型に当てはまる変数を入力することで，システムが提示しおわりに本稿では，プログラミング課題の文章問題における問題解決過程をモデル化し，モデル化した問題解決過程に沿った学習方法の提案を行った．
今後の課題として，提案した学習方法にもとづいたシステムを開発し，開発したシステムの学習効果について評価を行うことが挙げられる．

謝辞
本 研 究 の 一 部 は JSPS 科 研 費 JP22K12322 ，
JP21H03565，JP20H01730 の助成による．
参考文献(1) 平嶋宗, 東正造, 柏原昭博, 豊田順一:“補助問題の定式 化 ” , 人 工 知 能 学 会 誌 , Vol.10, No.3, pp.413-420（1995）(2) 白髭虹輝, 松爲泰生, 東本崇仁:“プログラミングの文章問題を対象とした定式化による解法の理解を促す学習支援システムの開発・評価”, 教育システム情報学会特集論文研究会, vol.37, No.7, pp.1-8 （2023）― 260 ―