megamouthの葬列

長い旅路の終わり

あるW3C幹部の匿名インタビュー

Webの各種技術の標準化を行うW3C。秘密主義で知られるこの組織の幹部が、匿名を条件にインタビューに応じてくれた。元は英語のニュースサイトに掲載された文章であるが、少々ショッキングな内容を含むので、以下に拙訳する。

原文:
http://www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.txt



インタビューア(以下「I」): W3CはWebの世界を大きく変化させてきました。この23年を振り返ってみて、感想は。

W3C幹部(以下「W」): 最近昔の事をよく思い出します。覚えているでしょうか?誰もが固定幅のtableでレイアウトされたWebページを作っていた時代を。
HTMLをコーディングするのに覚えることはシンプルでした。難しいのはせいぜい、可変幅にしたい部分をtable化してそこにはめ込む画像を上手くスライスすることぐらいでしたが、これらも良く出来たツールがほぼ自動化してくれました。
大それた演出や、派手な効果を加えたければFlashを使えば問題ありませんでした。
$1000程度を払って、これらの優れたツールを購入すれば、誰でもWebページを作ることができた時代だったのです。
そして、それこそが我々にとって最も大きな問題となりました。

I:問題?

W:当時のWebページのコーディング単価を覚えていますか?単に、HTMLでテーブルタグを入れ子にして、画像をはめ込むだけで、我々は1ページあたり$300は貰えていました。優れたFlash製作者の給与などは、天井知らずでした。

I:確かに、そういう意味ではいい時代でしたね。

W:高単価の仕事は、望まざる人々をこの業界に呼び寄せました。
ハイスクールを出たての無知なティーン・エイジャーですら、週末のアルバイトでFlashを作り始めたのです。

I:なるほど。Webは裾野を広げたと言えますね。

W:結果としてどうなりましたか?Webページ制作の単価は下がり、かつては法外な制作費を稼ぎ出すことができた、単なるスライドショーFlashは適正な価格に落ち着きました。Web制作は急速に儲からないビジネスに変貌していったのです

I:う~ん。それが問題であったということですか?

W:その通りです。我々の使命は、Webのエコシステムを維持し、ユーザー企業が適切な額を投資し続けられるようにすることでした。

I:それが出来なくなりつつあった、と。

W:我々は考えました。そして、手始めにまず、エイプリルフールのジョークだったXHTMLXSLTという規格を大真面目な顔で発表しました。

I:ちょっと待って下さい。あれはジョークだったのですか?…しかし幸いにもあれはあまり成功したとは言えない結果になりましたね。

W:いえ、我々の基準では充分、成功の部類になります。一部のベンダーやコミュニティが、これこそがWebの未来だと言わんばかりにXHTML+XSLTレンダラーの実装をしてくれました。HTMLコーディングは複雑怪奇なXSLTルールを記述することに変貌しました。
これこそが我々の狙いでした。tableレイアウトのHTMLページの単価は当時$100以下にまで下落していましたが、XSLTを記述できるエンジニアはほとんどいませんでしたから、それこそ「言い値」で予算が与えられました。

I:しかし結局はそれが、普及の妨げになったのでは?

W:それは事実です。XSLTエンジニアが、その規格の難解さ――もちろん意図的にそうしたわけですが――に次々とKAROSHIしてしまったのは、我々の誤算でした。
しかしXHTML+XSLTセマンティックWebといった、Webページはマシンリーダブルにするべきだ、という「常識」を世間に植え付ける事に成功しました
凝ったタイポグラフィのために文字を画像にしたり、無意味にtableで分割するといった事を、我々は辞めさせることに成功したわけです。
これで、Webページ制作費の下落ペースを多少抑えることができました。

I:確かにそのあたりから、HTMLコーディングはやけにアクセシビリティを要求されるようになった覚えがあります。

W:援軍もありました。ある日、Googleという新興企業が、我々の所にやってきて言いました。「私達がお手伝いできることはありませんか?」と。我々は彼らを歓迎しました。

I:え?まさか。

