プログラミング×探究活動をどのように指導する?

ロボットを使って答えが一つではないミッションに挑戦する中で子どもたちの成長を促す

追手門学院大手前中高等学校 福田哲也先生

プログラミングで社会課題の解決に挑戦するための部活

ご本人提供
ご本人提供

私は情報の教員ではなく、中学校の理科教員です。2003年に前任校でNASAの教育基金をもらって、中学生が製作したローバー(探査車)を、火星を模したジオラマ上で走らせて性能やアイデアを共有する「Mars Rover Project」という国際交流プロジェクトを始めたのがきっかけで、これまでロボットサイエンス教育を行ってきました。

 

 

そして、2013年に現任校に赴任したとき、ロボットサイエンス教育を、中学校1年生から3年生の正規の授業として展開しました。こちらがそれぞれの学年のカリキュラムです。

 

 

その後、2014年にロボットサイエンス部を立ち上げました。「中高生情報学研究コンテスト」に参加しているのは、この部活の部員です。部活のコンセプトは、答えが一つではないミッションのロボコンに挑戦したり、SDGsなどの社会課題を解決するためのロボットを開発したりすることです。

 

 

例えば、高校生が取り組んでいるのが、渋滞緩和による環境問題の解決です。渋滞では大量の二酸化炭素が発生するのですが、ではどこで渋滞が起こるかと言えば、実は信号なのです。今、車が自動運転をするようになっていますが、信号では止まるはずです。ところが、渋谷のスクランブル交差点のように、あれだけ人があちこち自分の行きたい方向に行くのに、意外とぶつからずに擦り抜けて移動している。だったら、ああいう交差点をつくれば渋滞が起こらないんじゃないか、ということを、プログラミングで何とか具現化しようということに取り組んでいます。

 

ですので、ロボコンの勝ち負けよりも、社会に役立つロボットやシステムを考えて取り組んでいます。今は完成度が低くても、10年後には絶対あるだろう、実現したらいいね、ということを願って・・・。そして、FLL(First LEGO League)やWorld Robot Olympiad(WRO)といった大会にも参加して、FLLでは、3年前の世界大会で総合優勝しています。

 

 

WROは、2017年にレゴで手話通訳ロボットをつくり、銅メダルを獲得しました。

 

また、2018年は、SDGsのNo.3に関連する「食(食糧問題)」がテーマでした。この大会では、高校生がアルゴリズムを用いた食品ロス削減ロボットを、中学生はAR/VRシステムを用いた食事介助ロボットをつくって、両方とも世界大会で5位に入賞しました。この手話通訳ロボットと食事介助ロボットは、2021年度の新しい中学教科書でも紹介されました。

 

 

こういったロボットサイエンス教育の普及を目指して、地域の小学生を対象にしたロボットセミナーを、年間20回以上開催しています。子どもたちのために、という地域貢献とともに、私自身にとっても「教える」という学びの場になっています。

 

「魚を与えるのでなく、魚の釣り方を教える」ための活動

よくプログラミング教育をされている方から聞かれるのは、「言語は何を使っているのか。Pythonなのか、Javaなのか。レゴをやるならビジュアルコーティングなのか」と。

 

しかし、私が目指すロボットサイエンス教育では、まず目的、例えば先ほどお話ししたような、「交差点で車がぶつからないように擦り抜けられるようなプログラムをつくる」という目的があるわけで、それを解決するためであれば、言語は何でもいいわけです。様々な方法からアプローチを行い、少しでもゴールに近づく、その過程に学びがあると考えています。

 

 

ただ、実際の指導は本当にたいへんです。レゴのビジュアルコーディングをする生徒もいれば、C#をやる生徒もいる。「こういうことがやりたいから、Raspberry Piを2つください」とか「マインドストームでつくりたい」という人もいる。もちろんお金もかかります。しかし、生徒たちにきっちり目標さえ定めてやれば、あとは私自身がやることは環境整備だけで、それができるかどうかが、キーなのです。

 

生徒たちが、自ら助成金を獲得する場合もあります。ロボットサイエンス部では、多くの活動費を必要としますが、生徒会からのお金だけではまかないきれず、外部予算に頼るしかありません。2020年度は、中谷財団やプロメテウス財団から、支援をいただき、盲導犬ロボットや流出重油回収ロボットなどの開発費にしました。生徒自ら助成の申請することも、ロボットサイエンス部では常です。

 

