Magento2ではこれまでといろいろな面が変わっています。
なかでもプロジェクトで使用するソースコードの管理はMagento1系と大きく変わっています。

このエントリでは、弊社がどのように管理をしているかを大まかにご説明します。

ソースコード管理はGitで

いまやGit全盛の時代。
ソースコード管理は大抵のオープンソースプロジェクトではGitで行われるのが普通で、開発者のリテラシーとしても「当然だよね」と言われるようになりました。

弊社でもすべてのプロジェクトはGitで管理しており、新たにプロジェクトに参加する場合でも過去の履歴をすべて見られるようになっています。

composerを活用し、Gitリポジトリサイズはできるだけ小さく

Magento2はcomposerを用いて以下のことができます。

  • ベースとなるファイル・ディレクトリ構成のセットアップ
  • Magento2自体のインストール

後者のほうは色々なところで解説されていますが、前者の方はあまり解説されていません。
例えば以下のようにコマンドを実行することで、ベースとなるファイルだけをダウンロードし、Gitに登録することができます。

composer create-project --no-install --repository-url=https://repo.magento.com/ magento/project-community-edition プロジェクトのルートディレクトリ

弊社ではこの操作で作成されたファイル・ディレクトリだけをGitリポジトリに登録し、後のモジュール・ライブラリは別管理しています。 

開発作業は本番とほぼ同じ構成の仮想マシン上で

Magento2の開発環境を作る場合、人によってはLinux環境の構築が苦手な人も居ます。
あるいはデザイナー・フロントエンドエンジニアの人に加わって貰う場合、環境をすぐに用意できないと、時間の無駄になってしまいます。

弊社ではGitリポジトリ内にVirtualBoxとVagrantで作成した仮想マシンの設定を用意しています。
GitリポジトリをCloneして、仮想マシンを起動すると、すぐに作業が開始できる仕組みになっています。

もちろん本番サーバーとほぼ同じ構成のLinuxなので、環境に依存するあやしい挙動などは殆どありません。

本番や検証環境への反映はCapistranoで

最後に本番反映です。

Magento2のソースコードを人力かつFTP/SFTPクライアントでアップロードすることは正直現実的ではありません。あまりにもファイル数が多い上、関連するライブラリのバージョン管理も必要になってくるため、非常に大変です。

そこで弊社ではGitと組み合わせてCapistranoを使っています。

Magento1の時代はMagentifyというCapistranoのレシピを使っていましたが、Magento2用にはDavid Algerさんが開発しているレシピを使っています。

このレシピを使うことで、Magento2本体のコードと、関連するライブラリや案件ごとのカスタムコードを複数のサーバーに安定して反映することができ、人為的なミスを無くすことができます。

まとめ

弊社では、まとめると以下のように管理をしています。

  • ソースコードはGitで
  • プロジェクトのソースコードは必要最小限のものだけを管理
  • 作業は基本仮想マシンを使用し、設定もGitで管理
  • 本番や検証環境へは専用のレシピを使ってCapistranoで反映