"ちょまど問題" を解くアプリを作る際に、回答を問い合わせるのに使える Web API サーバーです。
この API サイトに、4択問題x全10問の回答を JSON 形式で POST すると、その POST 要求のクエリ文字列に指定されている乱数シード値に基づき正当を内部で生成し、POST された回答と付き合わせて、正答した数を返します。
伊藤 祐策(パソコンの大先生) (@ito_yusaku)
【ちょまど問題まとめ】
・4択問題が全部で10問ある。
・全部の回答を終えると何問正解したかだけが分かる。
・全問正解するとクリア。
・問題文は人外の言葉で書かれているので読んでも解けない。
・回答試行は何回でもできるが、できるだけ少ない回数でクリアしたい。
— June 18, 2014
ホスト:
以下の PaaS 上に常設しています。
- Microsoft Azure Web Apps: https://chomado-problem-server.azurewebsites.net/
API エンドポイントのパス
/answer
メソッド: POST
必要な要求ヘッダ: content-type: application/json
送信ボディ:
4択の回答を 1, 2, 3, 4 の整数のいずれかで表し、10問分の回答となる要素10個の配列を JSON 形式で送信。
例) [1,2,3,4,1,2,3,4,1,2]
クエリ文字列:
seed
... 正答を内部生成するのに使われる乱数シード値 (整数値)。省略可能で既定値は 1 です。
例えば、cURL を使って下記のように回答 "[1,2,3,4,1,2,3,4,1,2]" を POST すると、正答数が返ります。
$ curl https://chomado-problem-server.apphb.com/answer?seed=123 -X POST -d "[1,2,3,4,1,2,3,4,1,2]" -H "content-type:application/json"
2
Chomado Problem Server は、Docker Hub にて Docker イメージとしても配布しています (下記)。
https://hub.docker.com/r/jsakamoto/chomad-problem-server/
下記 docker
コマンドで、TCP ポート 5000 でリッスンする状態で起動 (デタッチ、終了時のコンテナ削除の指定込み) できます。
docker run -p 5000:8080 -d --rm --name chomado-problem-server jsakamoto/chomado-problem-server:latest
上記コマンド例で実行した場合は、コンテナ名に chomado-problem-server
を指定してあるので、起動したコンテナを停止するには下記コマンドを実行すればよいです。
docker stop chomado-problem-server
この GitHub リポジトリの Release
ページから .wasm ファイル 📦"ChomadProblemServer.wasm" をダウンロード後、これを WASI (WebAssembly Standard Interface) に準拠したランタイム、具体的には "wasmtime" などで実行できます。
例えば、wasmtime をインストール済みの環境にて下記コマンドを実行することで、wasmtime 上でちょまど問題サーバーを起動することができます。
wasmtime ./ChomadProblemServer.wasm --tcplisten localhost:5000
上記実行後に、Web ブラウザで http://localhost:5000/
にアクセスすると、ちょまど問題サーバーが起動していることが確認できます。
Chomado Problem Server は C# + .NET 9.0 + ASP.NET Core Minimal API で作成されています。
開発環境は
- Windows OS + Visual Studio 2022 以降 (Community Edition 可)、
- または .NET SDK 9.0 以降 + Visual Studio Code
を想定しています。
WebAssembly 版は edition/wasm
ブランチからビルドできます。
ただし .NET SDK は、7 以降 (この README 最終更新時点でプレビューリリースの段階) が必要です。
WebAssembly 版は、Steve Sanderson 氏 個人の実験プロジェクト "WASI SDK for .NET Core" によって実現されています。
事前に Visual Studio 2022 かそれ以降をインストールしておいてください。
(要件に問題なければ、無償利用可能な Community 版で構いません。)
インストールの際は「ASP.NET と Web 開発」のワークロードを選択してインストールしてください。
このリポジトリを git clone したのち、ソリューションファイル (.sln) を Visual Studio で開いてキーボードの Ctrl + F5 を押せばビルドが実行され、続けてブラウザが起動してページが表示されます。
事前に .NET SDK 9.0 以降、および Visual Studio Code をインストールしておいてください。
このリポジトリを git clone したのち、clone した先のフォルダ直下にある 📂 ChomadoProblemServer
フォルダを Visual Studio Code で開いてキーボードの Ctrl + F5 を押せばビルドが実行され、続けてブラウザが起動してページが表示されます。
Docker イメージをビルドするには、Dockerfile
ファイルがあるフォルダ (="ChomadoProblemServer") をカレントフォルダにして、下記のコマンドを実行してください。
docker build -t <イメージ名:タグ名> .