事例112

Aliceを利用した感情表現活動~プログラミング的思考を意識した授業実践報告

ドルトン東京学園中等部・高等部 神藤健朗先生

プログラミングで「感情表現」を行う意味

私は現在2019年4月に開校予定の学校におりますので、この報告は前任校での実践についてのものです。

 

私自身がかつてSEをしていた経験もあるので、プログラミングを教えることはできますが、教えることが目的になることを避けたいと考えていました。

 

こちらが今までに発表してきた授業実践です。情報Bの初年度にVisual BasicとPOV-RAY、レゴのMindstormsを少人数クラスで実施できました。しかし、やはりプログラミングを目的にすることになってしまうのと、40人一斉の授業がなかなか難しいため、それらをクリアできるような教材がないかと探してきた過程になっています。

 

さて、なぜ「感情表現」なのかについてです。こちらは、2009年にPaPeRoの実践をした際のスライドです。

 

当時、生徒の間でメールによるトラブルが多発していました。現在のSNSトラブルと同じで、コミュニケーションの上での誤解が原因で、情報モラルや意思表示/伝達とともに感情表現を、きちんと教える必要がありました。一方、中学の技術科で、計測・制御のプログラムを40人一斉に指導するのが難しいので、そのための教材を探していて、PaPeRoが適しているのではないかと考えたことが始まりです。当時、西武学園文理中学高校でPaPeRoを使ったチームワークやコミュニケーション能力の向上を図る実践をされていたので、そちらも参考にしました。

 

PaPeRoは、NECが開発している小型のロボットです。シミュレータが付いていて、感情表現をさせることができるという特徴があります。

 

シミュレータを使って感情表現をすることは、「プログラミング的思考」の育成につながる取り組みです。感情を表すためには、どのような動作の組み合わせが必要であり、その一つひとつの動きに対応した記号をきちんと組み立ててロボットに動作を伝えないといけません。それを試行錯誤を通して、論理的に考えていくことにつながりました。

 

これを2009年から2011年の3年間、高校1年と中学2年で行いました。

 

しかし、コンピュータ教室を移動したことでシミュレータの実行ができないという状況になったため、カーネギーメロン大学が開発したAliceという無償ツールの活用を始めました。

 

Aliceは、WindowsmacOSLinux上で動作します。この画面の通り、キャラクターがいて、処理、並列処理、繰り返し、オブジェクトの衝突判定などの判断分岐を実現します。スクラッチと一緒で、キャラクターに命令を並べていくことで、簡単に動作を実現できます。

 

 

ブロックプログラミング体験→フローチャート→感情の分析と操作練習から始める

Aliceの実践が下図です。3時間目から5時間目がPaPeRoで行っていた内容です。さらに、中学校技術科の内容を網羅するために、1時間目と2時間目を加えています。1時間目にHour of Codeを使ったのは、Aliceで使用する命令に英語が多いため、それに慣れてもらうのが目的です。

 

 

2時間目は、簡単なフローチャートを作らせました。プログラミングで並べていたことは、実はフローチャートで表せるということを、カップ麺作りを例に取り組ませました。

 

評価は、カップ麺が作れれば合格という形で行いました。各々のスキルよってレベル設定をしていましたが、たいていの生徒はしっかりと作れていました。

 

 

3時間目に感情分析の作業とAliceの操作練習を行いました。

 

 

感情分析は、このようなマトリックスを埋める形で行いました。喜怒哀楽とその時の表情・動作・声をそれぞれ3つずつ、合計36の項目にまとめていき、その違いを表現してみるというものです。

 

 

授業の後半でAliceの操作練習を行いました。Aliceには面白いキャラクターがたくさん入っていますので、それをいろいろ動かしてみることで意欲を高めながら操作を身に付けていきます。ここで自由に遊ばせることで、次の時間にしっかり取り組むための素地を作ります。

 

 

感情を表現する動作をプログラムして相互評価する

4時間目に、Aliceを使った感情表現の作成を行います。この時間はルールに従ってやるべきことを達成する時間です。

 

動作の命令には、move(体全体が前後左右・上下に動く)、turn(腕を回す)、roll(回転軸に合わせて回る)があります。

 

これらをうまく組み合わせながら、感情表現を作り上げます。体の関節は全て動くので、その動き方や、繰り返しの命令などを入れて感情を表現させます。

 

例えば、手足を同時に上げるためには、並列処理が必要になります。そういうところでプログラミングを意識させながら作っていきました。人間ではあり得ない動きを実装しないように、というルールで作らせましたが、特に問題なく仕上がりました。

 

 

作って終わりではなく、動作確認と原因分析をします。各自が作ったファイルをクラスの全員がそれぞれ見て、動作が喜怒哀楽のどれにあたると感じたかをプリントに記入しました。

 

 

「感情を表現する動作」を作ることの難しさを通した学び

