2018年9月22日土曜日

「プログラミング的思考」とは何か? 小学生のためのサマースクール青学で開催 ゴン川野 (フリーランスライター)

勉強の為に転載しました。
http://wedge.ismedia.jp/articles/-/13926?layout=b

 2020年から日本の小学校で「プログラミング教育」が義務化される。具体的な内容は今後の検討によって決まる予定で、教材開発や教諭の研修に関しても、まだ何も決まっていない状態だ。身に付けるのはプログラミング言語ではなく、プログラミング的思考であるという。つまりコードを書くのが目的ではなく、論的思考力を身に付け意図したことをどうコンピュータに処理させるかが考えられる人材を育成するための学習活動となる。
 具体的にはどういうことなのだろうか。今回、青山学院大学シンギュラリティ研究所メディア・ラボが主催して、3日間にわたって開催した「青山学院コンピュータサイエンス・サマースクール」の取材を通して、プログラミング的思考について考察したい。サマースクールは小学4、5、6年生を対象に1日4時間、3日間で計12時間おこなわれた。講師陣はシアトルから現役ソフトウェアエンジニア、プログラムマネージャ経験者などを招き、マイクロソフトMakeCodeチームが開発したカリキュラムをベースに子供向けにカスタマイズ、実際のソフトウエア・エンジニアリングの現場での作業に近い体験ができるという。
 スクールではタブレットPCに加えて「micro:bit」(マイクロビット)と呼ばれる教育用のワンボードコンピュータが使われ、ソフトとハードの両面から、PCと手作業を使い1日ごとに成果物が作られた。

マシュマロタワーで互いを知る

 取材したのはサマースクール2日目、テーマは「チームワークで作ってみよう」。習得するスキルには変数・定数、疑似コーディング、センサー、アジャイル開発アプローチと記載されていた。講師は3名、生徒は32人。今日は4人で8チームを作って課題に取り組む。最初におこなわれたのが昨日のレトロスペクトである。マイクロソフト社でも毎朝実践されており、今日は何をするのか、昨日気付いたこと、楽しかったこと、残念だったことをチーム内で報告しあう。ソフト開発の周期が2週間に1回と超短縮化されたことで、日々の目標と問題点を明確にすることが必要になったという。ホワイトボードにはGoodとBadの文字が書かれ、子供達の発言が次々と書き込まれた。
 次に始まったのがチームでお互いが知り合うための自己紹介ではなく、それの代わりとなるゲーム、マシュマロタワーだった。各チームに紙袋が配られた。中にはモール20本、ヒモ、爪楊枝10本、スポンジ、テープが入っている。この材料でマシュマロに見立てたスポンジを先端に乗せたタワーを作る。制限時間18分で一番高いタワーを作ったチームが勝利というルールだ。
 ゲームの意図はチーム内でコミュニケーションがとれるようになること。プログラミングにはチームワークが必要不可欠、このゲームを通してチームのメンバーの性格を見極められる。最初、子供達は各自バラバラに作業を始めるが、途中から制限時間が少なくなったことに気付き、協力し始める。紙袋も使っていいという条件なので、袋を逆さに立てて、その上にタワーを築こうとするが最も数の多い材料のモールは柔らかいため自立しない。結局、テープと爪楊枝を使ってモールを補強したチームが勝利を収めた。高さを競うゲームだったが、紙袋にアニメのキャラを描く子供もいて、勝利よりもウケを狙うチームが現れたことに驚かされた。

Codeは英語で書く

 次の課題はmicro:bitを使って万歩計を作るというものだ。プログラムはPCにインストールされたブロックエディタを使う。完成したプログラムはエミュレートでき、問題なければUSB接続でmicro:bitに転送する仕組みだ。子供達は昨日、すでにエディタの使い方を学んでいる。このソフトは日本語化されているがあえて英語で操作する。ブロックエディタにはJavascriptモードがあるが、Javascriptに限らずほぼすべてのコンピューター言語は英語をもとにつくられている。実践的にCodeを学ぶなら英語でプログラムを考える必要があるのだ。
 さらに先の課題にmicro:bitを使ってサイコロを作るというのがあり、LED画面に1から6までの数字を表示させる方法を考える。Bボタンを押すとランダムな数字を0から5まで表示するというコーディングは完成したが、ブロックエディタでは数字の1から表示という選択肢がない。
 ここから子供達のクリエイティブが発揮されるのだが、なかにはブロックエディタを使わずにJavascriptを使って0を直接入力しようと試みる子供も現れた。この方法はうまくいかなかったが、まだ始めてたった2日、子供達の吸収力の速さに講師でさえ驚いている。子供達は興味があって楽しいものなら短い時間で吸収して、どんどん成長していくのだ。

