こどもとIT

ちょまど氏「好き!を突き詰めて」、まつもと氏「コンピュータで世界創造を」と中高生Ruby開発者にエールを送る

――「中高生国際Rubyプログラミングコンテスト2019 in MITAKA」最終審査会レポート

2019年12月7日、東京都三鷹市の三鷹産業プラザにて、「中高生国際Rubyプログラミングコンテスト2019 in MITAKA」の最終審査会が催された。

本コンテストは、今年で9回目。応募数103件のうち、一次審査を通過して最終審査会に挑んだのは11作品。Rubyの父である、まつもとゆきひろ氏を筆頭に、Rubyのコードがわかる著名人を審査員に迎え、本人達のプレゼンテーションはもちろん、提出されたドキュメントやソースコードも審査される。

審査の結果、最優秀賞、優秀賞、そして、まともとゆきひろ氏による特別賞であるMatz賞が、次のように決まった(敬称略)。

【ゲーム部門】
最優秀賞TOWER of GRIME REAPER(タワーオブグリムリーパー)岩手県滝沢第二中学校科学技術部 チームゴースト(畠山響)
優秀賞OTOZUMU(オトズム)岩手県滝沢第二中学校科学技術部 チーム音(リズム)(廣田奈々恵、保木希星)
審査員特別賞もじつみ岩手県滝沢第二中学校科学技術部 チームワード(金澤侑馬、伊藤成海)
審査員特別賞棒の冒険(ボウノボウケン)岩手県滝沢第二中学校科学技術部 チームインディ(村山徹、尾友勇翔)
審査員特別賞あんゆーシューティング島根県島根県立松江商業高等学校 長谷川愛実
審査員特別賞アローダンジョン愛媛県愛媛県立松山工業高等学校 千原安司
審査員特別賞Create Route(クリエイト ルート)愛媛県愛媛県立松山工業高等学校 福永蓮
【クリエイティブ部門】
最優秀賞Denser(デンサー)兵庫県伊藤貴之
優秀賞全方向移動ロボット通信制御プログラム長野県長野県松本工業高等学校 サムムと愉快な二人組(寺島希羽、金井晴一)
Matz賞・審査員特別賞プログラムファイターズ&スクラッチ愛媛県愛媛県立松山工業高等学校 チーム松工(井上裕、林晃太郎)
審査員特別賞How Good are you Drawing?米国William Yamada

ゲーム部門

ゲーム部門には、さまざまなユニークなゲームが寄せられた。最優秀賞の作品から順に紹介していきたい。

最優秀賞:滝沢第二中学校科学技術部 チームゴースト 畠山響さん作「TOWER of GRIME REAPER」

最優秀賞をとったのは、滝沢第二中学校科学技術部 チームゴーストの「TOWER of GRIME REAPER」。ギミックを動かして、宝箱を探すゲームだ。マップエディタも搭載し、自分でエリアを作ることもできる。

ゲームとして「砂漠のなかにひとりぼっち」という世界観の統一をしたいと考え、それを壊すことはやりたくないと語る。プログラムの製作にあたっては、エフェクトの画像の用意やゴースト(敵)を自動的に動かす処理が難しかったのこと。

実は畠山さんは、前回も「チーム免疫」として応募している。前回は惜しくも最優秀賞を逃したが、今回は、前回の反省を踏まえ、ゲームとして楽しくするだけでなくプログラムコードのクラス化などコードを分かりやすくすることにも注力。今回、晴れて、最優秀賞を受賞する運びとなった。

優秀賞:滝沢第二中学校科学技術部 チーム音(リズム) 廣田奈々恵さん・保木希星さん作「OTOZUMU(オトズム)」

優秀賞をとったのは、滝沢第二中学校科学技術部 チーム音(リズム)の「OTOZUMU」。敵が音楽に合わせて右から出現し、左に向けて移動する。タイミングを合わせて敵の種類に合わせたキー(難易度によってキー数が異なる)を押すと、はたき落とせる。はたき落とし損ねるとダメージを受けてしまうので、ダメージを受けないよう敵を倒していくゲームだ。

