事例297

生徒がプログラミング言語を選択する新しい授業形態の提案

愛知県立小牧高校 井手広康先生

プログラミング言語の「択一式」と「選択式」

通常は、次のスライドの左側のように、教員が決めた言語を使って授業を行っていると思います。つまり、学年全員が同じ言語を使用することが、おそらく一般的なプロクラミング教育だと思います。

 

そうではなくて、生徒が自分の興味・関心、または自分の進路やなりたい職業などから、自分で言語を選んで学習を進められたら、より効果的にさまざまな力を付けられるのではないか、と考えました。「言語択一式」と「言語選択式」とそれぞれ名前を付けましたけれども、今年度の2学期に行う予定である「言語選択式」の実践についてお話します。

 

 

まず、今の話を聞いて疑問が湧くかもしれません。

 

一つ目が、言語をそもそも分けて大丈夫か、ということです。例えば、Scratchでプログラミングをしていて大学入学共通テストに対応できるのか、などといったことですね。二つ目が、授業でどういったプログラミングの内容を教えるのか。三つ目が、40人全員が異なる言語で、どうやって授業を行うのか。最後に、まだ実践前ですが、6月に生徒たちにどの言語を使って学びたいかアンケートを採りました。生徒にはどの言語が人気であるのか、その結果も含めて、四つの項目について提案します。

 

 

プログラミング言語は分けても大丈夫なの?

まず、言語を分けても大丈夫なのかということについて、これまで言語は何が良いのかといった話はよくされてきました。これについては、私の2年前の実践をご紹介します。

 

小牧高校は7クラス280人が、1年生でプログラミングの授業を行います。このときは「社会と情報」でした。その際に、クラスごとに言語を分けて、同じ内容で実践をしました。そして、最後に「サンプル問題」の第2問のプログラミングの問題を解かせて、差が出たのかどうかを見てみました。

 

 

こちらが得点の分布です。検定をかけた結果、どの言語を使っても「サンプル問題」の解答や点数には差は出ませんでした。

 

※クリックすると拡大します

  

また、アンケートで「サンプル問題を解いてみて難しかったですか」と聞きました。そうすると、7割ぐらいの生徒が「とても難しい」と感じていましたが、これも言語によって簡単に感じた、難しく感じたというのはありませんでした。

 

※クリックすると拡大します

 

このときは、30分で解かせましたが、その時間が短かったか、長かったかと聞いたところ、面白い結果が見られました。

 

Scratchだけ有意差が出たのです。どういうことかというと「ちょうどいい」が少なく、「短い」と感じた子が多かったんですね。なので、Scratchを選んだ生徒だけは30分が短く感じ、有意差が出たということです。これはなぜだろうと考えてみました。

 

※クリックすると拡大します

 

こちらが授業で使ったプリントです。当たり前ですけど、4つの言語を使用していますので、プリントは4種類作成しています。7回授業があるので、28枚のプリントを作りました。左にその言語を書いて、右側に英訳のように、大学入試センター言語(以下:DNCL)を載せました。

 

※クリックすると拡大します

 

そして、最後に、プリントの左側と右側のどちらが分かりやすかったか、というアンケートを取りました。

 

Pythonは、DNCLがPythonとそっくりなことが影響してか半々くらいでした。JavaScriptとVBAは、DNCLのほうが分かりやすいという結果でした。その中で、Scratchは、明らかにScratchのほうが分かりやすい、という生徒たちが大半だったのです。これは、ブロック型ということも関係していると思います。

 

なので、点数には差がなかったのですけれども、ブロック型に慣れた生徒が、いきなりDNCLを読むのには時間がかかると思うので、Scratchを扱う場合はDNCLの演習を余分にやらなければいけないかもしれないという感想でした。

 

※クリックすると拡大します

 

授業ではどんな内容を教えるの?

続いて、どういう内容を教えたらいいのか、ということです。

 

過去に大学入試センターが「試作問題(検討用イメージ)」、「サンプル問題」と、「試作問題」の3つ問題を公表しています。私なりに、これらからプログラミングに共通するところを抜き出してみました。

 

※クリックすると拡大します

 

そうすると13個のプログラミングの要素に集約できました。おおよそ、この13個の要素さえ押さえれば、大学入学共通テストに出題されるような問題も解けるだろうと考えています。

 

 

