笑わないプログラマ

プログラマの生き様を紹介

[05/04/09-04:39]

【軍曹が】携帯電話開発の現状【語る】

Posted by kudzu◆EaEmrSBBOE


元携帯の開発者が語る開発現場の現状です。




253 名前:YRP常駐from群馬 投稿日:04/07/24 21:42

俺たちは、仕様も知らされぬまま横須賀に送り込まれた。
依頼主も孫請けらしく、正確な情報はかなり伝言ゲーム的に
それも口頭でしか伝えられない。
俺たちは、経験5年の軍曹1人と、経験2年の上等兵1人と、新人の2等兵3人
の小隊だった。
現地に就くなり、現場は火を噴いた有様だった。果てしないデバッグの果てに
納期を過ぎてペナルティなのか要求項目が倍増したらしいのだ。俺たちが
派遣された場所の前任者(というより部隊)は全員ウツになって戦線離脱した
らしい。引継ぎも全く無いまま、というよりドキュメントらしい物も無かった。

俺たちが最初に与えられた任務は、10万行に及ぶスパゲッティ・コード
「ちゃんと動くものにする」事であったが、仕様は何度問い合わせても、問い
合わせが上位会社へ何段も口頭で伝えられるうちに伝言が自然消滅してしまう
ようだ。俺たちには真上の階層の会社の担当者しか知らされておらず、現地で
他のチームの者と口を聞く事も一切許されていなかった。
ただ、スケジュールだけは何があっても遵守せよと通達された。しかし、仕様は
何時まで経っても伝えられなかった。ただ、目の前の大盛りスパゲッティは
スケジュールにとても収まりそうになかった。
俺たちと唯一連絡の取れる上位の担当者も、既に何日も寝ていないらしく、何か
ちょっと込み入った質問をすると容易にハングアップしてしまう。指示内容は
1日平均5回は変更された。



254 名前:YRP常駐from群馬 投稿日:04/07/24 21:49

まず、仕様書が無い。
上に問い合わせてもまともな回答が帰ってくるのは1/10程度の割合だし、
問い合わせ件数が増えると回答率も著しく下がった。
仕方ないので、スパゲッティ・コードを解読してノートに機能を図示しながら
理解を進めていくが、変数名もval0, val1, val2のように取って付けたような
ものが大半を占め、何をする機能なのかさっぱり分からなかった。
担当する機能の最上位関数を見つけるのに1週間かかった。その時はS上等兵が
歓喜の叫び声を上げたものだ。
ノートは1日で平均2冊が消費された。準備してきた物が10冊だったから6日目の
朝に売店に買いに行った。
ようやく関数群の体系が掴めてきた(大半がfunc001, func002のような命名)
ところで、俺たちは仕様書変更レビューに呼ばれた。質問は上位会社の担当者を
通じて口頭で伝えるしか手段が無く、延々と14時間に及ぶレビューでは俺たちに
発言権は無かった。



255 名前:YRP常駐from群馬 投稿日:04/07/24 21:58

やはり、仕様書にはfunc001, func002のような名前の関数は初版から
存在していなかったようだ。変数に至っては、グローバル変数のあまりの
多さに、その規模を掴むので精一杯だった。
他のチームの顔色を窺うと、今回の仕様変更はミドルウェアとアプリを
根底から揺さぶるドラスティックなものであったらしい。俺たちはこの時に
スパゲッティを廃棄する決断をすべきだったのかもしれない。それを上位の
担当者にきつく禁止されていたとはいえ、その決断を見送ったのが俺たちの
地獄の始まりだった。
派遣から2週間後、俺たちは本部に援軍と再見積もりの要請を連絡した。
しかし、「依頼元との連絡が極めて難しい状況なので、今はまだガマンしてくれ」
の一点張りだった。2等兵たちは祭りの意味も変わらずに闘志を燃やして興奮して
いる。
3週間目には、上位会社のSE達数人が集まって、深刻そうな顔をしていた。
隣のチームがまた一つ潰れたらしい。状況を聞こうと上位SEに近付くと、厚さ
3センチに及ぶ「バグ報告書」を抱えて走り去っていくところだった。



