2016.05.22
みなさま、こんにちは.
修士2年の原田悠我です.
今回のブログのテーマは1年ぶりに【今年度の研究計画】です.
朝に書いたものを夕方には変更している状況ですが,
今考えている計画を紹介したいと思います.
-----------------------
■ テーマ
プログラミングにおける概念の理解を促すTinkering(ティンカリング)を支援するシステムの開発
■ 背景
コンピューターやインターネットといった情報技術の発展は,社会を変化させ仕事や私生活に大きな影響を与えている.このような変化に対応するため,21世紀型スキルと呼ばれる新しい能力の重要性が指摘されている(Griffin et al., 2012) .その中には問題解決といった,すべての人がある程度は訓練なしに持っている「ソフト」スキルが含まれている.「ソフト」スキルと訓練なしには知り得ない「ハード」スキル(例 連立方程式を解く)の両方をいかに育成し評価していくかが今後の課題となっている.
こうした問題解決のスキルとしてComputational Thinking(計算論的思考 以下CT)が注目されている.CTは2006年にWingよってすべての人にとって必要な技術として主張されたものである(Wing 2006).CTの範囲や本質について議論がなされ(NRC 2010,NRC 2011),CTは抽象化とパターンの一般化などの要素から構成されていると広く認められている(Grover and Pea 2013).
このようなCTを育成するためにプログラミングの重要性が指摘されている.確かに,CTではプログラミングができる以上のことを目指している(Wing 2006).しかしWolzやResnickが主張しているように表現する形式としてプログラミングを学ぶことはCTにとって重要である(NRC 2010).つまり,プログラミング教育はコンピューターサイエンスの専門家育成のためだけでなく,CTを育成するためにすべての人への教育として注目されていると言える.
■ プログラミング教育
しかし,プログラミングを教えることは容易ではない.なぜならば,プログラミングには高度な認知能力が求められるからである.1980年代初頭より研究が進められ,熟達者と初学者の違いについて様々なことが明らかになってきた(Sonnetag 2006).また教育方法も検討され,プログラムを生成するためには,新しい機能を教えるだけでなく,それらの機能の使い方や組み合わせ方,特に一般的なプログラムのデザインの問題の根本にあるものを教えなくてはならないことが明らかになっている(Soloway and Spohrer 1989, Robins et al.. 2003) しかし,プログラミング教育研究の多くがシンタックスや言語の特徴に注力しがちであるという問題がある(Pears et al. 2007).
■ End-User向けプログラミング環境
このように高度な認知能力が求められるプログラミングを教えるために言語やプログラミング環境が検討されてきた.そのなかでEnd-User向けのプログラミング環境が注目されている.End-User向けプログラミング環境とは熟達したプログラマーでなくても特定の目的のために開発ができる環境である(Ko et al. 2011).例えばResnickらは13歳の女の子がScratchを利用しながらアニメーションを作っている様子を報告している(Resnick et al. 2009).またAliceを利用した研究ではアニメーションやゲームを作りながらJavaについて学ぶことで,成績・自己効力感・継続率が高まるという報告がある(Daly 2013).すなわち,学習者はゲームやアニメーションの作成を通じて探求することでプログラミングを楽しみながら学んでいるのである.
■ Tinkering
このような学習者自身の探究活動はTinkering(いじくり回す)と呼ばれている.Tinkeringは試行錯誤・just-in-timeのプランニングなどを含んだ遊び心に満ちた活動であり,構造化プログラミングと対比される.構造化プログラミングとはルール駆動でトップダウンの計画に頼るもので明確に計画を立ててからプログラムを書き始めるやり方なのに対し,Tinkeringはボトムアップに素材とのnegotiationや再編集を好むやり方である(Papert 1980, Turkle and Papert 1992 ,Turkle 1995).BearlandらはTinkeringは初学者および熟達者の両者においてプログラミングおよびプログラムを学ぶ真正なプロセスであり実践と主張している (Bearland et al. 2013)
しかしながら,何も支援を与えず学習者任せにTinkeringさせても,学習者は上手く学ぶことが出来ないという問題が指摘されている(Mayer 2004).例えば,Kurland and Pea は学習者任せに50時間のプログラミングの授業を実施したが,再帰のプログラムを理解することができなかったと報告している(Kurland and Pea 1985).また,プランニングのスキル(Pea and Kurland 1984) や論理的思考(Dalbery and Linn 1985)についても実証的な研究は少なくさらなる研究が必要である
このことは,Tinkeringによるプログラミングが学習を引き起こさないというわけではない.Littlefieldらは,訓練を行った状況 ・プログラミングの熟達 ・転移を測定する方法の定義が必要であると主張している(Littlefield et al.. 1989).同様にPalumboは教授方法や訓練の時間・強度などが影響をあたえるとしている(Palumbo 1990).このようにプログラミングの概念理解を促すためには学習者任せのTinkeringではなく適切な学習環境をデザインする必要がある.
■ 目的
そこで本研究ではTinkeringに着目した支援方法の検討を行なう.
-----------------------
開発するシステムのアイディアはまだ定まっておらず,現在は調査のためにプログラミングのワークショップを初心者の高校生や大学生を対象に実施しています.一方で,プログラミング教育の流れ(特に日本の研究や実践)についてはもまだまだレビューできていない状況です.
研究や実践についてレビューしつつ,実際に学習者がプログラミングをどのように学んでいるかということを軸足に,現状の問題点を見極め支援システムの開発を行いたいと思います.
今年度もよろしくお願いいたします.
【原田 悠我】