そして、各12種類の教科書のプログラミングのところを見てみたのですけれども、この13個の要素をすべて扱っているところと扱っていないところがあります。

 

別にこれは教科書が悪いというわけではありません。教科書を一遍取り組んだから終わりでは、ちょっとまずいので、扱っていないところは、先生方で補って授業を行う必要があります。

 

※クリックすると拡大します

 

それを踏まえて、今年は全部で10回のプログラミングの授業を予定しています。7回、8回で行った年もあるのですけれども、どうしても窮屈なので10回に延ばしました。特に配列のところは、ネストをかませながら、もうちょっと時間をかけてじっくり取り組ませたいです。このように13個の要素を、なるべく全部押さえられるようにしていきます。

 

※クリックすると拡大します

 

そもそもどうやって授業をするの?

三つ目に、どうやって授業をするのか、なのですけれども、4つの手順で考えています。

 

まず初めに、今日の学習内容をフローチャートで説明をします。そして、言語が4つ混在しているので、何を教えたらいいのかというと、そこはDNCLが使えると思います。大学入学共通テストも、言語によらない出題の仕方としてDNCLを使っているので、私も授業の中で言語によらない説明ができるように、DNCLでプログラムを説明します。その後、基本的な例題をそれぞれ入力して実行し、最後は各自のスピードによって発展課題に取り組む、といった流れを繰り返していこうと考えています。

 

 

また、生徒が使う実行環境について、VBAとScratchは1択です。ですが、PythonとJavaScriptは、実行環境が本当にたくさんあります。オンラインで実行できるものもあれば、統合開発環境もありますし、何を使えばいいのかとなってしまいます。

 

 

そして、実行環境によって学習効果に差が出るのではないかという疑問もあるかと思います。これについては、令和元年度に全7クラスでPythonを使い、クラスごとに実行環境を変えて、同じ内容でプログラミングを実践してみました。なぜ、この7個の実行環境にしたのかは私の好みです。このときはまだ試作問題も何も出ていないときでしたが、10回の授業を行っています。

 

※クリックすると拡大します

 

傾向を簡単に紹介しますが、こちらはプログラミングに対して、どんなイメージを持っているのか、という事前アンケートと事後アンケートの結果です。

 

大体が「難しい」と感じているようですが、事前・事後であまり変わらず、実行環境によっても変わらなかったのです。使用する実行環境によって難しいとか易しいという差はなかったんですね。

 

※クリックすると拡大します

 

それから、プログラミングが楽しかったか、楽しくなかったかどうかは、実行環境によって変わるかと思いましたけれども、検定をかけても変わりませんでした。どの実行環境を使っても、楽しさの点でも変わらないということがわかりました。

 

※クリックすると拡大します

 

面白い結果となったのが、実行環境が使いやすかったか、というアンケートを採ったところ、Spyderが「とても使い易かった」という回答が多かったのです。

 

このSpyderはAnaconda(Pythonディストリビューションの一つ)を入れると付いてくるのですけれども、ここに有意差が出ました。生徒の感想を見てみると「変数エクスプローラー」が使いやすかったようです。これは、リアルタイムで変数や配列の中身が見える機能ですが、他の実行環境でも似たような機能が使えることもあるため、活用したいと思っています。

 

※クリックすると拡大します

 

最後の授業の後に確認テストも行いました。A問題は「これを実行すると何が出ますか」という問題、B問題は「これを表示するためには何を入れればいいですか」といった問題で、全20問出題しました。

 

20問なので平均点は低いです。実行環境によって差があるように見えるのですが、検定をかけたら有意差はありませんでした。このように、確認テストの結果からも、どの実行環境を使っても大きな差はないということが分かると思います。

 

※クリックすると拡大します

 

それを踏まえて、今年はどの実行環境を使うかというと、何でも良いとはいえ、今回意識したことは、インストールの必要がなく、ブラウザベースでできるものでした。そして、個人アカウントを作成できるものが良いと思っています。

 

というのは、授業の中だけだとどうしても時間がないですし、できる生徒はどんどん学習を進めていけると思うので、自宅学習や冬休みの課題などに生かせるように、paizaやBit Arrowなどを検討しています。

 

※1 paiza.IO

※2 Bit Arrow

 

 

※クリックすると拡大します

 

生徒にはどの言語が人気なの?