258 名前:YRP常駐from群馬 投稿日:04/07/24 22:07

「お願いします。ソースを1から作らせてください」
「駄目だ。今あるものを最小限の変更で動くようにするのだ。」
「無茶です!」
「分かってくれ。他のチームとのインターフェイスをこれ以上変更できないんだ」
俺と上位担当者とのやりとりを、配下の上等兵達が心配そうに見つめていた。

インターフェイスとは、最上位関数のインターフェイスだけではないのだ。
スパゲッティの中には多くのグローバル変数が操作されている。他のチームも
度重なる仕様変更の末に、当初は整然としていたソースが俺たちの請けた物と
同じようにスパゲッティ化しているという話だった。

4週間目、俺は本部に残業代の申請をしたのだが、「もう少し待ってくれ」の
一点張りだった。

上位担当者が倒れて1週間、俺たちはプロジェクトの中で盲目となった。
隣の新しいチーム(そこの後続部隊)では、連日ローカルな仕様変更が口頭で
伝えられてくるようで、着任早々に祭りになっていた。
俺たちの担当ブロックも、何らかの仕様変更に晒されているはずだったが、
連絡は全く来ない。



260 名前:YRP常駐from群馬 投稿日:04/07/24 22:16

情報が途絶えてから2週間後、上位会社の担当者が突然替わった。
理由は一切知らされず、業務の引継ぎも無かったらしい。新しい上位担当者は
俺たちから情報を集めて仕事を始めた。プログラム経験は全く無いそうで、
技術的な話になると俺たちの言葉は通じなかった。

派遣開始から1ヵ月半が経ったが、業務上の連絡手段は相変わらず口頭と紙切れ
メモぐらいで、メールのアカウント申請も伝言ゲームの途上で自然消滅してしま
ったようだ。上位会社の担当者は俺たちに構っている暇は無くなり、現場に来て
いるのかもしれないが、机にはカバンが置いてあるだけであった。

噂を立ち聞きすると、山のようなバグレポートの事務的処理に追われているよう
だった。しかし、そのバグは俺たちの前任部隊の頃のもので、あれから仕様の
大幅変更が入っているはずだった。しかし、当時のバグレポートの事務処理を
終えてからでないと俺たちの版数からのバグには対応できないとの事だった。

テスト要員チームでも、テスト仕様の変更頻度が彼らの業務処理能力を大きく上
回り、前任部隊のバグによるバグレポートを尚も増殖しているところだった。
俺たちのコードはその後回しにされていた。



261 名前:仕様書無しさん 投稿日:04/07/24 22:24

数日後、上位会社の担当者が仕様書を持ってきた。
俺たちの知らない内に、版数がメジャーで5つも上がっていた。
まず、グローバル変数の大幅な見直しがあった。共有データの仕様が大幅に
変更されていた。基本クラス内で使用する殆どのメンバ関数の中で、それを
参照するように仕様が変わっていた。参照だけでなく、更新もするのだ。

しかし、最上位でオブジェクト間の依存関係を説明する個所が、初期バージョンで
暫定的に抽象的にかかれていた時のままなので、今回の変更がどの程度の規模なの
か分からなかった。ただ、関数の一覧リストがまた一新されていた。

スケジュールは当初の予定のまま、固定されている。この件については、上位会社の
担当者に何を問い合わせても無駄であった。



263 名前:YRP常駐from群馬 投稿日:04/07/24 22:32

