【読了時間:約 10分

 プログラミングの知識がますます重要視される世界で

プログラミングの知識を持っているかどうか、ということは近年非常にその重要性を増してきています。

先日ログミーで公開された楽天の三木谷社長とドワンゴの夏野剛氏のトークセッションで「日本史よりもプログラミングを教えたほうがいい」という夏野氏の発言がありました。

また、Facebookの元役員であるChamath Palihapitiya氏もTechCrunchに対するインタビューで次のように述べたことが話題になりました。

“「プログラミングを学ぶのなら、生涯仕事に困らないことを私が保証しよう。」”

教養の知識としてプログラミングを学ぶ土壌づくりに貢献しようとする団体も存在します。(Code.org)

しかしこのようにプログラミングの必要性が主張される一方で、具体的にどのような教育を行っていけばよいのかということについては、表立って議論されることが少ないのではないでしょうか。

本稿では、そんなプログラミング教育に求められているものはなにか、ということについて論文を紹介していくことで考察していきたいと思います。

 

 プログラミングには向き不向きがあるかもしれない

今や世界中で求められているプログラミング知識ですが、そもそもその知識を身につけるために”適性”というものは存在するのでしょうか。

これについて興味深い結果を示した、”The camel has two humps(ラクダはふたこぶを持っている)”という論文をご紹介致します。

 

 プログラムの書き方で適性が分かる

この論文は、プログラミング経験のない生徒たちに対して一通りのカリキュラムをこなさせることで、その試験の結果がどのようなものになっていくか、調査したものです。(カリキュラムの詳細については論文内で確認することは出来ませんでした。)

この論文が、試験結果で重視したのは、その生徒たちが試験問題に対して”同一の規則で答えたか”、それとも”バラバラな規則で答えたか”という部分です。

一例を挙げましょう。

a = bというコードがあったときに、数学的に考えればこれは等しいことを表す記号になります。しかし、プログラミング言語としては、全然違う記号として(例えば”交換”を意味するものとして)解釈しても良いわけです。

このテストでは、同じ記号に対して常に同じ意味を与える、つまり規則的に記号を運用しつづけた生徒を”一貫したグループ”、そうではなく同じ記号についても毎回違う解釈を与えていた生徒を”不規則なグループ”と区別しました。

以上のことを前提としてまず示したいのは、最終試験の得点分布図です。サンプルは2種類に分けられており、問題に対して同じ規則で答えたか、バラバラな規則で答えたかという分け方となっています。その2グループそれぞれの、最終試験の得点分布を見てみましょう。

program2

このグラフを見れば、タイトルとなっている”ふたこぶラクダ”の意味が分かるかと思います。異なるコード(規則)で答えた生徒は得点が低く、一貫して同じコードで答えた生徒は得点が高くなる傾向があるのです。

つまり、プログラミングの授業をひと通り受講したとしても、一貫した規則が生徒の中に形成されるかどうかというのがそのパフォーマンスに大きく影響する、ということがこの論文では報告されています。

 

 論文の撤回が意味すること

2006年に発表されたこの論文は、それ以降大きく話題となってきました。しかし、2014年に主著者のRichard Bornatが論文の撤回を表明しました。

その主な理由についてBornatによれば、この論文は事例の報告に過ぎなかったにもかかわらず、世間一般には「ログラミングには素質が必要であることを主張する」ものだとして広まってしまった、というのがその理由であるようです。

事実、その後同様の研究が行われ、バラバラな規則で答える生徒であったとしても必ずしも成績は悪くなかったという事例も報告されています。重要なのは生徒の素質ではなく、「どのようにプログラミングに関する教育を行うか」という部分だ、ということです。

こうして撤回はされたものの、この論文によって示された、「プログラミングには、(教育の方法にもよるとはいえ)生徒の出来不出来がはっきり出やすい」という事例は、やはり興味深いものでしょう。

では、プログラミング教育を行う際、どういった能力に着目すべきなのでしょうか。そして生徒らに苦手意識を根付かせないために必要なこととは何なのでしょうか。

 

 1.プログラミングに最も必要な能力は”論理的思考力”か

まずこの項では、”論理的思考力”が最も重要なのではないかという仮説について検証した論文を紹介していきます。