音を出すには、DXRubyのSoundEffectクラスを使っており、それには、周波数の計算が必要。ピアノの楽譜をRubyのプログラムに直すのが難しかったと言う。講師の人に教えてもらいながら、作ったそうだ。

今後は、キャラクターを動かしたり、曲を増やしたりするということをしていきたいとのことだ。

審査員特別賞:滝沢第二中学校科学技術部 チームワード 金澤侑馬さん・伊藤成海さん作「もじつみ」

もじつみは、文字を並べて単語を作り、その得点を競うゲーム。クロスワードパズルと違って、マスに好きな1文字を入れられる。制限時間内に文字を並べて単語を作り、その得点を競う。

単語の判定には、国立国語研究所が公開するデータベースを利用。漢字の単語が多かったため、ゲームで必要ないものを消して軽くする工夫をしたと言う。

今後は、辞書をたくさん作って、「都道府県」「たべもの」など、さまざまなものの名前を用いたものにして、もっと楽しいものにしたり、文字を消したときのアクションを増やしたりしたいそうだ。

審査員特別賞:滝沢第二中学校科学技術部 チームインディ 村山徹さん・尾友勇翔さん作「棒の冒険(ボウノボウケン)」

カーソルキーの左右で移動、ZキーとXキーでダッシュとジャンプの操作をして、地下の宝を取りに行くゲーム。赤旗のスタート地点から、青旗のゴールまで時間内にゴールすることを目指す。ステージ上には、触れるとライフが減る「針」、自分が滑ってしまう「氷」、移動速度が遅くなる「泥」などがあり、これをうまく避けるのがポイントだ。

氷のブロックの移動処理では、慣性の動作として摩擦係数の分だけ移動するなど、物理法則をエミュレートした。こうした処理では、突き抜けたり、めり込んでしまったりする問題が発生。そこで当たり判定を、上下と左右に分けることで斜めに移動できないようにすることで解決した。

マップデータには、CSV形式を採用。こうした方法があるとのアイデアは、講師の人に教えてもらったそうだ。

審査員特別賞:島根県立松江商業高等学校 長谷川愛実さん作「あんゆーシューティング」

アルファベットが描かれた爆弾やお金が上から振ってきて、対応するキーを押すことでポイントをゲット。制限時間内に規定のポイントを得ることを目指す。キーを押せずに爆弾が下まで到達してしまうとライフが減る。単純なようだが、実際にゲームプレー画面を見ると、落ちてくる数が多く、難易度が高そうだ。

もともとはマウスクリックで操作するゲームだったが、キーボードにしてタイピングゲームに仕立てたとのこと。

今後の課題としては、キーを限定して、本格的なキーボード練習できるようにしたり、爆弾を消すときにアニメーション効果を付けたりしたいとのこと。また、ミスキーの判定も付けたいと語っていた。

審査員特別賞:愛媛県立松山工業高等学校 千原安司さん作「アローダンジョン」

ミッションをクリアしてボスを倒して次のステージへと進む、ダンジョン型ゲーム。アイテムやショップもあり、キャラクターを強化できる。敵とのバトルは、攻撃と防御のターン制。攻撃では、画面に現れる矢印と同じ向きのキーソルキーを入力する。防御では出てきた矢印を覚えておいて、それと同じ向きのカーソルキーを順に入力することで防御する。このときギミックと呼ばれる妨害機能があり、一部の順序を入れ替えることで、難易度を上げている。

ゲームでは、一種の脳トレとして、プレイヤー自身のレベルアップを目指しているとのこと。そのために同じステージでも、プレイするたびにダンジョンの配置をランダムにするなどの工夫をしているという。

BGMがオリジナルだったり、ダンジョン検索やショップでのアイテム購入ができたりするなど、完成度が高いのが印象的だった。

審査員特別賞:愛媛県立松山工業高等学校 福永蓮さん作「Create Route(クリエイト ルート)」