HNを入れ忘れた。疲れが溜まっているのかもしれない。
ホテル生活が始まって2ヶ月が経った。その間、1度も群馬には帰れなかった。
土日はすべてスケジュール回復対策会議のようなものに駆り出されて、膠着
状態の会議に何時間もの間、発言権も無くただ同席させられた。
さすがに2等兵たちは週末には帰らせた。夏になると横須賀の海を楽しんで
気分転換をしてくれているようだった。「今を、その一瞬を今のうちに楽しんで
おいてくれ」俺達は思った。
会議では、俺たちの担当ブロックの仕様を根底から覆すような方針が、一時的に
とはいえ何度も打ち出されると、冷や汗が出た。
10万行に及んだスパゲッティは、俺たちの日夜の努力によって5万行にまで減った。
ここへ来て、コメントが普及してきた。そう、俺たちが手がけるまで、コメント
なんていうものは全く無かったのだ。
今年は暑い夏だな、俺は深夜に外を歩いている時にちょっとした目まいを感じた。
睡眠時間は何とか4時間程度は確保できているが、これだってかなり無理をして
確保しているのだ。



264 名前:YRP常駐from群馬 投稿日:04/07/24 22:41

何時の頃からか、アプリの担当チームとドライバの担当チームが、上位会社を
通じて直に情報連絡をするようになってきた(相変わらず口頭ベース!)。
ミドルウェア部隊がバグレポートの大量発生を起こして、事務処理の為にハング
アップ状態に陥ってしまったのだと聞かされた。
アプリとドライバのインターフェイスの擦り合わせが始まると、俺たちのブロックは
最上位関数からまず歪なものになっていった。バグが出たらその発生階層がトレース
出来ないという状況に陥って既に1週間が経った。
そんな状態になってから、カーネルの仕様変更にもかなり振り回されるようになり、
自分でも何が基準なのかが本当に分からなくなってきた。
何が基準、いや、何が本当の仕様なのか?それすらも確認する手立てが無くなった。
担当チーム毎に主張する「仕様」が異なり、それを調整する部門も機能していない。
現場は混乱、というより混乱の内容すら正確に把握できている者がいなかった。
少なくとも、俺たちがコミュニケーションを許されている範囲では。



265 名前:YRP常駐from群馬 投稿日:04/07/24 22:49

この期に及んでも、下位の関数すら1からの作り直しは許されず、
既存のコードを編集して直すようにとキツク言われていた。
修正個所では必ず元のコードをコメントアウトして残すように言われて
いたが、それを口頭で伝えられた頃にはスパゲッティのサイズが既に1/2
に縮まっていた。俺はその事実を上位会社の担当者に伝えた。
数日後、伝言が口頭で伝わってきた。
俺たちが派遣されてきた当初のソースを、全てコメントアウトされた形で
ソース内に復元させろ、とのお達しだった。
「そんな、無茶ですよ。ソースの可読性が損なわれます!」
「至上命題だ。戻せ。コメント形式で。」
その一言のために、俺たちは丸々1週間、ソースの復元作業に追われた。もはや
合理化した個所ですら可読性は原形すら残っていなかった。全てをやり終えたとき、
俺たちには疲れた笑いが溢れた。久々に表情筋が動いたのか、非常にぎこちなく
なっていた。それでも上位会社とその更に上の者達よりはマシな顔だった。彼らは
全くの無表情、というか、強迫観念に駆られた顔であった。



292 名前:YRP常駐from群馬 投稿日:04/07/27 23:04

最初に壊れたのは2等兵だった。
折角5万行程度にスッキリさせたソースに前のソースを復元させるヴァカげた
作業のお陰でソースは一気に15万行程度になってしまった。旧版をコメント行
として全て復元させられたのは初めての経験だった。
その頃から2等兵の顔つきが怪しくなってきた。
そのソースを提出した翌日、コンパイル担当の者(朝から晩までコンパイル!)から
伝言が伝わってきた。
「ダブルスラッシュなコメントは禁止だと伝わっていなかったのか?」
「は?」
丁度俺は仲間全員分の出張旅費の清算の為に群馬に戻っていた。
上等兵は別件で突っ込まれたドライバの改造作業にハマリ込み、コメント行の
話は2等兵達に直接指示が行った。彼らはそれを全て「手作業」で対処した。

