プログラミングの画面

9割挫折するプログラミングをコスパ良く学習する方法を脳科学研究から紹介!

プログラミングの画面

プログラミングに対して苦手意識を持っていませんか?

プログラミングが難しくて習得できないのは、日本だけでなく世界でも問題になっています。

そこで、様々な脳科学研究から判明した「プログラミングを効率良く勉強する方法」を5個掲載しました。

 

効率良く勉強しても文系だから理系みたいに習得できる自信がないという方もいらっしゃるかと思います。

しかし、プログラミングは正しい方法で頑張れば一般人も天才に匹敵するまで伸ばすことが出来ることが分かっています(詳細は後述します)ので、これから勉強を始める方や、すでに始めていて挫折しかかっている方にもおすすめ出来ます。

プログラミングとは?

プログラミングのコードを表示しているパソコンの画面

プログラミングを勉強したことが無い方はなぜ挫折や行き詰まりを感じやすいかイメージしにくいと思うので、簡単にプログラミングに関して解説します。

 

以下にPython(図1)とC++(図2)というプログラミング言語で「Hello world!」と表示するコードを記載しました。

色んな用途がありますが、PythonはAIなどに使用されている言語で、C++はサイバーセキュリティにも使われている汎用性の高い言語です。

図1の言語Pythonは高級言語といって人間の感覚に近い言語で理解しやすく、図2のC++は低級言語といってコンピュータに近い言語なので少し理解しにくい特徴があります。

printf(“Hello world!”);
図1.Pythonで記載したHello world!
#include <stdio.h>
int main()
{
printf(“Hello world!”);
return 0;
}
図2.C++で記載したHello world!

上記コードを簡単に解説しておきます。

図1の解説:「printf」は英単語のprint(書く)とfunction(関数)の略語fを組み合わせた記載で、「書く関数」という意味になります。書くという関数を使用して、「Hello world!」を表示しなさいという意味です。

図2の解説:「#include <stdio.h>」は標準入出力関連の関数で、何かを書き始める際にはだいたいこの文字列が必要になります。「int」は整数を扱うデータ型で、「”」で囲めば数字だけでなく文字も入力できます。「main()」は関数に渡す値がないという意味で、「printf」は図1と同じです。「return」の意味は0を返せば正常終了という意味になります。

明らかに図2のC++よりも図1のPythonの方が簡単そうですよね。

このように、言語によって難易度はかなり変わってくるということを覚えておいてください。

プログラミングは挫折率9割!?

頭を抱える男性

言語によって難易度がかなり変わりますが、プログラミングは全体的に難しいと考えられています。

侍エンジニア塾の調査結果を確認すると驚愕の事実が分かりました。

なんと、挫折する人は9割もいます。

プログラミングの挫折率のグラフ

なぜこんなに挫折率が高いのでしょうか?

それは”正確な”プログラムを記載しないと、パソコンはエラーを表示して何も表示されないことが多いためです。

”正確な”とは、”1文字も間違えずに正しい用法を守って打つ”という意味です。

図1や図2でプログラミングのコードを紹介させていただきましたが、これらは1文字でも間違えたり抜けたりするとエラーが表示され、何も表示されません。

いつも図1のように簡単な記述であれば簡単ですが、Pythonでも図2のように複雑な記載が求められる場面もたくさん出てきます。

エラーが表示されるとどこに間違いがあるのかを上記のプログラミングを自分で確認して探すのですが、なかなか見つからないことが良くあります。

そのため、以下のようにプログラミングの挫折理由には「不明点を解決できない、またはエラーを解決できない」が上位に挙がっています。

プログラミング挫折理由のグラフ

プログラミングに効果がある学習方法

学習効果が表れている様子

プログラミングは難しくて挫折率が高いので、どのように学習するかがとても大切になります。

今回、様々な研究にて実際に検証されたプログラミングの学習方法を紹介しますので、是非試してみて下さい。

プログラミングの学習方法① 抽象的なイメージを視覚化

プログラミングのイメージ

プログラミングは一見文字が羅列されているように見えますので、見ただけで拒否反応を示す方も多いかと思います。

そこで、拒否反応を示さないように、身近なものに例えてプログラミングの授業を初心者にするとどうなったかという研究を紹介します。

2011年にセギ大学のHuiらが実施した研究で、大学生84名を対象に実験が行われました。

84名を「プログラミングに比喩を加えて教えるクラス」と「比喩を使わないクラス」の2つに42名ずつの分けて7か月間C++を学習させました。

その結果、比喩を使ったクラスの方が統計的にも成績が良いことが分かったのです。

抽象的な概念を解く際に比喩を使うことで、生徒がより明確なイメージを持つことができ既存の概念につなげやすくなることが影響したと論文の著者らは考察しています。

 

「プログラミング(抽象的なイメージ)を視覚化する」ということが分かりやすい動画がありましたので以下に掲載しました。

初心者の方はコードを並べてみて実際の動きを確認するという手順(5~13秒)で学び、コードの意味が分かってきたら手打ちで入力して動きに変化を加える(20秒~)という動画です。

コードに対する動きが簡単に分かるので、かなり分かりやすいですよね!

プログラミングの学習方法② ストーリーベースの教材を使用

物語を想像している様子

上記の視覚化する方法に類似する方法として、ストーリーベースの教材を使用すると学習結果に効果を確認できたという研究もあります。

えば、2013年にユザック大学のKoseらにより報告されています。

100名の大学生を対象に、50名の学生はストーリーベースのC言語教材を使用、残りの50名の学生は従来の教材を用いて実験しました。

その結果、ストーリーベースの教材の方が統計的に成績が良いという結果になりました。

