MovableTypeやWordpressをカスタマイズして提供(設置代行)しているのですが、常に開発・バグ修正などを行っているので頻繁にファイルの内容が変わります。
これまでは案件毎に構成するファイルを全てコピーしてHDDに保存していたのですが、バグ修正の度にそれをするのも非効率だと感じています。(1つのバグを修正すると全ファイルを上書きしなくてはいけない為)
以下の条件で、どういう管理方法が良いのかアドバイス、或いは回答者さまが行っている方法を教えて下さい。
・システムの根幹部分の修正はないが、関数・クラスファイルなどの修正がよくある
・Aの販売先とBの販売先で構成するプログラムの内容が異なる。
(例えばMTなら、Aにはプラグインが3つ、Bにはプラグインが5つ とかそういうイメージです)
・サイトを構成するテンプレートファイル、CSSが販売先毎に異なる
・効率の良い管理方法があれば、手間暇やコストも惜しまない(正し人件費がかからない程度で)
・システムの根幹部分の修正はないが、関数・クラスファイルなどの修正がよくある
プラグインなど一部のファイルの更新であるならば、Subversionのようなバージョン管理ツールを使います。
・Aの販売先とBの販売先で構成するプログラムの内容が異なる。
・サイトを構成するテンプレートファイル、CSSが販売先毎に異なる
これについては、システムの販売ポリシーがパッケージ販売なのかカスタマイズ販売なのかによって変わってきます。
パッケージ販売なのであれば、コアの部分とオプション(カスタマイズ)の部分に明確に分離し、カスタマイズ部分のみ顧客毎にバージョン管理します。
カスタマイズ販売の場合は、おそらく現在行っているように、すべてのファイルを顧客毎にバージョン管理します。
Subversionは派生バージョン管理もでき、顧客を派生バージョンと考えることもできるのですが、この機能を使うとよほど管理基準をシビアにしないと混乱します。
Subversion (他のバージョン管理でもいいけど)とそのブランチを管理すればいいかと。
案件毎にブランチを作成。システムの中心は原則 Trunk を参照すると決め毎をするだけ。
この手の類は基本差分情報で管理するから無駄は少ない。
こんばんは、k28mさん。
SVNを使って管理してます。
SVN(Subversion)/バージョン管理
こういうのはWebに関わらず、昔からシステム開発の現場がぶつかる問題で、ある程度経験のあるエンジニアなら「バージョン管理システムを導入するのが良いです」とでかい声で即答するのではないかと思います。
私も同じ考えです。
バージョン管理システムとは、"リポジトリ"と呼ばれるソースコードを保存する専用の領域を設け、ソースを編集する際は"チェックアウト"と呼ばれる専用の操作でリポジトリから手元にダウンロードします。編集したものをリポジトリに反映させるには、"コミット"という操作をします。
コミット時にコメントを書いておくと、編集の履歴を一覧でわかりやすく閲覧でき、過去のバージョンを"チェックアウト"したりできます。
また、古いバージョン→新しいバージョン、という1ラインの管理だけでなく、似てるけどちょっと違うソース用に別のラインを用意して("ブランチ"と呼ばれます)、それはそれで別に更新していく、などの管理もよくやります。
管理したいソースとしてWPやMTの自作プラグインがあり、もし異なる販売先でそれらを共有したいのなら、プラグインを保存するためのリポジトリを用意しておき、必要なときに必要なプラグインをチェックアウトする、といった使い方ができます。
また、Webサイト制作の場合、ソースコードをWebサーバーにアップロードする、という工程が最後にあるわけですが、変更したファイル(アップロードしたいファイル)だけリポジトリから引っ張ってくるなどの操作が楽です。
自分の会社もWeb制作をやっていますが、以前は質問者様と同じように、ソースコードの管理はまるごとコピーでした。
このやり方はすぐに破綻して、あるべきところに最新のソースがない。という事態にも遭遇するようになってしまいました。
そこで、ウチではバージョン管理システムを導入することになりました。
ウチでの状況を紹介したいと思います。
ある勉強会で、割と著名らしきエンジニアの方が、大規模Webシステム開発の効率を上げるため急遽雇われ、実際その現場でどんな改革をやったか喋っていたんですが、最初の方で「ソースをバージョン管理していなかったのでそこからはじめた」という発言があり、そこで会場で笑いが起こっていました。
やはり生粋のエンジニアにとっては、バージョン管理システムがベストプラクティスとして知られていることは間違いないでしょう。
デメリットは学習コストがかかる、とかそれ以外にはこれと言って思い浮かばないですね。
ちょうど自分が最近取り組んだ問題とかぶっていたので、ちょっと長くなってしまいました。すいません
コメント(1件)