俺は出張旅費の生産を終えて皆が立て替えた宿泊費(1人10数万円)を手に、YRPへ
戻ってきた。電車の中では久々に熟睡した。目覚めた時はカバンの中の現金を
何度も確認したものだった。



294 名前:YRP常駐from群馬 投稿日:04/07/27 23:33

(続き)
ホテルに戻って出張旅費を皆に配ると、疲れが溜まって俺は眠り込んでしまった。
翌朝目が覚めてみると集合場所には上等兵しかおらず、仕方ないので残りのメンバ
とは現地で落ち合うことにした。
始業時間になっても2等兵の姿が見当たらなかった。
上等兵たちもワケが分からない顔をしていた。
やがて上位会社の担当者が来ると、とにかく何でもいいから昨日頼んでおいた
コメント行のダブルスラッシュ修正をやり遂げてくれ、と頼まれて俺は自作の
プログラムを久々に使って変換作業を片付けた。変換済み個所が1割くらいスキップ
した事は気にしていなかった。
俺は隙を見て廊下に出て、ホテルに電話を入れた。
「ヌルポさんとデスマさんは今朝早くにチェックアウトしておりますが」
ついに脱走兵が出た。脱走兵が出ると、依頼主からの厳しいペナルティが課せられる。
それからというもの、俺たちは脱走した2等兵の分まで作業ノルマをこなさなければ
ならなかった。
翌日上司に電話すると、
「辞めたよ。」の一言だけ聞かされて切られた。
「2人ともですか?」という俺の声が届く前に切られた。



295 名前:YRP常駐from群馬 投稿日:04/07/27 23:40

折角ウィークリーマンションを確保できるように会社と交渉してきた
というのに、脱走兵が出たという事で俺たちはそのままホテル暮らしを
命じられた。
毎日朝は駅前のハンバーガー屋だし、このところ体の調子も少しおかしい。
何と言うか、太ってしまった。

現場では2等兵の事を思い出す頻度が減ってきた。それぐらい忙しくなってきた。
この頃から仕様書が改版されても読まなくなってきた。どうせ数バージョン前のが
遅れて届いたんだろうし。
上等兵たちもそれぞれ版数の異なる仕様書を愛用し始めてきた。ところどころ都合の
良いように自分で赤ペンで書き換えているし。
何か、少しずつ歯車が狂い始めてきた。
そういえば、上位会社の担当者も1週間ほど顔を見なくなってきた。彼の同僚に聞くと
「変ですね。夏休みは取っていなかったはずですが」と返ってきた。



296 名前:YRP常駐from群馬 投稿日:04/07/27 23:47

ハード屋の方で珍しく祭りが起きていた。いや、普段から祭りのようなのだが
俺たちが気付いていなかっただけだった。
何でも、ブレッドボードの作成&評価日程がスケジュールから押し出されて、
一気にハードだけでも最終製品に仕上げてしまうとの事だった。
俺にはそれはどれほど大変な事なのか分からなかった。所詮はハードの話だ。

所詮はハード、俺たちには無関係。
そう思っていられたのは、ES製品のASIC(プロセッサ内臓)に付いているはずの
JTAG-ICE端子が基板設計ミスによってボード上に繋がっていなかったと知るまでの
間だった。

「ICEが繋がらない?」
「端子にジャンパ線繋げれば出来るはずだろ?」
「それがBGA品なんです。ジャンパは不可能です。」
それを横で聞いている時には、意味が分からなかった。



298 名前:YRP常駐from群馬 投稿日:04/07/27 23:55

翌日から、ハード屋が職人部隊となった。あのきめ細かいボードに何やら
改造を加えて、何でもASIC実装前にジャンパ線を付けているようにも見えた
のだが。
とにかく、デバッグ用に予定していた台数に全然足りないのだ。
俺たちの割り当て10台も、1台を手に入れるのが精一杯だった。それもちょっと
衝撃を受けるとICEの接続が断線してしまう有様だった。
「こんなの使えるか!」と次々にソフト屋はハード屋にケータイを叩きつけた。
彼らも数日寝ていない。暴言に無反応であった。
最後に、上位会社のその上の会社のSEが来て、デスマで疲れきったハード屋(尚も
半田付けで忙しい)の前に座り、一言。
「あんたたちさぁ、やる気あんの?」
少しだけ沈黙の間があった。
ハード屋は黙って、その上位SEの手の甲に半田コテを押し付けた。
「うぎゃぁぁぁぁああああああ!」