W:そうですSEOです
Webページそのものをマシンリーダブルにすることの意味を理解できない愚かなユーザー企業にはこう言ってやることができました。

「お前の会社のホームページを検索結果の1ページ目から追い出してやるぞ!」とね。

彼らは泡を食って、我々の狙い通り、Web業界への投資を続けなければならなくなりました。
実際問題として、画像化された文字も適切なalt属性を与えてやれば、マシンリーダブルになることは自明でしたが、我々はそれらが高度なHTML+CSSコーディングでしかできないと思い込ませる事に成功したわけです。

I:すいません。そのような思惑があったというのは…その、実に…意外な発言です。

W:しかし、我々にはまだ課題がありました。Flashです。

I:え?

W:フレームアクションのおぞましい化物であるFlashが、まともな言語(ActionScript3)を持ち始めたのです。これは由々しき問題でした。

I:どういうことですか?

W:いいですか?プログラマというのはこの世界に掃いて捨てるほどいるのです。我々はMicrosoftとDHTMLという、ほど良い言語を発明していました。これは正常な神経をしたプログラマなら誰も近寄れないものでした。
こうして我々は注意深くWeb業界、それもフロントエンドの領域に彼らが参入するのを阻止していたのです。
彼らがJava2EEであるとかPHPといった、無限の終わりなき開発を続ける世界に留るようにね。

I:Flashプロプライエタリでしたが。

W:プロプライエタリだろうが、それを標準化するのは造作のないことです。(AjaxMicrosoftActiveXコンポーネントで出来ていたことを覚えていますか?)我々は意図的に、Flashを標準化の対象から外しました。SteveJobsも我々に賛同してくれて、iPhoneにはあのクソッたれ、失礼、少々分別がすぎてパフォーマンスも良好なFlashランタイムを導入することを拒否してくれました。

I:しかしFlashはWeb業界にとっては富の源泉ではなかったのですか?それを潰すのは矛盾した行動に思えます。

W:もはやその頃にはFlashは大した投資の対象にはなっていませんでした。それよりも、AS3によってFlashに殺到するであろう、まともなプログラマを押しとどめるほうが優先課題でした。このままではSEOの対象にならない、ログインが必要なWebシステムやサービスが全てFlashで作られる恐れさえありました
幸い、我々は新しいアイデアを得ていました。かつてDHTMLと言われた言語をECMA Scriptとして、小刻みにバージョンアップさせることにしたのです。

I:それはどういう事ですか?

W:後方互換性を意識させつつ、小出しに仕様を変遷させるというのは、一つのプラットフォームを破壊し、混乱させるのに最も良い方法です
今のフロントエンドを実装する困難さを見てください。タスクランナー、トランスパイラ、バンドラー、それらを全て駆使ししないとフロントエンドは書けません。
これこそ、我々が狙った効果そのものなのです。

I:少し、気分が悪くなってきました。本来なら私はここで、「ありがとうございました」と言うべきなのですが…

W:構いませんよ。我々は常にWeb業界と共にいます。彼らが受け取るべき報酬に常に注意を払ってきました。その事に疑問を抱いたことはありませんし、その事が、業界の外部にいる、例えばユーザー企業にとって不快だろうということは理解しています。

I:特に良心の呵責はない、と?

W:ありませんね。そもそもあなた方は我々を何だと思っているのですか?Webの業界団体ですよ?標準化やらオープンといったもので、本来自分たちが手にするはずだった利権を自ら手放す者がいるでしょうか?
我々は正しい事をしてきましたし、これからもし続けますよ。

I:このインタビューの内容を誰も信じないかもしれませんね。

W:そうかもしれませんね。我々がこれだけ露骨に利益誘導を計ってきたというのに、23年間誰もそれに気づきませんでした。いや気づいても気づかないフリをしているのかもしれません。
どちらにせよ、我々には同じことです。

I:後日、書き起こした原稿を送ります。

W:楽しみにしてますよ。


c.f
Bjarne Stroustrup インタビュー (?)



HTML5&CSS3デザイン 現場の新標準ガイド(特典PDF付き)

