新春特別企画

大学におけるGitHub/GitHub Educationの活用事例 〜慣れることがソーシャルコーディングの道を拓く

この記事を読むのに必要な時間:およそ 3 分

あけましておめでとうございます。京都産業大の玉田です。旧年中は,GitHubに大変お世話になりました。みなさまの中にもそのような人が多いのではないでしょうか。

日本でもGitHubを利用する企業が増えてきており,昨年6月に,GitHub Japanが設立されました。一方で,GitHubは未来の開発者の育成についても意欲的に行っています。例えば,GitHub Patchworkという初心者向けのイベントを世界各国で実施したり,GitHub Educationという制度が整備されていたりします。

本稿では,このうちのGitHub Educationに着目し,GitHub Educationとは何か,GitHubやGitHub Educationを大学という教育現場で,どのように利用しているのかの一事例を紹介します。

GitHub Educationとは何か

GitHub Educationとは,GitHubの学生・教育期間向けの制度で,いわゆるアカデミックライセンスのことです。対象は,教育機関に所属する学生,生徒,職員などの個人と教育機関の各種団体です。この制度を利用すると,通常は有償のプライベートリポジトリが,無料で作成できるようになります。

GitHub EducationのWebページ

画像

GitHubのアカウントは,団体アカウント(Organizationアカウント)と個人アカウント(Personalアカウント)の2種類に分類できます。GitHub Educationはその両方で申請できます。団体アカウントでは,クラブ活動単位での申請や,授業単位での申請,大学のゼミや研究室単位での申請が可能です。例えば,私の運営する研究室でもGitHub Educationを申請しており,研究室のプロジェクトや研究室のWebページなどに利用しています。また,クラブ活動では,KMC(京大マイコンクラブ)が取得しているのがよく知られています。

一方,個人アカウントはさらに学生,教職員の2種類に分けられます。両者ともに申請するとプライベートリポジトリが利用できるのは変わらないのですが,学生アカウントはStudent Developer Packという特典がさらについてきます。Student Developer PackはAmazon Web Service(AWS)やVisual Studio,Travis CIなど,通常有償のサービスやソフトウェアが無料で利用できるものです。ただし,個人アカウントは,利用できる期限が2年と決まっています。申請後2年経過すると失効し,それ以降プライベートリポジトリが作成できなくなります。とはいえ,まだ学生であれば,再申請できますし,今までに作成したプライベートリポジトリもそのまま利用でき,勝手にパブリックになることはありません。

次の図にGitHubのアカウントの種別をまとめました。標準的には,GitHub EducationはMicroプラン(5つのプライベートリポジトリ)のクーポンが2年間付与されます。しかし,団体アカウントであれば,申し込み時にプライベートリポジトリの利用予定数を申請できます。私の周りの実績を聞く限りでは,ほぼその数が認められるようです。申請が認められると,申請した数のプライベートリポジトリが持てるようになります。なお,団体アカウントの場合は期限はありません。

GitHubのアカウントの種別

画像

GitHub Educationの活用事例

研究室での活用

大学で得られた成果は基本的に公開されます。しかし,成果としてまとめる前であったり,企業との共同研究,特許に関連するプロジェクトなど,一定期間秘密にすべき研究も存在します。

そこで,私の研究室では,GitHub Educationという制度を活用し,プライベートリポジトリを利用しています。もちろん,大学内でGitlabGitbucketなどのサーバで運営する選択肢もあります。しかし,サーバ管理はしたくないという私のサボり癖サーバ管理に人的コストは掛けないという研究室の方針のため,その選択肢は採用していません。

私の研究室に所属する学生は,配属時にGitHub Educationを申請するよう指示されます。そして,その学生の研究の成果(卒論や学生が筆頭著者の原稿,その研究のために開発するツールなど)は学生個人のプライベートリポジトリとして作成・管理されることになります。

指導教員である私は,その学生のリポジトリの共同開発者(コラボレータ)という形で参加します。そして,学生が書いたプログラムに対する私のコメントや,原稿の添削・修正はすべてプルリクエスト経由で行います。学生個人のプライベートリポジトリですから,Student Development Packを利用できます。そのため,Travis CIを使った継続的インテグレーションも可能です。

一方,研究室全体で管理すべきプロジェクトも時には存在します。研究室のホームページや研究室内のチームで開発するシステムなどです。そのようなプロジェクトには,研究室で取得した団体アカウントを使って,プロジェクトを運営しています。

授業での活用

次に,授業でのGitHubならびにGitHub Educationの活用事例を2つ紹介します。

教員間の情報共有での活用

一つは,教員間の情報共有のための利用です。複数の教員が一つの講義を持つ場合があります。その時に問題となるのが,課題やその解答例,教材の共有です。メールでの共有やDropboxを使った共有もできますが,やはりバージョン管理が望まれます。そして,教材などの成果物に対してオンラインでコメントしたり,議論する場があるほうが頻繁に集まることもなく気軽に更新が可能になります。さらに,それらの情報が一箇所に集約されることも見逃せない重要な点です。

一方で,課題の解答例は,学生には秘密にしておくほうが望ましいと言えます。そこで,授業用の団体アカウントをGitHub Educationで申請して利用しています。授業用のアカウントでは,学生向けのプロジェクトは公開プロジェクトとして,教員の情報共有のためのプロジェクトはプライベートプロジェクトとして運用しています。

学生の教育への活用

もう一つは,学生の教育における活用です。

今日,一般的な開発では,GitやSubversionなどのバージョン管理システム(VCS)の利用が当たり前になっています。そしてこれからは,分散型バージョンコントロールシステム(DVCS)を使ったプル型ソフトウェア開発が中心になってくるでしょう。そのため,バージョン管理の概念やプル型開発の方法の教育も必要になってきています。

やはり,実際に行ってもらうのが良いということで,授業の課題として,GitHubを利用してプル型ソフトウェア開発を,チームを組んで行ってもらいました。こちらでサーバを用意する必要がなく,成果も公開されるため,採点も可能です。公開されたくない学生には,GitHub Educationを申請したプライベートリポジトリを使うのも良いでしょう。

具体的には,公開プロジェクトFileFinderをあらかじめ用意しておき,そのプロジェクトでイシューを登録しています。学生は,メンバを集めてチームを組み,代表者がプロジェクトをGitHubに作成します。さらに,代表者は作成したプロジェクトにチームのメンバを共同開発者として登録します。ここからは,作成したプロジェクト上で,メンバ全員で次の作業を行います。その際,全員がすべての作業を少なくとも一度は実行せよ,という要件を設けています。

  • 自分たちのプロジェクトへのイシュー登録(元プロジェクトのイシューをコピーする),
  • イシューの実施,
  • プルリクエスト発行,
  • プルリクエストの検証,
  • プルリクエストの承認

Classroom for GitHubという制度もあり,上記の取り組みは,この制度を利用したほうが良いのかもしれません。この時は,調査時間が足りなかったため,利用しませんでした。

この取り組みですが,残念ながら学生からの評判は芳しいものではありませんでした。バージョン管理システムやプル型ソフトウェア開発の必要性が十分に伝えられていなかったのが原因であると思います。ここでの反省を踏まえて,次回の改善を目指したいと思っています。

著者プロフィール

玉田春昭(たまだはるあき)

京都産業大学 コンピュータ理工学部 准教授。
ソフトウェア工学,ソフトウェア保護の研究に従事。

研究室Webサイト:http://tamadalab.github.io/
GitHub:tamada

バックナンバー

新春特別企画

バックナンバー一覧

コメント

コメントの記入