ソースコードに修正履歴を書く意味を考えてみた

私が社会人デビューしたのが2003年。初配属の現場では当然のことながらバージョン管理ソフトなんて使っていませんでした。

その後、色々プロジェクトを渡り歩くにつれ、バージョン管理ソフトを使うことは当たり前になったのですが、それでも無くならないのがソースコードに修正履歴を埋め込むというものです。例えばこんな感じ。

// 2013.01.01 P-0001により削除
// hoge.exec('foo');

バージョン管理ソフトがある今日において、こんなコメント無駄という話をよく聞きます。私もそう思いますが、いろんな企業では、まだコーディング基準という名の(最初しか守られない)決まりによってこういうルールが決められています。

こういう決まりが未だにある理由をいろいろ考えてみました。えぇ、考えてみたんですよ。あくまで空想の産物です。自分の所属企業とは無関係であるはずです。

  1. そもそもまだバージョン管理ソフトを使っていない
  2. バージョン管理ソフトは使っているが、コーディング基準は過去のものをそのまま使っている
  3. バージョン管理ソフトを使えない人たちが、ソース読まないのに「過去履歴を残さないと駄目だろうがごらぁ」と吠えたため、コーディング基準に書いてしまっている
  4. 納品先の顧客が(絶対に読まないのに)「過去履歴を残さないとソースからどのような修正を行ったのか分からないだろうが、ごらぁ」と吠えたため、コーディング基準に書いてしまっている
  5. バージョン管理ソフトのリポジトリ全体を顧客に渡そうとしても、「そんな訳の分からないでかいファイルは居らない。どうしても渡したかったら、その使い方マニュアル作って。」と言われておとなしくコメントを書くことにした。

そんな背景が転がっていそうです。はい。

結局、技術者は「これがいい」と思って吠えたりするのですが、実際にプロジェクトに入ってみると、ソースコードは読めない、バージョン管理ソフトの存在を知らない、使えない人たちが多数なわけで、その人達と会話しないといけないわけです。

そこをいちいち変えていくのもめんどくさいので、とりあえずハイハイと従っていくのが楽なのが現実。ですので、しばらくソースコードにバージョン管理コメントは残っていくのかなと。

ただ、一歩一歩ですが変わっていくことは可能。少なくとも社内については変えていけると思っていてそういうふうに仕事してます。