事例45

オンラインで利用可能なプログラミング学習環境の提案

大阪電気通信大学 兼宗進先生

初等中等教育において、プログラミング学習がますます重要視されてきていることはご存知の通りです。これまでに、中教審の情報ワーキンググループや小学校のプログラミングの有識者会議に出させていただき議論をしてきましたが、特に小学校の難しさについては強く感じているところです。

 

近い将来、複数の言語を「選択できる」教育を

今日は中学校以上を想定した話をさせていただきます。近い将来、小学校で簡単なプログラム学習をした子どもたちが中学・高校に上がってきます。その時には、やはり文字でプログラムを書くことになると思われます。そのときには、複数のプログラム言語を選べたほうがいいのではないかと考えています。

 

スポーツに例えますと、同じ運動能力を高めるにあたっても、跳び箱をしたり縄跳びをしたり水泳をしたりすることで、様々な筋力を使うことができたり、自分の得意分野を発見できたりします。プログラミング学習も同様だと思います。

 

学習環境を整えることの難しさから生まれた「オンライン環境」

プログラミング学習というと言語に着目しがちですが、エディタなどの学習環境も重要です。

 

最近は、特別に何かを追加しなくても、ブラウザが全てのパソコンに入っていてJavaScriptが標準で使える環境があることから、現段階ではJavaScriptが使いやすいと思っています。しかし、実際に授業をしてみるとエディタが用意されていなかったり、エラーメッセージが親切ではなかったりと、様々な問題があると感じておりました。

 

また、例えば大学でVisual Studio (マイクロソフトのプログラム開発ツール)などを新たに購入しようとすると、とたんに大変高価で実現が難しくなってしまうといったことが起こります。

 

このような問題点を解決する手助けとして、オンライン開発環境である「ビットアロー(Bit Arrow)」(※)を共同で開発し、高校や大学で使っています。

「ビットアロー」の特長は、次のものがあります。

(1)Webブラウザで動作しインストールが不要

(2)プログラムを画面上で記述し実行できる

(3)作品をスマホやタブレットで実行可能

(4)教員が授業を登録し管理できる

(5)生徒の登録とパスワード配布が不要

 

これを、JavaScript 、C、ドリトルの3つの言語で実践しましたので、事例をご紹介します。

http://bitarrow.eplang.jp/

 

実践例1 JavaScript 

まず、JavaScriptです。こちらは神奈川県立柏陽高校の授業で使っていただいたものです。ブラウザには、プログラムをコーディングするする部分と実行する部分が表示されます。文法は、JavaScriptを書き、それをこの画面で実行して確認できます。

 

 

工夫したのは次の点です。

 

通常は、HTMLの中にJavaScriptを埋め込みますが、普段教えていて難度が高いので、HTMLとJavaScriptを別のタブで書くことで、よりわかりやすく、教えやすくしました。

 

例えば、HTMLのタグで事前に猫を「neko」、ボールを「ball」といった具合に、キャラクターのオブジェクトを定義し、それをJavaScriptの変数として動かすようなプログラムを書けるようにしました。

 

このように工夫することで、高校生が通常のJavaScriptよりも少し複雑なプログラムまで理解できるようになったと感じています。

クラウドの活用~評価の効率化・生徒の楽しみを生む

課題を確認する側の先生は、クラウド上で閲覧し、評価をするということができますので、これまでに比べて非常に効率が良くなりました。

 

ほかにも、クラウドを使用することで、高校生たちが授業で作ったゲームのQRコードを画面に出して、隣の子にスマホで読んで遊んでもらったり、自分でスマホに入れて家に持ち帰って自慢したりという楽しみも生まれました。

 

ネットワーク環境の課題はクラウドとローカルの組み合わせで解決

授業で行ってみてわかったのですが、現状では学校のネットワーク環境がよろしくないという問題があります。このことは、中教審の会議でもかなり話題になっていました。

 

本来はクラウドに乗せたい場合でも、全てをクラウド化してしまうと、ネットがつながる保証がないために、授業がうまく行えないという支障が出てきます。

 

そこで、今回のツールでは、起動時にサーバから自分が作ったプログラムファイルをダウンロードした後はローカルで動かす形にし、ブラウザの中に全てのプログラムが保存されて、オフラインでも動くようにしてみました。

 

もう一つの工夫点として、プログラムを書いて実行ボタンを押すと瞬時にサーバにファイルが送られるという自動提出型にしてみました。このことで、提出の時間をわざわざ取らなくても済み、効率もよくなりました。

 

実践例2. C言語

次は、私が大学の工学部の授業でC言語を教える時に使用したものです。今回の特徴はコンパイルの仕方にあります。通常のコンパイルはCを機械語に変換するのですが、今回はCをJavaScriptにコンパイルし実行するものを作ってみました。

 

自動採点プログラムで教師の効率が上がる

高校と違い、大学ではだいたい100人くらいの大人数を教師1人+TA2~3名で教えますので、教える側の難度が上がります。さらに、大学では決まった課題プログラムを作らせることが多くなります。授業ごとに5問くらいのプログラムを作らせますが、100人がそれぞれ5個ですので500個、それを週2回作って提出します。

 

ですから、教える側は週に1000個のプログラムを採点をしなければなりません。これではたいへんだ、ということで、必要に迫られて自動採点プログラムを作りました。

 

この自動採点プログラムは、現在のところ先ほどのオンラインには埋め込んでおらず、ローカルのバッチで使用しています。課題を一括で採点し、問題ごとに学生ごとに正解・不正解というのを出しています。このようなものもフリーソフトや機能として公開していけたらと思っています。

 

実際には自動採点は簡単ではありません。例えば課題の正解に4つくらいパターンがあった場合、4つのうち3つが正解していて1つは不正解といった時に、どこまでを可とするのか、といった場合です。今のところは採点結果でその部分の色を変えるなどして注意喚起し、教員が自分で見て責任を持って判定できるようにしています。このような授業プログラムの評価は、中学や高校でも今後課題となるかもしれません。

 

実践例3. ドリトル

3つ目の言語が、ドリトルです。ドリトルというプログラム言語は私自身が作って公開しているものです。ドリトルもCと同様にJavaScriptにコンパイルして実行するようにした結果、非常に高速になりPCへの負荷も減らすことができました。

こちらもオンラインに対応すべく現在も開発中です。8月頃には正式公開をしたいと思っています。現在、ドリトルが載っている教科書に掲載されている例は全てオンライン化を目指したいと考えています。

 

その後はさらに、PCのブラウザやタブレット上で動かすだけでなく、計測・制御やロボットといった外部機器を操作できるようにしたり、コンパイルする技術を使ってArduino(アルドゥイーノ:オープンソースハードウェアの一つ)の上でドリトルを動かすといった作業を並行して進めています。

 

これはある高校で、温度センサをRaspberry Pi(ラズベリーパイ)につないでドリトルでグラフを描くプログラムを作ったものです。

生徒によるロボットの工作なども楽しそうです。

クラウドのプログラム学習環境を作ってみて、今後の発展について感触を得ました。特にオンラインとオフラインの組み合わせで使用できる形の工夫を追加すれば、現在でも十分実用に足りるものと考えています。一方、作品評価や成績評価についての課題は今後出てくると思いますので、引き続き研究を進めていきたいと考えております。