アルゴリズム体験ゲーム「アルゴロジック」で子どものロジカルシンキングを育てる
アルゴリズム体験ゲーム「アルゴロジック」
「アルゴロジック」はアルゴリズムを考える力を遊びながら伸ばそうとするものです。
公式サイトでは以下のように紹介されています。
アルゴリズム体験ゲーム・アルゴロジックはプログラミングの基本となる論理的思考(アルゴリズム)をゲーム感覚で習得するための課題解決型ゲームソフトです。プログラミング経験がまったく無い方でも、楽しく「プログラミングをするための考え方」=「アルゴリズム」を知ることができる「アルゴロジック」で、スーパープログラマーを目指してください。
http://home.jeita.or.jp/is/highschool/algo/info/index.html より引用
アルゴロジックには3つのバージョンがあります。
- アルゴロジック:入門から上級まで様々な問題を備えている。
- アルゴロジックJr.:アルゴロジック初心者にお薦め。より基本的な問題を多く集めている。
- アルゴロジック2:プログラムの3つの制御構造(順次、反復、分岐)を3つとも使用する。
他に関連するゲームとして「お絵かきアルゴロジック」があります。アルゴロジックのコマンドブロックでロボットを動かして、自由に絵を描くものです。私は上記の中からアルゴロジックJr.を試しました。子供たちに紹介する際に初心者問題がどのようなものか、子供たちの状況を擬似体感したいと考えたからです。
プレイ画面はアルゴロジック、アルゴロジックJr.ともに共通で以下のようになっています。
色々な命令をブロックを置くことで実行していきます。ブロックは直進など移動するためのもの、角度を変えるためのもの、繰り返し処理をするためのものがあります。
アルゴロジックでは移動する際にいろいろな考え方(アルゴリズム)を想定することが可能です。おそらく子供たちに複数の方法があって1つだけでなく様々なパターンを考えてもらおうという意図があるのではないでしょうか。
大人向けの説明は以下のようになります。
アルゴロジックは,コマンドブロックでロボットに動き方を命令して与えられた問題をクリアするゲームである.マウスを使ってコマンドブロックを並べ,STARTをクリックすると,画面上のロボットがコマンドブロックの指示通りに動作する.
使用するコマンドブロックは,以下の通りである.
◆ 前進:指定した数だけ前に進む ◆ 右進(左進):向きを変えずに指定した数だけ右 (左)に進む ◆ 回転:縦横斜めの8方向のいずれかに向きを変える ◆ 繰り返し始め・終わり:始めと終わりのコマンドブロックにはさまれたコマンドブロックを指定した数だけ繰り返す 後退のブロックがないことがアルゴロジックの特徴の1つである.また,前進,右進,左進のブロックを横に2つ並べることでベクトル方向に移動させることができる.
大山裕「解説 アルゴリズム体験ゲーム 「アルゴロジック」」:情報処理 Vol.53 No.3 Mar. 2012 P,316より引用
※長文のため片岡が改行を追加しました
また、「並列接続」を使うことでロボットを斜めに進めることもできます。
前進コマンドブロックと右進コマンドブロックなど、2つのコマンドブロックを横に接続すると、その合成方向(ベクトル方向)にロボットを進ませることができます。
例えば、前進3マス、右進3マスの場合はA図のように、前進4マス、左進2マス、ならB図のように進みます。
http://home.jeita.or.jp/is/highschool/algo/prm/howtoplay.html より引用
以下の図は「ブロックはSTARTブロックの下に並べなければならない」ことの説明図です。右側の悪い図は、グレーのブロック2つがSTARTの下に無い不正の例(こう書いてはいけない)を表しています。
ゴールに着くためのアルゴリズムの組み立てに失敗すると以下のようになります。
私が数字を変更し忘れたままstartボタンを押しました。なので「失敗しました」の脇にある[もう一度]ボタンを速攻クリックしました。「失敗しました」の表示を見ると異様に悔しさが湧いてきます。できるまでやってやる! と心が燃えます。
成功すると「クリアー! 」と表示されます。
子どもの気持ちになってシンプルにブロックを3つ置きました。しかしひっかかるのは「One more Challenge」というメッセージです。クリアーできたものの、もやもやしたままでいるのが嫌なので「ループ処理を使え」という意図かと思い、試しました。
ループ処理を使っても「クリアー! 」の脇に「One more Challenge」が表示されます。効率が良い進み方ではないようです。もしかしたらアルゴロジックの解説のページに意図が書かれているのかもしれないと考えました。「操作方法を動画で解説する」の[前進移動]ボタンをクリックしました。
意図がわかりましたので以下のようにブロックを置きました。
「クリアー! 」の右に「That's great! 」が出ました。前進するブロックに[3]と数字を入れればよかったのです。変数に数字を入れるという感覚を身につけるためのことなのでしょうか?
ステップ数が最も少ないと想定されるアルゴリズムの時だけ「That's great! 」が出るようです。これは子どもにとっては「That's great! 」が出るまでやってやるというゲームを完璧にクリアしたい気持ちをくすぐるポイントです。
筆者が小学生の時、「ドラゴンクエスト3」をクリアしたと思ったら裏面が始まってがっかりしたことがありました。しかし気力を振り絞って裏面のラストシーンまで進みました。
当時、裏面のラストボスは自力で倒せず弟の助けを借りました。今回も動画の助けをかりましたので昔の記憶が蘇るシチュエーションとなりました。
使用したコマンドブロックの段数が最小だった場合に◎が表示されます。クリアはしたけれどもgreat! が表示されなかったゲームは○が表示されます。
◎と○について
という判断基準が紹介されていました。Q,クリアする段数が短いものが良いアルゴリズムですか?
A,何が良いアルゴリズムなのかはケースバイケースです。アルゴロジック/アルゴロジック2では、わかりやすくするために、より段数が短いものを良いものというルールを採用しています。
http://home.jeita.or.jp/is/highschool/algo/educational/faq.html より引用
一回、ブラウザを閉じて再度、ゲーム画面を開いた時にもクリアしたゲームには丸が表示されました。結果をCookieで管理しているのかと推測を立てましたが、製作された大山さんによると「シェアードオブジェクトを使用」とのことでした。Q&AにアルゴロジックがFlashで製作されていることが明記されています。そのためiPadで遊ぶことは出来ません。
子どもにとってはパズルゲームのような気持ちで遊ぶことができます。そして今までの戦歴がページに表示されますので、私見ではRPGゲームで遊ぶように長期的な視野で楽しむことが可能ではないかと考えております。
私自身は小学生に教えることが多いので「アルゴロジックJr.」を試しましたが、「アルゴロジック」「アルゴロジック2」になりますと難易度が上がります。
学校教育と「アルゴロジック」
生徒たちの実際の反応については前掲書P,319にアンケート結果が記載されていました。
項目 | 学年 | 平均評点 | 評点 4 or 5 の割合 | ||
---|---|---|---|---|---|
授業前 | 授業後 | 授業前 | 授業後 | ||
プログラミングに対する興味 | 中1 | 3.42 | 4.26 | 46.6% | 86.3% |
高1 | 2.94 | 3.65 | 36.4% | 61.1% | |
プログラミングを 難しいと思う気持ち | 中1 | 3.51 | 3.65 | 48.6% | 61.0% |
高1 | 3.73 | 3.74 | 59.5% | 59.4% | |
プログラミングを 面白いと思う気持ち | 中1 | 3.45 | 4.36 | 45.9% | 89.0% |
高1 | 2.90 | 3.72 | 28.9% | 64.7% |
生徒による評価:5.非常に強い 4.強い 3.どちらとも言えない 2.弱い 1.非常に弱い
対象:中学1年生146名, 高校1年生170名
アンケート調査が行われたのは以下のような状況とのこと。
2011年9月に中学一年生の技術家庭科で,同10月に高校一年生の情報Bにおいて,50分2コマ連続の特別授業を実施した☆4.授業では,アルゴリズムの説明(講義)の後で,中学生はアルゴロジックJr.中心に,高校生にはアルゴロジックとアルゴロジック2の両方を用いた.
アルゴリズムは生徒の得意不得意の差が大きい単元であるため,それぞれが自分に合った難易度の問題を選んで挑戦できるようにした.
生徒たちの反応を見るために授業直前と直後に同じ質問によるアンケートを実施した(表-1).「プログラミング」についての設問となっているが,実際には「アルゴロジックはプログラミングの考え方を学ぶ入門段階に位置づけられる」と説明している.
前掲書 P,319 より引用
※長文のため片岡が改行を追加しました
上記の調査について様々な解釈があると思いますが、私見ではアルゴロジックのような学習ゲームを授業・および自宅学習に取り入れると生徒たちの学習の場が広がるのではないかと考えています。学校での導入を勧める理由は教員免許を持っている先生のITスキルにはばらつきがあり、専門外の先生が受け持つ可能性も考えられるからです。
アルゴロジックの場合はゲームを遊びながら子どもが自分で考えるスキル、ロジカルシンキングを養うことができます。私見ではゲームとしても楽しみを感じます。先生にとっては効率の良いアルゴリズムの回答を事前に用意しておけば、IT関連の専門知識を習得している最中の先生も指導しやすいのではないでしょうか。
※アルゴロジックJr.の最少段数(◎)の解答例はhttp://home.jeita.or.jp/is/highschool/algo/educational/answer.html に掲載されています。
私見では学校の情報化の授業だけではプログラミングのスキル・アルゴリズムを習得する時間数が物理的に足りないのではないかと考えていました。ですが、情報の科学の場合、時間を十分にとって下さっている先生もいらっしゃるようです。むしろ「時間が取れず問題なのは中学校の技術家庭科」という話を伺いました。
なぜ中学の技術家庭科が問題なのかについてはアルゴロジックのQ&Aに以下のような解説がありました。
Q,なぜアルゴロジックを開発したのですか?
A,アルゴロジックのモデルになっている「アルゴロジック」が設置されているある科学館で、子供たちがアルゴロジックを使うのに行列を作って順番を待っていました。自分の順番が来ても、時間制限があり、時間を気にしながら遊んでいました。これを見て、子供たちが 自宅のPCで、時間を気にせずにじっくり頭を使って課題に取り組める環境を提供したいと考えました。
また、高等学校の情報Bで、プログラミングの学習にはじめからプログラム言語を使用すると、言語自体の習得が大変で最初に行うべきプログラミングの考え方 の学習に結びつきにくいというお話をお聞きしました。プログラミングは難しいという印象を初めに与えてしまうと情報系の勉強を嫌う生徒が増えてしまうのではないかと危惧し、プログラミング学習の入門時点で楽しみながら必要な考えを習得できる教材を提供したいと考えました。
今後、中学校技術科で「プログラムによる計測・制御」の単元が必須となることから、プログラミングの入門段階で受け入れられやすい教材がより必要になってくると考えています。
このように子供たちにはじっくりものを考える環境を、中学生・高校生にはプログラミングの入門時点での考え方の習得環境を提供したいという思いから、アルゴロジックを開発しました。
http://home.jeita.or.jp/is/highschool/algo/educational/faq.html より引用
※長文のため片岡が改行を追加しました
今後、中学校技術科で「プログラムによる計測・制御」の単元が必須となるという事実はこのQ&Aを拝見してはじめて知りました。技術家庭科の授業でプログラミングの時間を確保するのは情報科に比べると難しいのではないかと推測をしました。
学校教育においてアルゴロジックのようなICTツールを活用することにより、子供たちの教育の充実が図られればと私見では感じました。
編集履歴:2012.12.12 21:45 題名を「子どものロジカルシンキングを育てる アルゴリズム体験ゲーム「アルゴロジック」」から「アルゴリズム体験ゲーム「アルゴロジック」で子どものロジカルシンキングを育てる」に変えました。2013.12.18 23:20 冒頭の「プログラマーになるつもりがない人もプログラムを作る経験があったほうがいい」の部分を別記事「プログラマーになるつもりがない人も、プログラムを作る経験があったほうが良い理由」として独立させました。同日23:24 見出し「◎と○について」と「はじめてプログラミングを覚えるのはどうしたらいいか?」を追加しました。同日23:39 見出し「はじめてプログラミングを覚えるのはどうしたらいいか?」の部分を別記事「はじめてプログラミングを覚えるのはどうしたらいいか?・私見」として独立させました。