Skip to content

4択問題x全10問の回答を JSON 形式で POST すると、その POST 要求のクエリ文字列に指定されている乱数シード値に基づき正当を内部で生成し、POST された回答と付き合わせて正答した数を返す、HTTP API サーバーの実装です

License

Notifications You must be signed in to change notification settings

jsakamoto/chomado-problem-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chomado Problem Server

これは何?

"ちょまど問題" を解くアプリを作る際に、回答を問い合わせるのに使える Web API サーバーです。

この API サイトに、4択問題x全10問の回答を JSON 形式で POST すると、その POST 要求のクエリ文字列に指定されている乱数シード値に基づき正当を内部で生成し、POST された回答と付き合わせて、正答した数を返します。

"ちょまど問題" とは?

@ito_yusaku 伊藤 祐策(パソコンの大先生) (@ito_yusaku)
【ちょまど問題まとめ】
・4択問題が全部で10問ある。
・全部の回答を終えると何問正解したかだけが分かる。
・全問正解するとクリア。
・問題文は人外の言葉で書かれているので読んでも解けない。
・回答試行は何回でもできるが、できるだけ少ない回数でクリアしたい。
June 18, 2014

リクエスト送信方法

ホスト:

以下の PaaS 上に常設しています。

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

自分で実行する

Docker コンテナを起動する

Chomado Problem Server は、Docker Hub にて Docker イメージとしても配布しています (下記)。

https://hub.docker.com/r/jsakamoto/chomad-problem-server/

下記 docker コマンドで、TCP ポート 5000 でリッスンする状態で起動 (デタッチ、終了時のコンテナ削除の指定込み) できます。

docker run -p 5000:80 -d --rm --name chomado-problem-server jsakamoto/chomado-problem-server

上記コマンド例で実行した場合は、コンテナ名に chomado-problem-server を指定してあるので、起動したコンテナを停止するには下記コマンドを実行すればよいです。

docker stop chomado-problem-server

WebAssembly 版を起動する

この GitHub リポジトリの Release ページから .wasm ファイル 📦"ChomadProblemServer.wasm" をダウンロード後、これを WASI (WebAssembly Standard Interface) に準拠したランタイム、具体的には "wasmtime" などで実行できます。

例えば、wasmtime をインストール済みの環境にて下記コマンドを実行することで、wasmtime 上でちょまど問題サーバーを起動することができます。

wasmtime ./ChomadProblemServer.wasm --tcplisten localhost:5000

上記実行後に、Web ブラウザで http:https://localhost:5000/ にアクセスすると、ちょまど問題サーバーが起動していることが確認できます。

開発

Chomado Problem Server は C# + .NET 8.0 + ASP.NET Core Minimal API で作成されています。

開発環境は

  • Windows OS + Visual Studio 2022 以降 (Community Edition 可)、
  • または .NET SDK 8.0 以降 + Visual Studio Code

を想定しています。

WebAssembly 版

WebAssembly 版は edition/wasm ブランチからビルドできます。

ただし .NET SDK は、7 以降 (この README 最終更新時点でプレビューリリースの段階) が必要です。

WebAssembly 版は、Steve Sanderson 氏 個人の実験プロジェクト "WASI SDK for .NET Core" によって実現されています。

Windows OS + Visual Studio の場合

事前に Visual Studio 2022 かそれ以降をインストールしておいてください。
(要件に問題なければ、無償利用可能な Community 版で構いません。)
インストールの際は「ASP.NET と Web 開発」のワークロードを選択してインストールしてください。

このリポジトリを git clone したのち、ソリューションファイル (.sln) を Visual Studio で開いてキーボードの Ctrl + F5 を押せばビルドが実行され、続けてブラウザが起動してページが表示されます。

.NET SDK + Visual Studio Code の場合

事前に .NET SDK 8.0 以降、および Visual Studio Code をインストールしておいてください。

このリポジトリを git clone したのち、clone した先のフォルダ直下にある 📂 ChomadProblemServer フォルダを Visual Studio Code で開いてキーボードの Ctrl + F5 を押せばビルドが実行され、続けてブラウザが起動してページが表示されます。

ライセンス

GNU General Public License v2.0

About

4択問題x全10問の回答を JSON 形式で POST すると、その POST 要求のクエリ文字列に指定されている乱数シード値に基づき正当を内部で生成し、POST された回答と付き合わせて正答した数を返す、HTTP API サーバーの実装です

Topics

Resources

License

Stars

Watchers

Forks