WEBプログラム・システムの管理方法について相談があります。


MovableTypeやWordpressをカスタマイズして提供(設置代行)しているのですが、常に開発・バグ修正などを行っているので頻繁にファイルの内容が変わります。

これまでは案件毎に構成するファイルを全てコピーしてHDDに保存していたのですが、バグ修正の度にそれをするのも非効率だと感じています。(1つのバグを修正すると全ファイルを上書きしなくてはいけない為)


以下の条件で、どういう管理方法が良いのかアドバイス、或いは回答者さまが行っている方法を教えて下さい。

・システムの根幹部分の修正はないが、関数・クラスファイルなどの修正がよくある
・Aの販売先とBの販売先で構成するプログラムの内容が異なる。
(例えばMTなら、Aにはプラグインが3つ、Bにはプラグインが5つ とかそういうイメージです)
・サイトを構成するテンプレートファイル、CSSが販売先毎に異なる
・効率の良い管理方法があれば、手間暇やコストも惜しまない(正し人件費がかからない程度で)

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/07/28 12:10:15
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント20pt

・システムの根幹部分の修正はないが、関数・クラスファイルなどの修正がよくある

プラグインなど一部のファイルの更新であるならば、Subversionのようなバージョン管理ツールを使います。


・Aの販売先とBの販売先で構成するプログラムの内容が異なる。

・サイトを構成するテンプレートファイル、CSSが販売先毎に異なる

これについては、システムの販売ポリシーがパッケージ販売なのかカスタマイズ販売なのかによって変わってきます。

パッケージ販売なのであれば、コアの部分とオプション(カスタマイズ)の部分に明確に分離し、カスタマイズ部分のみ顧客毎にバージョン管理します。

カスタマイズ販売の場合は、おそらく現在行っているように、すべてのファイルを顧客毎にバージョン管理します。

Subversionは派生バージョン管理もでき、顧客を派生バージョンと考えることもできるのですが、この機能を使うとよほど管理基準をシビアにしないと混乱します。

id:b-wind No.2

回答回数3344ベストアンサー獲得回数440

ポイント15pt

Subversion によるバージョン管理

Subversion (他のバージョン管理でもいいけど)とそのブランチを管理すればいいかと。

案件毎にブランチを作成。システムの中心は原則 Trunk を参照すると決め毎をするだけ。


この手の類は基本差分情報で管理するから無駄は少ない。

id:yofukaci No.3

回答回数306ベストアンサー獲得回数10

ポイント15pt

こんばんは、k28mさん。

SVNを使って管理してます。

SVN(Subversion)/バージョン管理

http://www.softinn.jp/04Dopeninfo/bsd/svn.html

id:hadashikick No.4

回答回数2ベストアンサー獲得回数0

ポイント40pt

こういうのはWebに関わらず、昔からシステム開発の現場がぶつかる問題で、ある程度経験のあるエンジニアなら「バージョン管理システムを導入するのが良いです」とでかい声で即答するのではないかと思います。

私も同じ考えです。

バージョン管理システムとは、"リポジトリ"と呼ばれるソースコードを保存する専用の領域を設け、ソースを編集する際は"チェックアウト"と呼ばれる専用の操作でリポジトリから手元にダウンロードします。編集したものをリポジトリに反映させるには、"コミット"という操作をします。

コミット時にコメントを書いておくと、編集の履歴を一覧でわかりやすく閲覧でき、過去のバージョンを"チェックアウト"したりできます。

また、古いバージョン→新しいバージョン、という1ラインの管理だけでなく、似てるけどちょっと違うソース用に別のラインを用意して("ブランチ"と呼ばれます)、それはそれで別に更新していく、などの管理もよくやります。

管理したいソースとしてWPやMTの自作プラグインがあり、もし異なる販売先でそれらを共有したいのなら、プラグインを保存するためのリポジトリを用意しておき、必要なときに必要なプラグインをチェックアウトする、といった使い方ができます。

また、Webサイト制作の場合、ソースコードをWebサーバーにアップロードする、という工程が最後にあるわけですが、変更したファイル(アップロードしたいファイル)だけリポジトリから引っ張ってくるなどの操作が楽です。

自分の会社もWeb制作をやっていますが、以前は質問者様と同じように、ソースコードの管理はまるごとコピーでした。

このやり方はすぐに破綻して、あるべきところに最新のソースがない。という事態にも遭遇するようになってしまいました。

そこで、ウチではバージョン管理システムを導入することになりました。

ウチでの状況を紹介したいと思います。

  • 選択したソフトウェア : Subversion
    • 理由
      • TortoiseSVNという使いやすいWindowsのGUIクライアントがあります。TortoiseSVNを使うと、最新のファイルには緑のアイコン、編集が加えられているファイルには赤のアイコンが表示され、ステキです。右クリックメニューも拡張され、誰かがやった変更を手元のソースに反映させる操作などがカチッ、カチッ、で行えます。
  • コスト
    • 学習コスト
      • HTMLコーダーやデザイナなども含め、ソースに変更を加える人はバージョン管理システムの概念を理解して、使えるようになる必要がありましたが、一度集まって1時間程度の講習会を行い、実際に使ってもらったら割とすんなりいきました。
    • 社内サーバ
      • リポジトリを置くためのサーバは欲しいところです。ウチではファイル共有するための4,5万円くらいの安いサーバ機(OSはLinuxでUbuntu Server Edition)を社内に置いていたのでそれにSubversionを入れました。Subversionはオープンソースです。
      • Subversionのインストールや設定には多少手間がかかりました。サーバ管理専業の人がいなかったので、私(HTMLコーダー兼プログラマ)が片手間でやりました。ただWeb上に情報は多いと思います。subversion ubuntu apache - Google検索
      • 導入後はバックアップ以外にこれといって管理作業はしてないです。なにかやるべきことはあるのかもしれませんが……。

ある勉強会で、割と著名らしきエンジニアの方が、大規模Webシステム開発の効率を上げるため急遽雇われ、実際その現場でどんな改革をやったか喋っていたんですが、最初の方で「ソースをバージョン管理していなかったのでそこからはじめた」という発言があり、そこで会場で笑いが起こっていました。

やはり生粋のエンジニアにとっては、バージョン管理システムがベストプラクティスとして知られていることは間違いないでしょう。

デメリットは学習コストがかかる、とかそれ以外にはこれと言って思い浮かばないですね。

ちょうど自分が最近取り組んだ問題とかぶっていたので、ちょっと長くなってしまいました。すいません

  • id:k28m
    皆さんSubversionを勧めていただいていますが、正直あまりピンとこないので、一旦Subversionを使ってみて、それで気になる点があったら再度別質問で相談させていただきます。回答ありがとうございました。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません