ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
Main Menu
Tweet
Facebook
Line
:-?
フラット表示 前のトピック | 次のトピック
投稿者 スレッド
webadm
投稿日時: 2010-2-27 1:33
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3084
他人の書いたソースコードを読む
ソフトウェア開発の仕事では他人の書いたソースコードをどうしても読まないといけない時がある。それが危険に身をさらす場合があることは一般には知られていない。

自分の書いたコードだけ読むまなければならないのはデバッグ等で常なので問題ない。

ソースコードというのは書いた人の脳の神経回路のコピーのようなものなので、書いた人によって回路が違うのは当然。正常な精神状態の持ち主が書いたソースコードであれば整然と整理されていて問題ないが、そうでない人が書いたコードだとしたらどうだろう。

他人のソースコードを読むという行為は、読む側の脳の神経回路に他人の神経回路をコピーすることを意味する。もし、異常な回路をコピーしたとしたら、身体的に危険を及ぼす恐れがある。

前任者が体調不良になり連絡がまったく取れなくなってしまったというWebサービスシステムの尻ぬぐいを引き受けた時のことである。

さっそく実際のコードを拝見したのだが、テストサーバーとライブサーバーの2つがあって、テストサーバーで変更を試して欲しいとのこと。実際に2つのサーバーのコードを見たところ違和感が走った。通常はテストサーバーに新しいコードがあり、ライブサーバーには動作確認された枯れたコードがあるはずだが逆になっていた。

おそらく前任者は時間に迫られテストサーバーで試す時間を惜しんでライブサーバーにどんどん新しい変更を適用していたと察する。

私の任務は、前任者のバックログを出来るだけ消化するというもの。それ以外に前任者が変更途中のままにして動かなくなってしまったものを変更以前の動作に戻して欲しいというのもあった。

要望された問題点をすべてスプレッドシートに整理して未解決問題のステータスを入れて一覧化しひとつひとつ調査を開始することにした。

調査を進める中で前任者が残したソースコードを読み取り、前任者が何をやろうとしていたのかを知る必要があった。その過程で危険に身をさらすことになるとは思いもよらなかった。

脳の回路にショートがあったとしたら、それをコピーしてもショートする。当然である。ソースコードには理解しがたい矛盾のあるコードが随所に見られた。それらコードが書かれた整然とした理由を追及しようとしたところ強烈な鬱状態に襲われた。

おそらく前任者が強烈なプレッシャーの中で同時に様々のことを考慮しながら変更やデバッグのための仕掛けを施したと思われるが、そこに尋常では考えられない論理的な矛盾が明らかになったのである。

昔SF映画で「2001年宇宙の旅」に出てくるコンピュータHAL9000が互いに矛盾する2つの密命を受けたために発狂し宇宙飛行士を殺害しようとする話を思い出した。

前任者が依頼主から命じられた複数の任務に相反する矛盾があることが鬱状態に襲われた原因であることに気づいた。

前任者は優秀な学生アルバイトで、わずかな時間給で新しいシステムを一人で書き上げていったらしい。しかし完成が近づいてデモや試験運用がはじまった途端に、とんでもない要望が寄せられ、前任者にその解決が任されてしまった。その中に相反する要望があれば、どれを優先するか、どちらかを我慢してもらうしかないのだが、優秀なだけに果敢に両立を試みた痕跡(新しい行を書いてはコメントアウトした残骸)が多くみられる。

私は、相反する現在使われていない機能をばっさり削除して、使われている機能への要望を実現するというだけだった。

技術者でないと発言力のある利用者から寄せられる要望で相反して同時には満たすことのできないものを区別することができない。経営者や営業はそれがわからないから利用者側の味方になって技術者に無理難題を押しつけることが避けられない。学生アルバイトだとしたらそれに抵抗することはほぼ困難だろう、自分の命を絶つ以外に選択肢は無かったのだろう。

