事例366
協働的なプログラミング実習
岡山県立岡山操山高校 太田重成先生

今回は、「協働的なプログラミング実習」ということで、私が実践したグループワーク中心のプログラミング実習を振り返って、いろいろ感じたこと、思ったことについて報告したいと思います。
まず実践発表の概要です。
私は、「協働的」という言葉について、これは生徒同士なのか、教員と生徒なのか、教員同士なのか、ということについて、最近ずっと考えてます。今回は、この一つの見解を報告できたらと思います。
続いて、今回グループワークで生徒に作問をさせる、ということをしてみたのですが、生徒の発想力というものにはどんなものがあるのかということをご紹介して、さらに次の展開としてどのようなことを考えているか、ということをお話ししたいと思います。

実践校の概要です。本校は創立120年を超える、高等女学校時代からの伝統校になります。
進学実績は国公立大学が約60%で、東大、京大、医学部医学科のような超難関から地方の大学まで、非常に幅広い学力層が集まっています。というのも、本校は中学校を併設しているので、1学年7クラスのうち3クラス分ぐらいの人数が内部進学生となります。
「情報Ⅰ」は2年生で履修しています。2年生の補習には「情報」はなくて、3年生の夏と冬の補習のみで、1クラス2~3時間程度です。3年生は全員Classroomに入らせて、問題演習中心に行い、下級生の定期考査や外部模試などの解説動画の配信という形で進めているという状況です。

前週末に授業スライドと解説動画を、当日朝にワークシートを配信して、実習中心の授業を行う
では、実践内容です。
まず私の普段の授業のパターンをご紹介します。この青字の部分が、昨年の発表から変わったところです。
昨年は、「完全反転授業」がちょっと生徒の抵抗が多かったので、あまり取り入れていませんでしたが、今年度は前週末に授業スライドと解説動画を配信して、週末の間にその週の予習ができる、という体制を取っています。
そして、授業当日の朝に、その日のワークシート等を配信します。授業は初めに解説動画の概要について、「動画ではこんなことをしゃべっているから、また見ておいてね」という形で、さわりの部分だけを解説して、実習中心で行います。
ノートは、基本的にはスライドに電子ペンで書いてもらっています。問題演習もpdfに電子ペンで入力します。最近は、振り返りシートをGoogleドキュメントで配信しているので、これに授業中に直接入力する人もいます。

グループワークは、席順を基準に、1クラスを4~5名の8グループに振り分けています。
Googleスライドでグループ数分のスライド(ページ)を準備して、そこにグループでまとめた解答や意見を貼り付けます。実習中はグリッド表示にして、全員がどのような進捗かを一目でわかるようにしています。
意見を共有する際には、各グループのスライドを一つひとつ表示しながら、グループの代表者に説明や解説をしてもらいます。グループワークでは、知識がきちんと全員に定着されているか、ということを懸念される方もいらっしゃると思いますが、私は授業の終了直後に「模範解答例&解説」という動画を配信して、それを各自確認することで定着を保証する、ということにしています。

フローチャートの読み取りについては、YouTubeの動画を活用。Flowgorithmで様々な言語に触れる
続いて、プログラミング単元の流れです。
まずフローチャートの読み取りから入りますが、ここでは教育系YouTuberの方の動画をそのまま使用しています。内容としては、アルゴリズムの表現方法、流れ図、変数、代入、端子記号処理記号、順次・反復・分岐・判断記号、要素、配列などです。この動画は昨年試しに使ってみましたが、非常に好評でしたので、今年も使っています。
その後、Flowgorithm(※1)というWindows対応のソフトウエアを使ってフローチャートを作成します。
ここでの目的は、学習指導要領でも触れられているように、複数のプログラミング言語に触れることで、プログラミング言語というものの特徴をつかむことです。
※1 http://www.flowgorithm.org/documentation/
Flowgorithmは、複数の言語でプログラミングのコーディングを書き出してくれるので、生徒たちにいろいろなプログラミングの言語の表現があることを示すことができます。Pythonはわかりやすいので、「次の時間からPythonでコーディングするからね」と言うと、生徒たちは結構ほっとした感じでコーディングに入ることができるため、この実習を挟むことにしています。
今年度は、コーディングの説明に、情報処理学会のIPSJ MOOC(※2)を使用しました。グループワークの2時間は、文科省授業・研修用コンテンツの「100連ガチャ」(※3)と、IPSJ MOOCのFizz Buzz(※4)の3つを行いました。
※2 https://sites.google.com/a.ipsj.or.jp/mooc/list/C3-1
※3 https://www.youtube.com/watch?v=KGyOQGWCTe0
※4 https://colab.research.google.com/drive/1gwUs1jp9U_zQ4xGc3J9k54EQe67D42ZK?usp=sharing

