プログラミング学習を対象とした課題系列の拡張
Study of Expanding a Task Sequence for Programming Learning
古池 謙人
1東本 崇仁
1堀口 知也
2平嶋 宗
3Kento KOIKE
1, Takahito TOMOTO
1, Tomoya HORIGUCHI
2and Tsukasa HIRASHIMA
3 1東京工芸大学工学部
1
Faculty of Engineering, Tokyo Polytechnic Univeristy
2
神戸大学大学院海事科学研究科
2
Graduate School of Maritime Sciences, Kobe University
3広島大学大学院工学研究科
3
Graduate School of Engineering, Hiroshima University
Abstract: In this research, we aim to build stepwise task sequences in programming. In the previous
research, we pointed out the existence of processing, behavior, and function relationships in the properties of the task in programming, and tried to create a task sequences using those properties. In this paper, we verified the construction method by constructing a new plural task sequences based on the method of constructing the task sequences prototyped in the previous research. Moreover, we showed that it is possible to migrate tasks in multiple task sequences.
1.はじめに
一般に,プログラミング学習支援の場では容易な 課題から徐々に難易度の高い課題を解かせることで 学習が支援されている.こういった連続的な課題に おいて,学習者に提示される課題の順番や粒度,ま た,課題そのものに対応する解法の実行過程など, 課題の性質についての議論は重要である. 通常,問題解決における解法の実行過程では複数 回の演算操作が行われているが,多くの学習者は 個々の演算操作の目的については意識しない.その ため,個々の演算操作の実行についての根拠を理解 する重要性が平嶋らによって指摘されている[1].学 習支援の中で,学習者に対して個々の演算操作につ いての深い認識を行わせるためには,個々の演算操 作の違いに気づきを与える必要がある.そのために, 漸進的学習が有効であることが知られている.漸進 的学習とは,学習者に与える課題を,以前に学習し た課題を包括し発展された状態で段階的に課題を与 えるものであり,個々の演算操作が組み合わさるこ とによる影響を理解するためのアプローチである. 物理演習を対象とした漸進的学習の研究では,こ のような段階的な課題系列をデザインするために ICM(Increasingly Complex Microworlds)と呼ばれる 学習支援法がある.ICM とはシミュレーションに基 づく学習において単にある現象を体験し理解させる だけでなく,その現象を徐々に複雑なものとしてい くことで,より複雑な現象の理解へと繋げていく手 法である.このICM を基に,東本らはマイクロワー ルドグラフ(Graph of Microworlds: GMW)という枠 組みを提案している[2].GMW では,徐々に現象を 複雑にしていくだけでなく,徐々に体験していく現 象間の差分を明示的にして学習者に与えることで, 学習者の現象間の移行を支援している. こういった,物理演習におけるGMW のような枠 組みは,プログラミングにおいても学習者に与える 課題を議論する上で重要であると考える.そのため 本研究では,プログラミング学習を対象とした段階 的な課題系列の性質,構築手法について検討を行っ ている[3].本稿では,これらの課題系列を対象範囲 を広げ複数構築し,拡張した.この課題系列の拡張 によって,(1)他の課題系列の構築が同様に構築可能 か,(2)複数の学習対象間における課題の移行が可能 かについて議論する.2.先行研究
連続的な課題を用いた学習支援として,渡辺らの 研究[4]がある.渡辺らは,これまでに段階的抽象化 という手法を用いて,コード全体を学習者に与えて, 人工知能学会研究会資料 SIG-ALST-B509-02段階的に読む手法を提案している.例えば,(1)c に a を代入,(2)a に b を代入,(3)b に c を代入,という 3行からなるプログラムでは,行ごとで認識すると 単なる代入の繰り返しであるが,3 行をまとめて認 識し,その意味を考えることで「2 変数の入れ替え」 といった部品としての役割に気付くことができる. 学習者がこの部品に気付くと,先述の3 行の先頭に, (4)a が b より大きいとき,という if 文が追加された プログラムが全体として提示されたとき,「2 変数の 入れ替え」という部品を含むプログラムであること に気付くことができる.そのため,学習者は「2 変数 の入れ替え」の部品に拡張されたif 文の機能のみに 注目することで拡張された部品の機能を理解するこ とができる.このように,プログラム全体を学習者 に与え,その全体から学習者が一連の操作だと考え る部分をまとめ,その意味を考えることを繰り返す ことで,段階的な部品の獲得を支援する手法である. 渡辺らはこの段階的抽象化において,連続的な課 題の重要性を主張している.連続的な課題を用いる ことで,ある課題が解けた学習者に対しては,その 課題の解法を包括し,発展された課題を段階的に提 示することが可能である.また,ある課題が解けな かった学習者に対して,より解法の小さい簡単化さ れた課題を補助問題として提示することで,学習者 の解法の理解を促す.よって,渡辺らはプログラミ ングにおいて課題系列の構築を行い,GMW のよう な課題の移行を支援している. 本稿では,渡辺らの課題系列を参考に,プログラ ミングにおける課題系列について議論する.
3.課題の構造化
課題系列を構築するためには,課題そのものの構 造化を必要とする.よって本章では,プログラミン グにおける課題の構造化について議論を行う.まず, 先行研究における問題点について指摘する.次に, 通常の問題解決プロセスとプログラミングにおける 問題解決プロセスの違いについて着目し,プログラ ミングにおける問題解決過程において課題化すべき 要素を議論する.最後に,課題化すべき要素を元に 課題の構造化と定義について述べる.3.1.先行研究における定義と問題点
渡辺ら[4]は課題を構造化するにあたり,(i)コー ドの目的,(ii)実際の処理(コード),(iii)課題の理 解状況を確認するためのタスクの3 つにわけて課題 が構成されている.また,課題同士は,一般―特殊 関係と,全体―部分関係によって関係付いており, 学習者の移行を支援している. 渡辺らの研究では,ある目的に対して一定の処理 を対応付けて議論している.しかし,ある目的を達 成する為の処理は本来複数存在し,一定の処理のみ では議論が十分ではない.複数の処理を目的と対応 付けて議論するには,ある目的を達成するための処 理の振る舞いについても議論する必要があると考え る.また,ある課題の目的を位置づけるためには, 全体の目的を要する.そのような場合には,ある課 題が他の目的で用いることができず,再利用性を持 たない.ある課題が再利用性を持つためには,目的 ではなくその課題が果たす機能について議論する必 要がある.よって本研究では,課題の持つ性質を機 能と振舞い,処理に分けて議論することで,課題に 再利用性を持たせることを志向した.3.2.問題解決プロセス
通常,問題解決過程では,初期状態にある操作系 列を与えることで目標となる終了状態を達成するこ とが求められる(図1). 物理における問題解決過程でも同様に,初期状態の 現象に対して操作系列を与えることで,終了状態の 現象を達成することが求められる.この際,初期状 態と終了状態に生じる差分は,ある操作系列の振舞 いとして観察される.例えば図2 では,物体 M が初 期状態と終了状態の間で右側に移動していることが わかる.この物体M の移動は,何らかの操作系列に よって生じた差分,つまり振舞いであるといえる. 物理においてこのような振舞いは,人間が意味付け を行うことで「等速運動」など,機能として解釈す ることができる.また,「等速運動」だけでなく,「右 向きの運動」,「摩擦のない運動」と解釈することも 可能である.つまり,振舞いから解釈できる機能は 一意に限定されず,その場の状況に応じて複数の解 釈が生じる. 物理における問題解決の中で課題の性質について 読み解く際に,「物体が糸ぶら下がっている / バネ でぶら下がっている」といった表層的な違いがある. これらは表層的に似たようにみえても,適用すべき 解法は大きく異なる.しかし,学習者はこのような 表層的な状況から課題の性質を判断し,同様の解法 を適用してしまう場合や,もしくは同じ解法を適用 できるはずの問題に別の解法を適用してしまう場合 が存在する.堀口らはこういった事例から,課題の 表面的特徴,つまり表層構造だけでなく,適切な原 理・法則を適用可能な構造的特徴,すなわち深層構 造を理解することの必要性を主張している[5]. 本研究で対象とするプログラミングでも,物理と同様に変数の初期状態に対してソースコードを操作 系列として与えることで目標となる終了状態が達成 される.この初期状態と終了状態におけるソースコ ード,すなわち処理がもたらした差分を振舞いとし て観察することができる(図3).こういった振舞い について,有意味なものは機能として意味づけて解 釈することが可能である.しかし,図3 における「c = a」のように,振舞いを過不足なく機能として解釈 することは難しい.すなわち,機能と振舞いは必ず しも対応してないのである.機能と振舞いが対応し ていない場合,学習者は機能のみの理解では表面的 な理解しか得られず,具体的にどのような操作系列 が適用されるべきかといった理解には繋がらない. よって,堀口らの指摘をもとに対応付けると,機能 の理解が表層構造の理解であり,振舞いや処理の理 解が深層構造の理解であると考える. 図1 ⼀般的な問題解決 図2 物理における問題解決 図3 プログラミングにおける問題解決
3.3.課題における基本概念
3 章 2 節から,課題には処理・振舞い・機能の 3 つ の性質が含まれることが分かった.本節では課題を 取り扱うために,処理・振舞い・機能のそれぞれの 性質を位置付けた上で,それらの関係性について議 論する. 3.3.1.処理 本研究における処理の定義は,初期状態と終了状 態の間に差分を生じさせている操作系列,つまりソ ースコードである.また,プリミティブな操作はス テートメントとして取り扱っており,代入文やif 文, for 文などの制御文がこれにあたる.また,課題にお ける処理の表現方法として独自の抽象言語を取り扱 っている.これは,本研究はプログラミング学習に おいて特定の言語に依存しない汎用的な理解を対象 としているためである. 3.3.2.振舞い 本研究における振舞いの定義は,変数の初期状態 と終了状態の間に生じている差分そのものである. ここでの変数は,for 文などのイテレータも含まれる. つまり,変数状態のグローバルやローカルなど具体 的なスコープを区別しない.変数の初期状態と終了 状態の差分は,その変数がどのような値でも,処理 を経て得られた終了状態に一定の法則性があると考 えられる.そのため,振舞いそのものは,入出力の 間における変数の変化から読み取れる制約の集合と して記述される.例えば図3 では,初期状態と終了 状態の間で必ず「a が b になる」,「b が a になる」, 「c が a になる」といった 3 つの制約が満たされて いる.しかし,こういった制約条件の観察はfor 文な ど再帰的な処理において,変数の入力状態に依存す ることで規定が困難になる.よって本稿では,段階 的な課題系列において振舞いの詳細な議論は行われ ていない. 3.3.3.機能 本研究における機能の定義は,ある一定の振舞い を目標に対する機能の系を想定して位置づけて解釈 したものである.笹島ら[6]も,振舞いを過不足なく 解釈したものではなく,一定の振る舞いを意味付け したものが機能であると述べている.一方で笹島ら は,最終的な目標を理解した上で振舞いを解釈した ものが機能であるという指摘をしている.つまり, 機能を部分として捉えた場合,より1つ上の構造が 全体として存在するときにはじめてその構造が部分 として意味を持つという指摘である.例えば,全体 の機能がスワップであったとき,「temp」は意味を持 つが,スワップ自体は意味を持たないということで ある.このような機能の取扱いは,系においてその 機能の位置付けが確かであるために,誤った機能の 位置付けがなされないという利点がある.しかし, ある全目標の系とその部分である機能が位置付くと, その機能は直接他の目標の系に再利用することが困 難になる.よって本研究では,機能はある目標と必 ず一対一で結びつくものではないと考え,機能ごと にありうる全体の目標を想定した上で機能を位置付 けている. 3.3.4.処理・振舞い・機能の関係性処理,振舞い,機能の関係性について述べる.例 えば,単純ソートと選択ソートの2 つの異なる処理 の振舞いは,配列を並べ替えるという点で近しい振 舞いであると考えられる.また,それぞれの機能に ついて考えると,「配列を並べ替える」という解釈に おいては同一の機能となる.しかし,学習者がこの 2 つを同一の機能だと捉え,振舞いや処理において も同等なものだと判断してしまう場合がある.これ は,堀口ら[5]が指摘していた表層構造としての理解 であるといえる.学習者に深層構造としての理解を 行わせるためには,振舞いと処理について理解する 必要がある.よって本研究における課題系列は,処 理の発展を想定した課題系列となっている.
5.課題系列の構築
これまでに,著者らは単純ソートを対象に課題系 列の構築を行ってきた[3].そして,課題系列におけ 図4 単純ソートにおける課題系列 図5 選択ソートにおける課題系列る課題間の関係性を,(1)全体―部分関係,(2)一般― 特殊関係,また,本研究で独自に定義した(3)形式的 全体―部分関係の3 種類を用いて位置付けた. 課題の移行は(1)〜(3)に対して,(a)処理の一部を拡 張することによる同系列での移行,(b)処理の一部を 修正することによる他系列への移行(転移)という 2 種類が考えられるが,本稿では(b)についてどのよ うな移行関係としてリンクが定義されるべきかとい った詳細な議論は行えておらず,移行可能リンクと して定義している.さらに本稿では,対象を広げて 課題系列の構築を行う.そのため,今回新たに選択 ソート,バブルソート,挿入ソートを対象に課題系 列の構築を行った.まず,これまでの単純ソートの 系を元に(1)〜(3)の関係性について説明する(図 4). 単純ソートにおける課題系列において,まず A1 と A2 の関係をみると,A2 は A1 に包括されているこ とから,全体―部分関係であることがわかる.次に, A2 と A2-a の関係をみると,A2 における外側の for
図6 バブルソートにおける課題系列
ループの振舞いの一部を切り取った状態で A2-a が 定義されていることから,A2-a は A2 の特殊化であ り,一般―特殊関係である.そして,A2-a と A3 の 関係をみると,A2-a と同等な振舞いを A3 が行って いるが,外側の for ループの有無で意味的には大き く異なる.このような課題系列は概念の有無から学 習者が差異を学ぶために有効であるものの,A2 と A3 の関係性がない状態では成り立たない.そこで本 研究では,この関係について独自に形式的全体―部 分関係と位置付けた. 先述の関係性を用いて,選択ソート,バブルソー ト,挿入ソートの課題系列を構築した(図5,6,7).ま ず,単純ソートの系と選択ソートの系を用いて転移 について議論する(図4,5).単純ソートの系と選択 ソートの系の共通の課題として A5 が存在する.ま た,A4 と B4 は振舞いが同一である転移可能リンク にある.単純ソートの系とバブルソートの系におい ても同様である.一方で,単純ソートの系と挿入ソ ートの系の間における転移について述べる(図4,7). A4 と D3,D3-a の間では,A4 と D3,A4 と D3-a の間 でそれぞれ転移可能リンクが成り立っており,D3 と D3-a の間でも転移可能リンクが成立している.この 時,D3 と D3-a の間は同じ学習目標であるため,関 係性は一方向である.しかし,A4 と D3,D3-a の間は, それぞれ同等の振舞いであるために相互に転移可能 リンクが成り立つといえる. 選択ソートやバブルソートにおける課題系列は, 単純ソートにおける従来の課題系列の記述を用いて 構築ができた.これにより,本構築手法が他の課題 系列の構築に対しても有効であることが分かった. しかし一方で,挿入ソートの課題系列は,if 条件 文における否定処理や for ループ中にループを制御 して抜け出しを要する点において従来では記述が不 可能であった.そのため,今回試みとして else や break を記法として追加することで挿入ソートの構 築を行った.新たな記法を追加することによって, 本課題系列の構築手法で対応できる課題を増やすこ とができた.また,今後,再帰的な処理なども記述 可能となるのではないかと考えている.一方で,記 法が煩雑となることは処理の本質的な構造の理解が 困難になるため,注意しなければならないと考える.
6.おわりに
本研究ではプログラミングにおける段階的な課題 系列の構築を目指している.著者らはこれまでに[3], プログラミングにおける課題の性質に処理・振舞い・ 機能とそれらの関係性が存在することを指摘し,こ の性質を用いて課題系列の試作を行ってきた.本稿 では,先行研究で試作した課題系列の構築方法を基 に,新たに複数の課題系列の構築を行い,構築手法 の検証を行った.また,複数の課題系列における課 題の移行が可能であることを示した. 学習者に課題の移行を行わせるためには,課題の 理解を図るための理解タスクを要する.また,課題 間のリンクによって,課題の移行に伴う学習者に必 要とされるスキルが異なると著者らは考えている. よって,今後の課題としては渡辺らの取り組み[4]を 参考に,課題ごとの理解タスクの追加と,課題間の リンクにおける必要とされる理解スキルの検討であ る.また今後検討すべき構想として,現状著者らは, 図4, 6 における A5, C5 のような同等の機能と似た振 舞いを持つ課題は,ある観点において共通の意味構 造として捉えることが可能だと考えている.そのた め,意味構造における系列が成立するのではないか と考えており,そのインスタンスとしてそれぞれの 課題が成り立っているのではないかと考えている.謝辞
本研究の一部は科研費・基盤研究(C)(15K00392),科 研費・基盤研究(B)(17H01839)の助成による.参考文献
[1] 平嶋宗, 中村祐一, 池田満, 溝口理一郎, 豊田順一: ITS を指向した問題解決モデル MIPS, 人工知能学会誌, Vol.7, No. 3, pp.475–486, (1992) [2] 東本崇仁, 堀口知也, 平嶋宗: シミュレーションに基 づく学習環境における漸進的な知識獲得支援のための マイクロワールドグラフ, 電子情報通信学会論文誌 D, Vol.91, No. 2, pp.303–313, (2008) [3] 古池謙人, 東本崇仁, 堀口知也, 平嶋宗: プログラミン グにおける段階的な課題系列の検討, 電子情報通信学 会技術研究報告 = IEICE Tech. Rep. 信学技報, Vol.117, No. 296, pp.47–52, (2017)[4] 渡辺圭祐, 東本崇仁, 藤森進, 赤倉貴子: プログラム意 味理解学習におけるソースコード構造化の枠組みに基 づく補助問題出題機能の設計・開発, 電子情報通信学 会技術研究報告(ET), Vol.116, No. 517, pp.85–88, (2017) [5] 堀口知也, 東本崇仁, 平嶋宗: 力学の概念的理解にお ける問題系列の効果について, 人工知能学会先進的学 習科学と工学研究会, Vol.SIG-ALST/S, No. B5, pp.1–5, (2016) [6] 笹島宗彦, 來村徳信, 池田満, 溝口理一郎: 機能と振舞 いのオントロジーに基づく機能モデル表現言語 FBRL の開発, 人工知能学会誌, Vol.11, No. 3, pp.420–431, (1996)