|
|
|
|
|
|
|
|
|
|
|
バナーを配布しています。
詳細はこちらよりご覧ください |
|
|
|
|
|
|
≪ 受賞作品一覧
|
- 作品ジャンル
-
学習&教育
-
作品概要
-
このソフトウェアは、オンラインジャッジを簡単に実現するためのオープンソースソフトウェアです。
最も中心となる機能は、ユーザーの提出したソースコードをサーバー側で実行し、正しく要件を満たしているかをジャッジするというものです。この機能では、CPU時間やメモリ使用量を細かく制限、取得することができ、複数の入力に対してもジャッジすることが可能です。また、どんな言語でも処理系のインストールを行えば使用することができ、キューイングシステムによって、並列してジャッジすることもできるようになっています。
また、オンラインジャッジのシステムとしても、いままでには無いような様々な機能があり、ユーザーが自由に問題を追加できる機能や、コンテスト開催機能も実装しています。
もう1つの特筆すべき機能として、簡単なインストールシステムがあります。今までは、ほとんどのオンラインジャッジがソースを公開しておらず、公開しているものでも複雑なインストール手順が必要で、Linuxカーネルやサーバー管理の高度な知識が必要でした。
そのため、このソフトウェアは唯一の実用的なオープンソースオンラインジャッジではないかと考えています。
-
開発言語・ツール
-
Python、PHP、cgroups
-
構想から完成までの期間
-
1年半
-
こだわりポイント・独自のアイデア
-
他にはない、ユーザーが問題を作成できるという機能を実装するのにこだわりました。そのための堅牢化などにはかなり時間をかけたように思います。
また、簡単にインストールできるようにする部分にもこだわりました。多くの人に使ってもらえるよう、コマンド操作をできるだけ少なくし、Webインストーラーを実装することによってさらにわかりやすくしました。これだけインストールが簡単で、さらにある程度のセキュリティを確保できているという部分に自分でも満足しています。
-
苦心した点
-
ユーザーのコードを安全に実行できるようにする部分に苦心しました。
なかなか自分では完全だと思っていても、後日考えてみると穴を見つけるということが何度もあり、その度に修正をしました。また、リソース管理の面でも、思ったとおりに動かないことが多く、悩まされました。
また、ジャッジの並列化も苦労しました。今まで並列化に取り組んだことがなかったこともあり、設計にかなりの時間をかけました。
-
応募したきっかけ
-
コンテストの存在をふとしたことで知り、せっかくなので応募しようと思いました。
-
プログラミング歴
-
5年
-
どうやって勉強したか
-
必要となったときに検索して知識を得ました。
-
受賞した感想
-
自分の作ったプログラムを認めてもらえたということで嬉しかったです。
受賞したときに、僕が中1のときに、初めて書いた以下のプログラムを思い出しました。
#include <stdio.h>
int main(void)
{
printf("Hello, world!\n");
return 0;
}
この初心を忘れずに、これからも精進していきたいと思っています。
|