はじめに

この講義では、Gitの操作、そしてGitHubを用いた多人数開発を経験することで、「現代的なソフトウェア開発とはどのようなものか」を体験してもらうことを目的とする。もちろん、GitやGitHubの操作方法を学ぶことになるが、ツールの利用法の習得そのものを目的としないで欲しい。

Gitはバージョン管理システムと呼ばれるツールの一種であり、この種のツールとしては比較的新しい部類に入る。筆者が初めて使ったバージョン管理システムはCVS(Concurrent Versions System)だった。次に、Subversionを使うようになった。Subversionは2000年に登場したツールで、CVSの問題点の多くを改善したものだ。Subversionは広く使われていたが、2005年にGitが登場し、一気にシェアを拡大した。Stack Overflowによる2018年の調査では、87.2%のユーザがバージョン管理システムとしてGitを採用しており、バージョン管理システムのデファクト・スタンダードと呼べる存在となっている。今後もGitは使われるであろうが、この業界の未来を予測することは非常に難しい。また新たなツールが登場し、シェアが塗り替えられるかもしれない。その際、「自分がGitを習得済みだから」といって、新しいツールを敬遠したり否定したりすることの無いようにしてほしい。

本講義の受講者として理工系の学生を想定しているが、その多くはエンジニア、もしくはエンジニアと深く関わる職業につくだろう。新しい技術の習得を拒むようになったらエンジニアとしては死に、後は老害として余生を過ごすことになるだろう。エンジニアは生涯学び続けなければならない。

本講義でGitやGitHubの使い方を学ぶが、それは就職活動の際に「Git/GitHubを使ったことがあります」と言えるようにするためではない。無論、使ったことが無いよりは経験がある方が良いであろうが、大学はこのようなツールの使い方を学ぶための就職予備校ではない。それより「なぜバージョン管理システムが生まれたのか」「どのような思想で設計され、どう使われることが想定されているのか」といった、より根源的な思想を学んで欲しい。「ハンマーを持つ人にはすべてが釘に見える」という言葉がある。一つのスキルを身につけると、人はそれを使うことに固執しがちである。Gitを学んだからといってなんでもGitを使うのではなく、「この目的にはどんなツールを使うのが良いのだろう?」「Gitはこうなっているが、別のツールではどうなっているんだろう?」といった俯瞰的な視点を持ち、千変万化する世界に柔軟に対応できる「下地」を作って欲しい。