HTML5&CSS3デザイン 現場の新標準ガイド(特典PDF付き)

ブルー・ルームにようこそ

1

俺はもう何のゲームにも勝てないし、何の学校も卒業できないし、何の仕事も満足に終えることができない、ということがわかったのは、深夜残業の連続で脳が焼き尽くされて、大量のSSRIを噛み砕いた後だった。

生憎、自分を憐れんでクヨクヨするような性分ではない俺は、会社を辞めて、一日中アパートで寝転がってすごすことにした。君は天井の染みの数を数えたことがあるだろうか?31だ。29だと思っていた時期もあったが、今はそう確信している。

そうこうしているうちに、預金口座からは引き落とされるべき家賃もなくなって、管理会社からの督促も無視した結果、俺はアパートを追い出されることになった。

死んだ父親の代わりに保証人になっていた叔父は連絡を受けると、滞納している家賃や、家財その他の処分費をテキパキと支払って、明日から自分の職場に来い、とだけ言った。

叔父は地元の大学で研究者をしている。何の研究をしているかは知らなかった。
俺は「毎日通えるぐらいならちゃんと働いてるよ」と叔父に抗議したが、「研究室に寝泊まりすればいい」とにべもなく言い放たれて、返す言葉がなかった。


翌日、俺は歯ブラシやひげ剃りといった最小限の手回り品を持って叔父の研究室に行った。
まず驚いたのは、広いとは言えない研究室の一角に巨大な装置があることだった。部屋の大部分はその装置が占めていて、合間を縫うように、叔父が座る大きめのデスクや、乱雑に積まれた本と電子部品の山があった。

装置は四方を無愛想なグレイの鉄板で覆われており、ある面に中国の簡体字で装置の名前らしきものが書いてあった。
波とか量子とかそういう字が入っていた気がするが、読めなかった。ただ、その文字の一つ一つが青い明るい光を放っていて、乱雑な装置全体の投げやりな作りの中で、奇妙なこだわりに思えた。

叔父が言うには、装置にもたれかかるように置いてある1台の古いワークステーションだけが装置と接続されており、他の研究者が使えるように解放されているので、いつ誰が使ったかの記録を取ることと、たまに予約が入る時があるので、それを管理するのが俺の仕事ということだった。

仕事の内容についてはいい。だが、眠れそうな場所がどこにもない、というのはどういうことなのか。話が違う、と当然俺は抗議した。

「あいつの前で寝るといい。空冷式だから冬は暖かい」

と叔父は装置を指差した。寝袋は近くのガラクタの山の中に見つけた。ただ、問題があるとすれば、今は夏だ、ということだった。

2

仕事は大して忙しくはなかった。夏休み中の大学は閑散としていて、研究室の前の廊下を歩く者も少ないし、窓から見えるキャンパスの中庭でも人を見かけることはなく、夏の強い日差しで風景ごと朦朧としているように見えた。

時々、他の研究室から、生気の感じられない目をした院生や実験助手がやってきて、ワークステーションを操作していった。

俺はその度に、重厚な表紙のついた台帳を開いて、ボールペンで記録をとった。

紙で管理する必要はないし、実際のところ、一日の終わりに書いた内容を全てスプレッドシートにまとめていたのだが、俺はなんとなくこの方法が気に入っていた。

何をしているかわからない巨大な装置の前で、分厚い台帳に細かい文字を書き込んだり、予約の電話が入った時などに、受話器を肩にはさんでページをせわしなくめくったりするという行為は、何とも言えない風情があったのだ。

叔父は滅多にやって来なかった。何かの申請や事務仕事をする為だけに研究室に立ち寄って、論文は自宅で書いているようだった。
手持ち無沙汰な俺が、ワークステーションの利用状況を大まかに伝えても、生返事をするだけなので、それもやめてしまった。

夜になると、俺は研究室の鍵をかけて、2LDKのマンションに一人暮らしの叔父の家に立ち寄って、叔父の仕事の邪魔をしないように、シャワーと簡単な夕食を済ませた。そして、そのまま研究室に戻ると、装置の横で寝袋にくるまった。


