中学生だってやっているし、われわれも社内プログラミングコンテストなんていかがでしょうか!?
みなさまこんにちは。スターフェスティバル株式会社 Advent Calendar 20 日は @riaf が担当します。
個人的にはこういう記事が溢れかえる時期にわざわざなにか書くモチベーションはあまりなかったりするのですが、先日試用期間があけたばかりのペーペーですのでちゃんと1日くらいは埋めていこうと思います。
はじめに、U-16 プロコンの話
私はいま北海道の釧路市というところに住んでいるのですが、ここで 10 年ほど前からU-16 プログラミングコンテスト釧路大会というものに関わっておりまして、これは名前の通り、16 才以下を対象にしたプログラミングコンテストです。
また、釧路大会という名前がついているように、釧路以外でも開催されており、これまでは主に北海道内で活発だったのですが、先日ついにプレ全国大会も開催されるなど、実は少しずつですが広がりを見せているイベントにもなっております。
この記事は、そんなプロコンを スターフェスティバル社内でやってみるのはどうでしょう? という自社への提案と共に、もし他にも興味がある企業があれば いつかは企業対抗戦なんてやってみたいのでぜひ一緒にやりませんか? という提案でございます。
本当は、U-16 プロコン釧路大会をやることで、釧路高専との繋がりができたり、その運営が大変面白いことになっていることも紹介したいのですが、これもまた話すと長くなってしまうので、また機会があればご紹介させていただければと思います。
U-16 プロコンのお題 CHaser
プログラミングコンテストといってもまあさまざまなものがあると思いますが、この U-16 プロコンは「CHaser」という対戦型のゲームを使って、実際に参加者が書いたコード同士を戦わせるという競技になっています。
それぞれのプレイヤーがターンごとにコマンドを送信しあって、アイテムの獲得数や、相手プレイヤーを行動不能にするなどして勝敗を決定します。
テキストの解説よりもわかりやすいかなと思うので、以下動画とかでぜひ実際の動きを見てもらえると!
YouTubeのvideoIDが不正です
送信できるコマンドの種類は大きく4つあります。またそれぞれに上下左右の方向の組み合わせがあります。
- Walk (移動)
- Put (壁ブロックを置く)
- Look (範囲を見る)
- Search (方向を調べる)
Look や Search というコマンドが用意されているように、上の画像にあるような観戦ではマップを見ることができますが、実際のプログラムには周辺情報しか与えられないので、マップの広さや相手プレイヤーの位置などをきちんと把握するには探索系のコマンドを駆使する必要があったりと、コードを書いてみると意外と奥が深いことに気づきます。
どう社内で使う?プログラミングに触れるきっかけとして
ここまでの解説で、エンジニアの皆様はお気づきになられたと思いますが、これをエンジニア同士でやってしまうと最終的に「いかに計算リソースに課金できるか」の戦いになってしまいますので、今回ご提案する 社内プロコンのターゲットは「エンジニア職ではない」メンバー を想定しています。
(エンジニアも参加する場合は、何かしらの制約をつけてやると面白いかもしれません)
例えばチームビルディングの一環として、プログラミング経験のない(あるいは浅い)メンバーにコーチとしてエンジニアがついたり、もっと参加者が多ければ部署対抗なんかにして、普段関わりのない部署のメンバーとエンジニアの交流のきっかけとして、技術について興味を持ってもらったり、エンジニアについて知ってもらったりといったことが狙えるのではないかと考えています。
じゃあどうやるの?
ここまで読んでいただいている方々は少しでも「面白そう、やってみたいな」と思っていただけたのではないかなと思うのですが、ここで非常に残念なお知らせで、このサーバープログラム、意外と動かすのが面倒だったり、準備に割と気合がいります。
大会で使用されているサーバーは旭川大会のサイトからダウンロードできるのですが、Windows 版しかありません……。
という状況なので、ひたすらに重い腰を上げて、Deno でサーバーを書き始めました。まだ、サーバーを構築するのに使える部品を作っているところではあるのですが、近いうちには環境構築が楽チンなサーバーをリリースしようと思います。(年末年始の宿題として……w)
コントリビュートもお待ちしております!!!
おまけ
あと、この見た目、そんなにワクワクしないので、新しいサーバーではもう少し楽しげにしたいなーと思い、可愛いドット絵を作ってもらっています。早く組み込みたいな〜!
Discussion