ソースコードのバージョン管理システム。
「プルリクエスト(pull request)」という仕組みが特徴っぽいです。
「ブランチ」「マージ」「コードレビュー」という用語も頻繁に出てきます。
GitHub(ギットハブ)という、公開サーバ上でオープンソースなどをバージョン管理するサービスが有名ですが、企業向けに企業内サーバで管理するサービスがあります。
Gitのバージョン管理の仕組みをざっくり絵にしてみました。
バージョン管理しない状態、旧来のバージョン管理の仕方と比べて説明します。
複数で開発をおこなう場合、バージョン管理していないと「誰かの修正箇所を上書きしちゃった」という事故が起こりがち。
ひとりだけで開発している場合でも、何かの拍子にバージョンが戻っちゃった!?ということが起こり得ます。
SVN(サブバージョン)などを使ったイメージ。
修正中は、ソースがロックされて編集者以外触れなくなるので「上書き事故」は防げます。
ただし、ソースを編集するAさんの責任が重大に。
「はやく修正しろ、スケジュールが遅れる」
「テストはしっかりやれ、他に迷惑がかかる」
「なんでこんなバグを出した、今後の事故防止のために原因を述べろ」
うっ…書いてて胸が痛くなってきました。
この仕組みだと、Aさんが超絶忙しいけど、Bさんの手が空いてる…ということもちょくちょく起こります。
小~中規模はこれで良いかも知れませんが、大規模だとツライ。
ブランチというのは、その時点のソースコード全体を「自分専用バージョン」のように扱うこと。
これにより、同時に多人数で同じソースを修正可能になります。
その後、プルリク(Pull Request)をして、自分のブランチをおおもとのソースコードにマージ(反映)してもらいます。
マージには担当者がいて、ソースコードの修正前後を見てレビューしてからマージ。
このため、修正内容を最低二人以上でチェックすることになり、責任の重さを分散するとともにバグの発生を抑えられます。
多人数でソースを修正可能になるため、メンバーへの負荷を分散できるのもポイント。
※ただし、同じソースの同じ箇所の修正ができるわけじゃありません。
デメリットは…
…という人から抵抗されるという点。かも。
知識ゼロの状態から、Gitを理解するための良記事をまとめました。
上から順番に読むと、徐々に理解が進むと思います。
デザイナのためのGit入門
「バージョン管理って何のためにすんの?」というところから、GITの便利さまでザックリわかるスライド。
デザイナー向けに、コマンドなどを排除して解説しているのでイメージがつかみやすいです。
「うわっ…私のバージョン管理、ダメ過ぎ…?」を解決するGitの使い方“超”入門 (1/3):かんばん!~もし女子高生がRedmineでスクラム開発をしたら(5) - @IT
女子高生の会話風にGitの使い方を説明している記事。
イラストでわかる!git入門の入門 - アシアルブログ
味のある手書きイラストで、バージョン管理に必要な内容を解説しているブログ。
サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ
初心者向けにわかりやすい猿のイラストつきで、Gitを解説している良記事。
こわくない Git
コマンドの使い方にまで踏み込んだ、詳細なスライド。
GitHubで社員募集をおこなっていたので、チェック。
GitHub Careers(社員募集)
日本での募集は、Deal Desk Manager - APAC、Enterprise Sales Managerという営業職。法人向け営業かな?のみでした。
スラックは、社員募集のページがそもそも英語で、応募も英語ということになりそうです。
福利厚生も充実していて、職種によってはリモートワークも可能。
健康保険は会社が100%負担だし、子供が生まれたら有給家族休暇が100%。
フィットネスジムや、禅ルームへの瞑想も完備。
SEとして感じるのは、社員を大事にしてくれそうだなぁーという印象です。外資系に人がガンガン流れていくのも当然かも知れませんね。
ただ、外資系の弱点として、日本ではローカライズはおろか、開発には関われないことが多いという点。
技術よりの営業職としてなら、可能性はあるかも知れません。
プログラムのコードを解析して年収予測をしてくれるサービスがあります。
Findyというサービスです。GitHubでOSS(オープンソース・ソフトウェア)などを公開しているあなたは要チェック。
参考)ITエンジニアの年収をGitHub解析から予測可能に。OSSが年収アップにつながる時代へ。 | Findy Engineer Lab - ファインディエンジニアラボ
私自身を含め、私の周りにはオープンソースへの取り組みをおこなっているエンジニアは居ませんでした。
「そんな暇ない」という言い訳をしながら…
自分用の勉強をするなら、アウトプットの場としてGithubを利用するのも良いかも知れませんね。