中庭の照明が消えると、研究棟は暗闇に包まれる。
装置の簡体字が放つLEDの光が、この研究室だけを青い光で満たした。

俺はなんとなく、昔通ったクラブを思い出した。そのクラブは照明を青で統一していて、煙草の煙を吐き出すと、意志のない生き物のようにのたうつのだ。

"Blue Room"だな。
と、当時そこでよくかかっていた曲を俺は思い出した。
そしてThe Orbのダブ・サウンドが頭の中で流れるまま、眠った。

3

その女がやってきたのは、8月も終わりかけた頃だった。

院生や助手にしては見た目が若すぎたし、部屋に入ってくる所作にも落ち着きがなく、いかにもこの部屋とそこで行われている作業に慣れていない様子だった。

稀に、情報センターの端末が空いていないので、この研究室のワークステーションで就職活動のエントリーをしようと試みる学生がいたので、その類だと思った。

「これはネットにはつながってないよ」

と俺は両手は台帳に置いたまま、ワークステーションを顎で指して言った。

「いえ、その」

と女は、貸した部屋に傷がついていないか調べる大家のように丹念に研究室を見回していた。その視線はやがて、俺のところにやってきて、止まった。

短髪だが綺麗な髪だった。背は低いが顔も小さいので、それほどアンバランスな印象はしなかった。どちらかというと可愛らしい顔だったが、幼さを感じないのは、薄い青色の隈が、目を深い海に沈んでいるように暗くしているせいだろうか。

「ここにピアノのようなものはないでしょうか?」

「はあ?」

俺は思わずボールペンを手離した。

「どうしてそんな物を探してるんだ?」

「なぜだかわからないんですけど、少し前からどうしても弾きたくなって。ただ、私の寮の部屋にはありませんし、どこかの研究室ならあるかな、と思ったんです……」

全く困った事だ。と俺は思った。理系の研究室にピアノがある筈がない。ちょっと弾いてみたいなら楽器屋に行ってみれば済む話だ。だが、そうしないということは、「ちょっと」どころではなくピアノを弾きたいのかもしれない。

さらに困った事がある。この研究室には確かにピアノがあるのだ。
あの電子部品の山の中に、小型の電子ピアノが転がっているのを見た記憶があった。

俺はその事を彼女に伝えるべきか、迷った。彼女の視線を外して、無意味に台帳に記された自分の文字を追ってみるような事までした。

だが、再び顔を上げた時、彼女は困り顔でじっと俺を見つめていた。俺は負けた。負けることにした。

「玩具みたいのならあるよ、だけど、ちょっと、そのなんだ、『埋もれて』てね。音は出せない」

「そうなんですか!」

彼女の深く沈んだ瞳が、真夏の太陽が照らす水面に浮かび上がろうとしているように見えた。
ガラクタから電子ピアノを引っ張り出して、埃をはらって、
ほら、これだよ、持って帰っていいから気がすんだら返してくれよ。と言うべきだったかもしれない。

しかし、青い光が照らす夜の記憶と、彼女の瞳が俺を少しばかり狂わせていた。

「音を出せるようにしなきゃいけないから、明日もう一度来てくれないか?」

4

その夜、ガラクタの中から、比較的マシなスピーカーと、スタンドを見つけて、電子ピアノにつないだ。演奏する場所を確保するためにガラクタの山を整理するのが一苦労だった。

ひとまず、音が出るようになったので、試しに弾いてみると、安物の電子ピアノ特有の何の風情もない音色が鳴り響いた。
サティでも弾いてみようか、と思ったが、自然に動いた足がホールドペダルがないことに気づいてやめた。まったく無残なステージだった。

俺は灯りを消すと、寝袋にくるまった。
ピアノを置いたことで、俺の寝場所はさらに狭くなり、頭上にはX型のスタンドに載った安物の電子ピアノの背面があった。
何故かはわからないが、それは青い光の中で神々しい存在に見えた。


彼女は翌日の昼過ぎにやってきた。そして、セットアップされたピアノを見ると、わあと小さな歓声をあげた。

