今年の「DEF CON(毎年ラスベガスで8月に開催される国際的なハッカーイベント、デフコン)」では、AIどうしがハッキングの攻防戦を繰り広げるという競技、「Cyber Grand Challenge(CGC)」が行われた。ついにサイバー攻撃もAIによって自動化される時代になったのか、と話題となった。 実は、AIどうしの対戦競技は国内でもいくつか事例がある。島根県松江市で昨年始まった「スモウルビー・プログラミング甲子園(通称、スモウルビー甲子園)」という、高校生以下を対象としたプログラミングコンテストがそのひとつだ。「スモウルビー(Smalruby)」は「Ruby(ルビー)」というプログラミング言語をベースとした、グラフィカルアイコンでプログラミングが可能な初心者向けの開発環境だ。スモウルビー甲子園では、応募者が開発したAIどうしがマップゲーム上で得点を競う。 CGCのような高度な競技と、初心者も対象としたスモウルビーによるプログラミングでは比較にならないかもしれない。しかし、どちらの競技もスタートすると参加者はモニター上の攻防を見つめるだけで、ゲームそのものはすべて自分のロジック、判断でプログラムが進められる点は同じである。 スモウルビー甲子園の第1回大会では、島根県松江市にある松江工業高等専門学校3年(当時)の高田亮介さんが優勝した。松江市は、Rubyを開発したまつもとゆきひろ氏が活動の拠点としており、市や県ぐるみでRubyやIT産業を後押ししている。そのため最初の大会で松江市の学校が優勝したのは当然なのかもしれないが、その中でプログラミング経験は高校に入ってからなのに、準決勝まで勝ち残った島根県外の高校のチームがある。 茨城県立土浦工業高等学校「TTT(トリプルティー)」の定塚司さん(3年)、中野正基さん(3年)に、スモウルビー甲子園について聞いた。◆経験ゼロから準決勝へ…きっかけは顧問の先生--まず、チームTTTについて教えてください。スモウルビー甲子園に出場しようと思ったきっかけは何ですか。定塚さん:出場のきっかけは、部活である情報技術研究部顧問の先生に紹介され、出場を勧められたことです。ただ、情報技術研究部に所属はしていますが、中学まではゲームをやっていたくらいでパソコンに触ったこともなく、プログラミングも、高校の授業でやったC++が最初です。さすがにひとりでの参加はためらい、仲の良かった中野さんを誘って出てみることにしました。中野さん:自分は陸上部だったのですが、休みのときなどにこの部に遊びに来ていたら、誘われてそのまま引き込まれた感じです。プログラミングの経験は定塚さんと同じで、高校の授業が最初でした。TTTも、スモウルビー甲子園に出場するために作ったチームです。--それまで、RubyまたはSmalrubyの経験はありましたか。定塚さん:いえ。RubyもSmalrubyも、それまで使ったことはなく初めてでした。中野さん:ただ、Smalrubyはグラフィカルなアイコンで、しかも命令アイコンなどが日本語だったので、やりやすかったです。--Smalrubyの知識や経験がないのに参加とは、すごいですね。どのような準備や対策をしていたのですか。定塚さん:初めてということもあり、大会のための講習会に参加しました。サンプルプログラムも公開されており、まずは、これを参考にしながら、サンプルプログラムに勝つプログラムを作る練習をしました。中野さんが戦略を考えたり、アイデアを出したりするので、それを自分がプログラミングしました。◆敗退で学び原因分析--戦略の考え方やプログラミングで工夫した点、苦戦した点は何ですか。中野さん:ゲームのミッションは、城(ゴール)を目指しながら、得点となるアイテムを探すことです。その中で、近くてなるべくポイントの高いアイテムを取りながらゴールを目指す、といったアルゴリズムを基本にしました。定塚さん:苦戦したのは、準決勝でマップが変更されたとき、限定アイテムが想定外の配置で設定されてしまったことです。この変更で、限定アイテムをうまく探せないという問題が発生してしまいました。準決勝の敗因ですね。--敗因の分析もできているんですね。逆に準決勝まで勝ち残った理由についてはどうお考えですか。定塚さん:1回戦は、ゴール付近に爆弾を仕掛けるという戦法がうまくいきました。2回戦は、妨害キャラの動きに苦戦しましたが、運も味方してくれたようでなんとか勝ち残りました。中野さん:自分たちのチームは、確実な動作、ミスをなくすことに力を入れていました。単体テストや結合テストも入念にやったのですが、それがほかのチームよりうまくいった点があったのかもしれません。◆新しい引き出しを増やすことができた--準備期間を含めて、大会に参加したことで得られたもの、学んだことはありますか。定塚さん:これまでC++しか利用できませんでしたが、Rubyという新しい引き出しを増やすことができました。現在は、RubyのWebアプリケーション開発に利用する「RubyMine」でゲームの開発ツールを作る、という課題研究に取り組んでいます。中野さん:プログラミングコンテストや大会への出場というのは初めてでしたが、自分たちが設計したものを、観衆の前で実際に動かすことができたのは、すごく楽しかったですね。陸上の大会よりも緊張したくらいですが、貴重な体験だったと思います。◆参加が好影響、発想力や実践力が向上--おふたりは第2回大会への参加は「後輩に譲る」とのことですが、後輩の方々を含め第2回大会に参加しようと思っている人たちに、何かメッセージやアドバイスはありますか。定塚さん:こういった競技では、ものごとを違った視点で見る発想が重要だと思います。また競技をすることでそういった発想力も身につくと思います。中野さん:あとは実戦ですね。考えや戦略を実際試すことと、実戦でスキルを上げていくことが重要ですね。定塚さん:後輩にはぜひ自分たちのノウハウやスキルを引き継ぎたいと思っていますので、来年参加するなら準決勝より上を目指してほしいです。何よりプログラミングを楽しんでほしいですね。--ありがとうございました。 ふたりともスモウルビー甲子園の経験は自信になったようで、インタビューの最後に将来の夢について聞いたとき、定塚さんは「どんな処理もプログラムできるようになって、世界で通用するプログラマが目標です」と、中野さんは「ハードウェアの知識やシステム全体を設計できるエンジニアになりたいですね」と、それぞれの目標を語ってくれた。 スモウルビー甲子園は、初心者でも始めやすいプログラミング言語を利用しながら、ゲーム攻略など課題分析と解決能力を問うエンジニアリングの基礎にも通じる競技といえるだろう。加えて、AIや機械学習に通じるアルゴリズムの基礎訓練にもなる。AIは、先端技術のひとつとして注目され、ニーズも高まっていくはずだ。日本の若者がグローバルで活躍できるスキルのため、スモウルビー甲子園のような取組みに期待したい。 「スモウルビー・プログラミング甲子園」は、2017年1月13日まで第2回大会の作品応募を受け付けている。上位入賞者には豪華賞品を用意し、決勝大会出場者には島根県松江市までの旅費補助もある。プログラミングに興味はあるが、「何から始めたらよいかわからない」という場合は、部活の仲間や友達を誘って参加してみてはいかがだろうか。◆第2回スモウルビー・プログラミング甲子園募集作品:スモウルビーで作成した本競技会ゲーム用のAIプログラム参加資格:高校生以下の個人またはグループ(1998年4月2日以降生まれ)募集期間:2016年7月11日(月)~2017年1月13日(金)応募方法:公式サイトから応募する(http://smalruby-koshien.jp/)◆表彰内容優 勝(1組):賞状、盾、15万円相当の副賞準優勝(1組):賞状、盾、10万円相当の副賞第三位(2組):賞状、盾、5万円相当の副賞特別賞(1組):賞状、盾、3万円相当の副賞※表彰内容は変更する場合がある◆大会日程予選実施:2017年1月(決勝大会出場者12組を選抜 ※事務局実施)予選結果の発表:2017年1月下旬(公式サイトで発表)決勝大会:2017年3月25日(土)島根県松江市「くにびきメッセ」※参加に向けた無料の体験セミナーを島根県内外で予定中。日程等の詳細は、公式サイトで確認できる