Classroom for GitHubの導入方法をまとめた

どうも,玉田研のざきもとです。春からMasterになります。

ここ数日Classroom for Githubについて色々触ってたのでそれについて導入方法のようなものを書いていきます。

きっかけは以前うちのボスが「Classroom for Github興味あるけどよくわからん」といってたので気になって自分で調べてみました

gihyo.jp

Classroom for Githubとは

下記の記事によると,Classroom for GitHubを使うと教師は授業の課題を作成し、プライベートな招待用URLを通じて学生に課題用コードを配布できるそうです。また,教師がリポジトリ作成やアクセス管理を効率化できるだけでなく、生徒の課題提出も容易になるそうです。

www.itmedia.co.jp

他大学での導入例

他の大学の例では,東京工業大学が去年プログラミングの授業でClassroomを導入しているようです。

www.slideshare.net


Classroom for Githubの使用方法には,公式のドキュメントなどを参考にしました。スクリーンショットを載せながら進めていきます。

github.com

Classroom for Githubの導入

まずGithubで,クラス用の組織アカウント(Organization)を作成します

f:id:takehanogi11:20160330233736p:plain

このクラス用アカウントをプライベートリポジトリで管理したい場合は,教員がGithub Educationのサイトから申請することで,無料でプライベートリポジトリを使うことができます。申請方法に関しては,先ほどのボスの記事や,下記の記事を参考にしてください

pastak.hatenablog.com


アカウント作成ができたら,1つ課題配布用のリポジトリを作成しておいてください。

f:id:takehanogi11:20160330233934p:plain

次にClassroom for Githubのサイトにアクセスして,先ほど作成したOrganizationをクラス用に管理するアカウントとして登録します。New classroomをクリックしてください。

f:id:takehanogi11:20160330235045p:plain

すると,どのアカウントを管理するか選択する必要があるので,選んでください。もしこの中に存在しない場合は,下のGrant us accessにクリックして,アカウントを追加してください。

f:id:takehanogi11:20160330235656p:plain

登録が完了すると次のような画面が表示されます。ここで他の管理者を招待できるので,他の教員やTAなどのGithubアカウントを追加したり,招待用のURLを送ってください

f:id:takehanogi11:20160331000432p:plain

これも完了すると,下記の画面が表示されます。このCreate your first assignmentをクリックすることで,最初の課題を作成することができます。クリックして,課題の設定をしましょう

f:id:takehanogi11:20160331000853p:plain

まずは課題の形式を選択します。左が個人用の課題リポジトリで,右がグループ用の課題リポジトリです。今回は個人リポジトリを選択します。

f:id:takehanogi11:20160331001209p:plain

次に課題の名前,リポジトリをpublic,privateどちらにするか,スターターコードの登録を行います。スターターコードは,最初にOrganizationで作成したリポジトリを使います。

f:id:takehanogi11:20160331001556p:plain

これでClassroom for Githubに課題の登録ができました。次にこの課題用のスターターコードを学生に配布する必要があるので,学生に対してGive this to your studentsのURLにアクセスしてもらうようにしてください。

f:id:takehanogi11:20160331002007p:plain

学生にアクセスしてもらい,同意すると,組織アカウントに下記のような「課題名-学生のアカウント名」のリポジトリが自動生成されます。

f:id:takehanogi11:20160331002319p:plain

リポジトリが生成されると,Classroom for Githubの管理画面で,生成した学生を確認することができます。

f:id:takehanogi11:20160331002527p:plain

ここからは,Classroom guideのForkの通りにやると問題なくできるはずです。

1. 生成されたリポジトリをForkして,自分のPCにcloneする
2. ブランチを切って,出された課題に沿ってソースコードを編集してcommitする。
3. 課題が完了したら,リポジトリGithubにPushする。
4. フォーク元のリポジトリにPull Requestを送って課題提出

これで教員は,Classroom for Githubで学生の提出状況をそれぞれの課題ごとに確認しながら,提出されたPull Requestを見て,学生にフィードバックを書くことができます。

Classroom for Githubは導入すべきか

実際の導入までには,ある程度知識がないと辛い部分もありました。けれど,いまだにメールで課題プログラムを提出してくださいのような化石みたいな風習の学校もあると聞くので,それをするくらいなら教員にPull Requestを送ってフィードバック貰う方がモダンな感じでいいんじゃないかという感じはします。うちの学校のようにmoodleで提出する方がいいかGithubで提出する方がいいかは,実際に管理している教員によって意見は異なると思うのでようわかりません。Github導入に理解ない人だと課題提出システムあるのにわざわざ新しく覚えるの面倒とか思われるかもしれない

利点としては,Github課題提出を行っていくことで,学生にGitやGithubを慣れ親しんでもらえて知識も付くのでいいのではないかと思います。あとは課題をPull Requestで提出してレビューしてもらうのに慣れておくと,今後Githubフローを使ったソフトウェア開発フローを行う場合,違和感なく導入できるかもしれません。

あとは管理者に加えた他の教員やTAが,担当教員の代わりに学生の課題のレビューが行えるので,その点も作業を分散できて便利なのかなぁという感じはします。

教員がどれくらいGitやGithubを授業に導入するのに意欲的なのかや,どれぐらいで学生が自分でGitやらGithub使えるようになるかなどが今後の課題かなぁという感じです。

本格的に導入するのであれば,いきなり必修授業などに利用するのではなく,とりあえず自分の受け持ってる選択授業などでプログラム課題を出した時にCrassroom for GitHub試してみて,良さそうなら必修のプログラミング授業でも取り入れるよう働きかけるというのが無難な感じはしました。