「ありがとうございます!」

「ホールドペダルもサスティンペダルもないから、まともな曲は弾けないと思うよ」

と俺は、台帳を見ながら冷たく言った。

「大丈夫です。弾いてみてもいいですか?」

「もちろん。ただ人が来たら、止めてもらうけど」

彼女の邪魔にならないように俺は台帳に目を落とした。

研究室に彼女の弾く旋律が鳴り響いた。普通のクラシックでもジャズでもなかった。バロック様式の曲のようだったが、俺の知っているどの曲でもなかった。と言っても俺が知っているバロックの作曲家はバッハしかいないし、その全てを知っているわけでもない。


30分ほど、演奏は続いた。その間、誰も研究室には来なかった。演奏を終えると、彼女はピアノの前ですうと深く息を吸ったように見えた。そして座ったままこちらを見て言った。

「また来てもいいですか?」

どうやら満足してくれたらしい。

「いいよ、人がいない時ならね」

と答えた。俺は彼女の演奏中、俺は台帳のページをめくって、ピアノの貸出記録を作っていた。腕時計を見て、日付と時刻を書き込む。

「何ていう曲を弾いていたの?」

と俺はわざと事務的な口調で尋ねた。

「即興なんです。ただ、昔の教会音楽で使われていたスケールで…スケールはわかります?」

短調とか長調とか?」

「そうです。さっきのはドリア旋法です。エフ・ドリアン」

俺は、台帳にF Dorianと書き込んだ。

5

それから彼女は定期的にやってきた。不思議とワークステーションの使用者とはかち合わなかった。静かな研究棟にピアノの音が響いているわけだから、苦情が来るのではないかと、俺は思ったが、それもなかった。

彼女はいつも即興の教会音楽を弾いた。彼女がどこでピアノを学んだのか、何故、バロックしか弾かないのか、それはわからなかった。ただ、俺は、彼女の弾いた旋法を記録していった。それはリディアンであったり、フリジアンであったりした。

雨の日だった。彼女はいつものように即興演奏を終えると、俺に言った。

「あなたは何故、ここにいるんですか?」

その日はいつもより優しく、感傷的な旋律であったように思った。

「どういう意味?」

「だってテクニシャン(実験助手)にも見えないし、音楽に詳しすぎますから」

俺は、台帳に目を落として言った。

「生きてれば、色々ある。というのは答えになるかな?」

彼女はピアノの前で言葉の意味についてしばらく考えているようだった。


「知られたくないことは誰にでもある、という意味なら。でも私もピアノを弾くを意味を教えてないからお互い様ですね。」

俺は大げさに肩をすくめて、台帳に戻った。

「私、すごく傷つくことがあったんです。」

彼女は少し大きな声で言った。

「ある人に、もう一生忘れられないぐらい、ひどいことをされて。」

下腹部のあたりに重い感触があった。俺はこの先を聞くべきなのだろうか、これ以上、何かを背負うべきなのか。
彼女がピアノの前で泣き出したとしても、俺には何もできないだろうと思った。
肩に手を置いてやることすらできないのだ。

俺は思い出した。俺には何もない。何もないから、ここにいるのだ。

「でも、生きれてば色々ある。ってことですよね。それも」

彼女は立ち上がった。

「ピアノありがとうございました」

俺は呆然と彼女を見た。少しだけ、目の周りが心持ち赤くなっている気がした。

「どういたしまして」

彼女は黙って頭を下げた。そして研究室のドアを開けて、出ていった。
もう二度と彼女は戻らないだろう、という気がした。
そして、もしそうだとしても、それは悪いことではない、と俺は思った。

「さようなら。またいつか何処かでね」

彼女が出ていった後、俺はそう呟いた。いつものように台帳に時刻を書き込む。そして旋法を聞くのを忘れていたことに気づいた。

6

夏休みが終わろうとしている頃、叔父が久しぶりに研究室にやって来た。
入ってきて一瞬ピアノを見て眉を潜めたが、何も言わなかった。


