制作期間3ヶ月、中学生発の新開発言語「Blawn」ほか 、4作品が経済産業大臣賞を受賞「U-22プログラミング・コンテスト」
10月20日(日)、秋葉原コンベンションセンターで第40回目となる「U-22プログラミング・コンテスト 2019」最終予選会が開催された。22歳以下のチームまたは個人が作ったゲームやサービスなどが発表され、ITサービスの代表など著名な審査員たちと、ニコニコ生配信の視聴者によって審査が行われた。
今回の最終審査会では、小学生から大学生までの年齢22歳以下のエンジニアたちが開発した全16作品が入選作品として制作者自身によってプレゼンテーションされ、観客と審査員は多くの驚きを感じたと共に素晴らしいエンジニアの誕生を目撃することとなった。
ここでは、経済産業大臣賞に選ばれた4作品について紹介していきたい。
【経済産業大臣賞<総合>】
新しいプログラミング言語「Blawn」
コンテストで最高の評価である経済産業大臣賞<総合>を受賞し、さらにスポンサー企業賞を3つも獲得したのは、新しいプログラミング言語「Blawn」だ。
Blawnは「人間にとっての扱いやすさ」を重要視し、LLVMをバックエンドに使った静的型付けコンパイル言語となっている。全ての関数/クラスがジェネリックであるため「型」を意識することなく型の恩恵が受けられ、なおかつ可読性の高い構文を実現できているため開発効率向上が見込める。また「RAII」という仕組みを取り入れ、スコープによる安全なメモリ管理を実装したほか、独自開発したC言語のヘッダーを解析してラッパーを自動生成する「cridge」というツールを付属したことでC言語との運用も可能になり、既存のライブラリ等の膨大な資産を活用できる。
また、この言語の驚くべきは開発期間だ。制作者の上原直人さんは元々Pythonで開発をしていたが、2019年7月に初めてC++を触った時に使いづらさを感じ8月から言語の開発に着手。1次審査の段階ではほとんどが未実装であったが、最終審査までの2週間程度で格納式や「cridge」を実装した。Blawnの名前の由来は「Blue + Lawn」で、隣の芝は青く見えるということわざから可読性の高い使いやすい言語にしたいと付けられたそうだ。今後は、コルーチンの実装、ブラウザ上での動作に対応、iOSへの出力など、全体的なアップデートが予定されている。すでにGitHubでも公開されており、さっそく多くのエンジニアたちに注目されているようだ。
【経済産業大臣賞<ゲーム>】
レーシング×シューティングゲーム「LOCUS」
ゲーム部門で受賞したのは、シューティング×レーシングで新しいゲームによる爽快感と疾走感を求めた「LOCUS」だ。「プロのようで新しい作品を作る」をテーマに取り組んだ作品で、効率の良い開発と学生の今だからこそ作ることができるこだわりを詰め込んだ作品である。コースを3周するタイムアタック中に周りから敵が攻めてくるので、プレイヤーはそれを撃ち落としながらゴールを目指す。
この作品は「自分らしく細部までこだわりを持って作りたい」という点から、フルスクラッチで開発。言語はC/C++、使用APIはDirectX 11、XAudio2、RawInputでゲーム内のほぼ全てのロジックを自作している。フレームワーク開発に半年、ゲーム開発に3ヶ月を要した。ゲーム中に数万個のパーティクル(オブジェクト)を動かすために、GPUで計算した値をCPUを介さずに直接描画に渡せるGPGPUを採用している。より爽快でかっこいい演出を求め、メッシュ形状や姿勢、テクスチャ情報からパーティクルを発生させる「メッシュエミッタ」という拡張を実装した。また、この作品が他のゲーム作品より優れている点はコースエディタの開発にあるだろう。感覚的に楽しんでコースを作ることができるよう、様々な工夫が施されている。
【経済産業大臣賞<テクノロジー>】
ブラウザ上で動作するDNCL処理系「Tetra」
テクノロジー部門で受賞したのは、ブラウザ上で動作するセンター試験用手順記述標準言語(DNCL)の処理系「Tetra」だ。DNCLのプログラム実行、ステップ実行、一時停止、変数と実行箇所の追跡、充実したエラーレポートの機能がある。画面の操作は全て日本語のGUIで実装し、さらにDNCLは全て日本語での記述となるため、入力支援システムを導入したことで、プログラミングの「慣れ」「不慣れ」の格差の解消をはかっている。
制作背景には、2020年度から始まるプログラミング教育の今後についての憂いがあった。プログラミングを教えられる人材の不足と教育現場で利用されるプログラミングの多様化が予想されることから、センター試験の「情報」科目において手順やアルゴリズムの関係性を示すために使われる擬似言語「DNCL」が用いられる可能性が高い。そのDNCLのプログラミング環境を整備することで、誰もが簡単に利用でき、すべての教育現場で同じようにプログラミングを学習できると考えた。また、セキュリティが高い学校環境においてもブラウザ上で動作することで場所や環境に左右されず、学習を進めることができるのもポイントである。Tetraの言語処理系やUIはHTML5とJavaScriptで実装されており、今後処理系のさらなる機能充実と拡張要素の追加を展開していく予定だ。
【経済産業大臣賞<アイデア>】
元素早押しゲーム「Capture the Elements」
本コンテストの最年少である10歳のエンジニアが制作したのは、元素記号を楽しく覚えるためのゲーム「Capture the Elements」だ。全118個の元素記号が泡のようにプクプクと浮かんできて、それを元素番号順にどんどん早押ししていくシンプルなゲームだが、5段階で選べるモードの難易度を上げると制作者ですら解けないレベルになっているのだとか。
科学や宇宙が好きな冨田さんは、周りにも科学に興味を持ってもらうためにこのゲームを開発。若者向けのプログラム開発サービス「Scratch」上で制作されたもので、苦労した点はタイマーとスコアの計算と調整だったようだ。元素希望が書かれたオブジェクトが泡のように上がっていき、泡のように消え、また再び下からプクプクと現れる様子の表現にこだわった。今後は元素周期や属を覚えられる仕組みを取り入れたり、スマートフォンでも遊べるようにしていきたいと構想を練っているそうだ。
* * *
今回のコンテストで特筆すべきは、経済産業大臣賞4部門すべてが個人プロジェクトであったという点だろう。もちろんチームでの制作は個人制作とは全く異なり「複数人で協力して効率的に開発し質の高いものを作る」という難しさがある。コンテストの中で、そうした共同作業での素晴らしさを感じたチームがいくつかいたことは事実であるし、またそれらのチームには大きな賞賛を送りたい。
しかし、これら受賞した4つの作品において共通して言えることは「自分自身のこだわりを突き詰めて完成させたこと」に尽きるのではないだろうか。参加者のレベルもまた一段と上がったU-22プログラミング・コンテスト40年目、次世代のエンジニアたちのこれからの活躍に期待していきたい。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Zabbix Summit番外編:Zabbixで働く女性エンジニアにインタビュー
- 「夏の終わりに親子でロボット体験会」で体験した、マインドストームとNXTソフトで作る自律型ロボット
- 「中高生国際Rubyプログラミングコンテスト2018」応募受付を開始
- 全国各地で盛り上がりを見せるゲーム開発イベント
- スキルアップを目指す若手エンジニア向けに、プログラミングとSQLの力を伸ばす教育イベント「SQL CONTEST」を開催
- ETロボコン2014チャンピオンシップ大会レポート(前編)
- 世界の舞台へチャレンジ。ロボットプログラミングを競うWRO Japan決勝大会を密着取材!
- 新型ロボットと新クラスが追加された、ETロボコン2014の新たな挑戦とは
- プログラミングは楽しくて仕方がない! 世界三大権威の競技プログラミングコンテスト「AtCoder」を運営する高橋直大氏インタビュー
- プログラミングも英語も同時に身につけられる海外の学習サービス10選