300 名前:YRP常駐from群馬 投稿日:04/07/28 00:03

それを火蓋に、ハード屋とソフト屋の乱闘が始まった。
「ざけてんじゃねーぞ。ゴルァ!」
「上等だ、コラァ!」
こんな現場を上位の上位の会社の人に見られたら…、
なんと彼らも当事者になって暴れていたのだ。
「軍曹!この場はひとまず逃げましょう」鼻血を流した上等兵が脱出を提案した。
俺も殴られている最中だったが、彼の提案に従ってその場を離れた。足にしがみ付く
奴がいて、よく分からずに蹴りを入れて逃げた。

喫煙室に行ってタバコに火をともす。よく見たら上等兵の鼻が折れているように
見えた。俺は指を差して教えた。彼は笑った。苦笑いだった。
途切れ途切れな笑い声は、次第に泣き声へと変わっていった。そしてしゃがみ込んで
嗚咽し始めた。夕日の眼にしみる喫煙室にいるのは、俺たち3人だけだった。

俺は窓際に立ち、尾崎豊の「街路樹」を歌い始めた。



303 名前:YRP常駐from群馬 投稿日:04/07/28 00:15

翌日、緊急会議が開かれ、俺たちを含めた開発関係者一同が大会議室に
召集された。昨日の騒動の件だった。無理も無い。

しかし、吊るし上げられたのは乱闘から離脱した俺たち3人だった。
業務時間中に現場を抜け出して喫煙室でサボッていた事を責められた。
現場に残っていたって仕事どころではなかったハズだ。

午後になって鼻の治療を終えた上等兵も合流し、俺たちは一応業務を再開した。
ここへ来てから作った20冊のノートの半分がゴミ箱の中で燃えカスとなっていた。
ケータイ端末も10個ほど砕かれて捨てられていた。

最大のダメージは、レンタル品のICEの破壊であった。誰だ?こんなコトをしたのは。
ハラワタが煮え繰り返る思いだった。

次の日になると、皆乱闘の事を嘘のように忘れてデバッグを再開した。
ハード屋は、割れたメガネを嫌味のようにそのままかけていたが。

俺たちの仕事もあの酷いスパゲッティから随分苦労してやっと動作可能な
ものに仕上がってきた。後は異常系の試験だ。障害発生の半分は仕様制限で
許してもらえるので、少し気が楽になってきた。反面、再現性の極めて低い
バグに遭遇すると、目まいがするものだ。



308 名前:YRP常駐from群馬 投稿日:04/07/28 00:22

次に出張旅費の清算に戻った時には、ガラクタ置き場にされていた俺の机の
引き出しに何やら包み物があった。
「?」
俺は警戒しながら封を開けてみた。

中にはワイヤレス光学マウスが1個入っていた。
手紙もあった。
「軍曹殿。この度は戦線離脱の非礼を申し訳ありませんでした。
 自分にはあの地獄は耐えられませんでした。ただ、軍曹殿には
 本当にお世話になりました。いつも僕たちを人間扱いしてくれたのは
 軍曹殿だけでした。
 これはほんの気持ちです。軍曹殿は現場でいつも朝一番にマウスの動きが
 渋いって愚痴をこぼしていたので」

2等兵の1人は、夏の寸志の全額を使って俺にマウスをプレゼントしてくれた。
俺はガラクタ置き場の机の前で、暫くフリーズしていた。



310 名前:YRP常駐from群馬 投稿日:04/07/28 00:46