「叔父さん。いい加減教えて欲しいんですけどね」

俺は黙って事務机に座ってしまった叔父に向かって言った。

「あのバカでかい装置は何なんですか?それと俺がここにいる理由は?」

叔父は顔を上げて、馬鹿げた質問をした学生の為に日頃から用意されている表情を向けた。

「あの装置は、言うなればある特殊な物質の観測装置だ。その観測結果をずっと、24時間吐き出し続けとる。それだけの装置だ」

「それだけ?」

「それだけ」

「その観測結果って奴をあのワークステーションで記録して、それを院生がダウンロードしてるわけですか。それに何か意味があるんですか?」

「だからこう、という意味ではないだろうな。ただ観測結果、我々はストリームと呼んどるが、離散的であることがわかっている。」

「離散的?」

「つまり、何らかの符号化された情報だということだ」

「わからないな」

「符号ということは、何か意味がある『可能性』があるのだ。お前のようなバカに説明してやると、それは宇宙人や、4次元人からのメッセージかもしれんし、何かの物語かもしれん、音楽かもしれん。そこに何か意味がある『可能性』があるなら、それを観測するのが我々の仕事だ。」

「そこに何の意味もないことは考えないんですか?全く無意味な行為をしている可能性だってあるでしょう?」

「ところで、ここで、ピアノを弾いとる女学生がいるそうだが」

それには答えず叔父は言った。やはり知っていたようだ。

「ピアノを弾く女学生もあの装置もどちらも同じようなものだ。ずっとストリームを流し続けておる。お前は記録係だな。院生のワークステーションの使用回数も女学生の演奏回数も黙々と記録しておる。それに意味がないとは考えなかったか?
だが、それでいいのだ。ここはそういう部屋だ。私は何も言わんし、お前はこの部屋にふさわしいことをしたと思っておる」と、叔父はいつもの事務仕事に向き直った。「それからもう一つの質問、何故お前がここにいるのかだが」

俺は顔を上げた。

「知らん」

「はあ?」

「行く所もないし、やることもなさそうだから。連れてきた。それだけだ。ただ、お前も、まだまだストリームの発生源でいる気にはなったろう」

それが生きるということだ、とでも言いたいのだろうか、この偏屈親父は。と、俺は脱力した。

「どのみち死ぬ気はないですよ。どうせ死んだってつまらないだろうし」

叔父はその答えを聞いても、視線は書類から外さず右手を軽く上げた。



その夜、俺は荷物をまとめていた。

俺の頭をぶっ壊したのは上司でもないし、同僚でもない。誰も悪意を持って俺を傷つけようとはしなかった。
ただ、結果として俺は社会的に死んだ。何もなくなった。
それが「産業社会」という獏としたもののせいだと言うなら、ピアノを弾いていた彼女のように誰か特定の人間にひどく傷つけられるよりもマシなことなのかもしれない。

「いや、比較することでもないか」

単に俺たちは生きていただけだ。たまたまけっつまずいて、膝をすりむいて、そして、今も生きている。それで何か過不足があるだろうかとも思う。


俺は、来た時と同じぐらい軽い荷物を持って、研究室を出た。もうここには戻らないつもりだった。

廊下から見た夜の研究室には青い光が溢れていた。
ふと、思いついた。

俺はポケットからボールペンを取り出して、研究室のネームプレートに書き込んだ。

”Blue Roomにようこそ”


明日になれば誰か気づくだろう。




ORB/U.F.ORB

ORB/U.F.ORB

プログラマをクソコードで殴り続けると死ぬ

ここにクソコードがある。

誰が作ったかはわからぬ。それが、どのような経緯でクソコードとなったのか、
あるいは、最初からクソコードであったのか、それらは全てクソコード自身が知るのみである。

ファーストコンタクト

ある日、営業からシステム案件を打診されたので見積もりして欲しい。というメールが来る。
とある企業の既存システムに機能を追加する簡単な案件ですが、なななんとソースや仕様書をご支給いただけます!
と、それはサンタにプレゼントが貰えると信じて疑わぬ子供のような真っ直ぐなメールである。