デザイン思考という言葉をご存じでしょうか?私たちの活動は、デザイン思考をもとに、プログラムだけで終わるのでなく、必ずそれをプロトタイプして、実装するというようなことを心掛けています。実際にものをつくるとなると、簡単ではなく、失敗の連続です。さらに、プログラムをつくることで、可能性は無限大に広がります。つまり、「ものをつくる」×「プログラムをつくる」=無限×無限で、より思考が深まり、視野も本当に広がります。ゆえに、私は「ロボットサイエンス教育は賢くなる」と自負しています。

 

 

実は、私自身はプログラムができません。だから、生徒から聞かれてもわからないことも多いし、一部の生徒たちは「先生よりも自分の方がプログラミングスキルは上だ」と思っています。師弟関係が変わってしまいますが、そういう点が、ロボットサイエンス教育の面白いところだと思います。

 

ただ、プログラミングスキルを身に付けるということ自体が目的ではなくて、生徒たちには論理的思考力やコミュニケーション力、想像力・創造力を身に付けてほしい。ロボットはあくまでも教材であって、仲間と一緒にとことん考えて最後まで諦めないでやり抜く力を付けてほしいと思っています。

 

この「仲間と一緒にとことん考えて最後まで諦めない」というのは、実社会で最も必要とされる力でもあります。ロボットサイエンス部の卒業生で、今もつながりがある人が30名ぐらいいますが、その多くは研究職に就いています。彼らが「中学校のときに、『どうやったら社会の役に立つんだろう』といろいろ考えながらロボット開発をしたことが、大きな人生の糧になっている」と言ってくれるのが、私としては非常に嬉しいことです。

 

 

私が大切にしている教育理念がこちらです。これは2003年にMars Rover Projectで意気投合したアメリカのイバーラ先生と共有した言葉です。「私たちがやっている理科教育・科学教育というのは、子どもに魚を与えるような教育じゃないね。釣り方を教えてあげて、彼らが未来社会で闊歩できるようにすることが、私たちのサイエンス教育だね」と。これが私の中のべースになっています。

 

 

これまで、生徒たちの活動について話してきました。国際大会で入賞したり、社会で活躍していたり、と自慢のように聞こえるかもしれませんが、生徒たちはロボット開発に長けた優秀な生徒ばかりではありません。スポーツが苦手だから・・・、人と接するのが苦手だから・・・、どちらかというと、自己肯定感の低い生徒たちが集まってきます。

 

そのような生徒たちが、ロボット開発をする中で、人前でしゃべれるようになり、最後は世界を舞台に英語でプレゼンするようになる。彼らの成長を目の当たりにし、私自身、教育者として喜びひとしおで、私の原動力になっています。

 

■生徒がやりたいことを見つけて、それをプログラミングで問題解決していくとき、その「キモ」となるテーマの見つけ方、あるいはゴールの設定の仕方はどのようにされているのでしょうか。

 

まず、生徒に活動テーマを考えさせます。実際の活動は4月からスタートしますが、その前の2月・3月にテーマについて、大激論をします。中途半端なテーマには私はゴーサインを出しません。

 

今、部員は50人ほどいますが、25チームが15のテーマに取り組んでいます。中には、ロボットづくりではなく、「レゴブロックで大阪の風景をつくる」というチームもあります。

 

しかし、「SDGsの問題解決をする」といった大きな課題に取り組むチームは、議論を頻繁にします。時には、福田が対案を出すことも。そうすると、生徒たちは、福田に負けじと、私の案以上のものを出してきます。ある意味、そのやり取り自体が仕掛けなのです。最終的には、私の案が却下されるわけですが、このやりとりの中で、彼らは思考を深めていくのです。

 

そして、彼ら自身がやりたいと決めたテーマですから、「絶対に最後までやらなきゃいけない」という覚悟ができています。そのような意味で、テーマ設定には、かなり時間をかけます。

 

また、ゴール設定がないまま、「SDGsの問題を解決しましょう」では、彼らのモチベーションも上がらないので、テーマに合わせて、今回のように「情報処理学会で発表する」とか、「WROのSDGsを解決する部門に出場する」などを目標提示します。

 

ロボコンならば、ミッションはある程度決まっていますが、SDGsの解決のような場合は、「なぜそれをやりたいのか」ということから徹底的に議論します。ただし、頭ごなしに「お金がかかるからダメ」とか「君たちには難しいからやるな」というと言うことは絶対にしません。

 

 

