WirelessWire News The Technology and Ecosystem of the IoT.

by Category

高校生プログラマーたちに学んだプログラミングの本質

2014.07.31

Updated by Ryo Shimizu on July 31, 2014, 10:02 am UTC

スクリーンショット 2014-07-30 7.51.31.png

 今週の月曜日、火曜日はつくば国際会議場で全国の高校生が集まり、その部活動の成果を競い合う「全国高等学校総合文化祭(総文祭)」に参加していました。

 総文祭は国体やインターハイと同じく、各県持ち回りで行われており、今年で38回。つまり茨城県にとっては初めての総文祭であり、次の開催はなんと48年後になるという、まさに一生に一度のイベントです。ちなみに来年は滋賀県、再来年は広島で開催されることが決定しています。

 なにしろ茨城県にとって初めて、そして次回開催は半世紀も後になるビッグイベントです。
 あらゆる学生、そして教員の方々が本気でこのイベントに取り組んでいることにとても感動しました。

スクリーンショット 2014-07-30 7.49.40.png

 高校生たちが、このイベントのために二日間限定のお弁当(茨城の名産品が盛りだくさん)まで企画・開発したと知ってさらに驚きました。

 私たちはこの総文祭において、38回の歴史上初めて、「コンピュータ部門」を行うということで、プログラミングコンテストの運営やプログラミング教育のアドバイザーとして茨城県教育委員会から依頼を受け、二年前から準備してきました。

 この総文祭では、全国の予選から選抜された10チームのコンピュータ部が、その場で与えられたテーマで2時間以内に作品を作るという、ゲームジャム形式で決勝を競いました。


 この決勝が大変に面白く、また高校生たちの熱意が非常に溢れていたため、私自身も大きな発見と学びの機会に恵まれました。

 決勝のテーマは「青春」

 青春をテーマにしたゲームを2時間以内に制作しなければなりません。
 この難題に、高校生たちは頭を悩ませたようです。

スクリーンショット 2014-07-30 7.50.22.png

 10チーム中7チームはMOONBlockというビジュアル言語を使っていました。
 残り3チームはenchant.jsを使用しています。

 この大会で使用するプログラミング環境は規定されていないので、ふたつともたまたま弊社が開発したプログラミング環境でした。

 enchant.jsは扱うのがやや難しいぶん、高度なことができるようになっています。
 それに対してMOONBlockは簡単に組み上げることが出来るぶん、オリジナリティを出すのが難しくなっています。

 2時間という限られた時間のなかで彼らが自分たちのアイデアをどうぶつけ、どう形にしていくか、というさまを見守るのが本当に面白く、また、勉強になりました。

 優勝を争ったのは、予選ではenchant.jsを駆使したBaloonという気球をテーマにしたゲームを開発した藤井亨くん率いる富山県立砥波工業高校チームと、奇想天外なアイデアで勝負する後藤達也くん率いる地元、茨城県立水戸工業高校チーム。

 藤井くんチームは本格的なサッカーゲームをわずかな時間で開発し、審査員を驚かせました。

 対して、「青春」というテーマを「夕日をバックに走り、時に泣く」というアイデアに昇華させた後藤くんチーム、どちらを優勝とすべきか審査員の中では意見が割れました。

スクリーンショット 2014-07-30 7.46.16.png

 あくまで技術だけを競うのであればこの短時間で簡単な思考ルーチンまで持ったサッカーゲームを創りだす技量は圧倒的でしたが、これはゲームジャム。ゲームとしてどれだけインパクトがあるか、人の心を掴むか、ということが大切です。

 結果、わずかに後藤君チームの表現力への評価が上回り、後藤達也君率いる水戸工業高校チームが優勝となりました。

スクリーンショット 2014-07-30 7.44.56.png

 MOONBlockという制約のなかで、非常に見事なアイデアを表現していたので、私は大会終了後、後藤達也くんに直接お話を聞いてみることにしました。

 「プログラミング経験はあるの?」

 「はい。高校で三年間C言語をやっていました」

 「え、なのにenchant.jsではなくてMOONBlockを使ったの?」
 

 「そうです。その方が手っ取り早く作品を作れたので」

 そうなのです。
 つまりもともとプログラミング経験がある人が、敢えてビジュアル言語のMOONBlockを使うことで、余計な手間を省こうというのが彼のアイデアだったのです。

 ビジュアル言語にはまだまだ初心者向け、教育向け、というイメージがありますが、それを適切に使えば習熟したプログラマーでもより速く目的としたものをかたちにできる。

 それがまさにMOONBlockを私が作ったときの目標でしたが、現実にそれを目の前にして逆に驚きました。

 そして今回の総文祭を機に、茨機県の高校のコンピュータ部では二年前からあちこちでenchant.jsやMOONBlockを新入生に教えたり、近隣の中学校や小学生に教えたり、といった活動をしていることを知りました。