デバッグも後半に差し掛かってきたときに、上位会社の担当から例によって
口頭の伝言が届いた。
「ミドルウェアのデバッグが完了したから、アプリも対応して修正するように」
「は?」
「そうそう、修正する時は修正前のコードを全てコメント行にして残す事を
 忘れんようにな」
ミドルウェアの仕様書が手渡された。インターフェイスは跡形も無く変わっていた。
「あの、まるで別物に見えるんですが」
「ああ、今一番先端を行くミドルウェアだ。研究所で開発したばかりなんで、
 分からない事があっても俺たちに聞かないで欲しい」

それから2ヶ月、ハード屋達に
「ソフトが遅れちゃ俺たちの努力も報われないよな」
と罵られながらも新ミドルウェア対応にアプリを修正し、デバッグに勤しんだ。
あれから俺には、ハード屋の手にする半田ごてが武器に見えてしまう。彼らが
それを手にしている時は、臨戦体制に違いない。刺激してはならない。

新ミドルウェアに関して質問すると、情報伝達の経路が長くなったのでレスは
極めて悪い。質問への回答は2週間たって1/20の割合でしか帰ってこない。
上等兵たちはソースを読んで対処しているので、俺もそうするようになった。



315 名前:YRP常駐from群馬 投稿日:04/07/28 01:01

新ミドルウェアへ置き換えてからというもの、ケータイの操作感が著しく
重くなった。メニューの切り替わりの遅さが絶え難い。
「ちゃんとメモリ管理をやるとこうなるのだ。軽くサクサク動くケータイの
 メモリ管理は皆インチキだ。あれじゃあいつかハングアップするに決まってるさ」
ようやく説明に来てくれた上位の上位の上位の会社の研究所のヤツはそう言った。
ミドルウェアの立ち上げ期間中、その研究員がいてくれたのだが、言っているコトが
チンプンカンプンで半分以上分からなかった。

 上位会社の担当から口頭で聞かされたのだが、ASIC内のプロセッサのメモリ制御に
バグがあってそれで速度が低迷していたらしい。改善されれば処理速度が2倍になるので
その分ソフトも安定性の良い手法で開発できるようになったんだ、ありがたく思え、と。

 しかし、情報が依然まともに伝わって来ないし行かないので、デバッグはなかなか
進まなかった。隣の部隊に届く仕様書と時間差があって、マイナーバージョンで5ぐらい
遅れているのだ。そのくせテスト時には、俺たちブロックにバグが多い事を責め立てられる。
 ICEの臍の緒が切れるたびに、あの嫌味なハード屋のところへ頭を下げて直してもらいに
行く。作業中ずっと嫌味を言い続けるのだ。



317 名前:YRP常駐from群馬 投稿日:04/07/28 01:11
研究所の連中が予定を終えて引き上げる時に、言われた。
「君たちにはちょっと難しすぎたようだね。
 もうちょっと勉強した方がいいんじゃないの?」
関係無いの隣のチームの奴等も笑った。机にある仕様書の版数は、俺たちの
よりもメジャーで1つ先を進んでいるみたいだし。それは見なかった事にした。

 翌日、上等兵たちが隣のと同じ版数の仕様書を手に入れていた。仕様書は
俺を通してでないと彼らの手には渡らないはずなのに。不思議だ。
昼食の時に上等兵が言った。
「あの嫌味ったらしい奴らの仕様書と、俺たちのとスリ替えてきましたよ。
 ちゃんとコピーして数も合わせてあのチーム皆のをスリ替えたから、
 誰も気付きませんよ」

それから2〜3週間の内に非難の矛先が変わっていったので、俺は会社に対する
業務進捗報告で上等兵たちを高く評価して記録した。何だか自分まで共犯者に
なった気分だ。
 上等兵たちは仕様書のスリ替え工作を日常的に続けた。

 そして、ある日現行犯でバレた。
                  (今日はここまで)




次のエントリに続きます。

Track Back URL  Comment(2get, ぬるぽなどご自由に)  View Comments  Top Page

おもしろかったらガッしてください→


この記事へのトラックバック


無料ブログ