フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
webadm | 投稿日時: 2010-2-27 1:33 |
Webmaster 登録日: 2004-11-7 居住地: 投稿: 3084 |
他人の書いたソースコードを読む ソフトウェア開発の仕事では他人の書いたソースコードをどうしても読まないといけない時がある。それが危険に身をさらす場合があることは一般には知られていない。
自分の書いたコードだけ読むまなければならないのはデバッグ等で常なので問題ない。 ソースコードというのは書いた人の脳の神経回路のコピーのようなものなので、書いた人によって回路が違うのは当然。正常な精神状態の持ち主が書いたソースコードであれば整然と整理されていて問題ないが、そうでない人が書いたコードだとしたらどうだろう。 他人のソースコードを読むという行為は、読む側の脳の神経回路に他人の神経回路をコピーすることを意味する。もし、異常な回路をコピーしたとしたら、身体的に危険を及ぼす恐れがある。 前任者が体調不良になり連絡がまったく取れなくなってしまったというWebサービスシステムの尻ぬぐいを引き受けた時のことである。 さっそく実際のコードを拝見したのだが、テストサーバーとライブサーバーの2つがあって、テストサーバーで変更を試して欲しいとのこと。実際に2つのサーバーのコードを見たところ違和感が走った。通常はテストサーバーに新しいコードがあり、ライブサーバーには動作確認された枯れたコードがあるはずだが逆になっていた。 おそらく前任者は時間に迫られテストサーバーで試す時間を惜しんでライブサーバーにどんどん新しい変更を適用していたと察する。 私の任務は、前任者のバックログを出来るだけ消化するというもの。それ以外に前任者が変更途中のままにして動かなくなってしまったものを変更以前の動作に戻して欲しいというのもあった。 要望された問題点をすべてスプレッドシートに整理して未解決問題のステータスを入れて一覧化しひとつひとつ調査を開始することにした。 調査を進める中で前任者が残したソースコードを読み取り、前任者が何をやろうとしていたのかを知る必要があった。その過程で危険に身をさらすことになるとは思いもよらなかった。 脳の回路にショートがあったとしたら、それをコピーしてもショートする。当然である。ソースコードには理解しがたい矛盾のあるコードが随所に見られた。それらコードが書かれた整然とした理由を追及しようとしたところ強烈な鬱状態に襲われた。 おそらく前任者が強烈なプレッシャーの中で同時に様々のことを考慮しながら変更やデバッグのための仕掛けを施したと思われるが、そこに尋常では考えられない論理的な矛盾が明らかになったのである。 昔SF映画で「2001年宇宙の旅」に出てくるコンピュータHAL9000が互いに矛盾する2つの密命を受けたために発狂し宇宙飛行士を殺害しようとする話を思い出した。 前任者が依頼主から命じられた複数の任務に相反する矛盾があることが鬱状態に襲われた原因であることに気づいた。 前任者は優秀な学生アルバイトで、わずかな時間給で新しいシステムを一人で書き上げていったらしい。しかし完成が近づいてデモや試験運用がはじまった途端に、とんでもない要望が寄せられ、前任者にその解決が任されてしまった。その中に相反する要望があれば、どれを優先するか、どちらかを我慢してもらうしかないのだが、優秀なだけに果敢に両立を試みた痕跡(新しい行を書いてはコメントアウトした残骸)が多くみられる。 私は、相反する現在使われていない機能をばっさり削除して、使われている機能への要望を実現するというだけだった。 技術者でないと発言力のある利用者から寄せられる要望で相反して同時には満たすことのできないものを区別することができない。経営者や営業はそれがわからないから利用者側の味方になって技術者に無理難題を押しつけることが避けられない。学生アルバイトだとしたらそれに抵抗することはほぼ困難だろう、自分の命を絶つ以外に選択肢は無かったのだろう。 これは小説のネタではなく実話である。 |
フラット表示 | 前のトピック | 次のトピック |
投稿するにはまず登録を | |