ソースコードが入った圧縮ファイルを受け取ったプログラマは、早速、コードを読んでみる。

そのシステムが本当にいいコードで書かれているかを判断するには時間がかかるが、
クソコードであるかはおおよそ30分でわかる。

インデントがタブとスペースどちらかに統一されていないとか、フレームワークの誤用があるとか、またはフレームワーク自体が独自のものであったりすれば、じんわりと汗が滲み、異様に長大な関数やファイルがあったり、コピペが横行しているところを発見すればほぼ確実である。

クソコードだ。

プログラマは呟く。その言葉は誰に聞かれることもなく、ただ虚空に響く。


ソースコードに、仕様書などのドキュメントが添えられていたりする。
ほとんどの場合、画面キャプチャに無数の丸番号を貼り付け、これはボタンです。これはテキストボックスです。と書かれた、見ようによっては哲学的なExcel方眼紙ドキュメントや、気の利いたツールを使えば、5秒で吐き出せるような、データベース定義(DDL)をExcel表にしたものである。

それらの文章の体裁がどれほど秀逸であろうと、クソコードを生み出した連中の印象が変わることはない。
コードを見ることができない人間を騙す方法など無数にあるのだ、とただ感じ入るのみである。

さて、クソコードであることを確信したプログラマは、こんなものの面倒を見るなんて冗談じゃないぞと、営業にその事を伝えるが、
「ほうほう、それはそれは」
とこちらの深刻な声色と違って、彼は嬉しそうである。
その時、彼は、受注の確度が高まったことを喜び、継続的な改修業務の受注が見込めそうだと、笑みを浮かべて算盤を弾いているのだ。
悪質なリフォーム業者が床下に無数の換気扇を設置できる家を見つけたような、それは会心の笑みである。

そう、一度、クソコードを見てしまえば、すでにクソコードに関わらないという選択肢はプログラマには残っていない。
それはそういうもので、この国ではいつのまにかプロフェッショナルであるということは、如何なる理不尽にも忍従できるかどうか、ということで判断されるようになってしまっている。

熊を素手で殴る

やがて営業が、受注の成功を告げる。納期はさしあたり2週間といったところです。
営業の秘訣は恋人に接するようにすることですよ。とかつてその営業は飲み会の席で宣ったことがあるが、お前が連れてきたのは誰にも相手にされないドブスだということを彼自身は気にしないし、いずれにせよ彼女と添い遂げるのはプログラマである。

さて、プログラマは不味いプティングをスプーンの先で突くように、気乗りしない表情で、開発環境を整え、クソコードを展開し、追加要望が書かれたExcelシートを漫然と眺めたりする。

不幸なのは、これからの作業が如何なるものになるか、プログラマにはだいたいの見当がついてしまうことだ。

クソコードには独特の匂いがある。コメントなど一切なくとも、そこに無力な兵卒が強大な化け物と戦い、爆発四散したような跡がある。
あるいは迫り来る時間と膨れ上がった仕様との絶望的なせめぎあいが見える。
その戦場の跡であるクソコードは、あたかも枯れ木が点在する荒れ地を思わせる。おそらく地面の下には無数の死体が埋まっているのだろう。

それでも、彼は、開発環境でシステムを動かしながら、コードをいじくって、コードと動作の対応を見たりして、クソコードの、そのカオティックなロジックを自身の感覚に落としこもうとする。

クソコードは、プログラマの体内にじわじわと侵食して、彼の中にあるTDDとかDIとかデザインパターンといったような煌めくようなプログラムパラダイムの美しいものを押しのけ、代わりに居座ろうとする。
まるでコピー&ペーストと、場当たり的にViewに埋め込まれた複雑なロジック、膨れ上がったコントローラー、複雑怪奇なSQLである我々こそが、机上の空論でない、実際に動作する、プログラムの本質であるとばかりに。