■先ほどの手話通訳のロボットであれば、「こういう仕組みがある」とか「言語は何を使ったらよいか」といったテクニカルな問題が大きいと思いますが、そういったものを見つけるためのヒントはどのように与えているのでしょうか。

 

やることが決まれば、生徒たちは、自らインターネットなどで調べます。大学に行っている先輩に助けを求める場合もあります。私もあちこち調べますが、企業や町工場の方に相談するなど、本当にあらゆる所にネットを張っています。そして、お皿にいろいろな料理(得た情報)を載せて、どれが一番有効か、ということをチームの皆で吟味していきます。

 

部活には高校から入る生徒もいますし、グループも学年混成の場合もあります。大体、先輩が後輩に教える形ですが、卒業した大学生も指導に来てくれます。大学生がることで、部員が気軽に話しかけられる場をつくることができます。時に、私が厳しい指導をしたとき、彼らは大学生のところに行き、その思いを話します。そのような時、「福田先生は、こんな意味で君のことを思ってくれているんだよ」と、慰めてくれるのです。そういう点では、プログラミングスキルの部分以上に、メンタルの部分で支えてくれているということはあります。

 

 

■入部の時点でプログラミングの経験のある子はどのくらいいるのでしょうか。

 

小学校の時ロボット教室でやっていたことがあるという子はいますが、ほぼゼロに近いと思います。ビジュアルコーディングをちょっとやっていたという子も、親しんでいるという点ではプラスになるかもしれませんが、実際は入ってからどう頑張るかが大きいと思います。

 

 

■プログラミングの初学者はまずScratchをやって、その後はVBAをやったりPythonをやったり、というステップ感があると思いますが、自分がやりたいことのために最初からCを勉強したり、というケースもあるのでしょうか。

 

さすがに最初からCはなかなか難しいです。今、Cをやっている高校生の場合は、中学校のときUnityでゲームをつくるプログラムを少し触って、次に去年はRaspberry Piを少し触って、今年はCを使って、という感じでした。一つずつ成功を遂げていくことで、ちょっとずつ難しいことができるようになるわけです。

 

だから盲導犬ロボットであれば、点字ブロックをライントレースするのは、マインドストームEV3でやるので、いわゆるビジュアルコーティングです。ところが、信号認識はビジュアルコーディングでは無理なので、Pythonを勉強する。さらに、目が見えない人がボタンを正しく押すのは難しいので、「自宅から病院」と言ったことを音声認識するために、携帯電話に音声認識のアプリをつくらないといけない。それもどうやらPythonでできそうだ、などということのヒントが、結構インターネットに出ています。それを生徒たちが、ああだこうだ、と言いながら実装していきました。だから、最初から言語ありきというわけではないのです。

 

 

■そうすると、新しい言語の習得の部分は、生徒たちが自分で勉強するということになるのですか。

 

はい。私に聞いてもすべて答えることはできませんから、生徒自身が知り合いやOBに聞いて回ります。2019年には、Raspberry Piとコンピューターで通信をさせたい、ということがありましたが、そのときには生徒が自分でNTTの方にメールを送って質問していました。

 

 

■やりたいことをきちんと決めて、ゴールに向けて一つずつ積み上げていく、探究学習の理想の姿へのメッセージをいただいたように思います。

 

こういう活動はとても時間がかかります。自由な時間も制限されます。当然、勉強時間も。しかしながら、不思議なことに、とことんロボット開発に打ち込む生徒ほど、成績も良いです。なぜなら、ロボットづくりよりも、テストの問題を解く方が簡単であることが、理解できるからです。そして、ロボットをつくることができたのだから、この問題を解くことはできると考えるのです。一つひとつの成功体験を積み上げることが、学力の成長にもつながっているのかもしれません。

 

もちろん、学生の本分は勉強なので、学校の勉強は大事です。だから、 宿題をしなかったり、成績が落ちたりするなら、部活をする必要はない、と日頃言っています。自分たちは本分がちゃんとできた上でやらせてもらっている、ということは忘れてはいけない。それは先生も同じで、ちゃんと仕事をした上で、皆と一緒にロボットをやらせてもらっているんだから、お互い本分は守ろうね、というのが基本です。

 

 

第3回中高生情報学研究コンテスト 追手門大学大手前中高等学校の発表

「IoT電源タップの開発と研究 〜エコで快適な暮らしを目指して〜」

「グローバルに論理的思考力を育むプログラミング教材(IOSアプリ)の研究・開発」