スクリーンショット 2014-07-31 10.32.06.png

 この活動に大いに刺激され、私は昨晩、毎週行っているニコニコ生放送「電脳空間カウボーイズZZ」の中で、MOONBlockを取り入れたハッカソンを開催してみました。

スクリーンショット 2014-07-31 10.29.35.png

 参加したのはenchant.jsとMOONBlockを開発した高橋諒、enchantMOONのEagleVMを開発したケヴィン・クラッツァー、そして毎週「enchantMOONで遊ぼう!」のコーナーでenchantMOONを使ったゲーム作りを解説しているゴトー博士こと後藤浩輝の三人。いずれも百戦錬磨のプログラマーです。

 3分、6分、9分という三段階でハッカソンを行ったところ、ケヴィンは斬新なアイデアで、後藤は奇抜なアイデアでそれぞれいいところを見せたものの、やはり最後は高橋諒がハイパーテキストを上手く利用した見事な作品を作り、開発者の面目躍如といった活躍で貫禄勝ちしました。

 しかし、面白かったのはこの後です。

 enchantMOONという特殊な端末でまずは競ったわけですが、司会のシン石丸が「enchant.jsで(Macで)作っていいなら、俺も参加できる」と言い出し、最後は私とシン石丸を交えて五人でenchant.jsを使った対決を行いました。

スクリーンショット 2014-07-31 10.41.04.png

 enchant.jsを久しぶりにスプリントレースで使ってみたところ、もう覚えるべき制約が多過ぎて、思い出せないという苦悩を感じることになりました。

 沢山の機能が用意されているenchant.jsですが、その豊富な機能は普段から使っていれば忘れることはまずありませんが、久しぶりに使おうとすると思わぬところで躓いてしまいます。

 そして当然、キーボードを打つわけですが、当たり前のようにキーボードで打つ言語は一言一句間違えずに打たなければならないため、ブロックでプログラミングする場合と比べて同じ時間内でできることが半減してしまいます。

スクリーンショット 2014-07-31 10.43.23.png

 結局、私は9分間でスクロールする背景と忍者っぽいキャラクターがアニメーションするところまでしか作ることができませんでした。

 他の参加者に関しては本編をご覧頂くとして、とにかくこの収録はもの凄く疲れました。

 が、とても心地の良い疲れで、清々しい気分になりました。

 最後に、参加したプログラマーに感想を聞いてみると、意外な答えが帰って来ました。

スクリーンショット 2014-07-31 10.49.25.png

 「MOONBlockの方が手早く表現できたことが驚きだった」

 そうなのです。
 プロのプログラマーであっても、時間が短いときはキーボードを叩くよりも、ブロックを並べるだけで済むところは並べるだけで済んだ方が早いのです。

 MOONBlockにはJavaScript実行ブロックがあるので、周囲だけブロックで組み上げて本当に重要なロジックだけJavaScriptで書くというワザが使えます。

 視聴者にも大変好評だったので、月に一回くらいは番組の中でこういう形式のコンテストを取り入れて行きたいなと思っています。

 8月23日に開催するイベント「夏だ一番!電脳空間カウボーイズ祭り」では一般の方も参加できるハッカソンを開催したいと思います(enchantMOONも貸し出します)。

 じっくりプログラムを書くというのも楽しいですが、短い時間で瞬発的に書き上げる、というのもまた楽しいものです。

 9leap夏休みチャレンジの審査をしてみると、MOONBlockで作られた作品がかなり高いレベルに達していて驚かされました。

スクリーンショット 2014-07-31 11.01.29.png

 A to Zooという名前のこの作品は、MOONBlockで作られています。おそらくプロトタイプをMOONBlockで作り、画像を後から差し替えて作ったのでしょう。これはこれでとても高度なプログラミングテクニックです。

 ゲーム性も非常に高く、このレベルのゲームをMOONBlockで作ったということには開発者の一人として素直に驚きます。そしてまた同時に、MOONBlockの先には、もっと面白い未来があるのではないかとワクワクしてくるのです。

 
 他にもMOONBlockで独自の工夫が凝らされたゲームを投稿して下さる人が沢山いて、「どんな場合でも発想は自由なんだなあ」と思いました。

 プログラムというのは、とりあえずの完成がある、というのがとても楽しめるポイントだと思います。

 今回は若い人たちに教えられることがあまりにも多く、本当に驚きました。
 参加者の皆さんの健闘を称えたいと思います。ありがとうございました。

WirelessWire Weekly

おすすめ記事と編集部のお知らせをお送りします。(毎週月曜日配信)

登録はこちら

清水 亮(しみず・りょう)

新潟県長岡市生まれ。プログラマーとして世界を放浪した末、 '17年にソニーCSLとWiL LLC.とともにギリア株式会社を設立し、「ヒトとAIの共生環境」の構築に情熱を捧げる。 '17年より東京大学先端科学技術研究センター客員研究員を兼務。著書として「教養としてのプログラミング入門(中央公論社)」「よくわかる人工知能 (KADOKAWA)」「プログラミングバカ一代(晶文社)」など。