情報処理学会で2015年3月に報告された“プログラミング力と論理的思考力との相関に関する分析”(大場みち子, 伊藤恵, 下郡啓夫)は、サンプル数は少ないものの、プログラミングの試験成績と論理的思考能力を測る試験成績との相関性を取ることでその関連性を分析しました。

その結果を以下に示します。

programing1

こうして見てみると、特に文章作成における論理部分がプログラミングとの関わりが高いことが分かります。

”ふたこぶラクダ”の論文でも示唆されていたことでしたが、やはり一貫力=論理力がプログラミングには重要な要素ではないかと考えられます。

 2.効率良くプログラミングを教えるために

ということで、まずプログラミングを習得しようとする人間側に求められる能力の可能性を見ていきました。続いてプログラミング言語としてどのようなものを扱えば理解力の向上に役立てられるのかについて見ていきます。

プログラミングに論理力が必要とはいえ、それを一朝一夕で身につけるのは大多数の方にとっては難しいことだと思われます。それだけに、プログラミング教育に関するハードルを下げることはどうしても必要となってきます。この項で紹介するのは、そうした教育の導入期における苦手意識をいかにして払拭するかということに関する考察です。※1

2003年に発表された”プログラミング教育の改善に関する研究”(三河佳紀)という論文では、Visual Basic(VB)をプログラミング教育の導入期に盛り込むことで、その後の理解が飛躍的に向上することが報告されています。

C言語は情報社会における殆どの基板を成す言語です。ハードウェア、ソフトウェアに限らず様々な場面で利用されています。自由度が非常に高い言語ですが、その分あらゆるものを自分で設計する必要があります。視覚的な結果を確認するためにもプログラミングが必要もしくは別のソフトウェアを組み合わせる必要があります。

対してVBは主にマイクロソフトのExcelやWordなどのアプリケーション上で動く言語です。C言語のようにあらゆる場面で活躍することは出来ませんが、アプリケーション上で動くので視覚的な結果を確認するなどの手間が省けます。応用は出来ませんが、プログラミングの基礎概念を理解するには十分な言語であると言えます。

この論文著者は、C言語に関する授業が、コマンドラインの習得などといった、普段マウスを使った操作に慣れている生徒たちにとっては新たに覚えなくてはならないことの連続で、また視覚的な効果を確認するまでに時間がかかってしまうといった障害があったとしています。

そうした障害を解消するために、視覚的な効果をすぐに出力することが出来るVisual Basicをプログラミング教育のカリキュラム前半部に導入したところ、その後のC言語によって行われた授業における理解度が向上したとのことです。

具体的な数字は記載されていませんでしたが、授業中に作成する課題がVisual Basicを導入していない以前のカリキュラム時に比べて明らかにスムーズに終了出来たという成果が報告されました。

 

 プログラミング教育の必要性

以上、見てきたことをまとめていきましょう。

*プログラミングを学ぶために必要な素質…向き不向きはあるかもしれないが、不向きだからといって、プログラミングの習得が不可能ということはない

*プログラミングに必要な能力…文章作成能力、その中でも「言語能力」ではなく「論理力」が重要となる可能性が高い

*プログラミングの初等教育について…まず視覚的に基礎概念を理解できる言語を用いることで導入期の苦手意識を払拭しやすい

勿論、これ以外にもプログラミング教育に関する問題は数多く存在しています。

プログラミングという高度な知識を身につけた教師が絶対的に足りていないこと、学校側にパソコンを用意するだけの資金がない場合にどうするか、そもそもプログラミングという言葉自体に関するハードルの高いイメージをどのように改善していくか、その他にも様々な問題があります。

しかし今後、プログラミングに関する知識がなくてはアクセスできる情報が確実に減っていくことを意味します。

単純労働がコードで書かれたロボットによって行われ、人工知能が人間のアシスタントをしてくれる世界において、その仕組みを想像することもできない状態というのは危険といってもよい状態ではないでしょうか。

そうした状態を回避するためにも、私たちはプログラミング教育をもっと身近に行えるものにしていかなくてはならないでしょう。

Photo by pixabay [注釈・参考文献]

Credoをフォローする