皆さん、こんにちは。
新しく VSUG 初心者フォーラムリーダーをさせて頂くことになりました、さおです。
今回のコラムを担当させて頂きます。
どうぞ、よろしくお願いします。
 
「ソースコードとの付き合い方」について記載したいと思います。
わたしが社会人1年目の頃、バグを調査しているうちに、いつの間にかバグが発生しなくなってしまったことがありました。 

そのことを先輩に報告するともの烈火のごとく怒られました。 

先輩:「ばか!表面上直ってるように見えるだけだ!
 バグの発生するソースに戻して徹底的に調査しなさい!」
わたし:「すみません、何をしたらバグが直ったのか、全然判らないんです…」 

ちょっと涙目になっていたかもしれません。

その時は、エディタを開いたままだったので、先輩に横に付いてもらいながら

*1つ1つ UNDO で操作を戻す
*再度コンパイルして、挙動確認

これらを繰り返して、真のバグの原因を突き止めました。
メモリアクセス系のエラーで、ソースを触っているうちにたまたま動いてしまった、という恐ろしいバグでした。

プログラムが動いている≠正常な処理が行われている

という事を強く認識させられた事象でした。


またある時、突然 C ドライブのハードディスクエラーによって、作業 PC が立ち上がらなくなりました。
前触れも全くなく、本当に突然です。
もちろんソースコードもディスクエラーのため、取り出すことも出来ません。
その当時、サーバへのソース更新もそれほど頻繁にしていませんでした。
(なぜなら、綺麗なソースのみを共通サーバに上げたかったからです)
そのせいで、ローカル作業分(1週間分くらい!)は全てなくなってしまいました。 

もっと頻繁に更新やバックアップ作業をしておかなければいけない!と痛感しました。 

どちらも新人の頃の思い出話ですが、それ以来「ソースコード」というプロジェクトの資産に対する作業の重要性を認識するようになりました。 

その後、色々な先輩の意見や自分の経験を生かして、自分なりの「ソースコード自衛」を行っていますので、ちょっと記載してみたいと思います。

以下を確実に行うようにしました。 
1.自分の履歴を残すこと 
2.バックアップを取ること 
具体的には、こんな作業を行いました。 

---------------------------------------------- 
<ローカルでの作業場所>
*ローカル PC での作業場所は C ドライブ以外の別ハードディスクとする 
(例えば、もし C ドライブがエラーとなっても、D ドライブからソースが取り出せるかもしれない!) 

<エディタの機能>
*「何かおかしい」と思ったときには、UNDO を利用して元に戻る
*エディタのバックアップモードを有効にする、Visual Studio の自動バックアップを有効にするなど、前の状態を退避できる設定を活用する
 
<1日の記録を取る>
今日何をやったのか?を細かくメモしていく 

<ファイルバージョン管理>
*もちろん VSS/CVS/SVN など、ファイルのバージョン管理ができるツールを導入する 

<バックアップサーバへのバックアップ>
*1日1回、プロジェクト関連資産について、自動で以下を行うようにした
1. 圧縮バックアップ 
2. バックアップサーバへ転送 
3. 保存(だいたい1週間くらいでローテートさせています) 

*作業のキリの良い時に、上記で行った圧縮バックアップを手動で行う
 (1日3回以上は実行するようにしました) 
その際の名前は、「作成年月日分+バックアップを行った目的」を記載する
 (後で自分が探しやすいように…) 

*容易にバックアップ出来るように、予めバッチやランチャーを用意しておき、バックアップに対する抵抗をなくす 

<ファイルサーバへの更新作業>
*ファイルサーバへのソースコードの更新はこまめに行う 
(ただし他の方達に影響が無いように、ちゃんと動くソースにしておくこと)
 
<ファイルサーバ、バックアップサーバそのもののバックアップ>
*更にバックアップサーバへ送った圧縮ソースとファイルサーバのソース(リポジトリデータなど)は、1日2回、DVD に焼く
DVD ドライブのローテーションは1週間
みんなで持ち回りでバックアップ作業を行う

(※)バックアップ時、わたしはソースコードを共有する開発方法でしたので、OBJ ファイルは削除していましたが、もしかして OBJ を共有する開発スタイルを取っているとすれば、OBJ ファイルも必要。
 ---------------------------------------------- 

そこまでするの?とか、もっとこういう方法があるよ!とか、開発スタイルは人それぞれ、チームそれぞれだと思います。
しかし、こういった対策をしておけば、ちょっとした工夫で手戻りや事故を防げるかもしれません。 

開発資産である「ソースコード」には様々な環境を整えて、末永くお付き合いしていきたいと思います。