こんばんは。
今日のタイトルですが、、
最初に断言しておきます。
これに対して、明確な効率的な答えや方針は持っていません。
マージって難しい
なんで(なんの?白目)
結局はコンピューターの挙動を人間が信用していないからなんですね。
マージは、subversion も git もある程度、自動でやってくれます。
でも、現時点の信頼性では、それをそのまま、コミットすることはできませんし
こちらの思い通りに、マージされているとは言えない状況です。
今日も新人のエンジニアが
と言われました。
ツールでのマージはまだまだ完璧ではありません。
この新人エンジニアですが、昨日は
って私にタスクが回っってきたので、一応確認で、
て聞くと
って再度確認してもらったんですが、
今日は確認作業の中で、マージの不足部分を発見したようです。
成長してますな!!嬉しい。
今の開発現場では、マージ作業後に、マージした人がチェックを行い
第三者が受け入れでチェックし
さらに、結合テスト時に、同じチェックを行っています。
3回チェックを行っているのです。
かなり無駄な作業のように感じますが、、、
それぞれ意味があります。
マージ作業後に作業者がチェックするのは、そらそうですよね。
やった気になっているが、ちゃんとできていない時がある。
人間だもの(相田みつお)
そして、それを信用がならないので、第3者がチェックする。
これもなんとなく筋が通っています。
そして結合テスト時に、さらにチェックをします。
これはなんでかというと、マージやらがこんがらがった時に、マージ分が消滅してはいないか?
という意味合いを込めて、再度チェックをします。
なんというか、結局のところ人間も、svn も git も信頼していないんですね。
やっぱり、そこが根底にあります。
ここはいいところでもあり、嫌なところでもあるのですが、
ITの世界って、性悪説、人間はミスするものだ!
ってところから入ります。
決してポジティブな世界ではないんです。
常にネガティブな精神から入っていくんです。
ここが営業やら、その他のイケイケの人種と相いれないところなんです。
もしかしたら、もしかしたら、不具合が、、
ばっかり考えて生きています。
ここで営業の方は、俺もそんなことを考えて仕事しているわ!
っておっしゃるかもしれませんが、
その比率が違うんです。
常に、日頃から、90%くらいは、不具合を起こさないように!
ばかり考えて生きているのが、開発という人種なのです!
何を言いたいのかよくわからなくなってきましたが
確か今日のテーマはマージでしたね。
結局言いたいのは、 git や subversion やらでいろんな便利なツールがありますが
現段階では、人間の脳にはかなわないってことです。
行間や、仕様はツールには理解できません。
この絶妙な空気感を読めるのは、今の所、人間しかいません。
なので
今日の教訓
ひとーつ:マージ作業は必ず、人間のチェック及び動作確認をすること!!
マージは作業です。絶対に確認さ作業が入ります。
コードを書きました!と同じレベルです。
コードを書いたら、テストしますよね?
ならマージ作業をした後も、テストが必要です。
今後もっと優れたマージのツールが出てくるかもしれません。
その時はテストや確認作業が大幅に削減されるかもしれませんが、
現段階において、それを信頼するべきは、この儚くも強い人間です(Cocco風)
マージのロジックが成長するまで、今しばらく待ちましょう。
では、また明日!!