SHAREOJ GUIDE
作問CLI
手元のエディターやAIエージェントで問題を作り、ShareOJに保存できます。
できること
作問CLI(shareoj)を使うと、問題文、生成コード、テストケースを手元のファイルで編集し、ShareOJの下書きに保存できます。
保存した問題の公開は、Webのエディタの「公開・応募」か、問題一覧の「問題投稿」から行います。
CLIは問題を公開したり、解答を提出したりしません。
すべての設定とオプションは、GitHubのCLIのREADMEに書いています。
インストールと更新
LinuxとmacOSでは、次のコマンドでインストールします。
WSLも同じ手順です。
curl と、sha256sum または shasum が必要です。
curl -fsSL https://www.share-oj.net/install.sh | bash
~/.local/bin/shareoj にインストールし、sudoは不要です。
PATHの設定を案内された場合は、表示された設定をシェルの設定ファイルに追加してください。
Windowsでは、GitHub Releases から shareoj-windows-amd64.exe または shareoj-windows-arm64.exe を取得し、shareoj.exe に名前を変えて使います。
更新するときは、同じインストールコマンドをもう一度実行します。
新しい版が出ていると、login、pull、push のあとに案内を表示します。
ログイン
shareoj login
shareoj login --google
shareoj login はメールアドレスとパスワードでログインします。
Googleアカウントでは --google を付けると、ブラウザーで認証します。
初めて使うアカウントは、先にWebでプロフィールを登録してください。
ログイン情報を消すには shareoj logout を実行します。
問題を作って保存する
shareoj init a-plus-b
shareoj check a-plus-b
shareoj push a-plus-b
init は、問題文と解説の雛形、A + Bの生成コード、テストケースの例を入れたディレクトリを作ります。
check は設定ファイル、文字コード、容量、テストケースの組み合わせを検査します。
コードのコンパイルや実行はしません。
push は内容をShareOJの下書きに保存します。
Webで作った問題やテスターとして参加している問題は、pull で手元に取得できます。
問題IDには、問題ページのURL(/problems/<ID>)にある22文字のIDも使えます。
shareoj pull <問題ID> ./my-problem
取得したディレクトリで push すると、取得元の問題を更新します。
Webなどで先に更新されていた場合、push は保存せずに止まります。
内容を確かめてから、表示された更新番号を --expect-version に指定して再実行してください。
problem.toml
問題の設定は problem.toml に書きます。
ファイルのパスは、問題ディレクトリからの相対パスです。
title = "A + B"
statement = "statement.md"
editorial = "editorial.md"
time_limit_ms = 2000
memory_limit_mb = 512
# difficulty = 1
[generators.input]
source = "input.cpp"
runtime = "cpp23-gcc"
[generators.output]
source = "output.cpp"
runtime = "cpp23-gcc"
[generators.validation]
source = "validate.cpp"
runtime = "cpp23-gcc"
[tests]
directory = "tests"
output_suffix = ".out"
samples = ["sample1"]
スペシャルジャッジは [checker]、インタラクティブは [interactor] に source と runtime を書きます。
2つを同時には指定できません。
testlib形式の判定コードでは、protocol = "testlib" も指定します。
判定コードの書き方は判定方法の設定を見てください。
AIエージェントに作問を頼む
CodexやClaude Codeに、作問の手順をまとめたスキルを登録できます。
shareoj guide --install-skill all
Codexだけなら codex、Claude Codeだけなら claude を指定します。
登録したあと、新しいセッションで「ShareOJで作問して」と頼んでください。
shareoj guide を実行すると、エージェント向けの作問手順を直接読めます。