最後に、生徒にはどの言語が人気なのかについて、6月にアンケートを採りました。

 

いきなりアンケートを採ったら訳が分からないので、まず、この4つの言語の「特徴」、「活用されている分野」、「難易度」、「サンプルプログラム」を提示して説明をしました。その後、自由時間を設けて生徒同士でどれにするか相談したり、Webで調べてみたり、あとは質問時間を設けるなどして、最後にアンケートに回答してもらいました。

 

※クリックすると拡大します

 

左が生徒280人の回答で、右は、愛知県の先生方約80名に「プログラミング言語は何を使っていますか」と聞いたアンケート結果です。

 

教員が使っている言語がPythonに偏っている結果に関しては予想通りです。多分、DNCLも影響しているような気はします。でも実際、生徒にどの言語やりたいかと聞いたら、そこまで言語で差は大きくはありませんでした。JavaScriptは少ないかなという感じはしましたけれども、ScratchやVBAも多い結果になりました。このように生徒が自分で選んだ言語のほうが、取り組みはいいだろうなと思っています。

 

 

そして、面白かったのが、クラスごとで見たら言語の選択の割合が大きく違うんですね。

 

勿論、授業では全クラスで同じように説明しています。若干、私の説明に熱が入ったときもあったかもしれないのですけども、クラスによっては、Scratchが多かったり、VBAが半分くらいだったり、けっこう差がありました。クラスの雰囲気も関係しているのかもしれません。

 

※クリックすると拡大します

 

最後に、情報処理学会が高等学校情報科教員研修を2023年7月31日から行っています。

 

この研修では「情報Ⅰ」の単元を大きく5つの領域に分け、さらに領域ごとにStep1~5に細分化し、それぞれのStepで30分ほどの動画を高校の先生、大学の先生に作っていただいています。ぜひ、明日の授業の教材、題材の参考に、研修受けていただければと思います。個人申込では2,200円かかってしまいますが、もしご所属の研究会が団体申込をしていると、無料で受けることができます。ぜひご活用ください。

 

※3 情報処理学会:⾼等学校情報科教員研修

 

※クリックすると拡大します

■質疑応答

 

Q1.高校教員

プログラミングの定着を考えたときに、1年生の10時間の授業で足りるのか、足りないのかということについてはいかがでしょうか。

 

A1.井手先生

結論から言いますと、全く足りないです。授業を行っている中では、ある程度の知識や技能は身についてきたかなとは思うのですけれども、時間がたつと絶対に忘れています。この夏に、昨年の2年生の理系クラスのみ補習をしましたが、きれいさっぱり忘れていて、一からもう一回、簡単に説明することになりました。

 

なので、2年生のように「情報」の授業がなく空いている時間を上手に活用したいと考えています。例えば、先ほど、実行環境は何でも良いとはなりましたが、生徒が個人アカウントを作れると家でもできますし、定期的に課題を課すこともできます。定期的に使うことで忘れないように、また、やはり自分で手を動かさないと覚えられないところがあると思いますので、長い目で定着させていきたいなと考えています。

 

Q2.高校教員

10時間程度の授業の中で、例えば8割程度の生徒たちが、これくらいできるようになったらゴール、というのはありますでしょうか。「情報Ⅰ」の授業としてプログラミングのゴールをどこに置くかについて、お考えをお聞かせください。

 

A2.井手先生

これも、多くの先生方が悩まれているところかと思います。私の回答としては二つあります。

 

一つは、大学入試センターから3つの問題が出ていますが、生徒がつまずくのが入れ子なんですね。「サンプル問題」だとwhile文、for文、if文が三重になっています。ここまでを、8割の生徒に到達させようとなると、私の感覚だと結構頑張らないといけないなと感じています。ですので、目標は、配列込みの二重ループまでを8割の生徒ができるようにと考えています。

 

もう一つが、プログラミングを楽しんでほしいということです。そんなにがりがりやってもプログラミングを嫌いになってしまったら悲しいですし、全員がプログラマになるわけではないので、全員がゴールをそこに置くのではなくて、もう少し下げたところにしていています。進められる生徒は、発展課題を取り組んで、もっと上に、難しい生徒は、周りの子たちで助け合いながら進めていけるように、楽しみながらレベルを底上げできるような授業にしていきたいです。

 

第16回全国高等学校情報教育研究会全国大会(東京大会) 口頭発表より