An open API service indexing awesome lists of open source software.

https://github.com/jsakamoto/chomado-problem-server

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

asp-net-core asp-net-core-web-api aspnet-core aspnet-web-api aspnetcore aspnetcorewebapi wasi wasm

Last synced: 2 months ago
JSON representation

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

Awesome Lists containing this project

README

        

# Chomado Problem Server

## これは何?

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

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

## "ちょまど問題" とは?

> ![@ito_yusaku](https://pbs.twimg.com/profile_images/477275642065473537/N7VoaKoW_normal.jpeg) _伊藤 祐策(パソコンの大先生) (@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
```

## 自分で実行する

### Docker コンテナを起動する

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

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

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

```shell
docker run -p 5000:8080 -d --rm --name chomado-problem-server jsakamoto/chomado-problem-server:latest
```

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

```shell
docker stop chomado-problem-server
```

### WebAssembly 版を起動する

この GitHub リポジトリの `Release` ページから .wasm ファイル [📦"ChomadProblemServer.wasm"](https://github.com/jsakamoto/chomado-problem-server/releases/download/wasm%2Fv1/ChomadProblemServer.wasm) をダウンロード後、これを WASI (WebAssembly Standard Interface) に準拠したランタイム、具体的には ["wasmtime"](https://wasmtime.dev/) などで実行できます。

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

```shell
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 版

WebAssembly 版は [`edition/wasm`](https://github.com/jsakamoto/chomado-problem-server/tree/edition/wasm) ブランチからビルドできます。

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

WebAssembly 版は、[Steve Sanderson 氏](https://twitter.com/stevensanderson) 個人の実験プロジェクト ["WASI SDK for .NET Core"](https://github.com/SteveSandersonMS/dotnet-wasi-sdk) によって実現されています。

### Windows OS + Visual Studio の場合

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

- [Visual Studio のダウンロード](https://visualstudio.microsoft.com/ja/vs/)

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

### .NET SDK + Visual Studio Code の場合

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

- [.NET SDK 9.0 のダウンロード](https://dotnet.microsoft.com/download/dotnet/9.0)
- [Visual Studio Code のダウンロード](https://code.visualstudio.com/download)

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

### Docker イメージのビルド

Docker イメージをビルドするには、`Dockerfile` ファイルがあるフォルダ (="ChomadoProblemServer") をカレントフォルダにして、下記のコマンドを実行してください。

```shell
docker build -t <イメージ名:タグ名> .
```

## ライセンス

[GNU General Public License v2.0](https://github.com/jsakamoto/chomado-problem-server/blob/master/LICENSE)