生徒の感想に、「今まで見た教材の中で一番だった」、「他の教科にも応用してくれればより良く学べると思う」など好意的な意見が多数寄せられています。

プログラミングの学習方法③ マインドマップで頭の中を整理

マインドマップ

プログラミングの学習法に関する研究には視覚化するというのはかなり重要な要素ということが報告されています。どのように視覚化すればいいかの例としてマインドマップを用いた研究がありました。

2010年に国連大学のIsmailらに実施された研究で、様々な学力の127人の学生を集め、マインドマップを使う群と使わない群に分けました。

その結果、すべての論理的思考レベルの学生に対して、プログラミングパフォーマンス・問題解決スキル・メタ認知知識のスコアにおいて、マインドマップを使った学生の方が統計的に良い成績になりました。

残念ながら、この研究にはどういう風にマインドマップにまとめればいいかに関しての記載はありませんでした。

プログラミングのマインドマップを作成しているものがありましたので、以下に掲載しました。

これならば、コードだけを見ているよりも視覚的にも楽しめますし理解しやすいかと思います。

プログラミングをマインドマップ化した様子

引用元:伊與田塾

マインドマップは他の勉強にも有効な学習方法であることは一般的に知られており、プログラミングにも有用なので試してみて下さい。

プログラミングの学習方法④ ペアプログラミング

手を握って協力的な様子の画像

2010年にカリフォルニア大学のC. Mcdowellらに実施された研究があります。

555名の大学生を対象にペアプログラミングを実施する群と実施しない群に分けて評価されました。

ペアプログラミングとは、2人で1台のパソコンを用いて指定された時間で区切って交互にプログラミングをしていく学習法になります。

誤った構文やロジック、スペルミス、デザインに対応しない実装などがあれば、互いに指摘して学習を進めていきます。

この学習法を繰り返した結果、ペアプログラミングを実施した学生は、実施しなかった学生よりも統計的に高い成績をおさめることが分かりました。

さらに、ペアプログラミングを実施した学生はプログラミングクラスに挑戦する可能性が高いことも判明しました。

コンピュータサイエンス関連の専攻分野での継続性を高めることに貢献している可能性があると論文の著者らは結論付けています。

ペアプログラミングの効果は様々な論文で実証されており、個人でプログラミングする際にもメタ認知(自分の認知活動を客観的にとらえる)が働きやすくなるのではないかと考えられています。

プログラミングの学習方法⑤ ロールプレイング

ダンスしているカップル

Stevens and Goldberg (2001)の研究で、「脳が多角的な入力を望むこと」と「学習は全身を巻き込むこと」が脳を使う学習に大切な2要素であるということが述べられています。

この2点に着目して、2010年に聖トマス大学のZoltan Kataiらがロールプレイングとプログラミングの関係性の研究を実施しました。

大学1年生38名をロールプレイングを取り入れたプログラミング学習群と従来の座学の学習群の2群(各19名)に分けて実験をしました。

ロールプレイングとは、例えばバブルソートという数字を昇順(または降順)に並び替えるアルゴリズムを学ぶ際に生徒自身に数字の書いた服を着てもらって、アルゴリズムに従って順番を入れ替わってもらうという指導をしました。

その結果、従来の指導法よりもロールプレイングを取り入れたプログラミング学習群の方が統計的に成績は高かったということが分かりました。

まとめ

ポイントという文字を書いた写真

学習法に関する論文を調査していると、「プログラミングは視覚化することが大事」と述べている論文が大多数だったので視覚化に関する方法をメインに紹介させていただきました。

視覚化の次に検証されている数が多かったのは、ペアプログラミングです。

社会人になって初めてプログラミングの業務を実施する際にもペアプログラミングはよく使われる指導方法でかなり上達します。

ペアは誰でもいいのですが、可能であるならば自分よりもプログラミング力のある人とペアを組むことをオススメです。

 

また、文系なのでプログラミングに苦手意識を感じるという意見もありますが、習得できるかどうかに理系・文系の区別は不要ということが分かりました。

2020年にケムニッツ工科大学のJanet Siegmundらが実施した研究で、プログラミングに必要な素質は数学力よりも言語能力というこいうことが発表されたのです。

さらに、プログラミングの学習は第2外国語の学習と同じ脳の場所を使うということも判明しました!

そのため、文系だから習得しにくいという主張は間違いです。

実際、文系出身のプログラマーは多数いらっしゃいます。理系の方が得意に見えるのは大学時代に授業や研究でプログラミングを勉強していたからではないかと個人的に感じてます。

しかし、初心者がプログラミングを習得する際に躓きやすいのは事実ですので初めの躓きをいかに乗り越えていくかがとても重要です。

そのため、初心者が最速で上達するにはスクールに通うことがおすすめです。

プログラミングスクールでは先生と一緒にプログラムを組むことでペアプログラミングも実施できますし、スクールの洗練されたカリキュラムがありますので脱落率はかなり低くなります。

プログラミングスクールは高いというイメージがある方もいらっしゃるかもしれませんが、条件を満たせば無料で受講できるスクールもあります。

プログラミングスクールの選び方に関しては、他の記事にて紹介させて下さい。

◆プログラミングは9割が挫折するので、学習法をしっかりと設定することが大事
◆プログラミングの挫折理由には「不明点を解決できない、またはエラーを解決できない」が上位
◆プログラミング学習に効果的な5つの学習法

 ①抽象的なイメージを視覚化
 ②ストーリーベースの教材を使用
 ③マインドマップで頭の中を整理
 ④ペアプログラミング
 ⑤ロールプレイング
◆プログラミングは独学で始めるのは難しいので、初心者はプログラミングスクールに通うことが最速上達の道
スポンサーリンク
プログラミングの画面
最新情報をチェックしよう!