紙ベースではクラス全体で共有できないため、本校で導入しているSharePointを利用し、アンケート機能で集計した結果です。自分の考えていたものと人に伝わったものとで齟齬がどれくらいあったかを確認しました。

 

例えば「怒」で5%の正答率、つまり40人中2人程度しか理解されないような正答率の低い生徒もいましたが、それでもOKとしました。今回は動作をうまく作ることが目的ではなく、そうなった原因についてしっかりと気付いてほしいと考えたからです。

 

 

これには効果があったと考えております。中学2年生の情報関係の授業は、タイピングから始まりピクトグラムの作成、Alice、最新情報トピックスのスライド作成などいろいろ行いますが、Aliceの満足度が非常に高くなっています。

 

面白かった理由を生徒に聞きました。「人によって違うので見ていて面白かった」「何をさせようかと想像力を働かせられた」「様々な方向から感情を伝える方法を考えるのが難しく、完成したときの達成感がすごかった」など、生徒たちなりに試行錯誤しながら動作を指定し動かすこと、そしてそれを伝えることを楽しんでいたようです。

 

一方、つまらなかった理由は、彼らはゲームなどでマウスで動かす3Dオブジェクトなどに慣れているため、動きがもどかしかったという声がありました。また、使用していたのが英語だったのでわかりづらかったと、辞書を忘れた生徒は答えています。

 

実践してみて得たことをまとめますと、プログラミング的思考を育むにあたって、Aliceは試行錯誤しないと動作しないので、その点非常に適していたと思います。系統的な授業展開もでき、最後まで目標が達成できたと思います。

 

また、Aliceはあまり大きなトラブルが発生しないため、最大46名という大人数の授業でも問題なく私1人で対応できました。また、感情を伝えることの難しさについても、生徒に理解してもらうことができました。

 

気になった点としては、Aliceは様々なOSで動作をする利点の反面、アプリケーションサイズが1.4ギガもあることが大きな壁となり得ることかと思います。

 

一方、生徒の作る作品自体は30キロバイト前後のファイルサイズになるため、ファイルの管理はとても楽です。それらのメリット、デメリットを理解した上で扱う必要があります。

 

最後に、次期学習指導要領に向けてです。昨年までは中学2年生で実践してきた内容ですが、次は中学1年生でやってみようと思っています。いずれ小学生でも同様のことができるとなった際には、中学校、高等学校でどんなことを教えるべきなのか、今後も考え続けていくべき課題だと思っています。

 

 

[質疑応答]

 

高校教員Q1:紹介された教材はOracleが提供している教材とお見受けしましたが、作ったものは、Javaで表現されているのでしょうか。また、授業を進めるにあたってOracleの方がサポートに入られているということはあるのでしょうか。

 

神藤先生A1:ファイル自体は、裏ではJavaで記述されています。子どもたちの作った作品は、テキストファイルの状態でJava Codeが記述されている形になっています。サポートについては、学校契約で、Oracle Academyというものに参加すると、オラクルの社員さんが時間の都合がつけば無償でサポートに入っていただけるということでしたので、このOracle Academyの契約で来ていただいていました。

 

 

高校教員Q2:先ほど非常に面白いキャラクターが出てきた、というお話がありましたが、授業でこういう作業をすると、こういう本来の目的でないところ気を取られて遊んでしまったり、なかなか目的の作業に入れなかったり、というケースがあると思います。そういう場面で、先生が上手に授業を進める上で工夫されたことは何かありますでしょうか。

 

神藤先生A2:やはり遊ぶ生徒は遊んでしまいますが、徹底的に遊ばせる時間を作るのが一番かな、と思います。3時間目の感情分析をなるべく短い時間で行って、残り30分ぐらいは基本的な使い方を教えつつ好きなことをやらせて、うまく何かを見付けた生徒のところに聞きに行って盛り上がったりして発散させます。その後、制作の時間をみっちり1時間確保するという形でオンオフのメリハリを付けるというのがポイントです。

 

 

大学教員Q3:こういった感情表現を題材にするのはすごいと思いますが、生徒はアニメーションやキャラクターが何かをするという、アウトプットに凝るとは思いますが、一方でロジックを考えるとか、データコードを考えるとかいう方向に行くのはなかなか難しいのではないかと思います。そこはこうすればいいんじゃないか、みたいなアイデアがあればぜひお聞きしたいと思います。

 

神藤先生A3:まだ2年しか実践していないのであまりアイデアはありませんが、自分たちの作ったプログラムをお互いに見せ合いながら、こういう工夫ができたんだな、という気付きも生まれますし、私の方から無駄に同じ命令をずらっと書いているプログラムを例に出しながら、「こういうのは繰り返しの命令で単純化できるよね」という話をまとめのところでできれば、それも学びにつながると思います。

 

神奈川県高等学校教科研究会情報部会実践事例報告会2018 講演より