読者です 読者をやめる 読者になる 読者になる

友人が競技プロコン用のサーバーフレームワークを作る話

Advent Calendar 2016 競プロ 作る

www.adventar.org

これの14日目です。


僕と友人で、競技プログラミングサーバーを作ることになっているので、その話をしようと思います。

経緯

僕たちが所属している部活で、何回か部内での競プロの大会的なものを開催しています。 しかし、現在使用しているサーバーには、対応言語を追加することが難しいこと、手元のマシン以外で動かすことが難しいこと、そもそも自動採点をしていないなどの問題がありました。

そのサーバーは、継続的に利用されることが想定されていなかった状況でその場限りのものとして作られたため、しょうがのないことでした。

そこで僕と友人(@NotFounds8080)で話し合って、簡単に扱える競プロサーバーを作ることになりました。 名前はなんとなくEagleになりました。 それが、一年以上前のことです。

特に開発が進むことなく、こんなにも時間が経ってしまいました。

Eagleが目指すところ

  • コンパイル、実行、採点が自動で行われる
  • 簡単にPaaSなどに置ける
  • 対応言語の追加が容易
  • 問題の定義が容易
  • プログラムの実行場所が可変(設定すればサンドボックス環境などでの実行もできる)
  • ライブラリとして利用できる(ログイン機能をつけただけの上位互換システムとかが簡単に作れる)

このような感じで作るつもりです。

進捗

現在の進捗は以下のような感じです。

この通り、開発は全く進んでいません。

これから

開発にはある程度の時間を要すると思います。

あまり時間があるわけではありませんが、これが完成して似たような活動を行っている部活動やサークルなどで使用してもらえたら嬉しいので、できるだけ頑張るつもりです。

最後に

タイトルが「友人が」となってますが、これは僕があまり競技プログラミングをやらないため、最後まで僕のモチベーションが保つか分からなかったからです。 本当に僕のこうゆうところ良くないと思ってます。本当に申し訳ないです。どうか許してください。

最後まで、読んでいただきありがとうございました。

残りカス

※ この下は最初に勢いで書いていた時、うっかり生成してしまった文章を自分用に残しているだけです。

今から1年くらい前のこと、僕たちシステム研究部は、パソコン室で部内競技プログラミングコンテストを行っていた。

競技が順調に進んでいく中、不満そうな顔をした部員が二人いた。

一人は僕である。僕は、その時使われていたコンテストサーバーではCとC++のプログラムしか使うことができないことに腹を立てていた。*1

そして、もう一人こそが、その時使われていたコンテストサーバーを作った男、池田(@NotFounds8080)だ。 彼は、自分が前に作ったシステムが継続して利用するつもりで作ったわけではなかったために、サポートする言語の追加などに手間がかかることを不満に思っていた。

不穏な空気が流れる中、僕の一言でその空気が一変した。「汎用的な競技プログラミングコンテストサーバーフレームワークを作らないか」と池田に持ちかけたのだ。

それからすぐに作り始めることが決まった。そして、それは後にEagleプロジェクトと呼ばれることになる。*2

*1:腹を立てていたのは嘘

*2:このセリフを書きたかっただけでした