100連ガチャはオーソドックスなグループワーク、Fizz-Buzzは自分たちで分岐条件を変えた問題を考えさせてみた
まずグループワーク①の100連ガチャです。この動画には、チャレンジ問題が3題出てきましたが、これを各グループで考えて、解答例を作り、提示して解説をしてもらうという、いわゆる典型的なグループワークを行いました。
グループワーク②は、Fizz Buzzプログラムを元にして、子どもたちに分岐条件を変えた問題を作ってもらいました。それを別のグループが解答を考えて、作問グループが解答例を提示・解説するという形のグループワークです。
他教科でも、作問させることはよく行っていますし、実際私たち教員も、作問をすることで教科指導力が上がるとよく言われますので、子どもたちに作問させてみたらどうかな、ということでやってみました。

グループワークの結果です。
まず100連ガチャの方は、当たり判定の変更はほぼ100%できていました。当たりまで引くガチャをwhile文で表現するのがちょっと難しくて、7割程度でした。「キャリーオーバー」で正解できたのは、8グループ×7クラスの56グループ中、2グループのみでした。
これが実際、正解したグループが書いたコードですが、一応動くには動きますが、やはりコードとしては美しくない感じで、なかなか難しかったのかなと思います。
※クリックすると拡大します
続いてFizz Buzzの応用、作問させる問題です。
私は、生徒がやってくるのは単純に分岐条件の数字を変えるだけかな、と思っていましたが、意外なことに多種多様な問題ができました。
例えば、偶数・奇数判定。これはよくあります。素数判定もよくあります。そのほかに、なぜか累乗判定とか、平方数とか立方数というものを考えてきたところもありました。
面白かったのは約数判定です。これの分岐条件はどう付けていくのかな、と私も一瞬考えたところがありました。あとは、開始の数をランダムにしてFizz Buzzをしたり、3で割った余りでチーム分けといったルールのもありました。非常に独創的だったのが元号判定とかいうのがありまして、これは面白いなと思った次第です。

YouTubeの動画は役に立つ・数学Aとの連携がよさそう・自習時間のグループワークは非常に有効!
これらの実践での気付きについてご紹介します。
まずは、質の高いYouTube動画は積極的に活用できる、ということです。YouTubeの動画をそのまま使うことには、抵抗のある先生も多いかもしれませんが、私は非常に有効だと思います。
生徒たちにも、とても好評ですし、合間に私の方で補足説明を入れたりすれば、一層深い学びになると思いました。
次に、数学Aの「整数の性質」と連携するのがよさそうだ、ということです。特にFizz Buzzは、数学でやっても面白いところなので、ここは連携したい部分でした。
また、グループワークは自習時間にも活用できるということです。私は今年3年生の担任をしておりまして、本校の3年生の保護者面談のときも、1、2年生は普通の授業、という行事予定になっています。また、私自身が、今年はいくつかの研修を受けていることもあって、自習時間ができてしまいました。

