Gitの簡単な紹介です。(一部GitHub)
Gitとは
Git(ギット)はバージョン管理システムです。
人気度でいえば、2008年頃にはSubversionを抜いてバージョン管理システムでは絶対的な人気となっています。
Line、Google、メルカリなどなどがGit(GitHub)を採用しています。
Gitの特徴
分散型
リモートリポジトリとローカルリポジトリの2つのリポジトリを持ちます。
- リモートリポジトリ:全員で共有するリポジトリ
- ローカルリポジトリ:自分のみが使用するリポジトリ
Gitに慣れるまで、ローカルリポジトリが何のためにあるのか、ただややこしくしているだけと思っていました。。。が、アジャイル開発のような周期が速い開発、かつ、顧客要望/不具合の緊急リリースが多い開発だとかなり強力でした!
中途半端なものをローカルリポジトリに退避させておき、別の対応を行うというのが、何のストレスもなくスピード感をもってできます。
Subversionの時はわざわざ、PCにファイルをコピーして、差分を消して対応し、PCのコピーを戻すような事をしていました。(他にストレスなく良い方法があったのでしょうか??)
高速
ブランチの作成や切り替えが速く、ストレスなく操作できます。
マージが賢い
他のVCSと比べてマージアルゴリズムが優れているらしい
※でも最新のsubversionとはそんなに大差がないらしい。。。
よく使うコマンドはこちらを参考に
なんせGitHub
Gitをここまで人気者にさせたのは、間違いなくGitHubです!
Git + さまざまなWebツールを提供するサービスです。
下記のような猫マークのサイトがまさにGitHubです。
bootstrap
GitHubもGitLabも、開発スタイルとしてDevOpsを目指している。
DevOpsとは ビジネスやプロジェクトを成功するために、組織文化とツールの両面を改善する事でビジネスアジリティを向上させ、リスクを低減する活動
チームとして作業効率アップとコミュニケーションを活性化させ、お客様に迅速に価値を提供する為のツール一式という感じです。
特にいいツールが
Pull Request
簡単にいうと、
修正したので、ソースレビューして、OKならブランチに取り込んで下さい です。
レビュアーはブラウザ上で簡単に差分を確認できます。
差分だけの確認ではいけないものもありますが、全ての修正に対して第三者が目を通せるので、プログラマーの緊張感もUPとなるはずです!
※プロジェクトが忙しくなるとどうしてもレビュアーに負担がかかり、ソースレビューがされなくなり、品質が悪いプログラムが増殖してしまう。という状況は起こりにくいです
- ブラウザで差分が確認できる
- 修正もできる
- どのissueかもぱっと辿れる
- 気になるコードもすぐ連携して確認してもらえる
- 後々どういう経緯でそうなったのか忘れた時もコードとissueを照らし合わせたら何か思い出す時もある
Issues
課題管理ツール。
ソースコードやPull Request、変更履歴といったものを、簡単に課題と紐付けて管理していくことが可能です。
IssueBoardを使って、看板方式のタスク管理が簡単にできます。
wiki
wiki。
ちょっとした共有内容はここにまとめていくと楽ちんです。
Slackなどのコミュニケーションツールと連携
Pull Requestやpushなど連携できます。
会社ならGitLab
でも、チームで使うならお金がかかるので、会社で使うならGitLabですね。
GitLab:「GitHub」のようなサービスを社内などのクローズド環境に独自で構築できるGitリポジトリマネージャー。GitHub ≒ GitLabです。
私見
昔はsubversionを使っており、Gitを使うようになりました。
コマンドで操作していたこともありましたが、ローカルリポジトリの考えに慣れず、慣れるまではメリットが感じられなかったです。
また、会社としてGitLabを使うとなったのですが、自分のプロジェクトは断り続けてきました。プロジェクトがかなり忙しく、他の事を覚える余裕がなかったのですね。。。
初めてGitLabを使った時、スピード感に驚愕しました。
そのプロジェクトはIssueごとにブランチを切っていたのですが、その切り替えのストレスのなさ、マージリクエストによるレビューの速さ、課題もひとつのGitLabで管理できる一元管理のよさ。
アジャイルで開発しており、リリース直前での組み替えが多いプロジェクトでしたが、GitLabでないとあのスピード感を持って開発するのは無理だと感じました。
ウォーターフォール開発のような、決まったものを決まった期日までに開発する、というようなプロジェクトだとGit,GitLabの恩恵はあまり受けれないと思います。
DevOpsのような「ビジネスの価値をより確実かつ迅速にエンドユーザーに届け続ける」事が命題のプロジェクトであれば、Gitでないとスピード感を持った開発は無理かと思います。
現在はLineやメルカリなどのBtoCがDevOpsですが、今後は社内システムや中小企業にも価値を迅速に届けるシステム開発が増えていき、今以上にGitの人気度が上昇するのかなぁと思っております。