{"id":20409346,"url":"https://github.com/jsakamoto/chomado-problem-server","last_synced_at":"2026-01-31T18:30:51.615Z","repository":{"id":18015802,"uuid":"21042257","full_name":"jsakamoto/chomado-problem-server","owner":"jsakamoto","description":"4択問題x全10問の回答を JSON 形式で POST すると、その POST 要求のクエリ文字列に指定されている乱数シード値に基づき正当を内部で生成し、POST された回答と付き合わせて正答した数を返す、HTTP API サーバーの実装です","archived":false,"fork":false,"pushed_at":"2024-11-14T19:29:18.000Z","size":82,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-30T10:33:53.654Z","etag":null,"topics":["asp-net-core","asp-net-core-web-api","aspnet-core","aspnet-web-api","aspnetcore","aspnetcorewebapi","wasi","wasm"],"latest_commit_sha":null,"homepage":"https://chomado-problem-server.azurewebsites.net/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jsakamoto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-06-20T15:17:08.000Z","updated_at":"2024-11-14T19:29:21.000Z","dependencies_parsed_at":"2024-11-13T22:23:26.611Z","dependency_job_id":"bf4cbf4d-9dc9-41dd-80fd-19058d9d5112","html_url":"https://github.com/jsakamoto/chomado-problem-server","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/jsakamoto/chomado-problem-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsakamoto%2Fchomado-problem-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsakamoto%2Fchomado-problem-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsakamoto%2Fchomado-problem-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsakamoto%2Fchomado-problem-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jsakamoto","download_url":"https://codeload.github.com/jsakamoto/chomado-problem-server/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsakamoto%2Fchomado-problem-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28949335,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T18:30:42.805Z","status":"ssl_error","status_checked_at":"2026-01-31T18:30:19.593Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asp-net-core","asp-net-core-web-api","aspnet-core","aspnet-web-api","aspnetcore","aspnetcorewebapi","wasi","wasm"],"created_at":"2024-11-15T05:41:05.897Z","updated_at":"2026-01-31T18:30:51.598Z","avatar_url":"https://github.com/jsakamoto.png","language":"HTML","readme":"﻿# Chomado Problem Server\n\n## これは何?\n\n\"ちょまど問題\" を解くアプリを作る際に、回答を問い合わせるのに使える Web API サーバーです。\n\nこの API サイトに、4択問題x全10問の回答を JSON 形式で POST すると、その POST 要求のクエリ文字列に指定されている乱数シード値に基づき正当を内部で生成し、POST された回答と付き合わせて、正答した数を返します。\n\n## \"ちょまど問題\" とは?\n\n\u003e ![@ito_yusaku](https://pbs.twimg.com/profile_images/477275642065473537/N7VoaKoW_normal.jpeg) _伊藤 祐策(パソコンの大先生) (@ito_yusaku)_  \n\u003e **【ちょまど問題まとめ】**  \n\u003e・4択問題が全部で10問ある。  \n\u003e・全部の回答を終えると何問正解したかだけが分かる。  \n\u003e・全問正解するとクリア。  \n\u003e・問題文は人外の言葉で書かれているので読んでも解けない。  \n\u003e・回答試行は何回でもできるが、できるだけ少ない回数でクリアしたい。  \n\u003e \u0026mdash; \u003ca href=\"https://twitter.com/ito_yusaku/status/479262891124617216\"\u003eJune 18, 2014\u003c/a\u003e\n\n## リクエスト送信方法\n\n**ホスト:**  \n\n以下の PaaS 上に常設しています。\n\n- **Microsoft Azure Web Apps:** https://chomado-problem-server.azurewebsites.net/\n\n**API エンドポイントのパス**\n\n`/answer`\n\n**メソッド:**  `POST`\n\n**必要な要求ヘッダ:** `content-type: application/json`\n\n**送信ボディ:**  \n4択の回答を 1, 2, 3, 4 の整数のいずれかで表し、10問分の回答となる要素10個の配列を JSON 形式で送信。\n\n例) `[1,2,3,4,1,2,3,4,1,2]`\n\n**クエリ文字列:**  \n`seed` ... 正答を内部生成するのに使われる乱数シード値 (整数値)。省略可能で既定値は 1 です。\n\n## 呼び出し例\n\n例えば、cURL を使って下記のように回答 \"[1,2,3,4,1,2,3,4,1,2]\" を POST すると、正答数が返ります。\n\n```\n$ 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\"\n2\n```\n\n## 自分で実行する\n\n### Docker コンテナを起動する\n\nChomado Problem Server は、Docker Hub にて Docker イメージとしても配布しています (下記)。\n\nhttps://hub.docker.com/r/jsakamoto/chomad-problem-server/\n\n下記 `docker` コマンドで、TCP ポート 5000 でリッスンする状態で起動 (デタッチ、終了時のコンテナ削除の指定込み) できます。\n\n```shell\ndocker run -p 5000:8080 -d --rm --name chomado-problem-server jsakamoto/chomado-problem-server:latest\n```\n\n上記コマンド例で実行した場合は、コンテナ名に `chomado-problem-server` を指定してあるので、起動したコンテナを停止するには下記コマンドを実行すればよいです。\n\n```shell\ndocker stop chomado-problem-server\n```\n\n### WebAssembly 版を起動する\n\nこの 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/) などで実行できます。\n\n例えば、wasmtime をインストール済みの環境にて下記コマンドを実行することで、wasmtime 上でちょまど問題サーバーを起動することができます。\n\n```shell\nwasmtime ./ChomadProblemServer.wasm --tcplisten localhost:5000\n```\n\n上記実行後に、Web ブラウザで `http://localhost:5000/` にアクセスすると、ちょまど問題サーバーが起動していることが確認できます。\n\n\u003c!--\n\n### Microsoft Azure Web Apps に設置する\n\n下の「Deploy to Azure」ボタンをクリックし、表示される Web サイトの指示に従ってください。\n\n[![Deploy to Azure](https://azuredeploy.net/deploybutton.png)](https://azuredeploy.net/)\n\nChomado Problem Server は Microsoft Azure Web Apps の無料枠内で実行できます。\n\n### Heroku に設置する\n\nChomado Problem Server は、Docker Hub にて Docker イメージとしても配布しています (下記)。\n\nhttps://hub.docker.com/r/jsakamoto/chomad-problem-server/\n\nこの Docker イメージを Heroku の Docker コンテナに配置することで Heroku 上への Chomado Problem Server の設置が可能です。\n\nHeroku CLI と Docker がインストール済みの環境であれば、下記の手順で配置可能です (下記の `{appname}` の部分は、設置しようとしている Heroku 上の実際のアプリ名に置き換えてください)。\n\n```bash\n# \"heroku update\" で heroku CLI を最新版に更新しておくこと\n# 事前に \"heroku login\" 及び \"heroku container:login\" で\n# Heroku とそのコンテナサービスへのログインを済ませておくこと\n$ heroku apps:create {appname} # すでにアプリを別途作成済みなら不要\n\n# Chomado Problem Server の Docker イメージをローカル環境に持ってくる\n$ docker pull jsakamoto/chomad-problem-server:latest\n\n# ローカルに持ってきた Chomado Problem Server の Docker イメージに、\n# Heroku の Docker リポジトリ名で別名をつける\n$ docker tag jsakamoto/chomad-problem-server:latest registry.heroku.com/{appname}/web:latest\n\n# その別名で docker push することで、Chomado Problem Server の\n# Docker イメージが Heroku の Docker リポジトリに送り込まれ、\n# Heroku 上で自動で docker run されて稼働が始まる。\n$ docker push registry.heroku.com/{appname}/web:latest\n\n# docker push が成功したら、\"heroku open -a {appname}\" で、\n# デフォルトブラウザにて Chomado Problem Server のページが開く\n```\n\nなお、こうして Heroku の Docker コンテナサービスに配置したChomaod Problem Server の Web ページについて、HTTPS アクセスを強制するには、`EnforceHTTP` 環境変数に `true` を設定してください。\n\nHeroku CLI であれば、下記コマンドになります。\n\n```bash\n$ heroku config:set EnforceHTTPS=true -a {appname}\n```\n\n以上の設定を施しておくと、Chomado Problem Server の説明ページへの HTTP プロトコルでのアクセスは HTTPS プロトコルでのアクセスにリダイレクトされるようになります (Web API エンドポイントについては、下位互換維持のため、HTTP から HTTPS へのリダイレクトは行いません)。\n\nChomado Problem Server は Heroku の無料枠内で実行できます。\n--\u003e\n\n## 開発\n\nChomado Problem Server は C# + .NET 9.0 + ASP.NET Core Minimal API で作成されています。\n\n開発環境は \n\n- Windows OS + Visual Studio 2022 以降 (Community Edition 可)、\n- または .NET SDK 9.0 以降 + Visual Studio Code \n\nを想定しています。\n\n### WebAssembly 版\n\nWebAssembly 版は [`edition/wasm`](https://github.com/jsakamoto/chomado-problem-server/tree/edition/wasm) ブランチからビルドできます。\n\nただし .NET SDK は、**7 以降** (この README 最終更新時点でプレビューリリースの段階) が必要です。\n\nWebAssembly 版は、[Steve Sanderson 氏](https://twitter.com/stevensanderson) 個人の実験プロジェクト [\"WASI SDK for .NET Core\"](https://github.com/SteveSandersonMS/dotnet-wasi-sdk) によって実現されています。\n\n### Windows OS + Visual Studio の場合\n\n事前に Visual Studio 2022 かそれ以降をインストールしておいてください。  \n(要件に問題なければ、無償利用可能な Community 版で構いません。)  \nインストールの際は「ASP.NET と Web 開発」のワークロードを選択してインストールしてください。\n\n- [Visual Studio のダウンロード](https://visualstudio.microsoft.com/ja/vs/)\n\nこのリポジトリを git clone したのち、ソリューションファイル (.sln) を Visual Studio で開いてキーボードの Ctrl + F5 を押せばビルドが実行され、続けてブラウザが起動してページが表示されます。\n\n### .NET SDK  + Visual Studio Code の場合\n\n事前に .NET SDK 9.0 以降、および Visual Studio Code をインストールしておいてください。\n\n- [.NET SDK 9.0 のダウンロード](https://dotnet.microsoft.com/download/dotnet/9.0)\n- [Visual Studio Code のダウンロード](https://code.visualstudio.com/download)\n\nこのリポジトリを git clone したのち、clone した先のフォルダ直下にある `📂 ChomadoProblemServer` フォルダを Visual Studio Code で開いてキーボードの Ctrl + F5 を押せばビルドが実行され、続けてブラウザが起動してページが表示されます。\n\n### Docker イメージのビルド\n\nDocker イメージをビルドするには、`Dockerfile` ファイルがあるフォルダ (=\"ChomadoProblemServer\") をカレントフォルダにして、下記のコマンドを実行してください。\n\n```shell\ndocker build -t \u003cイメージ名:タグ名\u003e .\n```\n\n## ライセンス\n\n[GNU General Public License v2.0](https://github.com/jsakamoto/chomado-problem-server/blob/master/LICENSE)","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjsakamoto%2Fchomado-problem-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjsakamoto%2Fchomado-problem-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjsakamoto%2Fchomado-problem-server/lists"}