{"id":20864241,"url":"https://github.com/takara2314/kadai-store-api","last_synced_at":"2026-04-29T05:36:39.676Z","repository":{"id":144382815,"uuid":"327901768","full_name":"takara2314/kadai-store-api","owner":"takara2314","description":"devoirs-coreを使用してMS Teamsで出されている課題の情報を取得し、APIを提供します。","archived":false,"fork":false,"pushed_at":"2021-02-02T02:15:12.000Z","size":80,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-19T08:17:01.858Z","etag":null,"topics":["devoirs","devoirs-core","express"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/takara2314.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}},"created_at":"2021-01-08T12:49:55.000Z","updated_at":"2021-02-02T02:15:15.000Z","dependencies_parsed_at":null,"dependency_job_id":"4ba1f149-a973-4ba7-ae63-9887874a8e8a","html_url":"https://github.com/takara2314/kadai-store-api","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takara2314%2Fkadai-store-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takara2314%2Fkadai-store-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takara2314%2Fkadai-store-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takara2314%2Fkadai-store-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/takara2314","download_url":"https://codeload.github.com/takara2314/kadai-store-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243236768,"owners_count":20258904,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["devoirs","devoirs-core","express"],"created_at":"2024-11-18T05:40:11.464Z","updated_at":"2025-12-26T05:59:11.728Z","avatar_url":"https://github.com/takara2314.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎒 Kadai Store API\n[devoirs-core](https://github.com/approvers/devoirs-core) を使用して [Microsoft Teams](https://www.microsoft.com/ja-jp/microsoft-365/microsoft-teams/group-chat-software/)(Microsoft 365 Education) で出されている課題の情報を取得し、APIを提供します。\nこの場をお借りして devoirs-core、Devoirs の開発に関わった方々に感謝申し上げます。\n\n\n## ⚠ 注意\n``Kadai Store API`` は ``TCJ2 Kadai Store API`` が大幅改良され、改名されたものです。前のバージョンのAPIを使用する場合は、[TCJ2 Kadai Store APIのレポジトリ](https://github.com/takara2314/tcj2-kadai-store-api)を参照してください。\n\n\n## 👨‍💻 API利用方法 (クライアント)\n### 課題一覧を取得 — GET /get\n#### Parameters (Option)\n| Parameter |   |\n|:----------|:-:|\n| due       | 提出期限が過ぎているものを除く場合は、`future`を入れてください。 |\n| timezone  | 予め設定されているタイムゾーンから、タイムゾーンを指定して取得することができます。それ以外はUTCとなります。 |\n| subject   | 予め設定されている教科IDから、教科を指定して取得することができます。複数ある場合はコンマで区切ってください。 |\n\nタイムゾーンや教科IDは、`api-config.yaml`で指定できます。API提供者は、クライアントにそれらをお伝えください。\n#### Curl Example\n```Bash\n$ curl http://example.com/get?due=future\u0026timezone=Asia/Tokyo\u0026subject=math4,circuit2,ai-basic \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\"\n```\n#### Response Example\n```JSON\n{\n  \"acquisition\": \"2020-04-01T12:34:56+09:00\",\n  \"homeworks\": [\n    {\n      \"course\": \"[099] 2年生 AI基礎\",\n      \"subject\": \"AI基礎\",\n      \"subject_id\": \"ai-basic\",\n      \"name\": \"第7回課題 (Deep Q Network)\",\n      \"id\": \"abcdefgh-0123-4567-8910-ijklmnopqrst\",\n      \"due\": \"2020-04-13T23:59:59+09:00\"\n    }\n  ]\n}\n```\n`acquisition` はMS Teamsから取得した時刻です。\n\n### 教科ID一覧を取得 — GET /subjects\n#### Curl Example\n```Bash\n$ curl http://example.com/subjects \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\"\n```\n#### Response Example\n```JSON\n{\n  \"subjects\": [\n    \"hr\",\n    \"japanese\",\n    \"math3\",\n    \"physics-b\",\n    \"law2\",\n    \"le1\",\n    \"eikaiwa1\",\n    \"algorithm\",\n    \"web\",\n    \"circuit\",\n    \"dog\",\n    \"cat\"\n  ]\n}\n```\n\n\n## ✔ 前提 (サーバー)\n- Node.js 11.7.0+ (Recommend: 14.0.0+)\n\n\n## 🛠 環境構築 (サーバー)\n### 1. Node.js を実行できる環境を用意します。\nNode.js のコードを実行・運用できる環境（サーバーやホスティングなど）を用意してください。\n\n### 2. Kadai Store API をインストールします。\n[Releases](https://github.com/takara2314/kadai-store-api/releases)から最新版のソースコードをダウンロードして、展開してください。\n\n### 3. インストールしたディレクトリに移動します。\n移動してください。\n\n### 4. api-config.yaml で基本的な設定を行います。\n| Keys               |   |\n|:-------------------|:-:|\n| update_duration    | `MS Teams`から課題情報を取得する、時間の間隔(分) |\n| update_offtimes    | `MS Teams`から課題情報を取得しない、時(hour) |\n| get_limit          | 1つのトークンが、`get_limit_duration`で指定する期間内に、このAPI(/get)にGETできる回数 |\n| get_limit_duration | `get_limit`の期間(分) |\n| tmp-dir            | 一時的なデータを保管するディレクトリ |\n| timezones          | UTC(協定世界時)以外に扱うタイムゾーン |\n| subjects           | 取得する課題が格納されているチーム名、教科名、教科ID |\n| allow-tokens       | APIにアクセスを許可するトークン (ここで定めてください) |\n\n### 5. 環境変数を設定します。\n| Variables          |   |\n|:-------------------|:-:|\n| PORT               | サーバーが使用するポート番号 (`Heroku`や`GAE`等のホスティングサービスを使用する場合は設定不要です) |\n| MICROSOFT_EMAIL    | 課題情報を取得する`MS Teams`のアカウントのメールアドレス |\n| MICROSOFT_PASSWORD | 課題情報を取得する`MS Teams`のアカウントのパスワード |\n\n### 6. JavaScriptにコンパイル\n`npm install`を実行して、必要なモジュールをインストールしてください。(少々時間がかかります)\n\n次に、`npm run build`を実行して、src内のTypeScriptのコードをJavaScriptにコンパイルし、実行できる状態にしましょう。\n\n### 7. (`Heroku`や`GAE`等のホスティングサービスを使用する場合) デプロイします。\nデプロイに必要なファイルを追加して、デプロイしてください。\n\n[Google App Engine を使用する際の例](https://github.com/takara2314/kadai-store-api-gae-example)\n\n#### 🔎 デブロイが失敗する場合\n`Chromium(Puppeteer)`を使用しているので、ホスティングサービスによっては、デプロイが失敗することがあります。想定される理由として、メモリ不足や、必要なアドオンが導入されていないことが考えられます。\n\n|  |  |\n|:-|:-|\n| 最小メモリ | 512MB |\n| 推奨メモリ | 1024MB |\n\n### 7. (ホスティングサービスを使用しない場合) 実行します。\n`npm start`を実行して、サーバーを起動します。\n\n`ts-node`を使用してTypeScriptを直接実行できる方は、`npm run dev`でもサーバーを起動することができます。\n\n### 8. アクセスできるかを確かめる\nアクセスしてみてください。`Kadai Store API - v1.0.2`と表示されたら成功です。","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftakara2314%2Fkadai-store-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftakara2314%2Fkadai-store-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftakara2314%2Fkadai-store-api/lists"}