あるいはプログラマはそれに抵抗するかもしれない。回帰テストがないのなら、今からテストを書けばいい。それができたらリファクタリングができる、クソコードをもっとまともなコードに変更するのだ、といった具合に。
しかし、その思いは早々に打ち砕かられる。無数の副作用を及ぼす2000行からなる関数のテストをどう書けば良いというのか?
先にリファクタリングする?一箇所でもしくじれば、「以前動いていたものをなんで動かなくするんですか!」という営業の罵声が響くだろう。

やがてプログラマは首を振って、全てを諦めることにする。

クソコードが内包しているメソッドは単純明快だ。とにかくその場しのぎということだ。
自分もそうすれば良い。大きく書き直すのは、リプレース案件が来て充分に人手と時間がとれてからでいい。と。

その様子は、猟銃や罠をしょった若き狩人が、それら全てを投げ打って、素手で熊に殴りかかるようなものだ。
人々はずっとそうしてきたし、これからもそうするのだ。森に残された踏み込まれた足跡をたどり、何もかもをかなぐり捨てて、彼は熊に挑みかかる。

牢獄

最初の改修案件を終えたプログラマは熱いコーヒーを飲みながら一息ついている。
やれやれ、不愉快な仕事も終わった。このクソコードの事は金輪際忘れてしまおう。と彼は口内に広がる心地よい苦味とともに考えている。

しかし、内線電話がかかってきて、営業の弾んだ声が言う。
「今回の案件が好評でしたので、継続的に取引できそうです!」

そして、要望のExcelシートが前回の2倍ほどの長さになってやって来る。
今度は誰がするのだろう?ではない、彼がするのである。なぜなら彼は一度クソコードを制覇したし、他の誰もそんなことをしようと思わないからだ。

クソコードという牢獄に囚われた彼が、解放される日はおそらくやってこない。
クソコードは常にこういった人を探しているし、一度誰かを捕まえることが出来たなら、絶対に逃さないのだ。

囚われ人の黒々とした頭髪は白くなっていくか、抜け落ち、Tシャツからはすえたような匂いが漂い、鼻毛は飛び出てくる。彼の面相は体内を汚水で満たしたように、でっぷりと膨らむ。

死んだ目でキーボードを叩き続ける彼の姿に、何も事情を知らない新入社員が顔をしかめる。
まるで絶望的な塹壕戦を戦う歩兵のようだ。ああはなりたくないものだ。彼はきっとTDDとかDIとかデザインパターンの勉強をしなかったのだろう、と。

しかし、クソコードが注入される前、プログラマの中にあった、理想のパラダイムが、依存と複雑性をできるだけ排すことができた夢のプロセスが、花開く場所がある。

彼はtwitterにクソコードの悪口を書き込み始める。そしてQiitaや自身のブログを開き、そこに最新のテストフレームワークの使い方を、家で使ってみたクールなフレームワークの情報を、あるいはアンチパターンから離脱する冴えたやり方を、書き込む。

それらは元々彼の中にあった煌めくような未練の塊であり、現実とは乖離している。
そして、だからこそ、美しい。

何も知らぬ者がそれらを見れば、なんと恵まれた環境でこの人は働いているのであろう、やはり、世の中には優れた制作会社があるのだ、と思い込むだろう。

そうした情報が煌めく星となって、この業界にまた新たな若者を引きつけるのだ。



星を求めて、彼の会社に入社した社員は、困惑する。

肝心の彼がいないのである。

他のスタッフに聞いてみると、「彼は退職したよ」と言葉少なげに語る。
その様子は、キャリアアップや、東京で消耗したくない、といったような明るい理由で彼が退職したのではない、ということを雄弁に物語っている。

上長がやってきて、新人の席を案内する。
「君にはこのコードと仕事を引き継いでもらいたい。」




ここにクソコードがある。

誰が作ったかはわからぬ。それが、どのような経緯でクソコードとなったのか、
あるいは、最初からクソコードであったのか、それらは全てクソコード自身が知るのみである。


リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

id:JavaBlackさんお勧めのこちらもどうぞ!(なんか絶版っぽいので、中古で購入する場合は状態に注意してください

改訂新版 Cプログラミング診断室

改訂新版 Cプログラミング診断室