開発環境編成計画:Gitによる分散管理体制への移行(後編)

開発環境を、社内サーバでの集中管理体制から、ローカルマシンでの開発とGitによる分散管理体制に移行することにしました。今回は新しい環境の全体像と、整備に必要な手順をまとめたいと思います。

※前の環境や、変えることになった経緯などは、前回の記事にありますので、よろしければご覧ください。

前回の記事: 開発環境編成計画:Gitによる分散管理体制への移行(前編)

環境を変える目的

前回の記事と重複しますが、環境を変える目的を簡単におさらいします。

  • 場所・インフラに依存しない開発環境をもつこと
  • ファイルレベルではなく、ソースコードレベルでバージョン管理を行うこと
  • ローカルマシンでの開発を前提とした新しい技術を積極的に取り入れること

新環境の全体像

新環境の全体像は次のようなイメージです。

編成後の全体イメージ

構成

Gitによるバージョン管理を始めること、ローカルマシンで開発を行うことが主なポイントです。またVPSサーバにCIサーバ(Jenkins)を構築して、リモートリポジトリからテストサーバへのアップロードを自動化することでアップロード作業を効率化します。

  • プロジェクト管理ツール兼リモートリポジトリとして、Backlogを採用
  • ローカルマシンに簡易サーバを構築して作業
  • ローカルマシンにGitを入れてバージョン管理を実施
  • テストサーバへのアップロードをJenkinsで自動化(※)
※2016年1月1日時点において:
Jenkinsは使わず、単純なデプロイ用のPHPをGit hookで起動する処理を採用しています。
BacklogのGitリポジトリからCPIサーバに自動デプロイする
sparse-checkoutでGitのサブディレクトリだけを自動デプロイする

大まかな作業の流れ

既にリモートリポジトリがあるプロジェクトの場合、次のような流れで制作業務を行います。

  1. リモートリポジトリ(Backlog Git)からプロジェクトをClone
  2. ローカルマシンで作業
  3. リモートリポジトリにPush
  4. リモートのmasterブランチへのPushをJenkinsに通知、自動でテストサーバへアップ
  5. テストサーバで表示・動作を確認

これにより、メンバーがオフィスにいてもいなくいても、ホームメンバーでもサテライトメンバーでも、環境や作業手順が同じになります。また、以前の環境ではファイルの操作のためにDreamweaverを必須としていましたが、これも任意になります。(エディタとしてDreamweaverは引き続き採用していきますが、エディタが別でも運用ルールでここはカバーできると思います。)

ローカル開発環境の整備

これらを実現するためには、ローカルマシンにある程度の環境を整備する必要があります。以降はほぼメンバー向けに、各マシンの整備手順をまとめます。(Windowsを前提としています。)

  1. ローカルマシンに開発用のサーバを作る
  2. ローカルマシンにGit環境を作る
  3. Dreamweaverで直接Gitを操作できるようにする

1.ローカルマシンに開発用のサーバを作る

ローカルマシンにWebサーバを構築する方法として、MacであればMAMP、WindowsであればXAMPP、最近はVagrantを使うことが多いと思いますが、これらは採用せず、PHPに付属するビルトインサーバを使うことにしました。

※2015/09/01時点:
PHPビルトインサーバだけでは要件を満たさないケースがあったので、Apache環境を構築しています。

2.ローカルマシンにGit環境を作る

次に、ローカル環境にGitをインストールして設定します。
グランフェアズでは、リモートリポジトリにBacklogを採用しているので、最後にリモートリポジトリのBacklogと繋げるところまでの手順をまとめています。

3.Dreamweaverで直接Gitを操作できるようにする

エディタとしてDreamweaverを引き続き採用する際、Git操作のために別のツールを都度触るのは多少面倒。 次のページでは、Dreamweaverで直接Git操作ができるように、TortoiseGit + GITWeaver を入れる手順をまとめています。

※2015/09/01時点:
GITWeaverの対応バージョンが最新ではないことなど障害が多く、使い勝手も悪いため「DWでGit」は不採用となりました。

新環境の全体像と、各マシンのセットアップ内容については以上になります。

これらWindowsへのインストールも、個別に実行せずに一発で終わらせる方法があります。(Windows用のパッケージ管理ツール「Chocolatey」を使う)これについては別の機会に記事にしようと思います。

編集後記

今回の環境編成に本気で取り組もうと思ったきっかけは「採用」でした。グランフェアズは、来年入社予定のメンバーを含むと下は20歳から上は43歳とかなりの年齢幅があるチームですが、ボリュームゾーンは30代後半です。業界的にはかなり年齢層の高い大人なチームなので、個々が抱える事情というのも多岐に渡ります。

一つ目のきっかけですが、今年の4月に入社したメンバーが、家の事情でご実家(他県)に帰らないといけなくなってしまいました。入社わずか2ヶ月後に分かったことです。本人も、これからここで頑張ろう!と意気込んでいたところで、私たち以上にショックだったと思います。でも、それは受け入れざるを得ない事情。私たちは彼女が他県に移動した後も、サテライトメンバーとして契約を継続することを決めました。

二つ目のきっかけは、最年長となるお母さんの入社です。お子さんの成長に合わせて労働時間を長くしていき、ゆくゆくはフルタイムと変わらない、やりがいと責任のある仕事をしたいという強い意欲を持った方です。そこで私たちは、正社員でありながら時短勤務という契約形態を持つことにしました。彼女の場合も、家を離れられない理由がある時は、家で業務を行うことになります。

このほかにも、東京や大手でバリバリ働いていたけれど、家庭の事情などで「常に通勤をする」というワークスタイルが適さない状況になっているケースにいくつか遭遇しました。

これらはいずれも、他人事ではないなと思ったのです。今はたまたま好きに働ける状況だけれど、多くの場合、避けられない環境の変化が誰しもに訪れるだろうと。その時に、今まで積み上げてきたキャリアを中断せずに継続する方法・受け入れる環境が求められていると感じました。

言うのは簡単です。
雇用形態が増えると、事務手続きや月次の支払い手続きも個別対応になるため会社としてはとても面倒なこと。それらをCEOとCFOに任せっきりな立場で言うのはとても気が引けますが、それでも、多様な働き方を受け入れられる会社でありたいと思っています。そしてそのために自分ができることとして、技術的な環境面の最適解を日々模索しているのです。