ゲーム作りで役割分担を知る

 午後の課題は、チームのメンバーでmicro:bitのサイコロを使った、オリジナルの双六ゲームを作ることだ。ここで発表されたのが、チーム内の役割だ。プロダクトマネージャ、デザイナー、エンジニアが2名の計4名で誰もが何らかの役割を果たさなければならない。プロジェクト全体の決定権はマネージャにあり、ゲームに関する決定権はデザイナーが持つ。エンジニアはゲーム内で使うもう1台のmicro:bitのコーディングとゲームボード作りを担当する。
 役割決定に3分、チームのネーミングに2分、ゲームデザインは10分で決めるように分刻みの指示が与えられる。この課題は大人向けものであり、小学生にプロダクトマネージャが務まるのかと思っていたら、ゲーム作りという目標があるため意外に自分の役割に忠実に作業を進めている。講師が強調したのが、とにかくスケジュールを守ること。つまり時間厳守。プロトタイプなのでいい加減でいい。完璧を求めるな、意図が伝われば大雑把でもいい。完成度よりもスケジュール優先であることが求められた。

チームには嫌いな人もいる

 10分でプロトタイプが完成。これから20分でゲームを完成させることが言い渡された。すでに時間をオーバーしているチームもあり、さらに時間厳守が強調される。実際の作業に入りエンジニアが俄然忙しくなる。ウチのチームのマネージャは働かないと講師に訴える子供も現れる。双六のボード作りに熱心になるチームが多く、20分では完成できないような大作に挑戦したり、完璧さを求めて作業が進まないチームも出てくる。
 20分後、作業終了が宣言され、10分間のユーザーテストに移る。2名のエンジニアには他のチームに移動して、そこで作られたゲームで遊ぶ。その感想を5分間で聞き取りしてユーザーフィードバックを得る。10分間でゲームを改善して、いよいよベータ版から製品リリースとなる。この過程でさながら本物のコンピュータゲーム製作現場のような熱気を子供達から感じられた。
 最後に完成したゲームをチーム全員でプレイして、無事、本日のプログラムが終了した。このチームで明日も課題をこなしたいかという質問に対して、子供達から、嫌いな人がいるから外して欲しい、違うチームを作り直したいなどの意見が出た。講師の回答は、実際のチームにも嫌いな人は必ずいる。しかし、世の中は甘くない。好きじゃない人とも仲良くできるスキルが必要である。現代のプログラミングは一人ではできない必ずチームで開発する。明日も同じチームで課題に取り組んでもらう。という話で幕を閉じた。

プログラミング的思考とは

 青山学院コンピュータサイエンス・サマースクールは小学生向きにカスタマイズされていたが、内容的にはプログラマーの新人研修にも使えるほど本格的であり、大人が聞いていても得るところが大きかった。AIの最先端の都市シアトルで働く3名のプロの講義で、今イノベーションが起こっている現場での新しい働き方に触れられた。プログラマーには何よりもコミュニケーション能力が求められ、顧客のニーズをいかに理解してプログラムに反映させるかが最重要事項になってきている。
 ソフトウェアをつくるためにはコードを書くプログラマだけではなく、プログラムマネージャ、アーキテクト、デザイナー(これらの役割の人間は必ずしもプログラミングができるとは限らない)、といった多種多様な役割、人材が必要となる。そのような様々な役割の人が協力してはじめて世の中の人が使えるソフトウェアができる。そうした中でプログラマ(ソフトウェアエンジニア)に求められるものは、コーディング能力(プログラムを開発する能力)だけでなく、卓越したコミュニケーション能力を持ち、潜在的なものも含めた顧客のニーズを形にしていく力・能力だ。

 コーディング作業よりも、ソフトウエアで何をしたいのか、それをコンピュータに実行させるには、どんな方法があるのかを考えることが求められる。2020年から、日本の教育現場でこれほど高度な授業がおこなえるとは思えないが、そのタイムリミットは確実に迫っているのだ。
※本件に関するお問い合わせはこちらまで。agusiinfo@agusi.jp
  
▲「WEDGE Infinity」の新着記事などをお届けしています。

0 コメント:

コメントを投稿