分散型バージョン管理システムの構築#1

 

ソフトウェア開発において、プログラムやドキュメントのバージョン管理が重要なのは言うまでもありません。 特に、複数メンバーで開発しているときや、拠点を分けて開発する場合、、現場と事務所で作業をする場合、あるいは、細かい変更管理が必要なときなど、開発の現場を経験された方なら、 「デグレか?」 とヒヤッとしたことの一度や二度はあるのではないでしょうか? (デグレ・・・デグレード。プログラムのバージョンが、意図せず一部戻ってしまうこと。)

手軽に導入できるということで、多くのプロジェクトで採用されているのが、CVSやSVNなど、オープンソースのバージョン管理システム。 これらを導入することによって、いつ、誰によって、どのような変更があったかを、記憶にたよらずに機械的に参照することができますね。 特に、SVNは、変更リソース単位での管理なので、適切な単位でコミットすることで、後々に問題が発生したときに、見通しが良くなります。 複数メンバーで開発していると、同じファイルを何人かで変更することがあります。 ロジックそのものが競合している場合は、もちろん、後からコミットする人が注意深くマージしていくことになり、その作業そのものは人力になります。それでは、順番にマージしているのと同じかと思われますが、大切なのはバージョン履歴が自動的に残ることです。

中には、手作業でのマージが一番確実、という方もいますが、特に時間が無くなってきたときに、3人以上のマージがいかに危険か、経験された方も多いのではないかと思います。

しかし、SVNを使っても、危ない目に会うことがあります。 大切なことは、SVNでのマージはなるべく機械的にやることだと考えています。 受け取るソースは、必ず差分に目を通す。 マージしてはいけない設定ファイルなどは、判明し次第、ignoreにしておき、 コミットするときはもちろん、受け取るときも、絶対に中途半端に残さない。

これを徹底しないと、手作業よりも危ないです。

また、開発で大切なことは、作業を適切な大きさのタスクに切り分けて進めることです。 作業単位を小さくすることは、基本的には、個々人の能率を上げることになります。

しかし、複数メンバーで開発している場合、小さな作業単位でコミットすると、特に共通的なプログラムが関係しているときなど、他のメンバーのプログラムが動かなくなる可能性がありますね。 もちろん、他のメンバーになるべく影響を与えない順序でコミットしていくことを考えるのも大切ですが、 実装の順番の都合や、作りながら考えるような局面の場合、このままでは、自分の作業管理をシステム化できなくなってしまいます。

そこでこれから、 ソフトウェア品質を上げていくための、チーム全体のバージョン管理サーバ、個々人の効率と精度を上げるためのローカルなバージョン管理システムをご紹介していきます。また、バグトラッキングサービスや、iPhoneとの連携についても探っていくつもりです。

コメントする

Filed under 05.技術情報

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>