小学生から楽しめる! アルゴリズムを使った迷路探索の授業
この記事は2022年11月から翌年2月にかけて、徳島県内にある3つの小学校でアルゴリズムの授業を行ったレポートです。『アルゴリズム実験室』と題しました。
はじめに
これまで7年間、神山町を中心にドローンを起点に科学を学ぶ『ドローン実験室』と、派生的にプログラミングの手ほどきをする『プログラミング実験室』を続けてきました。
今年からはこの2つを統合して、『迷路の構築と探索』を教材にしたアルゴリズム実験室を2022年からスタートしました。
迷路で遊ぶよね? みんな!? という理由で迷路が題材です。取っつきやすく、コンピューターとの親和性も良好です。
授業で使用したスライドはgithubで公開しています(スライドは随時更新)。こちらもあわせてご覧ください。
サイエンスとアルゴリズムを遊ぶ
この授業は、アルゴリズムを通して、モノとコンピューターのインタラクションで遊べる体験型の授業です。まずはコンピューターと相性の良い迷路という題材から始まり、作った迷路で遊びながら幅広い体験に派生していきます。
これまでのドローン実験室は『ドローンにまつわるサイエンスを遊ぶ』というテーマでした。プログラミング実験室も『小さなプログラムで大きく遊ぶ』です。どちらもテクノロジーで遊ぶことが根底にありました。難しいことは考えずに、まずはおもいっきり楽しんでもらいたいという方針は今でも変わりません。
想定している授業時間は前後編の2コマ90分、全体構成は以下の通りです。
授業の流れ
アルゴリズムで考える
Big or Smallゲームで遊ぶ
Big or Smallを二分探索してみる
総当りしてみる
コンピューターの力任せを見せてもらう
ではアルゴリズムを使うと?
アルゴリズムで迷路を作る
方眼紙をご用意ください
棒を倒して迷路を作ろう
アルゴリズムの弱点が見えてくる…?
アルゴリズムで迷路の近道を見つける
1+1=2 の計算で迷路は解ける
コンピューターの得意な繰り返し
コンピューターに迷路を解かせてみよう
11x11の迷路
51x51の迷路
151x151の迷路
作った迷路で遊んでみる
ブロックプログラミングで立体の迷路を作る
立体の3Dデータをダウンロードする
3Dデータを3Dプリントする
おまけコーナー: いろんなアルゴリズムで遊ぶ
AI画伯と遊ぶ「だれが」「どこで」「なにをした」作文
ドローン輪投げ
おさんぽドローン
ドローン実験室で人気だった『ドローン輪投げ』と『お散歩ドローン』はアルゴリズムの体験にもうってつけ。アルゴリズム実験室でも引き続き採用しています。
さて、こんな遊びの授業を小学生たちはどう感じたのか? 授業の様子を写真レポートします。
写真で見るアルゴリズム実験室
迷路を作る
迷路は方眼紙に線を引いて、エンピツで壁を書き足しながら構築していきます。授業時間にサイコロを振れるだけでも特別感があって楽しいものです。
サイコロを振りすぎてうるさいと注意されている子もいましたが、サイコロの動きを見るのも学びのうちかなと個人的には思います。
壁を作るにはサイコロを振って、出た目に従って壁をはやしていきます。棒倒し方、といいます。コンピューター上では乱数を発生させることになりますが、授業が終わったあとも自分たちで遊べるように身近な乱数発生装置としてサイコロを採用しました。
マスの埋め方はひとそれぞれ、定規を使ってきっちり線を引いたり、チェックで代用したりと個性が見えます。
後々思うと彼らはGIGAスクールタブレットを持っているはずなので、そのタブレット上でScratchを呼び出して乱数を発生させてみるのもありですね。次回からは自分たちのコンピューターを計算機として使うやり方も混ぜてみようと思います。
迷路を探索する
ダイクストラ法というアルゴリズムを使いました。幅優先探索で1歩あたり+1をしながらマスを埋めていくと最短経路が浮かび上がります。ちょっと不思議な感じがしますね。
ここではサイコロも使わず、黙々とマスを足し算で埋めていく単純作業です。「コンピューターはこういうのが得意」の「こういうの」を実体験する時間でした。
単純計算を繰り返すことになるので結構ストレスが溜まる作業かと思います。それだけに最短経路が浮かび上がった瞬間にはとても大きい達成感と開放感を得られます多分。
コンピューターにさせてみる
ここまで手作業で行ってきた迷路構築と探索を、ここではコンピューターにやらせてみました。11x11マスだとあっという間に終わります。
これだけのサイズだとそこそこ時間もかかりますが、それでも数分で巨大迷路が完成してしまいました。もし人手でサイコロを振って壁を作ったり、足し算をして最短経路を探していくかと思うと背筋が凍ります。
ワサワサワサワサッと迷路が数字で埋まっていく様子はなんだかゾワゾワします。クラスからもなんとも言えない感嘆の声が上がりました。
このプログラムにはJavascript(p5.js)を使いました。こちらから実行できます。
コードもgithubに公開しています。興味のある方はこちらをどうぞ。
Javascriptと”p5.js”というライブラリを使うと、こういったグラフィックを伴うプログラミングも簡単に試すことができます。
僕も今回はじめてp5.jsを触ってみたのですが、画面上にいきなり四角を描画することもでき、おまじない的な初期化をほとんど必要としない手付きの早さに驚きました。
Tinkercadで立体迷路を作る
さて、一度コーディングできてしまえば他の言語に翻訳するのも簡単です。Tinkercadのブロックプログラミングで迷路を自動生成するようにしてみたものがこちら。
この迷路は3Dですので、STL形式でダウンロードして3Dプリンタでプリントすることもできます。
授業では実際に3Dプリントした迷路も持ち出して、こうやって形にすればいろんな遊び方もできますね。と画面の中に収まらないデジタルの遊び方についても匂わせてみました。
3D迷路生成のプログラムはこちらで公開しています。
ここから3Dプリンタの話に派生していく授業構成も楽しそうです。
おまけ1:AI画伯と遊ぶだれどこ作文
さて、ここからはおまけです。授業の進み具合に応じて、終わりのチャイムまで楽しく遊べる時間を用意しています。
だれどこ作文を遊んだことがある方も多いでしょう。AI画伯と相性の良い遊びです。
ざっと説明するとこんな遊びです。
まずはひとりずつ「だれが」「どこで」「なにをした」を小さなカードに書いてもらって、ハサミでチョキチョキ切り離して提出してもらいます。
カードをシャッフル!
できた文章をStableDiffusionに書いてもらいます。
「小学生が」「ドッグランで」「失恋した」
「ベジータが」「USJで」「ゲームをした」
「うさぎが」「学校のはしで」「はしゃいだ」
「小学生が」「峠で」「お留守番をしていた」
などなどの想定外の文章ができあがりそれだけでもう楽しい。この文をそのままDALL-EやStableDiffusionなどのAI画伯に渡して絵を書かせます。
スーパーマンがゲームセンターで遊んでいたり、
台所に巨人が出現したりします。
ランダムな文章ができるだけでも大ウケなところに、AI画伯がとんでもない絵を出してきてさらに盛りあがる。次も次もと声が上がるのでこのコーナーだけで授業時間を使い尽くしそうな勢いでした。
だれどこ作文のアルゴリズム的な説明
文章を文節で区切る
文節ごとにランダムに一つ取り出す
文節をつなげて文章に再構築する
できた文章をAI画伯に入力する
といったあたりでしょうか。小学校の授業なので「文節」や「ランダム」といった言葉の説明はしません。とはいえ、やっていることは直感的に理解できる範囲かと思います。
今回のケースで取り入れた画像生成は見た目にも理解しやすくて、小学生の興味もおおいに引きつけました。
おまけ2:ドローンでも遊ぶ
ドローン実験室で人気だった「ドローン輪投げ」というミニゲームがありました。こちらもおまけ用に用意しています。
iPad上に表示された2つのボタンのうち片方を押すとドローンが飛び上がって前に進み、もう一つを押すと着地する、というシンプルなプログラムを読み解きながらゲームで遊ぶ体験です。
ドローン輪投げは一人ひとりがプレイする形になるため、人数が少ないクラス向けです。反対に人数が多いクラスでは『だれどこ作文』が向いていますね。
授業の派生
ここまでの体験はどれも、深掘りすると中高生向けや大人向けの学習教材にも派生できます。
Javascriptプログラミング
ドローン
ものづくり(3Dプリンタ)
言葉のコンピューターサイエンス(自然言語処理)
AIテクノロジー
このあたりなら大人向けに歯ごたえのある体験になりそうです。2時間に納めるのは難しいかもしれません。
アルゴリズム実験室が目指すところ
一連の特別授業では、小学生たちが自分の手を動かして迷路を作ったり解いたり、コンピューターに作らせたり解かせたりする過程で、アルゴリズムやプログラミングのエッセンスに触れる体験をしました。
こういった体験を通してテクノロジーに興味を持ってもらえたらそれだけでこの授業は大成功です。興味を持った途端に、これまで見えていなかった世界が見え始めることがあります。これを解像度が上がる、と表現します。
解像度の向上はあらゆる学習に掛け算で効いて、『面白い!』が増えていきます。アルゴリズム実験室を通して、身の回りにあるテクノロジーとサイエンスを面白がる目を増やしていきたいと思います。