これは小説のネタではなく実話である。
フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   このごろの傾向 webadm 2006-12-22 3:20
     高周波はお金がかかる webadm 2007-2-4 21:41
       貧乏人のネットワークアナライザ webadm 2007-2-5 21:39
         HPのゲイン・フェーズアナライザを落札 webadm 2007-2-8 4:09
           FIXTUREをつくらないと webadm 2007-2-8 10:28
             HP87510Aが無事届いた webadm 2007-2-8 23:10
               トラッキングジェネレーター付きのスペクトルアナライザー webadm 2007-2-10 2:43
                 ブロッキングキャパシタ webadm 2007-2-10 3:58
                   スペアナアダプタを落札 webadm 2007-2-11 1:07
                     スペアナアダプタが届いた webadm 2007-2-16 5:37
                       その他のアイデア webadm 2007-2-17 1:14
                         謎のスペクトル webadm 2007-2-17 1:50
                           周波数の測定方法があった webadm 2007-2-18 7:44
                             出力は出てないようだ webadm 2007-2-21 18:06
                               出ることはでるみたいだ webadm 2007-2-21 18:45
                                 改良できないだろうか webadm 2007-2-22 8:59
                                   スパンを狭くするとベースが競り上がる原因 webadm 2007-3-5 10:27
                           新たな謎が webadm 2007-2-24 13:23
                             わかったこと webadm 2007-2-25 6:53
                               内蔵マーカー webadm 2007-2-26 0:22
                                 インパルス信号のスペクトル webadm 2007-2-26 3:39
                                   フィルタリング webadm 2007-2-26 6:06
                                   スペアナアダプタを使って気づいた点 webadm 2007-2-26 7:09
                                     スペアナアダプタの回路で気づいた点 webadm 2007-2-26 10:16
                                       200から250MHzの間にあるスペクトル webadm 2007-2-28 21:56
                                         Re: 200から250MHzの間にあるスペクトル webadm 2007-2-28 22:17
                                           Re: 200から250MHzの間にあるスペクトル webadm 2007-3-5 11:45
                                           285MHz近辺 webadm 2007-3-19 0:07
                                             スーパーハイバンド webadm 2007-3-19 0:31
                                     TR5822とHP8116A webadm 2007-3-1 6:45
                 ローパスフィルタだった webadm 2007-2-11 23:02
               N型コネクタアダプタが届いた webadm 2007-2-24 6:41
                 少し長いケーブルの通過特性 webadm 2007-2-25 5:58
               SUICAのF特性 webadm 2007-3-2 0:48
                 SUICAへのコマンド送信 webadm 2007-3-5 6:31
                   規格になっているらしい webadm 2007-3-8 6:26
                     PaSoRiを購入 webadm 2007-3-8 9:43
                       コマンド・レスポンスフォーマット webadm 2007-3-8 13:24
                         検波してみたが webadm 2007-3-15 19:55
                           13.56MHz webadm 2007-3-18 19:49
                       一部のPaSoRiリコール webadm 2007-8-7 9:34
                 いろいろな特性 webadm 2007-3-13 6:26
                   プロッタ出力 webadm 2007-3-13 17:08
                     HP-GLの仕様 webadm 2007-3-13 17:46
                       Win32-based emulator for the HP 7470A plotter webadm 2007-3-13 18:32
                         Re: Win32-based emulator for the HP 7470A plotter webadm 2007-3-13 18:41
                           シリアルからのプロット出力表示 webadm 2007-3-13 19:32
                           NIのPCI-GPIBでプロットできた webadm 2007-3-20 3:34
                     特性を比較してみた webadm 2007-3-19 10:06
                       自作1000Base-Tモジュールと純正の特性比較 webadm 2007-3-20 4:06
                         千石で買ったHCタイプの10MHz水晶発振子 webadm 2007-3-22 2:17
                         方向性結合器を注文 webadm 2007-3-26 4:10
                           輸出規制対象品だった webadm 2007-3-27 9:46
                             我が国の輸出規制 webadm 2007-3-27 23:18
                             FAXで証書を送付 webadm 2007-3-28 13:53
                               発送通知が届いた webadm 2007-3-29 3:32
                                 方向性結合器が届いた webadm 2007-3-30 19:05
                                   方向性結合器の内部 webadm 2007-3-31 22:56
                           秋月のアッテネーター webadm 2007-3-30 13:22
                       Ethernetモジュール引き合い webadm 2007-4-13 3:09
                         VME64Xコネクタの入手先 webadm 2007-4-29 14:28
                         Ethernetモジュール納品 webadm 2007-5-1 11:27
               セラミックコンデンサの特性 webadm 2007-3-23 10:19
     実物を調べたら webadm 2007-2-19 9:26
       アプリケーションノートには無い回路 webadm 2007-2-20 9:58
         EMIフィルター webadm 2007-3-17 19:35
     今日の出張先 webadm 2007-2-21 6:06
     Digi-Keyへ発注 webadm 2007-3-7 6:51
       成田へ入管したらしい webadm 2007-3-9 10:42
         住所間違えてた(>.<) webadm 2007-3-10 1:23
           やっと届いた webadm 2007-3-10 21:55
             試作完了 webadm 2007-3-12 1:58
               結果オーライ webadm 2007-3-12 6:31
                 その他いろいろ webadm 2007-3-13 6:18
         LPFのF特性実験 webadm 2007-3-10 11:45
           チップコンが間違ってたぽい webadm 2007-3-10 12:17
     本業回帰の季節 webadm 2007-9-10 22:44
       ステップ数を数える webadm 2007-11-23 12:14
       RFへのあこがれ webadm 2008-2-19 9:39
         Linuxの時刻設定 webadm 2008-3-13 11:02
           Re: Linuxの時刻設定 webadm 2008-3-14 11:11
             思わぬ伏兵が潜んでいた webadm 2008-3-18 6:41
               伏兵を退治完了 webadm 2008-3-19 10:33
                 またまたLinuxのお仕事 webadm 2009-2-19 9:58
                   期末のアルバイト webadm 2010-2-21 6:17
                     中国製タッチスクリーンパネルのLinuxドライバ webadm 2010-2-22 4:02
                       期末恒例尻ぬぐいアルバイト webadm 2010-2-24 3:22
                       » 他人の書いたソースコードを読む webadm 2010-2-27 1:33
     今時の特注開発 webadm 2011-1-25 8:51

投稿するにはまず登録を
 
ページ変換(Google Translation)
サイト内検索