第2話 糠にカミソリ
見習い期間が終わり、僕は正式なプロジェクトに参加させてもらえるようになった。ソフトの開発プロジェクトには、多くのプログラマが関わる。それぞれが担当部分のコードを書き、最終的にそれを繋ぎ合わせて、全体として数千行もある大きなプログラムを完成させる。
一か月ほど経ったある日、疲労で霞む目でプログラムを見直している時に、僕はすごい発見をした。
今まで何の疑いもなく使っていた一行の命令文を、別のものに入れ替え、変数設定を少し変えるだけで、それまで三十行必要だったプログラムが、わずか四行で済んでしまうのだった。同じことができるプログラムなら、行数が少なければ少ないほどいい。それがプログラミングの鉄則だ。
僕は興奮した。たった一つの発見で、世界がガラリと変わってしまう面白さ。そして、その発見を、他の誰でもなく、この自分がしたという優越感。
……これだ……これのためにプログラマになったんだ。
僕は、スーパバイザーの神山さんに、そのプログラムを見せた。二十五歳の彼女は僕より若かったが、プログラマとしてはもう四年以上もの経験があった。
体にぴったりしたシルクのブラウスを着た彼女は、僕のプログラムを自分のモニターで開き、細い体を猫背にして読んだ。だが、いつまで経っても反応はなかった。
……ひょっとして、すごさが理解できないのか?
「あのさぁ」彼女は面倒くさそうに言った。「こういうことしてもらっても、困るんだよねー」
僕は面食らった。
彼女は画面を指差し、「ここを勝手に変えられたら、他が全部変わって来ちゃうじゃない」
非難する調子だった。
「でも、その一文を入れると、今まで三十行だったのがたった四行で済むんですよ」
「そのくらい見れば分かるわ」彼女は、一瞬、敵意のある目で僕を睨むと、すぐモニターに顔を向けた。「大げさに言わないで。そのくらい誰だって考えつくことよ。こんな初歩的なこと、自分だけが考えたような顔しないでね」
「誰が考えたかはどうでもいいんですが、それで全体の行数が減るんだったら、いいんじゃないですか? これと同じような部分が他にもたくさんあるし、それを全部変えていけば……」
「全部変える?」彼女は食いつくように言った。「冗談じゃない、それは誰がやるのよ? あなたが全部やってくれるの? とにかく、今まで苦労して作ったものをひっくり返すようなことはやめてよね」彼女の声はキンキンと耳に痛い。
向かいのパーテーション越しに越谷が顔を出した。「どうかしたの?」
「いえ、別に」彼女は従順になった。越谷はプログラマのリーダーで、格が上だ。
「ただこの人が、またちょっと、勘違いしてたんで」
「勘違いというより」僕は言った。「サイズを半分にするやり方を見つけたんです」
越谷はこちらに回って来て、モニターで僕のプログラムを見た。
「これって、あの部分だろ……」こちらを向いた越谷は、「んー」と言いながら宙を見て何かを考え、やがて、
「確か九十六年だったかな……昔うちでやったソースコードで似たのが残ってるからさぁ、それ、見てみろよ」と命令口調で言った。
「……でも、見てどうするんですか?」
「ん? コピペすんの」
つまり……
既にある古いプログラムから、今僕が書いているのと同じ部分を見つけて、そっくりコピーして使えと言うわけだ。
「こういう小細工してる暇があったら、頭使えよ。コピペなら、時間もかからないし、ミスも少ないだろう」越谷は言った。
コピペのどこが、頭を使っているというのだ……そう思った時、僕はこの人を理解した気がした。この人にとって頭を使うとは、どれだけものを考えないですませられるかという節約術のことなのだ。
……ダメだ、と思った。
それがこちらの顔に出たのか、越谷の表情が固くなり、文句でもあるのか、と言いたげになった。
僕はあわてて笑ったが、口がへの字に歪んだだけだった。「わかりました……その方がいいですよね」お追従を言う自分が嫌だったが、チームリーダーの越谷に逆らって、せっかっくスタートしたプログラマのキャリアを、ふいにしたくはない。
越谷は僕を見下したように、口を半開きにしたまま、二三度うなずいて去って行った。酸っぱいような口臭がした。
その後ろに、誰かが立っていた。空井だった。いつからそこにいたのだろう?
彼は、頭を両肩の間に埋めるように低く下げ、神山さんのモニターを注視していた。そこには、僕の書いたプログラムが映っている。やがて彼は目を離し、僕を見た。視線が合った。
彼の目は、明るい茶色だった。彼の唇に笑いが浮かんだ。
僕は、自分の顔が赤らむのを感じた。なぜか分からなかった。恥ずかしがるようなことは何もないはずだった。
空井は目を伏せると、ショルダーバッグを肩にかけ直し、いつものように壁際を歩き、部屋から出て行った。
神山さんは、椅子を机の前に戻し、僕を無視して、何事もなかったように仕事を続けた。
空井の前で赤くなったことは、後々まで僕を恥ずかしい気持にさせた。僕は、それまでに、人前で赤くなったことなどなかった。あの時、なぜ赤面したのか、理由はよく分からない。自信を持って書いたプログラムを、皆から疎まれている空井にさえ笑われた、と感じたからか、あるいは、越谷にお追従を言ってしまった僕自身の弱さを、空井に見抜かれたからか……。
プロジェクトは予定を大幅に遅れ、皆、暑さと睡眠不足で疲れ切っていた。小さな手違いやミスがあちこちで起こり、ささいなことが原因で口論になった。空井だけはいつもと変わらず八時に退社した。
僕はプログラマーになったことを、はっきり後悔していた。殺人的な仕事スケジュールのせいだけではない。プログラミングに何の面白味も感じられないことが一番こたえた。創造力もアイディアも何もいらない……タイプミスなしに、決められた構文を間違えずに積み重ね、積み重ね、積み重ねていく……デジタル土方、とは越谷もよく言ったものだ。僕が求めているものとは、ほど遠い。しかも、そうやって最終的に出来上がるプログラムは全体で何千行にもなり、その中に埋もれて、自分がどこをやったのかさえ分からなくなってしまう。
僕のやる気のなさが表に現れたのか、八月が終わると、僕はメインのプロジェクトから外された。そして、どうでもいい餅米の卸売会社のためにデータベースを作るという仕事に回され、よりによってあの空井と組まされた。
よくない兆候だった。社内の嫌われ者と組まされるということは、僕も、少なくとも良くは思われていないということだろう。会社は空井をいびり出そうとしている、という噂もあったので、ひょっとしたら僕と二人まとめて追い出す腹かもしれないとも思えた。だが、今追い出されては生活のしようがない。少なくとも転職のあてがつくまでは、僕はここにしがみついていなければならなかった。
会社では、空井となるべく接触しないようにした。間違っても、二人の仲が良いなどと誤解されてはいけない。いざとなれば、僕も皆の仲間になって、空井をいじめることも厭わない気でいた。
餅米卸会社のプロジェクトに取りかかった僕は、自分の分担部分を黙々と書き、机一つ分しか離れていない空井との連絡には、社内Eメールを使った。昼時には、空井ひとりを残して皆と昼飯に行った。だが、作業が進み、二人の担当部分を繋ぐ部分……そこは「ブリッジ」と呼ばれていたが……その部分を書く段階に来ると、どうしても、細かく話し合う必要が出てきた。仕方なく僕は、昼休みに人が出払った時を狙って、空井に声をかけた。
「何?」空井は回転椅子を大きく回して振り向いた。声は明るく、顔には好意的な笑みがあった。
僕は戸惑った。今までこちらが避けていたことは分かっているはずなのに、まるで気にしている様子はない。ひょっとしたら、避けられていることに気づかないほど鈍感なのか?
「とりあえず、出来たところまで、すり合わせしませんか? これから先、ブリッジしなきゃいけないところとか、いろいろ出てくると思いますので」僕は敬語で言った。空井は経験六年のプログラマだったし、歳も僕よりひとつ上だった。
「いいよ、いいよ、どこからやる?」
屈託のない彼の態度は、社内いじめに合っている人間とは思えなかった。いじめられている時の彼はいつも、無表情で宙を見ているだけだったし、いじめられていない時は、ひとりで黙々と仕事をしていたので、彼が話すのを見る機会は、これまでほとんどなかった。
僕は、プリントアウトしておいた全体プログラムのチャート図を見せて、自分がどこまでやり終えたかを説明した。プログラムのコンポーネントを表す四角や三角の図形は、分かりやすいようにあらかじめ色分けしておいた。これから二人の共同で作業しなければいけないブリッジの部分は、黄色に塗ってあった。
空井はそれを見て、わずかに笑った。前歯の横の不細工な詰め物が見えた。
「ブリッジなら、とりあえず作ったのがあるから、ちょっと見てくれないか?」彼は、僕が後輩であるにもかかわらず、こういう言い方をした。
自分のデスクトップに送られたファイルの数を見て驚いた。
「全部ですか?」
ファイルは二十以上あり、ブリッジ部分はほぼ全部ということになる。僕が自分の担当分を書き上げた時間で、空井は、自分の担当分だけでなく、ブリッジ部分もやってしまっていたのだ。しかも、僕は決して作業が遅い方ではない。空井のプログラムがちゃんと出来上がっているのか、疑いたくなった。
「中、どんな感じになってます?」僕はおだやかに言い、ひとつを選んで開けてみた。
コードが現れた。整然と並んだ行が、画面の下端に到達する前に終わっていた。短い。
「これだけ、ですか?」
それは僕も少し手をつけていたもので、百十行目にさしかかっていたが、まだ終わっていない。それをこの先輩は、四十数行で終わらせている。
違うプログラムを見ているのではないかと一瞬疑ったが、プログラムのID番号に間違いはなかった。
……本当にちゃんとできているのか?
僕は、一行ずつ意味を取りながら読んだ。完全に出来ていた。どうしてそんなに少ない行数で済むのか分からなかった。
「ただ……」と空井は言った。「それだと、変数を少しいじらなきゃいけないんだ」
そう言われて見直すと、確かに変数の設定がイレギュラーで、そのままでは僕がやった部分にも影響があった。つまり、僕の方を直さなければいけないことになる。プログラムをこれだけシンプルにできたのは、どうやら、この奇妙な変数設定のおかげらしかった。どこから、こんなやり方を見つけて来たのだろうか? どんな教科書にも載っていなかったし、僕が参考にしたプログラムの前例にも、こんなやり方は見かけなかった。
「なるほど」僕は口先だけで言い、マウスを操作してウインドウを閉じた。他のプログラムも見たくてたまらなくなっていた。
「松岡君、だったよね?」
「はい」僕はどぎまぎした。何か個人的なことを聞かれそうな気配があった。
だが彼は、「……そうか」と言い、キーボードの縁を親指の腹でなぞり続けるだけだった。
僕は少し待ってから、「じゃあ、見させてもらいます」と言い、自分のマシンに戻った。座る間ももどかしく、さっきとは別のファイルを開けて読んだ。三行目まで行った時に、ふと気がついて顔を上げ、辺りを見渡した。
僕と空井以外誰もいない。昼飯から帰って来たみんなが、これを見てどう思うか?
僕は読みかけのファイルを閉じ、小さな声で「お昼行ってきます」と言い、部屋を出た。
昼飯を済ませて戻ると、皆戻っていて、モニターに向かっていた。雰囲気は相変わらず刺々しかった。空井だけはいなかった。
僕は空井の書いたプログラムの続きを読んだ。
どれにも無駄がなかった。僕が書いたら、おそらく三倍の長さになっていただろう。だが、それだけなら驚くことではない。経験さえあれば、誰でもできるようになるものだ。だが、終わり近くの一つのファイルを読んだ時、僕はショックを受けた。それは、通常のヘッダで始まっており、短い日本語のコメントの後、誰でもやる関数の定義が数行続いていた。次に、ありきたりの命令文が始まったと思った時、とんでもない一行に出くわした。最初は、タイプミスか何かだと思った。そのコードがなぜそんな場所にあるのか分からなかった。一見、何の脈絡もないように見えたのだった。疑問に思いながら最後まで読むと、プログラム全体はしっかりと出来上がっていた。問題の一行に戻り、場違いなコードをわざわざそこに入れた理由を考えた。
三分ほど考え、その一行の意味するものががぼんやり分かりかけると、僕のこめかみが冷やりとし、心臓の鼓動が早くなった。
まさか……。
他のブリッジのコードを再び読み、自分がこれまでに作ったプログラムも開けて確認した。僕の手足から力が抜け、小さく震え出した。
……やはりそうだ。この一行のおかげで、このプログラムが短くなっているだけではないのだ。プロジェクト全体に散らばっている様々な問題を、一挙に解決している。
この一行のせいで、全体の中でのデータの行き違いがなくなり、しかもタイミングをほぼ完璧にシンクロさせられるので、処理速度が格段に早くなる。この一行が、二つ、三つ……いや少なくとも八つ以上の役割を、一度にこなしいているのだ。将棋に例えれば、わずか一手で自分の王を救い、同時に相手の飛車角を牽制し、さらに敵の王の逃げ道を塞ぐというような、神業に近いものと言えた。
僕は、モニターに映ったその一行を見ていたが、文字を見ているのではなく、画面のドットを見ているだけだった。感動していた。こんな手があったのだ。想像ならいくらでもできる万能の一手が、現実にあったのだ。そして、それを見つけた、空井というのは……
僕の体に、鳥肌が立った。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます