中高生向けプログラミング入門を実施しました(WEBアプリ開発)

普段は小中学生を対象にロボットプログラミング講義を行なっていますが、2019年の後半から新たな取り組みとして中高生向けにHTML、PHPによるWEBアプリケーション開発の講義を実施しました。

 

今回はその取り組みについてどうであったかと、ロボットプログラミングを比較して思うことを書いてみようと思います。

 

なぜロボットではなくWEBアプリケーションか。

WEBアプリケーション開発の講義をなぜはじめたかというと、もののしくみ研究室ではアーテックの提供するプログラミング環境を利用していますが、この環境はビジュアルプログラミング(ブロックプログラミング / Scratchベース)となります。対象年齢が小学生からということもあり、またプログラミング的思考を学ぶことが目的であることから、英数字の入力によるプログラミングではなくビジュアルプログラミングです。

 

ビジュアルプログラミングは、低学年から直感的にできる、失敗してもすぐに直せる、成功を体験しやすい、それでいてある程度プログラミング的思考が養えるといったメリットがあります。ただし、簡単に直せるということで考えずに何となくでブロックをつなげて正しい動作にしてしまうパズルゲーム的になってしまう面もあります。プログラムのどこに問題があるのか、と思考する部分が(通常のプログラミング言語に比べて)弱いと感じています。

 

また、ロボットプログラミングに関しても良し悪しを感じるところがあります。

良い面としてはもちろん、作成したプログラムをロボットを通して実行することにより動いているロボットで自分の書いたプログラムが正しいかどうか確認することができます「自分で作ったプログラムで実際にロボットが動く」というのは子どもにとって嬉しいことでしょう。また世の中の様々なものがプログラムで動いているということをイメージしやすいということもあるでしょう。さらにロボットを毎回組み替えていくため、物理的な構造も自然と理解していけます。ブロックをどう繋げるかによって重心がどう変わるか、サーボモーターなどの可動域を邪魔しないように組み立てるにはどうするか、配線はどの長さでどこを通すかなどなどモノづくりをするというのも良い経験です。

 

では何がデメリットかというと、ロボット作りに時間がかかることがまず1つ。学年と内容にもよりますが1つあたり30分から、難しいもので手間取ると1時間程度かかる場合があります。上述のようにものの仕組みを理解するということは小学生にはいいですが中学生以上についてはただの作業になってしまう感じが否めません。確認までに時間がかかることもデメリットです。ロボットプログラミングによって3次元的に結果を確認できるのは良いことですが、ロボットを動かすということはプログラムをロボットに転送する必要があります。わずかな変更でも毎回転送するために時間がかかるため効率が良いとは言えません。

 

上記の観点から、小学生を対象にした場合は優れた部分は多くあるものの中高生を対象にするには適していないとも言える部分がある。この「ビジュアルプログラミング」と「ロボットプログラミング」のデメリットをカバーするために、通常のプログラミング言語=ビジュアルプログラミングではない言語=PHPを使ったWEBアプリケーション開発の講義を実施することとなりました。

 

どのような内容を教えるのか

自由度が高く、もっとも初心者がプログラミングをしやすい言語といえばHTMLでしょう。なおかつ、自分でWEBサイトやブログを作ったりカスタマイズする時に使えるため、実用性も高い。ということでHTMLを使ったWEBアプリの作成に挑戦しました。

 

ただし、HTMLだけではプログラミングを勉強したとは言いづらい部分があります。

良い意味でも悪い意味でもHTMLはミスに寛容です。本来プログラムというのは厳密に組まなくてはならないものです。使いやすい言語とするためにある程度はミスに寛容(言語が目的を推測して実行)だと助かりますが、寛容すぎると本来の正しい姿が見えなくなってきてしまいます。

 

このため、学習としてはHTMLだけではなく、PHPを合わせて教えるのが好ましいと考えます。また、付随としてCSS、DBについても扱えるようなカリキュラムにします。ただし、今回はDBについては概念と設計のみとしてデータベースの構築やテーブルの作成は講師が行いました。

理由としては今回は生徒がサーバーにログインしたり、DBをいじっても安全とする環境構築が難しかったからです。用意する事が可能であれば実際にサーバーにログインしたり、サーバーを構築したりする講義もできると、内容は高度になりますが深く理解できるとは思います。

 

ということで今回上記を満たすためにチャレンジしたのは「掲示板」作りです。

大学生や社会人向けプログラミングの最初の題材としてもよく使われます。対象年齢が少し下がりますが、今回もサポートすることによって作る事ができると思い掲示板作成をしました。

 

講義の様子

ロボットプログラミングよりも格段に難易度が上がったためか、やはり講義内容を理解するのに苦労しているな、という感じでした。言ってしまえば、生徒はしっかりと理解していないで進めている部分もあったと思います。「なにを理解していないかわからないので質問もできない」状態ですね。ただし、内容が難しくなった分、集中して話を聞いていたと感じます。

 

また、理解が追いついていないながらも自ら考えて実際にコードを書いていくにつれ、少しずつですが確実に理解は進んでいました。最初の講義では理解できなかったところを手を動かすことによって腑に落ちた、といった印象です。

 

結果しては、講義を含め3ヶ月半ほどで全員がひとまず形となりました。

予定では2ヶ月〜2ヶ月半で完成させて次にもう少し難しい題材を考えていましたが、教え方がまだまだだったか、難易度設定を間違えたか、少し時間はかかってしまいました。

 

しかし、英数字を使ったプログラミングは中高生でもできます

 

まとめ

いよいよ2020年4月からは小学校でプログラミング教育が必修化されます。プログラミングに興味がある人だけではなく、すべての生徒にプログラミング教育によって身につくと期待されている要素(論理的思考や問題解決能力、想像力)をありとあらゆる手を使って習得させる必要があるでしょう。その手の一つとして子どもが興味を持ちやすいロボットはありだと思います。

 

ただし、塾などでそもそもがプログラミングに興味のある生徒や、学校においても放課後などを使って全員ではなく興味のある生徒のみを対象とするなら、ロボットは非効率な面もあります。実社会において使われているプログラミング言語(HTMLやPHP)をつかった教育の方が興味を持ち、本来目的としているプログラミングで身につく力(論理的思考や問題解決能力、想像力)を効率的に身に付ける事ができると感じました。

 

選択肢を増やす事は教える側からしたら負担となります。一般的なプログラミング言語を教育することを選択肢に入れるとなると、小学校の先生からすると大きな負担でしょう。しかし、子どもたちの事を菅エルと、一律なプログラミング教育ではなく生徒の興味やレベルに合わせた選択肢を用意することができると良いと思います。