P1-18

プログラミングを対象とした振舞いモデルから機能の解釈を支援するシステムの開発
Development of A Support System in Interpretation Function
from Model of Behavior in Programming松爲 泰生*1, 前田 新太郎*2 , 古池 謙人*3, 東本 崇仁*4
Taiki MATSUI*1, Shintaro MAEDA*2, Kento KOIKE*3, Takahito TOMOTO*4*1
東京工芸大学大学院工学研究科*1
Graduate School of Engineering, Tokyo Polytechnic University*2
千葉工業大学大学院情報科学研究科*2
Graduate School of Information and Computer Science, Chiba Institute of Technology*3
京都大学 学術情報メディアセンター*3
Academic Center for Computing and Media Studies, Kyoto University*4
千葉工業大学情報科学部*4
Faculty of Information and Computer Science, Chiba Institute of Technology
Email: m2265013@st.t-kougei.ac.jp
あらまし：プログラミング学習においては，一連の有意味なまとまり単位でコードを知識として獲得することが重要である．たとえば，For 文や if 文などのプリミティブな部品だけでなく，「c=a,a=b,b=c」の3 行のコードのまとまりが「Swap」という機能の実現を理解することが知識を熟達するために有益である．この 3 行が「Swap」という機能を実現することを理解するためには，各行で何が起きているかを理解し，全体として何が起きているかという振舞いを理解することが大切である．この振舞いの規則性を理解することが機能を理解することにつながるといえる．本稿では，ソースコードにより引き起こされる振舞いから，その規則性（本稿では振舞いモデルと呼ぶ）を学習者に考えさせ，振舞いモデルから機能モデルを学習者に導出させる学習方法を提案し，その支援システムを開発した．
キーワード：プログラミング学習，ソースコード，振舞い，振舞いモデル，機能，機能モデル

1.

はじめに

通常のプログラミング学習では，教科書等の問題文から，入力値から一定の要求を満たす出力値を生成するコードの構築を求められることが多い．この要求を満たすには，入力値がどのような変遷を経て要求された出力値となるかの遷移（以下，振舞い）を意識させることが必要になる(1)．入力値と出力値がどのような関係性になるべきであるかという規則性を本研究では振舞いモデルと呼ぶ．筆者らは学習者に振舞いモデルを思考させるためには，複数の種類の振舞いを観察させ，学習者が振舞いの規則性を見出す必要があると考えている．
筆者らはこれまでに，学習者にコードと機能の関係性の学習を支援するために振舞いを観察させる手法を提案してきた(2)．しかし，複数の振舞いがどのような規則性を満たすかについての振舞いモデルについては扱ってきておらず，また，振舞いモデルのうちどの規則性がどの機能に関連づいているかについては扱って来なかった．
そこで，本研究では笹島ら(3)が開発した Function
and Behavior Representation Language （以下，FBRL）を参考にした．笹島らはあるデバイスにおける振舞いが満たす規則性を振舞いモデルとして定義した．
さらに，振舞いモデルのうちどの部分に着目するかで機能解釈を行うための Functional Topping（以下，FT）を提案している．筆者らは FBRL の諸理論をもとに，プログラミングを対象としたコードの機能を解釈するために必要な振舞いモデルと，振舞いモデルのどの部分に着目するかにより機能を解釈する方法を提案する．さらに，本手法に基づく学習支援システムを開発する．

2.

提案手法

筆者らは笹島らが提案した振舞いモデルや FT-Setをプログラミングに適用しようと試みた（表 1）．
表 1 は「c=a, a=b, b=c」という 3 行のソースコードが持つ振舞いモデルや，解釈しうる機能に対してFT-Set を記述した例である．表 1 の QN-Relations は，変数間の入出力の制約関係について記述したものである．このコードにおける Obj4(a_Out)の変数 a の出力値は，Obj2(b_In)の変数 b の入力値と等しいという制約関係（規則性）を持ち，同様に Obj5(b_Out)= Obj1(a_In) , Obj6(c_Out) = Obj1(a_In)という制約関係を持つ．これが本コードにおける振舞いモデルの一部である．
次に，FT-Set について説明する．この 3 行のソースコードは，Obj1(a_In) , Obj4(a_Out) , Obj2(b_In) ,Obj5(b_Out)に 注 目 す る と き ，QN-Relations のObj4(a_Out) = Obj2(b_In) , Obj5(b_Out) = Obj1(a_In)という二つの制約構造に着目することになる．一連の振舞いの規則性のうち，この二つの規則性に着目するとき，値が入れ替わっているという機能を導くこ― 73 ―

