#前書き
私の好きな本、ベタープログラマの第20章 効果的なバージョンコントロールの冒頭では、
開発者にとってバージョンコントロールは、食事したり呼吸したりするようなものです。コードを書くエディタやコンパイラと同じです。
とあり、続けていかにバージョンコントロールが重要かが丸々一章を使って解説されています。
また、バージョン管理ツールの一つであるgit にはとても分かりやすい日本語の公式ドキュメントがあったり、qiitaでも初心者向けの解説を書いている方が沢山います。
しかし、使いこなすにはある程度の学習コストがかかるのも事実です。本当に全ての人がバージョン管理システム(VCS)を使わなければならないのでしょうか?
庭師でも王様でもないのにブランチがどうのこうのやらないといけないのでしょうか?
今やバージョン管理は開発において常識とされていますが、あえてメスを入れてみたいと思います。
#バージョン管理をしなくてもいい人
##全ての変更履歴を覚えている人
これまでの全ての変更履歴を覚えており、さらに瞬時にしてある時点のソースコードを再現する能力がある方にとっては、バージョン管理システムを使う利点は少ないでしょう。私は自分の書いたソースコードの中身はすぐ忘れてしまうので、git だけでなくredmineのwikiやチケットにも記録を残して、経緯や意図を後から追えるようにしています。が、頭のいい人にとってはやり過ぎであり、ひたすらコードを書きまくった方が開発のベロシティが高くなるのでしょう。
##ミスを全くしない人
ミスを全くしない人は、そもそもコードベースの履歴を振り返る必要が殆ど無いため、やはりバージョン管理システムを使うメリットは小さいでしょう。バグが発覚した時、どの時点で仕込まれたかを調査するためには、バージョン管理システムによるロールバック、リリースごとのコミットに対する適切なタグ付けが非常に有効ですが、ミスを全くしない人にとっては他人事です。少なくとも自分が仕込んでいないことは確かなのですから。
##一生一人で開発をする人
引き継ぎをしないで済むことは非常に幸運です。特に引き継がれる人にとって。
例えまともな管理が行われていなかったとしても、ソースコードがどこにあるのか広大なストレージの中を探したり、分厚い引き継ぎ書を読んだり、過去のメールから断片的な情報を探したりする必要はないのです。引き継ぐ必要が無いのであれば。誰が文句を言うでしょうか?
##コードを書かない人
全く自分で手を動かすことが無く、他人の仕事に文句を言うだけの人がいるとすれば、バージョン管理システムはその人にとっては高級すぎるでしょう。あるいは非エンジニア、もしくは赤ちゃん👶
#終わりに
いかがでしたか?あなたはバージョン管理をしなくてもいい人でしたか?
当てはまらなかった方で、まだバージョン管理をしていない方は、git でもsubversionでも良いので、使いながら学んでいきましょう。(うんcommitしても、げrevertしたらええんやで。)
#bibliography
https://git-scm.com/book/ja
初心者がGitを少し触れるようになるための記事-commitからpushまで-
https://qiita.com/ihcamonoihS/items/e288e080379483dfbcf5
Hurry Coderと死の悲報 PART1
https://qiita.com/Yametaro/items/63dadd600526e9a8ac65#_reference-9b17d2f938135f4665c1