プレイヤーが移動することで、マップ上のすべての床を塗る(マップ上のすべての空白マスをプレイヤーが通過する)とクリアするゲーム。このゲームの特徴は、プレイヤーを直接動かすのではなく、壁を作ることで動かす点だ。プレイヤーは一度動くと、壁に当たるまで方向転換できない。ゲームでは、マウスクリックすることで壁を作る。するとそこでプレイヤーの向きを変えられるようになるという仕掛けだ。

このアイデアは、マップを作っていたときに思いついたそうだ。マップ作りでは、壁の有無を「0」や「1」で設定していて、作るのが分かりにくかった。そうしているうちに、ゲーム中に壁を作ることができると楽しいのではないかと思いついたと言う。

ちなみにこのゲームには、マップエディタも搭載されており、オリジナルのマップも作ることができるようになっている。

クリエイティブ部門

クリエイティブ部門には、ロボットの制御からAIを使ったものまで、幅広い作品が寄せられた。

最優秀賞:伊藤貴之さん作「Denser(デンサー)」

最優秀賞をとったのは、伊藤貴之さんの作品「Denser」。Twitterのような感覚で使えるブログサービスだ。特徴は、あえて、フォロー機能を用意せず、代わりに、3つのタグを必須にすることでグループ分けしていくこと。現在のSNSでは、誰が発言したかによって評価が分かれてしまう。そこでタイムラインでは、リード文とタグのみが表示され、評価が見られないようにするようにしたとのことだ。

またDenserでは、東北大学の日本語評価極性辞書を用いて、コメントのポジティブ・ネガティブ判定をし、ポジティブなものだけを表示することで、利用者が暗い気分にならないようにすることもでき、新しいSNSのスタイルを提唱している。

苦労した点は、Ruby on Railsのデータベース処理だそう。今後、アプリケーションとして公開できるようセキュリティ対策するほか、画像・動画の投稿にも対応したいと言う。またネガポジ判定のアルゴリズムの開発もしていきたいとのことだ。

優秀賞:長野県松本工業高等学校 サムムと愉快な二人組 寺島希羽さん・金井晴一さん作「全方向移動ロボット通信制御プログラム」

優秀賞を受賞したのは、サムムと愉快な二人組の「全方向移動ロボット通信制御プログラム」。Rubyで制御できる組み込みマイコン「GR-CITRUS」を用いた、カメラ搭載の全方向移動ロボットだ。スマホから遠隔操作し、その映像をVRゴーグルで視聴できる。世界各地に、このロボットを置くことでリアルタイムな映像を見ることができ、観光地などに置けば、観光の下見などを自宅からできるようになると言う。

ロボットが全方向に移動できるようにするため、メカナムホイールを採用。台車自体も先輩が使っていたものを教えてもらって製作したとのこと。4つのモーターをマイコンから独立制御する。プログラムは全部で200行程度とのことだ。映像は360度カメラを使い、YouTube Liveで配信している。

現在は1対1の対応だが、今後の展望として、Ruby on Railsを用いたWebサーバを構築し、操作者の端末でロボットの切り替えができるようにしていきたいとのことだ。

Matz賞・審査員特別賞:愛媛県立松山工業高等学校 チーム松工 井上裕さん・林晃太郎さん作「プログラムファイターズ&スクラッチ」

自作したプログラムを対戦させて競う、初心者のためのRuby学習用ソフト。もっとプログラムの楽しさを伝えたいとの思いから開発したそうだ。ゲーム画面上のマップに自機を配置。自機は、あらかじめ作成したプログラムの通りに動く。プログラムはスクラッチのようにブロックを組み合わせることでプログラミングする。

自機の動きは、周囲の地形情報を読み取って、移動や特殊行動などを行うなどのプログラムとして作る。ゲーム開始後は、完全自動のターン制。将棋のコマの動きのように、自機が自動で動いて勝敗が決まる。

自機のキャラ付けとして、「多く動けるもの」「よる広い範囲の状況を調べられるもの」「爆弾を設置できるもの」の3種類があるらしいが、プレゼンテーションの短い時間では、細かいところが明らかにならず、審査員からも質問が出た。今後、こうした複雑さを整理して、プレイヤーがどのようなプログラムを作ればよいのかが明確になれば、きっと、もっと面白いものになっていくだろう。

