バージョン管理システムは、ファイルの変更履歴などを管理するシステムを指します。
僕がIT業務を始めた10年ほど前は、存在はしてたみたい(2008年リリース)ですが、当時は聞いたことがありませんでした。
今では、バージョン管理システムを利用してWEB開発を行うことが、スタンダードになっています。
本記事を読むことで、以下のメリットが得られます。
- バージョン管理システムが、「なぜ必要なのか?」が理解できる。
- 納得して、勉強を進めることができる。
バージョン管理システムとは
バージョン管理システムとは、「ファイルの変更履歴のバージョンを管理してくれるシステム」です。
WEB開発では、ソースコードをファイルに書いていきますよね。
それをバージョン管理なしで編集し続けると、すぐに管理が煩雑になってしまいます。
コードの行が百行も超えると、いつ何を変更したかなんて、忘れてしまいます。
到底、管理しきれません。
それでも、昔はバージョン管理自体が存在していなかったので、バックアップを手動で頻繁にとっておいたり、無駄な管理作業がよくありました。
今は、バージョン管理システムのおかげで、不必要なファイル管理を省くことができます。
バージョン管理システムには、複数のサービスがあります。
「Git・Mercurial・Subversion」などが有名です。
ですが、Gitがダントツで普及しているので、Gitを学ぶのが良いと思います。
本記事では、バージョン管理システムを利用する意義を目的としています。
バージョン管理の細かい機能や概念は、参考サイトを確認してください。
バージョン管理システムの機能・コマンドの解説
サル先生のGit入門
https://backlog.com/ja/git-tutorial/
いつ・誰が・どの部分を変更したのか分かる
バージョン管理システムを導入すると、ファイルを「いつ・誰が・どの部分を変更したか」わかるようになります。
WEB開発プロジェクトは、常に一人で開発するものではありません。
もし、一人で作業をしていても、どの部分をいつ変更したかわかるだけでも、助かる時が多いです。
複数人で作業をしている場合、作業の変更をした人がすぐにわかれば、その作業にバグが潜んでいた場合などに、すぐ修正依頼をすることができます。
もし、誰が変更したかわからなければ、誰かが理不尽な作業を押し付けられることも安易に想像できますよね。
理不尽な作業が続くと、人はストレスを感じるので、作業効率も落ちます。
WEB開発はソースコードを管理する以上、複雑なものです。
バージョン管理システムが不可欠な意味も、この時点で理解できると思います。
任意の状態に戻すことができる
バージョン管理は、作業ファイルに対し、任意の状態に戻すことができます。
ただし、条件があって、「コミット」という機能を使用し、「作業した一つの区切り」に対し、任意に名前を付けてコミットする必要があります。
それが一つの作業単位になるので、作業単位でコミットしていけば、その単位で戻すことが可能になります。
※リビジョンという方法もあります。
もし、不意に取り返しがつかない状態にしてしまったとしても、そのミスは破棄し、以前のコミットした状態に戻すことが可能です。
そうした、「すぐに元通りにしたるで」といった、ありがたい機能が付いています。
昔は、手動でバックアップをとるしかなかったので、以前の状態に戻そうとしても、無駄な手間がかかり、大変でした。
バージョン管理システムを利用すると、履歴ベースで、すぐに戻すことができます。
また、変更を破棄することも可能なので、変更の直前に戻すこともできます。
要は、行った作業に対して、色々なアプローチで、元に戻すことができるということです。
複数人での作業が容易になる
チームでの作業をサポートしてくれるのも、バージョン管理システムの凄い所です。
昔は、複数人で開発作業時、特に同一ファイル内の作業がある場合、コンフリクト(衝突)が起きてしまい、作業を円滑に進めることが困難でした。
ですが、Gitには「ブランチ」という概念があります。
このブランチの機能を使って、各々にブランチを作っていけば、全く同じファイルを変更していても、作業の衝突をすることなく、作業を進めることが可能になります。
※全くコンフリクトが起きないわけではないです。コンフリクトが起きた場合は「どの部分が衝突したか」を明示してくれます。
極力、複数人での作業の衝突が起きないようにできることは、業務の効率化とストレス軽減につながります。
コードレビュー体制を構築できる
バージョン管理システムには「プルリクエスト」という機能があります。
この機能は、変更を加えたソースコードを自己判断でマージ(作業内容を結合するようなイメージ)する前に、第三者にバグが潜んでいないか、ソースコードは綺麗に整えられているか、など、主にコードレビューを依頼するために利用されます。
「作業に間違いがないのか」という念を押すために行います。
結果として、コードの品質向上を期待できます。
また、メンバーのプログラミングスキルアップや、WEBシステム自体の品質向上にも、期待ができます。
プルリクエストは、とても大切な機能です。
初学者の方には、プルリクエストのイメージが付きにくいのかもしれません。
ですので、最初の段階では理解できなくても問題ありません。
以下、アドバイスした際のツイートです。
チームで開発する時に、自己判断でブランチをマージする前に、コードレビューなどを他の人にお願いする際にプルリクエストを使用します。
— ふわふわしょうちゃん@WEBエンジニア/マネジメント (@FuwaFuwaShoChan) October 10, 2020
プルリクを依頼された人は変更されたコードを確認し、問題がなければマージして、次の作業に進む流れです。
目的として、主に未然にバグを防ぐ効果があります😊
まずは、個人の開発でも、積極的にGitを導入し、使用してみることをオススメします。
実際に使用することで、便利さを実感していけますよ。
それと、WEBの仕事をしていくためには、「バージョン管理システムを使えることは常識になっている」と考え、勉強していく方が良いです。
諸々の話を聞いて、WEB開発業務では、バージョン管理システムの利用が欠かせないことは理解できたでしょうか。
納得した上で勉強できれば、進みも早いですもんね。
頑張りましょー!!
まとめ
- バージョン管理システムはGitを覚える。Gitは広く採用されている。
- 「誰がいつ、何を変更したのか」が明確に履歴に残せるので、作業の効率化を期待できる。
- リポジトリにデータが存在するため、不必要なバックアップは必要ない。
- 複数人での開発が、容易になることは大きなメリット。
- プルリクエストを使えば、WEBサービスの品質向上を期待できる。