さらに本校は時間割変更をする際には、自分で他の先生にお願いしてコマを差し替えないといけないのですが、現在校舎が工事中で使用教室が限られていることもあり、時間割変更が無理ということもありました。
そんなときは自習にせざるを得ないのですが、ただ問題集をやらせておくのはもったいないので、自習でグループワークさせてみました。すると、これがよくできるのですね。
しかも生徒たちにも自習監督の先生にも非常に評判が良かったです。本当は、私たちがいろいろ補足説明をしないといけないですが、それでも(自習でグループワークは)できないことはないな、という感じがしました。
ですので、普段からグループワークを実施して慣れさせておくのは、けっこう大切なのだなと思いました。
生徒が作った問題をドリル化すれば、学びをさらに深められそう
次に、生徒が作った問題をドリル化して蓄積しておけば問題演習に使えるなということを感じました。さらに、本校ではまだ生成AIの活用は始まっていませんが、生成AI利用の可能性も感じました。グループ内で問題を作らせると、どうしても今の自分たちが解答作成可能な問題になってしまうのですね。ですから、それよりもちょっと上のレベルの作問をしようと思ったら、生成AIに頼るしかないな、と。さらにAIが生成する解答を分析することで、学びが深めることもできるでしょう。
要はグループの中にAIという1人の仲間が増えて、このAIとの協働作業、協働学習、協働的な学びというものもできるな、というのを感じた次第です。
動画は見せるだけでなく補足の解説も大切、という感想も
このような授業を受けた生徒たちの感想を、2学期の振り返りアンケートから抜粋しました。
まず満足度です。満足度を数字で入力して、その理由を書いてもらいました。
やはり「YouTubeの解説動画が理解しやすかった」「動画が多かった」「学力向上につながる」「プログラミングは難しかったけど、ちゃんと力になりそうだった」「協力してできた」「動画は何度も見て理解できるからいい」など、非常に肯定的な意見が多かったです。
※クリックすると拡大します
授業の進め方で良かったところについても聞きました。「YouTubeの解説授業がわかりやすかった」「YouTubeで動画を視聴して、わかりにくいところは先生が解説を入れてくれるのがとてもありがたかった」「動画を見る際に解説を入れてくれるところ」というもがあり、やはり間で解説を入れるのが大切であり、好評だったことがわかりました。
※クリックすると拡大します
逆に良くなかったところも聞きましたので、これもオープンにしていこうと思います。
「授業が動画過ぎた」「解説とか、もう一度取り組める時間がほしかった」「動画は一方向なので、これをどうにか双方向にしてもらえませんか」といった厳しい意見もありました。全体では、90%以上の人が満足した、という状態でした。
※クリックすると拡大します
自由記述では、印象に残った授業などについて書いてもらっています。
「プログラミング言語を実際使えるようになるとは思わなかった」と言うのが、私にとっても非常に嬉しかったです。あとは、「100連ガチャの問題がとても面白かった」「しっかりアウトプットできてとても良かった」というものもあり、生徒たちにとって本当にいい学びになったことを感じて、非常にぐっときました。
※クリックすると拡大します
教員同士の協働・生徒同士の協働・生徒と教員の協働の大切さがそれぞれ実感できた
まとめです。YouTubeの動画は、しっかり活用できると思います。これは教員同士の協働という意味です。一方的に流すだけでなく、補足解説も入れると、生徒にとっては、深い学びにつながっていくと思うので、授業の中で補足解説を入れていくとよいと思います。
続いて、生徒同士で協働して作問・解答・解説を行ったのは、非常に良かったと思います。生徒が作った問題を蓄積をしてドリル化するのも、面白い取り組みかなと思うので、ぜひチャレンジしてみたいと思います。
また、グループワークによる自習も可能であることがわかりました。これも生徒同士の協働です。そのためには、普段からの活動の中でグループワークをしっかり行うことです。
どうしてもグループワークをすると、生徒は完成品だけにこだわって、途中の学びの部分がおろそかになりがちなので、成果物主義ではなくて、学びに対する意識付けが必要だなと思います。そして、今後はAI活用に関してもチャレンジしていきたいと思います。

最後に、生徒が求める学びのために、私たちが何をしないといけないか、ということについて。
生徒が求める学びを感じ取って、豊富な教育コンテンツの中から、私たちが、いわゆる生徒観に合った教育コンテンツを取捨選択して提供すること。そして、その中で私たちがいろいろなアレンジを加えて提供していく。こういった力が、今後求められるようになります。これこそが教員と生徒の協働ではないかと思います。
これからも、こういった「教員と生徒の協働」を意識しながら、さらに授業改善を進めていきたいと思います。
神奈川県情報部会実践事例報告会2024オンライン オンデマンド発表より