チーム単位の開発でバージョン管理が重要な理由
学習の目的
この単元を完了すると、次のことができるようになります。
- ソフトウェア開発チームが直面する一般的な課題について説明する。
- こうした課題を軽減するためにバージョン管理が担う役割を説明する。
- 効率的な開発チームに共通するコラボレーションの原則を説明する。
バージョン管理をしていないチームの悲劇
Sally と Gunjan と Ali をご紹介します。この 3 人は優れた開発者で、画期的な Salesforce アプリケーションの開発に取り組んでおり、明日はいよいよ大々的な発売日です。Sally と Gunjan は開発者組織、Ali は Sandbox 組織で作業を進めてきました。Sally が未管理パッケージを作成して Sandbox 組織に転送します。Gunjan も同じです。一見して問題はないように思えますよね?
- マージ処理がないため、お互いの変更が簡単に上書きされます。
- Ali が Sandbox で行った変更が上書きされた場合、元に戻す手段はありません。
Sally も Gunjan も Ali も経験豊富な開発者であるため、変更の上書きを予防する手段を講じていますが、これには多大な時間と慎重な計画が求められます。それは、新たに機能を構築できるぐらいの労力です。このチームはまだ気づいていないようですが、使用しているツールが原因で、作業が制限されています。不便さを感じていないとしても、チームの潜在的な効率性や生産性を発揮しきれていないことは本人たちも察しているかもしれません。
バージョン管理による解決
こうした問題を解決するために存在するのがバージョン管理であり、どの開発者も簡単に利用できます。オープンソースのバージョン管理システム (VCS) には、無料でありながら良質なものがいろいろとありますが、このコースでは Git を取り上げます。1 人で作業する場合もチームで共同作業する場合も、ワークフローを変えれば、上記のような問題を回避できます。加えて、作業全般の質が向上します。
バージョン管理がチーム開発に役立つ理由
バージョン管理とは、広義では、複数のバージョンの追跡を支援するシステムのことです。ただし、Git のようなソリューションツールを説明するのに使用されることの方が多いです。各 VCS には独自の長所と短所がありますが、大きく分類すると集中型と分散型のどちらかになります。
Git は、分散型バージョン管理システムの中で最も一般的なものです。分散型バージョン管理システムの場合、開発者のローカルマシンにあるすべてのブランチ (作業行) とコミット (履歴の保存時点) をはじめとして、リポジトリ全体のコピーが各コラボレーターに任意の時点で提供されるため、開発者が柔軟かつ自由に作業できます。
成功に向けたコラボレーション
昨今のバージョン管理システムは、コラボレーション時に直面する問題にチームが対処できるように設計されています。
共同作業に伴う問題を解決するには、Git のような優れた VCS のみでは足りません。各自の手法を客観的に観察して評価することが必要なのです。サイロの壁を取り払い、さまざまな視点を取り入れて会話を推進すれば、自身やチームがより良いソフトウェアを提供できるようになります。コミュニケーションや全体的な品質を向上させるためのツールやワークフローが存在します。
それは、Git 上に構築された GitHub というコラボレーションプラットフォームです。GitHub は、作業の共有、チームの作業の確認、コードレビューの実施、コードのビルドやテスト、リリースに役立つインテグレーションの接続などができるコミュニティスペースとして機能します。GitHub はオープンソースプロジェクトの世界最大の集積拠点であり、オープンで共同的な開発のメリットを認識している、世界各地に存在する革新性を持った組織で採用が進んでいます。