こどもとIT

「ネットワーク」に「双方向」!? 倍増するプログラミングの学習内容に中学校の現場はどう対応するのか

――相模原市立相原中学校 技術科公開授業レポート

2020年より小学校でプログラミングが必修化されることは注目されているが、翌2021年から施行される中学校の新学習指導要領の「技術・家庭」で扱うプログラミングの内容にも実はけっこうな変更点があるのをご存じだろうか。プログラミングに関してだけ言えば教える内容が「倍増」したとも取れる改訂の概要と課題、それに現場はどう対応しようとしているのか、神奈川県相模原市で行われた授業公開の様子とともに見ていきたい。

中学校の「技術・家庭」で扱うプログラミングとは?

「技術・家庭」というと、中学生時代に男子は技術室、女子は家庭科室で別々に学習していた記憶のある読者の方も多いかもしれないが、1989(平成1)年以降、男女共通で同じ内容を学ぶことになっている。そして、現在の学習指導要領の「技術・家庭」の技術分野では、A〜Dに分類された4つの内容のうち「D 情報に関する技術」の、「プログラムによる計測・制御」という項目ですでにプログラミングを扱っている。

2021年に全面実施の新学習指導要領では、さらにプログラミングの項目が増える。内容「D 情報の技術」で、「計測・制御のプログラミングによる問題の解決」(以下、計測・制御のプログラミング)に加え、「ネットワークを利用した双方向性のあるコンテンツのプログラミングによる問題の解決」(以下「ネットワークを利用した双方向性のあるコンテンツのプログラミング」)が追加されるのだ。

技術分野の新旧内容の比較

なお、旧版の「ディジタル作品の設計・制作」は「ネットワークを利用した双方向性のあるコンテンツのプログラミング」を通して学ぶことに置き換えられ、内容の一部が統合された。

「ネットワーク」や「双方向性」のコンテンツを中学生で?

さて、追加となった「ネットワークを利用した双方向性のあるコンテンツのプログラミング」だが、おそらくプログラミングに詳しい方ほど、「『ネットワーク』とか『双方向』って、中学生でそこまでやるの?」と困惑するのではないだろうか。

というのも、通常、プログラミングの初学者が体系的に学ぶときに、いきなりネットワーク経由でデータをやりとりするようなプログラムを扱うことはない。例えば大人の初心者向けのJavaScriptの本を開いてみると、最後に発展的な内容として外部のデータを取得するプログラムを扱っている程度だ。

さて、実際の中学校の現場では、「ネットワークを利用した双方向性のあるコンテンツのプログラミング」でどんな授業をしようと模索しているのだろうか。11月の終わり、神奈川県相模原市相原中学校の公開授業を訪ねた。

授業を実施したのは同校の2年生。1クラス32名がPC教室に集まった。「ネットワークを利用した双方向性のあるコンテンツのプログラミング」を2年生でやり、3年生で「計測・制御のプログラミング」をやる想定とのことなので、中学生になって初めてプログラミングに触れるシーンということになる。

教材として担当教諭の荒木佑輔先生が用意したのはScratchでプログラムしたゲームだ。主人公キャラクターが敵キャラクターに攻撃を加えHP(残りパワー)を奪うというシンプルなものだが、各生徒がひとつのScratchプロジェクトとして仕上げたのでは「ネットワークを利用した双方向性のある」という要件を満たさない。そこで、サーバーに見立てたパソコンに生徒側のパソコンを複数接続し、生徒側から、サーバー側の敵を同時に複数人で攻撃できるというソーシャルゲーム仕立てにした。

サーバー側のScratchプロジェクトと生徒側のScratchプロジェクトは、Scratch1.4のMesh機能を利用して接続させた。Mesh機能を有効にすると、複数のScratchプロジェクト間で変数とブロードキャスト(「送る」)を共有できるようになるので、プロジェクト間でインタラクティブな仕組みを作るのに活用できる。

サーバー側のScratchプロジェクト
生徒側(ユーザー側)のScratchプロジェクト

この日は、授業10コマ分で計画された指導案の6コマ目にあたり、生徒達はすでにこの基本形通りのプログラムを完成させ、キャラクターをアレンジするなども済ませていた。

全員で同じサーバーにつないだら処理不能! さぁどうする?

さらにストーリーがある。4コマ目の授業の際に、ひとつのサーバーパソコンに全員が同時にアクセスして敵キャラを攻撃したところ、処理が集中して速度が落ちゲームが成立しなくなってしまったのだ。この問題をどうしたら解決できるか?をこの日までにワークシート上で考えてきた。