教育システム情報学会 JSiSE2023
第48回全国大会 2023/8/29-8/31とができる．本稿では，このような一連の流れに従って，複数の振舞いから学習者に(1)振舞いの規則性を記述させる活動と，(2)抽出した振舞いのうちどの規則性に注目するとどの機能が解釈されうるかを認識させる活動，を学習手法として提案する．

ステムは「変数 a と b の値を交換する機能」ではな
く「変数 b に代入する機能」とフィードバックする．

表 1 プログラミングにおける振舞いモデル・FT のテンプレート

Behavior

属性

定義

Objects

変数の集合

Ports
QNRelations

FTsets3.

FTset1

P-Focus

FTset2

・・・

変数の接続
関係
変数間の入出力の制約関係解釈に注目する
変数例
Obj1(a_In),Obj2(b_In),
Obj3(c_In)Obj4(a_In),
Obj5(b_In),Obj6(c_In)
In1,In2,In3,
Out1,Out2,Out3
Obj4(a_Out)<=Obj2(b_In)
Obj5(b_Out)<=Obj1(a_In)
Obj6(c_Out)<=Obj1(a_In)

図 1 制約解答画面のフィードバック

Obj1, Obj2,Obj4, Obj5

・・・

開発したシステム

開発したシステムは振舞い確認画面，制約解答画面，振舞い解釈画面の順に構成されている．振舞い確認画面では，システムが表示したコードと複数の種類の DataSet を学習者は確認する．DataSet とは、コード内にある変数と変数の初期値(入力値)と最終値(出力値)を表示したもので，振舞いを確認するために必要な内容が用意されている．
制約解答画面では，振舞い確認画面で確認した振舞いから各変数が，どのような規則で振舞いを行っているのか，学習者は振舞いの制約を解答する．学習者の解答が誤りの場合，システムは振舞い確認画面を表示し，各 DataSet 内にある変数の最終値は学習者が解答した振舞いの制約を満たしているのか判定する．判定の結果システムは，学習者の解答した振舞いの制約を満たしている値はそのまま表示し，満たしていない値は赤く表示してフィードバックする．図 1 場合，学習者は解答した振舞いの制約の中で，変数 a の制約を「変数 c の初期値より小さい値になる」と解答している．この場合，システムは振舞い確認画面で学習者に DataSet を確認させる．その際に，システムは学習者が解答した振舞いの制約に違反している内容として，変数 a の最終値より変数 c の初期値のほうが大きい値を赤く表示する．
振舞い解釈画面では，学習者はシステムが表示している機能を解釈するため，制約解答画面で解答した振舞いの制約を活用する．具体的には，学習者は機能を解釈するため，必要な振舞いの制約を選択する．学習者が選択した振舞いの制約から表示している機能を解釈できなかった場合，システムは不正解と表示せず，学習者が選択した振舞いの制約から解釈できる機能を表示してフィードバックする．図 2
では，学習者は「変数 a と b の値を交換する機能」を解釈するために「制約 1：変数 a の最終値は b の初期値になる」のみを選択している．この場合，シ図 2 振舞い解釈画面のフィードバック

4.

おわりに

本稿ではコードと機能の関係性を学習する手法に則り学習を支援するシステムを開発した．今後の課題として，提案した学習支援システムを用いて，提案した学習法の有効性を検証するため，評価実験を行うことが挙げられる．

謝辞
本 研 究 の 一 部 は JSPS 科 研 費 JP22K12322，
JP21H03565，JP20H01730 の助成による．
参考文献(1) 古池謙人, 東本崇仁, 堀口知也, 平嶋宗, “プログラミン
グ学習における再利用性を指向した知識組織化のための知的支援機能・振舞い・構造の観点に基づく問題解決過程のモデル”, 人工知能学会論文誌, Vol. 35,
No. 5, pp. C–J82, 1-17, (2020)(2) 松爲泰生, 前田新太郎, 古池謙人, 東本崇仁, “ソースコ―ドの振舞いモデルから機能の解釈を促す支援シス
テムにおけるフィードバックの検討”, 電子情報通信学会技術研究報告(ET), Vol. 122, No. 241, pp. 29-34,(2022)(3) 笹島宗彦, 來村徳信, 池田満, 溝口理一郎, “機能と振舞いのオントロジーに基づく機能モデル表現言語
FBRL の開発”, 人工知能学会誌, Vol.11, No.3, pp.420431, (1996)― 74 ―