成功への分岐点 — ソフトウェアブランチのベストプラクティス —

ソフトウェア開発チームは、迅速に行動しなければなりません。予算はますます厳しくなっています。タイムラインも短くなってきています。そして、クライアントは常により多くの機能を求めてきます。もしあなたのチームが最大限の能力を発揮できるようにしたいのであれば、可能な限り効率的に仕事をする必要があります。 ソフトウェア開発チームにとって、ブランチの作成方法は生産性に関わる一要素ですが、いわゆるベストプラクティスを採用してないケースも多いようです。結果として、多くの問題や余計な労力が発生している可能性があります。この記事では、生産性を向上させる9つの方法を紹介します。 0.ブランチとは何ですか? ブランチとは、バージョン管理システム(Version Control System: VCS)で管理されているオブジェクトのコピーのことです。VCS内のコードベースは別名トランク(幹) とも呼ばれ、そこから異なる「ブランチ(枝)」が分岐しています。これらのブランチによって、ソフトウェア開発者は、コードベースを不安定化させることなく、分離して実験することができます。大規模なプロジェクトでは、開発者や品質保証など、多くの異なる役割が必要になります。ブランチを使うことで、これらの異なる役割を満たし、並行して開発することができます。一人の人間がブランチに変更を加えても、他のチームメンバーに影響を与えることはありません。 ブランチの利点は、多くの異なる人々が同時にプロジェクトに取り組むことができるということですが、ソフトウェアのブランチ化のベストプラクティスを持っていない場合、これは大きな頭痛の種になる可能性があります。 以下では、9つのベストプラクティスを紹介します。 1.ブランチング戦略をチームに伝える まず、どのようなブランチング戦略を採用するかを決める必要があります。ソフトウェアチームが利用するブランチング戦略で、広く採用されているものは以下の3つです。 Git Flow はおそらく最もよく知られている戦略です。2010年に策定されたこの戦略では、master が本番用ブランチであり、develop がベースブランチとして扱われるとしています。feature-*、hotfix-*、release-*など、さまざまなサポートブランチを使用することもできます。Git Flow は非常に厳格なプロセスを作成しますが、これはマージやリリースにおける心理的な不安を和らげるのに役立つかもしれません。もしあなたのQAプロセスが厳格なものであれば、Git Flowはあなたにとって最高のブランチング戦略となるかもしれません。 コインの裏返しになりますが、Git Flowは開発が本番と同等ではないため、環境間の移行が必須になります。そのため、頻繁なリリースを行う継続的デリバリー(CD)や継続的インテグレーション(CI)は、Git Flowの下では困難になる可能性があります。また、Gitの履歴が読めなくなることもしばしばあります。 https://www.nicoespeon.com/en/2013/08/which-git-workflow-for-my-project/ より転載 GitHub Flowは、Git Flowに比べてプロセスがはるかに簡素化されており、複数の異なる環境や同時バージョンの管理を必要としない小規模なチームにとっては、優れた選択肢となります。GitHub Flowでは、まずマスターブランチから始めます。作業が必要になるたびに、新しいブランチをチェックアウトします。作業内容を確認してマージする準備ができたら、master へのプルリクエストを開くだけです。マージされてmasterにプッシュされたら、理想的にはすぐにデプロイするべきです。…

Continue Reading 成功への分岐点 — ソフトウェアブランチのベストプラクティス —

GitとGitプラットフォームについてと、GitHubかGitLabかBitBucketの3大Gitプラットフォーム紹介

Gitについて 2020年現在、ソースコード管理システムとしてはおそらく最も使われているのはGitです。GitはLinuxの開発者でもあるLinus Benedict Torvalds氏により開発され2005年に登場しました。当時はCVSやSVNやが主流でしたが、開発者個々人が細かな変更履歴も含めて管理(記録・追跡)が行えるバージョン管理システムとしてGitが使われるようになってきました。 その後、Gitのプラットフォーム、特にGitHub.comの登場とオープンソースソフトウェアの開発コミュニティのGitHubへの移行に伴いGitの普及速度がますます伸び、現在ではデファクトのバージョン管理システムであると言っても過言ではない普及率になっているかと思います。 Gitプラットフォームのメリット 2010年頃の日本では公式(標準)のGit を自社のサーバー上で稼働させているケースも多くありました。一方で、Gitサーバーの運用コストも低くはなく、より利便性の高い、クラウドで動作するGitプラットフォームサービス、GitHubやBitBucket、GitLabなどがその後大きく普及し、2020年現在では、Gitサーバー単体の利用や運用ではなく上述のものを利用しているチームが殆どを占めているように思います。 Gitサーバー単体ではソースコードを管理することが出来るのみで、UIなどはなく、コードレビューの機能なども備えていません。コマンドラインからGitサーバーのURLに対してブランチ(メインブランチから派生したトピックブランチ、もしくはメインブランチのソースコード)をPushして保管することが出来るのみです。 Gitサーバーの運用を簡単にするのに加えて、UIなどの様々な機能を追加したものがGitプラットフォームです。 プラットフォームを利用するメリットとして特に次の3つがどのプラットフォームでも共通して言えるものであり、大きいメリットでしょう。 ソースコードのコラボレーション開発・コードレビュー機能(Pull Request、Merge Request) WebUIで様々ながことが行える高いユーザビリティ チケット管理機能などの開発に関わる重要な付随機能やそういった機能・サードパティサービスとの連携機能 ソースコードのコラボレーション開発・コードレビュー機能(Pull Request、Merge Request) Gitではメインブランチとは別にトピックブランチなどで開発をし、メインブランチにPull Request(or Merge Request)を作成、トピックブランチでの開発内容をメインブランチに取り込むことによって、ノンリニア開発(数千の並列ブランチでの開発)を実現します。 それに伴い非常に重要な役割を果たすのがにPull Request(or Merge Request)といった機能で、メインブランチとサブブランチの差分を表示し、また、それについて開発者同士でコメント等によりコミュニケーションを行いマージするかどうかの可否判断をすることができます。 業務でのソフトウェア開発やオープンソースソフトウェアの開発など、あらゆる種類のソフトウェアの開発でこの機能は利用されています。 WebUIで様々ながことが行える高いユーザビリティ Gitサーバー単体ではすべての操作がコマンドライン経由であり多くの方にとって難しい、利便性が低い、とっつきづらいものでしょう。その点、先述のGitプラットフォームはいずれもソースコードを簡単にに閲覧する事ができる、ファイルや行ごとにいつ誰がどのような理由(コミットメッセージ)でコミットしたか、などを容易に閲覧や検索が出来るなどの強力な機能、ユーザビリティが備わっています。…

Continue Reading GitとGitプラットフォームについてと、GitHubかGitLabかBitBucketの3大Gitプラットフォーム紹介