そこでついに今回6コマ目の授業だ。この時間は、これまで検討してきた解決方法で、プログラムを改編する実習となった。まずはサーバーの処理が追いつかないという問題に対するモデル的な解決策として、連続攻撃ができないように生徒側のプログラムを改編することになった。その上で時間が余れば自分なりに他の解決策も試してみるよう先生が呼びかける。

生徒が実際に構想に使ったワークシート。左側で問題と解決方法の検討をした。右側にはプログラムの構成がアクティビティ図で示されていて、そこに改編のための処理を書き込めるようになっている

なぜこのようなストーリー展開があるかといえば、新学習指導要領では「何を学ぶ」かだけでなく「どのように学ぶ」かが記述されるようになったことと関係があるだろう。例えば、「ネットワークを利用した双方向性のあるコンテンツのプログラミング」の部分だけでも、『生活や社会における問題を』『プログラミングによって解決する活動』が求められている。さらにその活動を通じて、『情報通信ネットワークの構成』を理解し、『安全・適切なプログラムの制作,動作の確認及びデバッグ等』を身につけること、また、『問題を見いだして課題を設定』した上で『改善及び修正について考える』ことなどが求められるのだ(『』は新学習指導要領より引用)。

実習中の生徒たちの様子はさまざま

授業のほとんどの時間は実習時間。数人に1台の割合でサーバー用のパソコンが割り当てられ、自分のパソコンでScratchプロジェクトを修正したら、適宜サーバー側に接続してプログラムを実行してみる。

モデル的な解決策を実現するために、「○秒待つ」のブロックをプログラムのどこに入れたらいいかあれこれ試してみている生徒もいれば、それは終えたのかオリジナルの解決策をプログラムしようとしている生徒もいる。キャラクターの演出的な部分をもっと作り込みたい様子だったり、何か別の機能をつけようとしている様子の生徒も。進め方も様々で、黙々とひとりでやるケースもあれば、たえず声をかけあって相談しあったり、教えあったりする様子も見られた。

ワークシートを見ながらプログラムの改編に取り組む
生徒側からサーバー側のScratchプロジェクトに接続

とはいえ、実習タイムに各生徒が何をしているかというのは、なんとなく教室を見学しているだけでは全くわからない。筆者も生徒の背後から画面をのぞき込んでじっくりコードを眺めて、その生徒が何をやろうとしているところなのかを推測するしかなかった。だから、ひとりの先生が短時間で32人の個別の進捗や取り組み内容をつかむのは容易なことではないだろう。サーバーに接続する部分がうまくいかずに先生に声がかかることも多く忙しそうだ。

それでも先生はやはりポイントを押さえて見ているようで、授業の最後でふたりの生徒を指名し、それぞれの生徒は改編中のプログラムを紹介した。どちらも自分なりに考えた改編アプローチだった。ここで終了となり、次回の授業以降で引き続きプログラムの改編を進めることとなった。

実習中に大きな起伏があるわけではないが、生徒達はゲームを作ることを静かに楽しんでいる様子で、難しい勉強に頭を抱えているような雰囲気では全くない。必ずしもプログラムがうまくいっているとは限らなくても、どんどん組み替えていろいろと試している様子だった。

授業公開後に行われた協議会では、今回の指導計画の背景や根拠が示され、これが新学習指導要領にていねいに沿って組み上げられたということがよくわかった。その上で、課題になりそうなポイントを整理したい。

どうしたらわかりやすい教材にできるか?

ネットワークを介したプログラムというのは、初心者向きではないし、そもそも何が起きているかを把握しづらいものだ。協議会でも、プラスの感想が多く出る一方で、「ユーザー(生徒側)とサーバーの関係がよくわからなかった」という正直な感想も出たし、「理解できていない子どももいたのではないか?」と心配する声もあった。

わかりにくさを生む理由は様々だが、題材選びや教材の設計時に、プログラム同士の関係やデータの受け渡しが直感的にわかりやすいように配慮し、かつ、プログラム自体は極力シンプルに保った方が理解は深まるだろう。複雑なコードを使わざるをえない場合は、プログラムの役割を理解することを重視して、コードの詳細はブラックボックス的な受け止め方で構わないという線引きも必要になるかもしれない。

なお、新学習指導要領解説には、「ネットワークを利用した双方向性とは,使用者の働きかけ(入力)によって,応答(出力)する機能であり,その一部の処理の過程にコンピュータ間の情報通信が含まれることを意味している」とあり、ネットワークを介するのは、入力と応答の全てではなく「一部」でも構わないことになっている。また、「利用するネットワークは,インターネットに限らず,例えば,校内LAN,あるいは特定の場所だけで通信できるネットワーク環境も考えられる」とあり、パソコン間やサーバーとのやりとりに限らず、例えばmicro:bitのようなマイコンボード同士の通信でも構わないということになる。これらを押さえておくと選択肢が広がりそうだ。

