GitHub Classroomは、GitHubが教員向けに無償で提供してきた課題管理サービスです。課題の配布、学生ごとのリポジトリ作成、GitHub Actionsでの自動採点までを1つの画面で扱えましたが、2026年8月28日に提供を終えました。この記事では、終了後に何が残り何が消えたのかを先に整理し、そのうえで後継のClassroom 50とCodioの選び分け、Classroom 50で授業を始める手順と自動採点の設定、移行するときに事故になりやすい点を、GitHubとClassroom 50の公式情報に沿って解説します。
まとめ
- GitHub Classroomは終了済み:2026年8月28日にWebサイトとAPIが停止しました。2026年10月15日時点でAPIを呼ぶとHTTP 410が返ります。
- 残ったもの:授業用に作ったGitHubアカウント、Organization、学生のリポジトリはそのまま使えます。消えたのはクラスルーム名・課題名・リポジトリ外で定義したテスト・LMS連携の名簿などです。
- エクスポートはもうできない:公式のClassroom Export UtilityはClassroom APIを使うため、APIが止まった今は動きません。保存済みの成績CSVやLMS側の記録がなければ、学生リポジトリに残る採点結果から成績を再集計します。
- 移行先はClassroom 50かCodio:GitHubの使い方を変えずに無料で続けるならClassroom 50、ブラウザ上の開発環境とLMSへの成績連携が要るならCodioです。
- Classroom 50の前提:TeamプランのOrganizationが必要です。教員はGitHub Educationの認証でTeamプランを無償で使えます。自動採点はOrganizationのActions分(Teamは月3,000分)を消費します。
GitHub Classroomの終了:2026年10月時点の状態
GitHubは2026年5月22日にCommunityで移行計画を発表し、5月26日に新規登録を止め、8月28日にサービスを停止しました。発表時の告知には「過去18か月は保守のみの状態だった」と書かれており、機能追加が止まっていたことが終了の背景です。
| 日付 | 出来事 |
|---|---|
| 2026年5月22日 | パートナーへの移行計画を発表 |
| 2026年5月26日 | 新規の登録を停止(既存の教員は継続利用可) |
| 2026年7月1日 | Classroom 50が一般提供を開始 |
| 2026年8月28日 | Webサイト・API・関連サービスを停止 |
| 2026年9月4日 | Classroom固有データの最終削除 |
日付の根拠は、GitHub Changelogの新規登録停止の告知、サービス停止の告知、データ削除日を明記したGitHub Communityの移行計画です。2026年10月15日に確認したところ、classroom.github.comは終了告知のDiscussionへ301で転送され、gh api /classrooms は「GitHub Classroom has been sunset.」というメッセージとともにHTTP 410を返しました。
終了後に残ったものと消えたもの
サービス停止の告知は、アカウント・リポジトリ・Organizationには影響しないと明言しています。一方で、GitHub Classroomの中だけに保存されていた情報は削除されました。
| 区分 | 対象 |
|---|---|
| 残る | GitHubアカウント、Organization |
| 残る | テンプレートリポジトリ、学生ごとの課題リポジトリ |
| 残る | リポジトリ内のワークフローとテストファイル |
| 削除 | クラスルーム名、課題名 |
| 削除 | リポジトリ外で定義したテスト |
| 削除 | テスト実行と提出の履歴 |
| 削除 | LMS連携(LTI)で取り込んだ名簿 |
注意したいのは自動採点のテストです。GitHub Classroomの自動採点では、プリセットで設定したテストの定義はClassroom側に保存され、「Convert to workflow file」を実行したものだけがスターターリポジトリの .github/workflows/classroom.yml に書き出されていました。Classroom側の定義は「リポジトリ外のテスト」として削除されています。同じ課題を来期も出すなら、スターターリポジトリや学生リポジトリに classroom.yml が残っていればそこからテスト内容を拾い、無ければ手元の資料から作り直します。
エクスポート期限と終了後の復元範囲
終了前の案内は、Classroom Export Utilityでクラスルーム・課題・提出状況・成績CSVを保存する方法でした。このスクリプトはGitHub CLIの拡張 gh classroom を通じてClassroom APIを呼ぶ作りです。APIがHTTP 410を返す今は取得できず、拡張のリポジトリ(github/gh-classroom)もアーカイブされています。
エクスポートしていなかった場合に手元で復元できるのは、学生リポジトリのコミット履歴と、リポジトリに残っているワークフローの実行結果です。どの学生のどのリポジトリがどの課題だったかという対応表はClassroom側にしか無かったため、リポジトリ名の規則から組み直すことになります。
GitHub Classroomでできたこと
GitHub Classroomは約10年間、教員と学生あわせて373万人以上、30万5,000を超えるクラスルームで使われました(GitHubの終了報告による)。機能は次の5つが中心で、後継を選ぶときもこの5つをどこまで引き継げるかが比較の軸になります。
- 課題の配布:招待リンクを開いた学生ごとに、テンプレートリポジトリから課題リポジトリを自動で作る
- 自動採点:学生がpushするたびにGitHub Actionsでテストを実行し、点数を教員の画面に集める
- 名簿とLMS連携:CanvasやMoodleなどのLMSから学生の名簿を取り込む
- フィードバック用Pull Request:課題リポジトリに「Feedback」というPull Requestを作り、教員が差分に行単位でコメントする
- IDE連携:CodespacesやVisual Studio Codeから課題を開く
GitHubの日本語ドキュメントはまだ公開されていますが、冒頭に終了の警告が付いた状態です。手順の記述は終了前のもので、いまは実行できません。
代替サービスの選び方:Classroom 50・Codio・自前運用
GitHubが公式に推奨した移行先は、オープンソースのClassroom 50と商用のCodioの2つです。どちらも課題の配布、自動採点、GitHubリポジトリとの連携を備えています。違いは費用と、LMS連携・開発環境をどこまで持つかです。
| 項目 | Classroom 50 | Codio | 自前運用 |
|---|---|---|---|
| 提供元 | Fifty Foundation | Codio社 | 自校 |
| 料金 | 無料(OSS)・Actions分は別 | 教員無料・学生1人1学期標準48ドル(数量割引あり) | Actions等の利用量により課金 |
| サーバー | 不要(GitHub上で完結) | Codioのクラウド | 不要 |
| 自動採点 | GitHub Actions | Codio独自の採点機能 | Actionsを自作 |
| LMSへの成績連携 | なし | あり | なし |
| ブラウザ開発環境 | なし | あり | なし |
| 操作 | Web画面とCLI | Web画面 | gitとスクリプト |
Classroom 50:GitHub Classroomと同じ流れで続けたい場合
Classroom 50はハーバード大学CS50の授業運営を土台に、Fifty Foundationが開発する無料の代替です。GitHubのリポジトリで公開されており、2026年10月14日にWeb版・CLI版ともv1.58.1が出るなど更新は頻繁です。専用のサーバーやデータベースを持たず、名簿・課題・点数はOrganization内の非公開リポジトリ classroom50 にファイルとして保存され、採点はGitHub Actionsで動きます。Webアプリ(classroom50.org)はGitHub Pagesに置かれた静的サイトです。
教員がテンプレートリポジトリを用意し、学生が課題を受け取って自分のリポジトリで作業し、pushで採点される流れはGitHub Classroomと同じです。既存のGitHubリポジトリとActions中心の授業を続け、LMSへの自動成績連携を必要としない教員には、Classroom 50を勧めます。
Codio:LMS連携とブラウザ開発環境が要る場合
CodioはGitHubが唯一の商用パートナーとして選んだ学習プラットフォームです。Codioの移行案内によると、GitHubリポジトリを正本にしたまま、ブラウザ上の開発環境、自動採点、LMSへの成績の書き戻し、剽窃検出を足せます。教員は教材作成と移行ツールを無料で使え、高等教育機関が機関契約を結ぶと最初の12か月は学生ライセンス50人分が無償になります。Codioの料金ページでは、高等教育向けの標準単価は学生1人あたり1学期48ドル(年90ドル)で、人数が増えると割引がかかります。
移行の手順は終了の前後で変わりました。Codioは2026年5月にGitHub Classroomから課題をまとめて取り込む機能を追加しましたが、Classroom APIの停止を受けて9月3日にこの機能を削除しています(Codioの変更履歴)。いまは課題作成画面の「Smart Import」でGitHubを選び、残っているテンプレートリポジトリのURLを1本ずつ取り込みます。1回の取り込みで課題が1つできる仕組みなので、課題数が多い授業では移行に時間を見込んでください。
学生の端末にコンパイラやランタイムを入れる手間を無くしたい授業、成績をLMSへ自動で戻す必要がある学部単位の運用ではCodioが向きます。ブラウザで開発環境を用意する他の選択肢はクラウド開発環境の選び方で比べています。
自前運用:受講者が少なく採点を自分で組める場合
Organizationに学生を招待し、テンプレートリポジトリから課題リポジトリを作り、GitHub Actionsでテストを回す構成なら、専用ツールが無くても授業は回せます。Communityでは、GitHub Classroomの旧ソースを元にした自前ホスト版(jayenashar/classroom)や、名簿から学生ごとのリポジトリを作るCLI(ArchitectingSoftware/my-gh-classroom)も共有されています。ただしどちらも個人の保守で、利用者は少数です。
受講者が数十人を超える授業で自前運用を選ぶのは勧めません。点数の集計とリポジトリの権限管理を教員が毎回スクリプトで回すことになり、Classroom 50が自動でやる作業を作り直すだけになるためです。採点用のワークフローや権限設計を学内で固めたい場合は、DevOps・CI/CD導入支援のような外部の支援を使う手もあります。
Classroom 50の始め方:教員側の手順
Classroom 50には、インストール不要のWebアプリ(classroom50.org)と、GitHub CLIの拡張 gh teacher ・ gh student の2通りの操作方法があり、どちらでも同じことができます。ここでは手順が文字で追いやすいCLIで説明します(公式QuickstartとCLI Teacher Guideに沿った内容です)。
前提:TeamプランのOrganizationとサービストークン
Classroom 50はTeamまたはEnterpriseプランのOrganizationを必要とします。無料プランのOrganizationではクラスルームを作れません。非公開リポジトリからGitHub Pagesを公開する機能を使うためです。教員はGitHub Educationの教員認証を通すとTeamプランを無償で申請できます。
初期設定では、点数の回収用にfine-grainedの個人アクセストークンを1本作ります。リソースオーナーにOrganizationを選び、リポジトリは「All repositories」、権限はContents・Actions・Workflows・Administrationを読み書き、Organization権限はMembersの読み取りです。学生のリポジトリは後から作られるため、「Only select repositories」にすると回収から漏れます。トークンの種類と発行画面はGitHub PATの作り方を参照してください。
CLI拡張の導入とクラスルーム・課題の作成
次のコマンドは、Organization名を cs50-fall-2026 、クラスルームの短縮名を cs-principles とした例です。2026年10月15日にgh-teacher v1.58.1で各サブコマンドの存在とフラグを確認しています。
# 拡張を入れる(Goのビルドは不要)
gh extension install foundation50/gh-teacher
gh teacher login
# Organizationを初期設定する(所有者権限が必要。トークンを聞かれる)
# リポジトリ作成に加え、組織のメンバー権限・Actions・Pages設定も変更する
# 事前確認だけなら gh teacher init cs50-fall-2026 --dry-run
gh teacher init cs50-fall-2026
# クラスルームを作る
gh teacher classroom add cs50-fall-2026 cs-principles --name "CS Principles" --term Fall-2026
# 名簿を取り込む(CSV)か、1人ずつ追加する
gh teacher roster import cs50-fall-2026 cs-principles ./roster.csv
gh teacher roster add cs50-fall-2026 cs-principles alice --first-name Alice --email [email protected]
# 課題を作る(テンプレートと締切を指定)
gh teacher assignment add cs50-fall-2026 cs-principles hello --name "Hello" \
--template cs50-fall-2026/hello-template --due 2026-11-15T23:59:00+09:00
名簿に追加された学生にはOrganizationへの招待が届き、参加後に課題の受け取りリンクが使えるようになります。採点後にWebアプリで「Collect now」を実行すると、Actionsの collect-scores.yaml ワークフローが学生リポジトリから点数を集め、Webアプリの提出一覧からCSVで落とせます。
Classroom 50の自動採点:テスト定義と公開範囲
Classroom 50の自動採点は、出力の比較(io)、終了コードの確認(run)、pytestの実行(python)の3種類のテストを課題に宣言するだけで動きます。GitHub Classroomの採点プリセットに対応する形です。以下はCとPythonのテスト形式を並べた例です。課題の言語と用意したファイルに合うテストだけを選び、classroom50リポジトリの外にhello-tests.jsonとして保存すると、JSONの配列でまとめて登録できます(Autograding Basicsより)。
[
{ "name": "compiles", "type": "run", "run": "gcc -o hello hello.c", "timeout": 30, "points": 1 },
{ "name": "prints Hello", "type": "io", "setup": "gcc -o hello hello.c",
"run": "./hello", "expected": "Hello, world!", "comparison": "included", "points": 2 },
{ "name": "pytest suite", "type": "python", "run": "python -m pytest -q", "timeout": 120, "points": 10 }
]
gh teacher assignment test set cs50-fall-2026 cs-principles hello --tests hello-tests.json
comparison は部分一致(included)・前後の空白を除いた完全一致(exact)・正規表現(regex)から選び、io型では省略できません。timeout は1〜600秒で、省略すると10秒です。1課題あたりのテストは100件までです。
採点ファイルの分離と秘匿の限界
採点スクリプトを課題のテンプレートに入れると、学生はそれを常に成功を返すよう書き換えられます。Classroom 50では、採点用のファイルを classroom50 リポジトリの <クラスルーム>/autograders/<課題>/ に置けば、採点のたびに最新の写しが取得され、学生のリポジトリには入りません。テストからは環境変数 CLASSROOM50_BUNDLE_DIR 経由で参照します。
# 別例:課題addを作成済みで、学生がadd.pyを実装する前提
# check.shをclassroom50のcs-principles/autograders/add/に保存する
# commit・push後、Publish Pagesの完了を待って提出を試す
set -euo pipefail
test "$(python3 add.py 2 3)" = "5"
test "$(python3 add.py -1 1)" = "0"
gh teacher assignment test add cs50-fall-2026 cs-principles add --name "hidden checks" --type run \
--run 'bash "$CLASSROOM50_BUNDLE_DIR/check.sh"' --points 5
採点ファイルは学生のリポジトリには入りませんが、GitHub Pagesで公開配信されるため、URLを知る学生は取得できます。模範解答や機密データは置かず、失敗時の出力にも解答が含まれないようにしてください。点数の扱いにも注意が要ります。採点は学生のリポジトリの中で走るため、公式も「回収した点数は信頼できるフィードバックであって証明ではない」と書いています。学生が手作業で作ったReleaseは回収されたうえで「Unverified」と表示されるので、成績確定前に一覧でこの表示を確認してください。
Actionsの消費分と提出方式の選び方
採点はOrganizationのActions分を消費し、学生には請求されません。学生のリポジトリは既定で非公開のため、GitHubの料金表にあるTeamプランの月3,000分から引かれます。Managing Actions Costによると、採点1回は準備と採点の2ジョブで、各ジョブが1分単位に切り上げられるため最低2分かかります。
既定の提出方式「Every push to the default branch」は、pushのたびに採点します。学生60人が1課題で平均10回pushすると、それだけで最低1,200分です。受講者が多い授業では提出方式を「A tagged commit」( --submission-mode tag )にし、学生が gh student submit を実行したときだけ採点するのが最も効きます。初期設定はActionsの支出上限を0ドルに設定するため(既に上限を決めている場合は変更しない)、無料分を使い切ると翌月まで採点が止まります。
学生側の操作:課題の受け取りから提出まで
学生も、Webアプリで受け取りリンクを開くか、CLIで操作します。CLIの流れは次の3つです。
gh extension install foundation50/gh-student
gh student accept cs50-fall-2026 cs-principles hello # 自分の課題リポジトリができ、clone用のコマンドが表示される
# acceptが表示したgit cloneコマンドを実行し、作成されたディレクトリへcdする
# そのディレクトリ内で課題を編集してから提出する
gh student submit # pushと submit/… タグのpushをまとめて行う
提出方式がタグ提出の課題では、通常の git push では採点されません。gh student submit を使うか、 submit/ で始まるタグを自分でpushします。採点結果はリポジトリのReleaseとActionsの実行結果に出ます。
教員からの指摘は、課題ごとに1本作られる「Feedback」というPull Requestに行単位のコメントで届きます。差分の基点は課題を受け取った時点のコミットに固定されるので、最初から最新までの変更がまとめて見えます。Pull Requestの画面の見方はGitHubのPull Requestの作り方が参考になります。
GitHub Classroomから移すときの注意点
旧スターターの複製とフォーク経由の権限継承
旧スターターの再利用では、過去の学生の提出物が他の学生にも公開される権限設定に注意が必要です。Classroom 50のFAQによると、GitHub Classroomは2024年以降、学生の課題リポジトリをスターターのフォークとして作っていました。GitHubでは非公開フォークに元リポジトリと同じチーム権限が付きます。Classroom 50はクラスルームのチームに非公開テンプレートの読み取り権限を与えるため、旧スターターをそのまま登録すると、過去の学生の提出物まで全員が読める状態になります。
新しいリポジトリを作ってスターターの中身をコピーし、「Template repository」を有効にしてから登録してください。フォークを持つ非公開テンプレートを登録しようとすると、Webの課題作成画面と gh teacher assignment add は警告を出します。
既存の学生リポジトリに残る自動採点ワークフロー
GitHub Classroomが学生リポジトリに置いた採点ワークフローは、ファイルが残っている限り、pushのたびに実行されます。結果を受け取るClassroom側はもう無く、ワークフローが使っていた採点用アクションのうち classroom-resources/autograding-grading-reporter と autograding-command-grader はアーカイブされ、reporterには「GitHub Classroomの終了に伴い非推奨」と明記されています。旧課題の採点を止めるには、対象リポジトリの採点ワークフローだけを無効化するか、利用を終えたリポジトリをアーカイブします。Organization全体のActionsを無効化すると、移行後の採点や他のCIも停止します。
Classroom 50にまだ無い機能
FAQのロードマップには、GitHub Classroomにあって現在のClassroom 50に無い機能として、LTI/LMSへの成績の書き戻し、学生がアプリ内で自分の点数を見る機能、学生による名簿上の自分の選択が挙がっています。LMSと成績を同期する運用が必須の授業は、Classroom 50ではCSVを手で取り込む前提になります。それが負担ならCodioを選ぶのが現実的です。
また、2026年7月1日の一般提供より前にプレリリース版を試していたOrganizationは、公式の指示どおり classroom50 リポジトリを削除して初期化してから使う必要があります。削除すると既存のクラスルームと学生データも消えます。
よくある質問
GitHub Classroomは終了したのですか?
はい。2026年8月28日にWebサイト・API・関連サービスが停止しました。2026年10月15日時点でClassroom APIはHTTP 410を返し、classroom.github.comは終了告知のページへ転送されます。
終了後も学生のリポジトリは使えますか?
使えます。GitHubアカウント、Organization、課題リポジトリは影響を受けていません。削除されたのはクラスルーム名・課題名・リポジトリ外のテスト・提出の履歴・LMS連携の名簿など、GitHub Classroomの中だけにあった情報です。
今からGitHub Classroomのデータをエクスポートできますか?
できません。公式のClassroom Export UtilityはClassroom APIを使うため、APIが停止した2026年8月28日以降は動きません。手元に残るのは学生リポジトリのコミット履歴とワークフローの実行結果です。
Classroom 50は無料ですか?
Classroom 50自体は無料のオープンソースです。ただしTeam以上のOrganizationが必要で(教員はGitHub Educationで無償)、自動採点はOrganizationのActions分を消費します。Teamプランの無料分は月3,000分で、超えると支出上限の範囲で課金されます。
Classroom 50はGoogle ClassroomやMoodleと連携できますか?
2026年10月時点ではできません。LMSへの成績の書き戻しは公式FAQのロードマップで「現在は未対応」とされています。点数はCSVで書き出してLMSに取り込みます。連携が必須ならCodioが対応しています。