審査員特別賞:William Yamadaさん作「How Good are you Drawing?」

AIを使って、お絵かき判定するゲームだ。作者のWilliam Yamadaさんは、米国在住。今回は、ビデオレターでの発表となった。

「fish」や「bag」などお題目が表示され、プレイヤーは、そのお題に沿った絵を描く。するとそれがAIによって、「上手さ」が判定され、得点になるという仕組みだ。AIには、GoogleのVision APIを採用している。

お絵かきをAIで判定するというのは、なかなか面白い試みだ。

講演も充実

審査会では、会場に訪れた応募者や見学者の中高生に向けた、2つの講演も催された。どちらもテーマは、「これからの人生、どのようにプログラミングと向き合っていくか」というものであった。

Microsoft ちょまど氏による「好き!が世界を変えていく」

1つめの講演は、Microsoftクラウド・デペロッパー・アドボケイトの千代田まどか(ちょまど)氏。「好き!が世界を変えていく」と題して、未来を創る人達に向けて、これから何をしていけばよいのかを語った。

窮屈だった中学時代にハリーポッターにハマって英語と出会い、高校ではがらりと環境が変わって自由な女子校へと進学、そこでプログラミングと出会ったと言う。大学は情報学科に進みたかったが、数学ができずに失敗。結果、中学からハマっていた英語を活かし、英文科へと進学。その後エンジニアとして最初に就職した企業では、永遠と続く単調作業に耐えられず退職してしまった。その後、スタートアップで社員20名ほどの会社に転職し、そこでC#やAzureなどを習得。とても楽しくなったそうだ。そんななか、副業で漫画を描いたり、ITイベントでLTをしたりしているうち、マイクロソフトからお声がかかり、現職に至るとのこと。

ちょまど氏は、こうした実経験を踏まえ、好きで打ち込めることを探して、それを突き詰めることが大事だと語った。自身がオタクだと言い、こうした突き詰めるオタク道が大事だと言う。また1つのものだけを突き詰めるのでは幅が広がらないので、3つの点(自分が強いところ)があると、より多くの人にリーチできるとも加えた。

まつもとゆきひろ氏による「プログラミングの可能性」

もうひとつの講演は、Rubyの生みの親であるまつもとゆきひろ氏。「プログラミングの可能性」と題して、プログラミングするとはどういうことかを語った。

まつもと氏の話は、ゲームのことから始まった。ゲームというのは、VRがなくてもイマジネーションがある、何もないところに世界を創れる、現実にはない世界を創造できるのが、ゲームのよいところではないかと語る。

ではソフトウェアにおいて、「世界を創る」とは何か。これは「体験を創る」「気持ちを創る」「ルールを創る」ことだと、まつもと氏は言う。では、Rubyのようなプログラミング言語を創るというのは、どういうことか。それは、デザインだと言う。まつもと氏自身、近年は、自身を「言語デザイナー」と名乗っているそうだ。

さらにまつもと氏は、プログラミングは手軽な創造であると続ける。元手が少なく一人もしくは少数で開発できる。そして、その創造は継続的だ。Rubyは26年創り続けられていて、毎日のように変更が加わっていて、絵など他の分野ではありえないことだと語る。またOSS(オープンソースソフトウェア)のような、協力体制の文化やコンピュータによる支援もある。

このように、本来コンピュータは計算機であるが、この頃は動画やコンテンツを視聴するだけのメディアプレーヤーとして使っていることが多く、もったいないと嘆く。「コンピュータによる世界創造は、プログラミングへの可能性を秘めたものであり、デジタルネイティブ世代である皆さんには、是非、挑戦して欲しい」と未来のプログラマーたちに語り掛け、講演を締めくくった。

大澤文孝

テクニカル・ライター、プログラマ/システムエンジニア。情報セキュリティスペシャリスト、ネットワークスペシャリスト。入門書からプログラミングの専門書、電子工作まで幅広く執筆。著書数は60を超える。主な著書に「ちゃんと使える力を身につけるWebとプログラミングのきほんのきほん」(マイナビ)など。