小学校のプログラミングとの接続は?

協議会の指導講評では文部科学省初等中等教育局の上野耕史教科調査官より、中学校の新学習指導要領のプログラミング部分について解説があった。今回の改訂の意図は、小学校でのプログラミング教育の内容を中学校でさらに発展させるためだということだ。

中学校の新学習指導要領改訂の意図

もし今回の授業内容が、子どもが初めてプログラミングを学ぶ接点だとしたら、難易度が高すぎる印象だが、小学校ですでに学習してきた子ども達が2021年には入学するので必然的にレベルを上げることになったというわけだ。

ただ、少し心配なことがある。小学校の新学習指導要領で示されたプログラミングは、体系的なコンピューターサイエンスの学びとは違い、プログラミングという新たな教科ができるわけでもない。体系的な学びのステップは示されず、「プログラミング的思考」を身につけることが重視されている。

プログラミングの実施学年や時間数の決まりもないので、少なければ1年に1回単発で体験的なプログラミングしかやらない可能性もある。逆に熱心な学校や市区町村もあり、子ども達が経験する内容や時間は大きく異なるだろう。つまり従来の教科教育のように、全体が同じ内容と時数の授業を重ね知識を積み上げて中学に上がってくるイメージとはちょっと違うのだ。小学校での経験を見込んで中学校で立てたはずの指導計画が、実態よりも高度すぎてしまうケースが出てこないだろうか。

相模原市教育委員会教育センターの渡邊茂一指導主事に、中学校のプログラミングの学習内容が増えることについて聞いてみると、相模原市の場合、小学校から中学校への接続を考えて体系的に学べるように小学校段階からカリキュラムを検討して計画しているため、あまり心配していないということだった。

小学校と中学校のギャップを減らしスムーズな連携をするには、相模原市のように、小中をひと続きにした体系的なバックボーンを作ることがひとつの対策になりそうだ。体系的な学習ステップを作れなくとも、中学校側が、同地区の小学校がどの程度のプログラミング教育を実施するのかを把握しておくと授業を組み立てる判断材料になるだろう。類似の教材や言語を使うことで、学びやすくすることもできるはずだ。

個別のトライアル&エラー体験をどう確保する?

今回の相原中学校の指導計画では、サーバーに負荷をかけるというあらかじめ用意したストーリー通りに壁にぶつかって全員で改善策を考えた。これは先に指摘したとおり新学習指導要領にある「どのように学ぶか」という要素をていねいに授業の流れに組み込んだからだろう。指導計画全体として新学習指導要領が求める要素をよくここまで盛り込めたと感じるほどだ。

ただ一方で、こうしたていねいな学び方の誘導とストーリーセッティングの元でプログラミングをやることが、本当にこれから必要とされる問題解決能力につながるのかどうかということには漠然とした疑問も感じる。これでは結局示された通りのルートで思考しているだけになってしまわないだろうか。

特にプログラミングに関しては、頭で理屈を理解してからでないと手を動かせないという慎重派よりも、とりあえずどんどん手を動かして試すトライアル&エラー派の方がぐんぐん吸収していくという声をエンジニアたちから聞くことが多い。

一定のストーリー展開は、一斉型の授業スタイルで進行するときに重要な役割を果たすだろうが、個別のトライアル&エラーの場を作りづらい。一方で、新学習指導要領が重視している「主体的・対話的で深い学び」(アクティブ・ラーニング)や、今注目されている個に則した学び(アダプティブ・ラーニング)といった新しいアプローチの学習スタイルは、個別のトライアル&エラー体験にはぴったりだ。プログラミングはこれらの新しい学習スタイルとの親和性が非常に高いので、積極的に取り入れて授業の形自体を変化させていくことにプラスの効果と大きな可能性があるだろう。

小学校のプログラミングも中学校の「ネットワークを利用した双方向性のあるコンテンツ」もまだ模索段階だが、現時点で見えている課題を踏まえ双方の実践内容にも注目しあうことで、プラスの軌道修正やいいコラボレーションが生まれることを期待したい。

狩野さやか

株式会社Studio947のデザイナー・ライター。ウェブサイトやアプリのデザイン・制作、技術書籍の執筆に携わる。自社で「知りたい!プログラミングツール図鑑」「ICT toolbox」を運営し、子ども向けプログラミングやICT教育について情報発信している。