ここは、中堅出版社マイマイ出版の情報システム部。いつも元気な星先輩が、今日はひときわはしゃいでいます。何か嬉しいことでもあったのでしょうか。

「ジットハブ」? それとも「ギットハブ」?

きたきたきたー! 情シスのキャリア採用にOKが出たー!

ホントにー!? 何年ぶりかしら! センパイがずっと訴え続けた甲斐がありましたねー。

石の上にも3年。俺みたいなデキる先輩がいて良かっただろ?

ホントですよ。センパイさまさまでっす。

とはいえ、部長からの条件付きだけどな。「ジットハブで業界に貢献が認められる人」だそうだ。ジットハブってオレ聞いたことないんだけど、まさこちゃん知ってる?

じっと……、何?

えーと、つづりはこう。「GitHub」。

ああ! それ「ギットハブ」って読むんですよー。……センパイ、そこ間違えるの本気で超恥ずかしいですよ?

な、なんだ。オレもギットハブなら聞いたこと、あるかもしれないような気がしなくもないな。それよりそのギットハブって、レジュメサービスか何かなのか?

そういうのじゃなくて、確かエンジニアの人たちがオープンソースのプログラムを公開するためのサービスだったはず。そこで役立つプログラムを公開している人を選べ、ってことなんじゃないんですか?

まさこちゃん、さっすがだなあ。IT業界に復帰間もないとは思えないわ。よっしゃ! 早速人事に伝えなきゃ。募集要項に「GitHubで役立つプログラムを公開していること」って書いてもらおう!

善は急げ。ダッシュだー!

オー!!

えート、今日はそんなに大きくハズしてはいないんデスが。ちょっとイイですか。

ハナちゃん!

あまりにもザックリしスギなので、ちょっと補足させてくだサイ。GitHubは「ギットハブ」と読みます。まさこさん正解でスね。

うしっ!

GitHubはインターネット上で提供されている、その名の通り「Git」の「Hub」としてのサービスなんデスが、そもそも「Git」って知ってマスか?

知りませーん。

ガクッ。じゃあ、バージョン管理システム(VCS : Version Control System)って知ってまスか? リビジョン管理システム(RCS : Revision Control System)と呼んだりもしまス。製品とシテはSubversionやCVS、MicrosoftのVSSなんかが有名デス。

お、VSS、懐かしい! 基幹システムの開発中に使ってたヤツだ! 確か「ソースコードを安全に管理するためのシステムだから『Visual Source Safe』って名前なんです」って開発リーダーが言ってたな。「ソースコードを安全に」ってフレーズが新鮮だったから、はっきり覚えてる。

星先輩さすがデスね。その通りデス。

「安全に」かあ。確かに1人で作業してたら何も気にしなくていいけど、何人もの人が同時に作業するなら、同じファイルを更新しちゃわないように気にしなきゃいけないもんね。

そう。2人で同時に同じファイルを更新してて、知らずに上書き保存しちゃったら……。

上書きされたファイルの内容は、全て消えちゃいマスね。

確かにー! うちのファイルサーバは、ファイル名に日付が付いたExcelであふれかえってるわ。あれって、同時に更新して作業結果が消えちゃうのが怖いからよね。

結果、どれが最新だかわかんなくなるってオチだけどな(笑)

そうなんデス。ソースコードに限らず、人間が手作業で管理したものにカンペキなものはナイんデスよ。必ずミスが混入しマス。機械的に管理できるコトは、システムで管理するほうが安全なんデス。なので、同じファイルを複数人で扱うための環境として、昔からバージョン管理システムが活用されてきまシタ。

で、そのGitとやらもバージョン管理システムの1つ、ってことだな。

そのとおりデス。Gitは2005年にリーナス・トーバルズ(Linus Torvalds)氏によって開発された分散型のバージョン管理システムなんデス。

その人ってあれだろ、ロシアの大富豪の!

(無視)

(センパイ、それ違うわよ多分!)

エー、Linuxの開発者として有名なリーナスさんは、Linuxカーネルの開発作業のためにあるバージョン管理システムを使っていまシタ。しかし、諸事情により別のバージョン管理システムを使う必要性に迫られたんデスね。でも、お眼鏡にかなう製品が見つからず、リーナスさん自らまったく新しいバージョン管理システムを開発シタんデス。それがGitなのデス。

そ、そうそう、そうだよな(思い出した! )。そもそも「Linux」って「Linusさん+Unix」ってことだもん、な?

Gitの特徴は「分散型」というところなのデスが、これまでは「集中型」が主流でシタ。CVSもSubversionも集中型デス。例えるなら「集中型」のバージョン管理システムは、巨大な書類キャビネットのようなものなんデス。

ふむふむ。

皆がキャビネットに書類を取りに来て(チェックアウト)、自席に持ち帰って記入しマスね。使い終わったらキャビネットに戻しに行きマス(コミット)。もし別の人が同時に同じ書類に記入してしまっていタラ、上書きしてしまわナイように、手作業で追記しマス(マージ)。

うん、わかるわかる。病院のカルテみたいなものよね。全部の書類が1カ所に保管されてるから、管理者が全てコントロールできてとっても管理しやすいんだけど、いろんな場所で同時に使おうとすると面倒なことになるわよね。

そうデス。バージョン管理システムでいちばん手間がかかるのは、マージなんデス。なので集中型の管理者は、同じ書類を同時にチェックアウトできナイようにしたり(ロック)、編集者としてアサインされた人しか権限を持てないようにシテ、極力マージが発生しナイように管理する方向だったんデスね。

なるほどなー。確かに、ソースコードの変更管理ワークフローとか定義して回してたなあ。同時に変更されちゃマズイからだったんだな。

でも、Gitの「分散型」のバージョン管理は、そもそもの考え方が全く違うものなんデス。

!!

つづく