GitHub Codespacesをプログラミング教育で使う運用が定まらない

以前こんな記事を書いた。大学でプログラミングを教えるのにクラウドIDEを使えばパソコンごとの差を気にせず、同じ環境が提供できてよいという話だ。ツールとしてはReplitを選択していた。

しかしその後、Replitは教育機関向けプランを廃止するというアナウンスを出し、2024年の8月末に完全に消去というアナウンスも届いた。消去に伴うデータエクスポートツールもあり、無料で使っているのが申し訳ないぐらい丁寧な対応だったが、あらためて別のツールを探す必要に迫られた。

結果的には、GitHubのCodespacesを選択した。選択した理由はいくつかあるが、Replitのように、途中でサービスがなくなることがなさそうというのが大きかった。教育機関向けのプランもあるとのことで申し込んでみたが、GitHub側が持っている大学のメールアドレスドメインが古く、バリデーションで弾かれてしまうので使えず、とりあえず個人アカウントで運用することにした。

実のところ細かい部分までは調べる時間がなかったのだが、ドキュメントも豊富で、バックエンドが使い慣れたGitHubであれば、最悪APIなども組み合わせて何とかなるだろうという気持ちもあった。

使い始めてみると、GitHubとのインテグレーションはスムーズで、日本語のドキュメントもあり、使い始めるハードルは低かった。また、Replitはサーバのスペックが低いことが時々気になっていたが、GitHub Codespacesではまったくそんなことがなく学習には充分だった。しかし、少し使っていくと、課題提出を含めたワークフローで気になることがいくつか出てきた。

GitHub Codespacesはあくまでも「一時的なパソコン+VS Code」をオンラインで提供するもので、そこに、作りかけのプログラムを永続的に置いておくことができない。

Replitでは永続的なストレージだったものがGitHub Codespacesでは一時的で、作成したものを永続的に保存するにはgit add + git push する必要がある。ある程度簡略化したとしても、ファイルのセーブとは異なるgitに関する操作を覚えさせる必要がある。GitHubなのだからgitが使えることは前提にしたほうがよいとは思うが、その部分はプログラミングの学習には本質的でないのでできれば見せないようにさせたい。

プログラミングを始めるための「テンプレート」の配布手順の難しさ

rubyプログラミングを始めるための基本的なGemfileやREADMEがセットアップしてある「テンプレート」は私の方で作ったが、これをforkしてもらうため、学生がGitHubアカウントを作ってそれを私に伝え、私が権限を与えて学生が見られるようにしたあと、学生がGitHub codespacesで編集するという流れになっている。これは手間が多く、forkを忘れてダイレクトにリポジトリを編集し、pushできなくて相談に来るということもある。このあたりはAPIなどを使えば省力化できそうではあるが、学生ごとのリポジトリを事前に作っておいて、forkする手間を省くなど、もう少しシンプルな方法を考えたい。

学生がコミットしたソースコードを受け取る手順が確立していない

学生がforkしたリポジトリは、そのままでは私からアクセスできず、アクセス権をもらう必要がある。課題の提出場所をリポジトリにするところまでは問題ないと思うが、ここにも一手間かかる。ただこれも、学生ごとのリポジトリを私の方で作ってしまえばよさそうではある。

というように、いくつか運用上の課題はあるものの、Mac/Windowsが入り乱れる個別のパソコンにrubyをインストールさせることを考えれば、UI含めて共通化された環境を前提として説明できるメリットはこの上なくあるので、いろいろ試しながらよい手順を見つけていきたい。

この記事が気に入ったらサポートをしてみませんか?