読者です 読者をやめる 読者になる 読者になる

megamouthの葬列

長い旅路の終わり

マッド・ワールド

プログラマのための練習曲

先輩がデスクにやってくる。
今年四月に入ったばかりの僕のデスクには椅子が一つしかないので、ディスプレイを見るために、先輩は自然と僕の脇にしゃがまなければならない。
それはまるで、先輩が新米エンジニアである僕に跪いているように見える。

そうして、先輩は組み込んでほしいJavascriptの仕様を遠慮がちに僕に伝える。心なしかその表情は僕の顔色を伺っているようだった。
それでも僕は椅子に座ったままで愛想を言うでもなく、生返事を返しながら淡々と指示を頭に入れる。おそらく顔には何の表情も浮かんでいないだろう。

新人の態度としては、とても横柄に見えるだろうが、僕も最初からこんなふうだったわけではない。

同じ情報工学系の学部を卒業した仲間は皆、大きなベンダーや一般企業の内定を貰っていた。でも、僕は実際にプログラムを書くのが何よりも好きだったし、同期の中でも実際にまともにプログラムを書ける珍しい人間の中でも、とりわけ自分が優秀であった、という自覚があった。
僕は設計や営業や社内政治の苦労を嫌っていたし、大手の研究所に入れるほど優秀でもなかった。
なので、実際にプログラムが書ける、中小のWeb制作会社に入ったというわけだ。

最初の頃は順調そのものだった。内定をとることと同様に、仕事を始めるのに障害になるものは何一つなかった。皆自分に期待しているように思えたし、実際に社長を始めとして上司達のウケも良かった。
ひどい話だが、この会社にまともな新人研修など全くなかったが、僕には問題はなかった。申し訳ないが、最初の1ヶ月でこの会社のエンジニアから教わることは何一つないと思った。

彼らといえば、JavascriptやWebプログラミングの新しい潮流についてまるで関心がなく、古いフレームワークを後生大事にメンテして、くだらない御用聞きに奔走して、毎日残業を繰り返している。
僕はそこに、最新のフレームワークやgitといったようなワークフローを導入して、誰よりもスマートに仕事をすることにした。結果的に僕の仕事は早く、何週間もかかっていたトラブルシューティングも、僕にかかれば一日で終わるといった具合だった。
IT企業は特に中小のそれは過酷な労働条件だと聞いていたけれど、結局のところそんなものはやり方やスキルしだい、なのだと思った。

この会社の人材の入れ替わりは激しい。特に新人は、新卒も中途採用も三ヶ月もたずに辞めていくものが多かった。僕の同期はやたら明るい男だったが、求められる仕事のレベルに追いついていけなくなって、やがて塞ぎ込むようになって、結局消えてしまった。

知らない間に隣の席が内線電話だけを残して空っぽになり、しばらくすると、誰かがそこに座る。半年もすると僕もそういう光景にすっかり慣れてしまったのだった。

何度目かの入れ替えの時、隣の席に中途採用の女性プログラマーが入ってきた。6歳ほど年上という印象だろうか、美人とは言えなかったがなんだか気になる特徴的な顔立ちで、無口だった。挨拶もそこそこに、彼女は停滞しているプロジェクトの要員に組み込まれたようだった。

彼女のプログラムをちらっと見たことがあるが、他のプログラマと同様、凡庸で冗長な書き方であり、まるでプロジェクトを率いている中年のボンクラプログラマが書いたように思えた。僕は彼女が自分のスキルを上回っているわけではないことを知って、安心した。
ただ、少しそこに違和感を感じていたのだが、その時はそれが何かはわからなかった。


ある時、僕は会議室に呼び出されて、そこそこ大きなプロジェクトを任されることになった。フロントエンドも含めて3人月というそのプロジェクトでは、特に見栄えが重視されていて、表側のWebページには派手な演出やSNSとの連携があった。しかもそれらを管理画面で全て制御しなければならない。
この会社には珍しく意欲的なプロジェクトだった。プログラマとしては僕だけが参加することになっていた。

僕はこれを好きにやっていい、ということだと思った。なので、導入するフレームワークの選定やシステムの設計には気合が入った。
僕がサンプルを書いていると、隣の女性プログラマーが、ちらっとそれを見て言った。

「それ、一人でやるの?」
特に関心があるような聞き方でもなかった。そうです。と僕は、振り返るでもなく言った。
「楽にしたほうがいいよ。自分が楽になるように作ったほうが。」
と彼女は忠告めいた事を言った。僕は彼女の顔を見たが、それ以上続けるでもなく彼女は自分の作業に戻ったようだった。

先輩のデザイナーからデザインが上がってきた。本来は派遣のコーダーがHTMLにするのするのだが、僕はそれを断った。gulpも使えない下手なコーディングでプロジェクトを汚されたくない、と思ったからだった。

僕はHTML5の美しいマークアップを作りはじめた。管理画面も表側と同じく美しくコーディングして、CSSも凝った作りにした(もちろんSCSSを使った)

そうして忙しく仕事をしている間にも、関係のないプロジェクトで次々とトラブルが起こっていた。Android4で動かない、レスポンシブにならない。デザイナーがいじったHTMLでJavascriptが動かなくなった。etc

そうした仕事が、何故か僕に割り振られて、僕は少し苛立った。他のプログラマの尻拭いまでしなければならない事に、腹が立ってきたのだ。だけども、それらの仕事を最も早く終えられるのは僕だったので、皆が相談を持ってくるのは自然なことだ、と僕は自分を納得させた。

肝心の僕のプロジェクトは段々遅れてくるようになった。元々のスケジュールが壮大な構想で一杯に詰まっているのに、余計な割り込み仕事をこなさなければならないのだ。帰宅時間が伸びていき、毎日終電近くまで僕は会社にいるようになった。

少しずつ僕から表情が失われていった。それでも相変わらず内線電話が鳴り、聞いたこともない仕事の相談が来る。自分の口調がひどく攻撃的になっていくのがわかった。それでも相手は食い下がって、僕の前に仕事を積んでいくのだ。

殺伐とした空気を感じたのか、隣の女性が言った。
「背負いすぎだよ」
「何がですか?」
僕は、イライラしながら言った。
「まるでこの会社を背負ってるように見えるよ」
実際そうじゃないか。と僕は思った。僕がいなければ、納期の迫ったプロジェクトもまともに納品できない、ひどい現場なのに。
「君がそれをしないといけない義務なんてないんだよ」
彼女の目は少し憐れんでいるように見えた。

ある日、目覚めると出社時刻をとっくに過ぎていた。しまった、と少し思ったが、同時にこれだけやってるのだから、文句を言われる筋合いもないな、と僕は思った。僕は悠々と昼過ぎに出社した。皆がちらっと遅れてきた僕を見たが何も言われなかった。

僕のプロジェクトは完全にアンダースケジュールになりつつあった。例の割り込みの影響の他にもバグがあったり、フレームワークに慣れていないせいで、当初の見込みより時間がかかっていた。僕は割り込みの仕事を断り始めたが、それでも進捗を守りきれない日が続いた。
ある日、徹夜までして遅れを取り戻そうとしたが、それでも進捗遅れを少しマシに出来た程度だった。

「休めないの?」
椅子にもたれて居眠りしかけていた僕に、隣の彼女が言った。
「休めるわけないじゃないですか!」
思いがけず大きな声で僕は答えていた。

上司が奥から眉をひそめるようにこちらを見た。
「ま、私が決めることじゃないんだけどね」
と彼女は大声に怯むでもなく、上司のほうを見ながら呟いた。

納期まで1ヶ月を切っていた。システムは少し形になっていたが、冷静にスケジュールを考えることは、もうできなくなっていた。そろそろテスト工程に入るはずだが、バグは少ないはずだ。だから問題ない。まだやるべきことは沢山ある。Android4のことも考慮しなければならない。例外処理もある、まだまだ沢山あるのだ。


ある日、目覚めると夜になっていた。携帯には沢山着信があった。僕は慌てる、という感情を持てなくなったようだ。折り返して電話する気は起きなかった。
腹が減っていたので、ネットでピザを注文して、撮りためていたアニメを見ながら食べた。会社に行こうと思えば行けるが、なんだかどうでもいいような気がした。
僕がいなければ、あのプロジェクトは進まないだろう、だから何だというのだ。僕だけが悪いわけではない。どうでもいいことだ。


次の日、何食わぬ顔で出社すると、皆が安堵したような顔で僕を見た。だが何も言わなかった。
「おはよう」
と隣の彼女が言った。彼女のディスプレイに僕のプロジェクトが開かれていた。
「少し進めておいたから」
は?と僕は苛立ちながら彼女のコミットを見た。幾つかの処理が追加されていた。それはまるで僕が書いたような「文体」だった。
「わからないところはやらなかったけど」
と彼女は付け加えた。

僕は彼女のコードに感じた違和感がわかったような気がした。ようするに彼女は模倣するのだ。相手に合わせて、同じようなコードを書く。それが彼女の能力だった。
ボンクラが書いたコードならボンクラでもわかるように。僕が書いたコードなら僕が書くように。コードを書くのだ。

僕は唖然とした。
「今日から手伝うから、やってほしいところを言って」
僕はぼそぼそと、とっくに終わっていないといけない箇所を彼女に伝えた。何故かそれを言う時、涙が出そうになった。有難かったのかもしれないし、悔しかったのかもしれない。どちらなのかは自分でもよくわからなかった。

なんとなくこのプロジェクトは彼女が完成させるのだろう、という気がした。
そう考えると息こんでいた僕はひどく子供じみていたように思えた。自分に失望したのかもしれない。あるいはこれが挫折というものかもしれない。
ただ、気は楽になった。その日は、定時に帰って、久しぶりに日のある街の帰宅する人々に紛れることができた。随分久しぶりに日常を味わったように思えた。


しばらくしてプロジェクトは僕には不本意な形だが、完成した。ところどころ非凡なところも見えるが、最初に期待していたような見事なシステムではないように思えた。上司は僕と彼女を労ったが、少しも嬉しくはなかった。
これが自分の実力なのかもしれないな、僕は思った。

これからはどうするか。席に戻った僕は、考えた。独りよがりにならないように、一人で背負い込まないように。仕事を進めるべきなのだろう。
彼女を含めた周りの大人たちのように。

僕は少し安堵していた。そしてなぜだか、それはひどくつまらない生き方のようにも思えるのだった。

SoundCloudという砂漠

むしゃくしゃしてやった

先日、「お前の曲はcoolだ、俺たちがプロモーションしてやる(から金よこせ)」的なスパムメールが来た。
ネットに自分の曲(といっても、もう15年前ぐらいに作った曲ばかりである)を残していた覚えはなかったのだが、
書いてある曲名は確かに私の作った物だった。
不思議に思って、しばらく検索してみると、MySpace(!)に2曲ほど自分の曲がアップされているのを発見した。
どうもMySpace全盛の時代に試しにアップしたのをそのまま忘れてしまったようだ。
おそらく件のスパム業者はこのあたりからクロールして、適当にメールを送ってきたのだろう。

いい機会なので、HDDを掘り起こして、昔作った曲を全てSoundCloudにアップしてみた。何か新着のようなものに掲載されたのかもしれないが、
早速、お知らせアイコンが点灯して、2,3いいネされたり、フォローされたり、スパムコメントがあったりしたが、
起こることと言えばその程度で、しばらく放置していると週の再生数も0になった。

私はうーんと考えこんだ。
実は私のまわりには未だに音楽を作り続けている友人がいて、彼らは軒並みSoundCloudを使っている。
あと、小さなクラブなどで昔ながらのエレクトロニカのライブなどをやっている人と仲良くなったことがあったが、彼も「良かったら聞いてください」とSoundCloudのURLを送ってくれた。

それらの「現役」のSoundCloudの曲達はそれでも再生数が1,000にも及ばず、10~20のいいネがついているぐらいである。

あまり比較対象にならないかもしれないが、このブログだって、少ない時でも一日1,000前後の閲覧数はあるし、Youtubeの弱小チャンネルでも通算して10,000ぐらいの再生数はあるだろう。それと比べると、SoundCloudの再生ボタンを押される数はあまりにも少ない。と感じる。

私は昔、音楽をやっていたのでわかるのだが、楽曲を作る手間や苦労は、ブログの記事を書いたり、適当なYoutube動画を作る比ではない。
まず楽器を弾けなくてはならないし、コードや学理をある程度覚えて、無数のアイデアを試行し、自分のスタイルを築きあげなければならない。

そうした苦労を経て、音楽家というのは曲を作り続けている。ほとんどの場合は、そこに何の報酬もないので、彼らが創作する動機は、いい曲を作りたい、誰かに聴いてもらいたい、という極めて純粋なものになる。

そうした彼らがアップしているSoundCloudのプロモーション能力の低さは驚くばかりだ。そもそもSoundCloudは楽曲のホスティングサイトであって、
プロモーションサイトではない、ということなのかもしれないが、こと創作音楽のプロモーションという意味で言えば、
Youtubeにしろニコニコも大同小異なところがあって、例えば、類まれな名曲をアップしておけば、3ヶ月後には大量再生され、コメントが殺到している、というような展開はほとんど有り得ない。

歌ってみた動画、やボカロ曲はどうなのか、という重要な疑問が生まれると思うが、あれは言わば内輪のハイコンテキスト音楽であって、
すでに一定数のリスナーを抱えている曲や歌い手、ボカロ曲というジャンル、といったコンテキストがあって、その上で何かを作っている状況なので、あくまで内輪の中では
その質に関わらず一定数の注目は集められるのだ。(嘘だと思うのなら、ニコニコの「その他」ランキングでも眺めてみればいいだろう)

もちろんそれらの中にも質の高い動画や、名曲はあるとは思うが、私が問題にしたいのは、それらのコンテキストに載らない創作物が、
SoundCloudで埋もれてしまう現象についてである。
(念のために言っておくが、自分の曲が注目に値する名曲だと言う気はないし、もちろん、このエントリ中に自分のSoundCloudへのリンクを貼る気もない)

ミュージシャンの見栄

ミュージシャンというのは見栄っ張りなところがあって、とかく純粋であろうとするところがある。
例えば、ジャニーズのTOKIOのライブ風景を見て、「演奏がなってない」と毒づいてみたりする。
これは実際、何かの質問サイトに載っていた意見だったのだと思うのだが、実際TOKIOの演奏というのは音楽的に優れているというよりは、
パフォーマンスや演出的に(断トツに)優れているのであり、城島リーダーのギターの「ピッキングハーモニクスが甘い」、とかそういう観点で見るべきものではないのである。

若いミュージシャンはこういったパフォーマンス、例えば氣志團の衣装やスタイルを「邪道」と見なして、「俺は曲で勝負すっから」とか「俺にとって曲って自然に出てくるものだから」などと気取った戯言をわめいて、誰も聴いてくれない不遇を誤魔化したりしているものだが、大人になった私からいわしてもらうと、パフォーマンスも立派に「音楽」の一部なのである。

そもそも誰も聴いてくれない曲に価値がないことぐらい、当のミュージシャンが一番気がついてることではないのか。「音楽」を通して誰かを感動させたり、楽しい気分にさせるのが君たちの仕事であり、それならば手段を選ぶべきではないし、「音」以外の手段をとったミュージシャンのあら捜しをしている場合ではないのである。

もっと言うと、純粋ミュージシャンは「音」に偏重するあまり、いい曲さえ作れば、勝手に人気が出てレコード会社がスカウトに来てくれるみたいな幻想を(さすがに今はもうないかもしれないが)抱いている。だが先程も言った通り、リスナーもそのプロであるスカウトも、みんな君の「音楽」を見ているのであり、君の「音」はその一要素にすぎないということは自覚すべきだろう。

SoundCloudはなぜ砂漠化したか

あまり関係のない話を書いてしまった気がするが、SoundCloudというのは前述した「音楽」で言えば、純然たる「音」しかない世界と言える。
だからこそ、純粋ミュージシャン諸氏に支持されている部分があるのかもしれないが、
メディアに露出しているような著名なミュージシャン(既に自分のコンテキストもそのコンテキストの愛好者たるファンを持っている)ならSoundCloud音楽配信プラットフォームとして有効に機能するだろうが、無名のアマチュアミュージシャンにとっては、学ランを着て録音してもそれがリスナーに伝わることはないわけで、プロモーションにはとかく苦労することになると思う。

結果として、無数のコンテキストを持たないミュージシャンの残骸が砂となってSoundCloudに溢れることになる。

ある意味SoundCloudは、あまりに純粋に音楽を捉えすぎていたのかもしれない。


最後にゴシップニュースを引用する。

block.fm

google神がSoundCloudを買収すれば、新しい動きもあるかもしれない。

だが、今のところSoundCloudは(自分でコンテキストを持たない者や作れない者にとっては)非情な場所である。

「すごいエンジニア」が目指すもの

むしゃくしゃしてやった

crapp.hatenablog.com

を読んだ。id:Cedilleさんは、数少ない私の同好の士(一緒にされても困るだろうし、文章も怨念も私のレベルを遥かに凌駕していると思うが)だと感じている方で、
いつも楽しく読ませていただいている。
で、このエントリを読んだ感想としては、いい経験だと思うし、別にその中で生きていけばそのうち良い事あるよ、としか思わなかったんだけども、そもそも「すごいエンジニア」とはどういう存在なのか、ということを書いておきたくなったので、書く。

すごいエンジニアのイメージ

だいたい前述のエントリに書いてある通りなのだが、この業界で「すごいエンジニア」として見なされる人のイメージを要約すると、こんな感じだと思う。

  • 技術書を自分の給料で買いあさり、勤務時間外に読み漁ったりして、とにかくあらゆる事に詳しい。
  • アンテナを極バリして、githubでstarが100ぐらいしかついていないようなマイナープロダクツでも革新的な要素があれば即checkoutして研究している
  • コードを書くスピードが早い。ソースが綺麗。
  • 単体テストもきちんとして、バグを出さない。
  • 英語もスラスラ読めるし、Readme.mdを英語でスラスラ書く。なんとなく選んだ転職先がシリコンバレーだったりする。
  • わかりやすいドキュメントやコメントを残す。
  • 謙虚だし、勉強会にも顔を出してエンジニア同士の交流もしっかりしている。

こういう完璧超人のようなエンジニアが実際にいるかどうかは知らないが、大抵のエンジニアに「あなたは将来どうなりたいか?」と尋ねたならば、上記のようなイメージに近いものを思い描くと思う。

先に言っておくが、私は上述の条件にはかすりもしないクソ雑魚年収100万代フリーWebエンジニアなので、この先に書くことに、こうした「すごいエンジニア」にたいするやっかみや嫉妬が含まれていることは否定しない。むしろ、そういう文章だと思ってこの先を読んでいただければと思う。

すごいエンジニアとビジネス

いきなり急所をついておきたいので、ビジネスの視点ですごいエンジニアという存在を見てみよう。
儲かっているIT企業が実際に優れたエンジニアを多数抱えていることは事実だが、給与が高く、安定した会社に優れた人材が集まるのは当たり前のことなので、優れたエンジニアが収益をもたらす、と考えるのは早計である。

例えば、かつて半導体メーカーのメモリ部門には工学系の良い大学を出た地頭も能力も高いエンジニアが沢山そろっていたし、彼らがその技量をいかんなく発揮した「職人技」によって、歩留まりの高い製造プロセスを確立したのは歴史的事実である。だが、その後の日本のメモリビジネスの展開は皆さんが知っているとおりだ。(エルピーダメモリもなくなっちゃったよね)

つまり、ビジネスというのは為替やら競争やら資金繰りといった様々な要因が重なるものであって、優れたエンジニアの総力である技術力だけで成功するビジネスは稀有だと言えるだろう。

逆に言えば、優れたエンジニアのいる「ロードマップの先頭、エコシステムの中心」に、自社の技術陣を位置させるよりは、「ロードマップの真ん中、エコシステムの端」に位置させても、IT企業の戦略としては十分であって、後はタイミングや市場の見極めのほうがよほどビジネスに対するインパクトが大きいという考え方も可能である。

ただ、注意しておきたいのは、ITベンチャー特有の考え方として、優れたエンジニアを結集させることが投資家に対するアピールになる(というか投資された金の使い方として正しいと見なされる)という点がある。
なので特にベンチャーにおいて、優れたエンジニアが集まっている状況というのは、彼らが実際に収益を生むことを期待されているというよりは、ベンチャービジネスを腐れプログラマに汚染されない為の保険のような側面があるのかもしれない。

私の意見で言うと、どうせ3年後にはどこかへ行ってしまう優れたエンジニアを集めてレアル・マドリーのような銀河系軍団を作るより、メンターとして優秀な人物に権限を与えて、現場の人材育成を含めた開発現場の生産性改善サイクルを確立させるほうが、ビジネスとしてはよほど安定すると思うのだが、まあそういう時代ではない、ということなのかもしれない。

すごいエンジニアの夢

次に、すごいエンジニアはそのキャリアの中でどこに向かっているのか、ということを考えておきたい。(ちなみに私は10年前にキャリアを途切れさせたゾンビエンジニアなので、これらのことにあまり興味がない)

俗な話で言えば、彼らも高い給料を貰って、都内のタワーマンションに住みたいと思っているし、若い美人の女性と結婚して、子供を5人ぐらい作りたいとは思っている。だが、彼らにとってそれは「好き」なことを一生懸命やった結果として、そうなりゃいいな、という虫のいい考え方の一つであって、一般の人間が考えているほどは切実な目標ではない(なので彼らはいつまでたっても独身のままである)

そういったある種の無欲の結果として、彼らに与えられるのは比較的にそこそこの給与(と言ってもそれは、新人の素人同然のプログラマをせっせとCOBOLの現場に売りつける零細SIerの経営者のそれに遠く及ばない)と、同じエンジニアに尊敬されるようなポジションといった程度のものにすぎなくなってしまう。

にも関わらず、なぜ彼らが不断の努力を惜しまないのかと言えば、彼らの中に

思い描いたシステムを最高の方法で、最高の品質で好きなように作れるようになりたい。

という普遍的な価値観があるからだと私は考えている。

彼らの努力はつまるところ、そこに結集するのであり、非情なビジネスの世界で汗をかいている人間からすれば、そのオナニーじみた夢のために何でそんな苦労を、と思えるかもしれないが、エンジニア(特にプログラマ)という生き物は「好き」というところから出発して、そこから一生出てこない人間なのだと考えれば、彼らの「夢」がその程度のものであっても、それほど不思議なことではないのである。

世界を変えるすごいエンジニア

さらにすごいプログラマはもっと大きく「自分の力で世界を変えたい」と考えている場合もある。

総じて彼らはジョブスが大好きだし、Apple製品を愛用していたりもするのだが、では彼らにジョブスがガレージの外でやったこと、外部から優秀な経営者を招いたり、それにクーデーターを起こしてみたり、部下の努力を平然と踏みにじったりする覚悟があるのかというと、実はない。

これもまたエンジニアの虫のいい「夢」の一つであって、純粋に技術を突き詰めていけば世界は変えられるのだ、という無邪気な幻想がそこにある。

重要なことは技術だけで世界や人々を救うことは、ほとんど有り得ないということだ。
ジョブスのような狂人が引き起こしたレアケースを普遍的な事象として語るべきではないのである。

結論すると「好き」でやってることだけでは世界を変えられないのだとも言える。なので、彼らは一生経営者から食い物にされるし、その膨大な努力は、彼ら自身の純粋な「夢」の他には、せいぜいが彼らが一生「好き」なことで食っていくことに役立つ程度にしか使われることはない。




以上のように、「すごいエンジニア」もそうなりたいエンジニアも(劣等感を感じている私も)なんとも不毛な努力をしているように感じる。

同時に、毎日毎日、余計なことを考える必要もなく、「技術」というものだけを追求すれば良い、我々のようなエンジニアはひどく「純粋」な世界に生きているとも思えてくる。

私のように歳を食った人間ならわかると思うのだが、このくだらないまでに複雑な世の中で生きていく中で、この「純粋」で「シンプル」に生きることは、それはそれで何よりも貴重なことなのかもしれない。


エンジニアとして生きるということは「シンプル」に生きるということなのだ。そう考えてみると少しは救いがあるというものだ。

Books&Appsに寄稿させていただきました。あと、今年の懺悔

定点

Books&Appsに寄稿させていただきました

どういう成り行きによるものか、見当もつきませんが、Books&Appsの安達様にお声がけいただき、この度、拙文を寄稿させていただきました。

blog.tinect.jp

不倒城のしんざき様や、シロクマの屑籠のシロクマことid:p_shirokuma様も寄稿されているメディアに執筆できることは、ぽっと出の私には光栄であるのと同時に、プレッシャーもそれなりにあり、当ブログとの差別化も含めて、正直どういうスタンスで書くのがいいのかな、と模索している段階ですが、
「ブログで書いてる感じで大丈夫ですよー」と軽い感じで言われたので、まあ、こんな感じで大丈夫なんだと思いますです。うん。

とりあえず増田以外(え?)の発表の場を与えてくださったBooks&Apps御中と安達様には感謝することしきりです。この場を借りて改めて御礼申し上げます。

今年の懺悔

なんか懺悔といいつつ、あとがきめいた事を書くのが恒例になっていますが、
だいたい今年の当ブログの流れを書くと


という感じです。

ブログの更新が増えた理由がtwitterでブロックされたから、というのが、まずひどいんですが、(ちなみにこの事については未だに怒っていて、新年会の誘いも蹴ってやりました。ええ。)怪我の巧妙というか、こうしてブログという奇妙なコミュニケーションの場が得られたことは僥倖であったと思います。

ブログをやっていく上で、今年一番大きかったのは、やはりBuzzったことなんですが(お陰でアクセス数は平均して20倍ぐらいになりました)某知り合いの青年(元ヤン)に
そもそもmegamouthさんはエンターティナーではないですよね?」と元も子もない事を言われてしまい、調子に乗らずにすんだのも良かったと思います。

かといって、誰も読まねえだろーと無責任にエントリに怨念を込めるのも、なんかこれだけ見られていると恥ずかしくなっちゃって、炎上上等!な感じのブロガーのお歴々はすげえな、と思うと同時に、私から怨念を取ったら何が残るというのか、という相反もあって、最近はもう考えるのをやめた、という所があります。

多分、書いているうちに中道というか、それなりの道が見つかるだろうと思いますので、これからも、あまり難しいことは考えずに書きたいことを書きたいと思います。


それでは最後に、今年、当ブログを見てくださった方々ありがとうございました。
皆さまよいお年を。
来年もどうぞよろしくお願い致します。


(と言いつつ、あと1回ぐらいなんか書くかもしれません)

プログラマの美徳

文芸

これの続き




午前2時に目が覚めた。確か悪夢を見ていたような気がする。
目を開けると、寝室の壁中に文字が浮かんでは消える幻が見えた。
僕は特に驚くでもなく、ベッドに身を横たえたまま文字に目を凝らす。
漢字ともひらがなともとれない文字は、全く読み取れず。やがて文字は消えてしまった。

喉が渇いていた。僕はキッチンに向かうために寝室のドアを開いた。

真っ暗なリビングで、液晶のバックライトが彼女の顔を浮かび上がらせている。ソファに座った彼女がノートパソコンを膝に置いてキーボードを叩いていた。

僕は冷蔵庫からミネラルウォーターのペットボトルを取り出すと、歩きながら何気なしに彼女のディスプレイを覗いた。
真っ黒な背景に、英文が周期的に並んでいて、彼女のキーボードの操作とともに、英文が瞬くように上下する。

明らかにプログラムだ。それも僕が書いたものだ。と直感した。


「プログラムがわかるのか」

僕は驚いて言った。彼女はこちらを一瞥するでもなくディスプレイを見ている。

「内容まではわからないわ。ただ、あんたがどういう人間なのかはわかる」

と彼女は言った。僕は少し馬鹿にするような口調で言った。

「じゃあ、僕はどういう人間なんだ?」

「傲慢。ただひたすらに。」

僕はミネラルウォーターをごくりと飲んで、辛うじて声を出して言った。

プログラマの美徳だよ」

「傲慢、無精、短気。でもあなたは無精でも短気でもないみたいね。」

と淀みなく彼女が答えたので、僕は狼狽する。

「才能がない、とは言わないわ。でも一人で仕事できるほどじゃない」

「そうボスに報告するのか?」

「まあね。遅れの原因は能力不足、とは言うかもね」

僕は憮然とした。

「あの値段でシステムを書く人間が他にいればいいけど」

反射的に皮肉が出た。自分が感情的になっている、とその時気づいた。
やっと彼女が顔を上げた。そして不思議そうに寝起きの僕の顔をまじまじと見た。

「なんだか不服そうね」

僕が黙っていると、彼女は気が知れないというようにかぶりを振ると呆れたように言った。

「あんた達って、いつもそうよね。じゃあ何?こいつは怠けていたので仕事が遅れています。と報告したほうがいいっていうの?」

「そういうわけじゃない」

僕は下を向く。

「…でも能力がない、と言われるのはもっと辛いんだ」

彼女があまりにも図星をつくので、怒りはどこかに行ってしまって、ただ素直な気持ちになっていた。
その時の僕は彼女に慰めてほしい、とさえ思っていたかもしれない。

「そういう所がわからないのよ」

と彼女は言った。

「あんたたちのそういう傲慢さがね。全力で頑張ったけど間に合いませんでした。でいいじゃない。それで丸く収まるのに、本気でやってないからとか、俺はこんなもんじゃない、って必死に言いはるの」

「誰もあなたに完全は求めてない。ただ人間として扱っているだけ。でも、それが悪いことのように言うんだから、私にはその気持ちがわからない」

僕には返す言葉がなかった。

汎用機とその風景

プログラマのための練習曲

マウント

1999年頃だったと思うが、小学校からの幼馴染と会う機会があった。

その頃、私はまだ大学生で、幼馴染は高校を卒業して、なんとか情報サービス、という名前のIT系の会社に就職していた。
思い出話に花を咲かせた後、お互いの近況に話が及んだ。
私はいち早く「社会人」になった幼馴染の世界がどういうものか知りたかったので、早速、仕事について尋ねた。

「一応、IT系やけどな」

と、なぜかその時、彼は顔を曇らせた。

「やっとるのは『マウント』や」

マウント?私にはさっぱり意味がわからなかった。
幼馴染の顔からはそれ以上聞いてくれるな、という様子が見て取れたが、私の興味のほうが勝った。
私があまりにしつこく『マウント』について尋ねるので、根負けした彼は一から説明してくれることになった。

「毎日セキュリティゲートを通って常駐先の建物に入るんや」

「厳重やな」

「なんせその建物全体がでかいコンピュータールームみたいなもんやからな。
そんで、俺のいる部屋にはテープが山ほど積まれとってな。真ん中にテープを入れる機械があるんや」

ほう。と私はさらに興味を持った。大型のコンピューターに磁気テープ装置というものがあるということは知っていたが、実物を見たことはなかった。

「そんで、テープの機械に小さなLCDパネルがある。そこに"mount 005"とかいう表示が出るんや」

「ほう」

「そしたら005ってラベルがついてあるテープを探してきて、テープを入れる。そしたらテープ装置がそのテープを読み込み始める」

「うんうん」

「しばらくしたら、テープがイジェクトされて、今度は"mount 131"とか出るんや」

「…?」

「そしたら005のテープを戻して、131のテープを入れる。これが『マウント』や。」

「それだけ?」

「それだけや。一日中これをやっとる。」

私は絶句するしかなかった。そんな作業、ロボットでも出来るではないか。

「ああ実際そうやで。俺のいる部屋の上の階ではロボットがそれやっとるらしいわ」

と幼馴染は悲しそうな顔をした。

彼が黙っている間、私は腕を組んで考え込んだ。そもそもテープを入れ替える必要があるのか、と思った。大容量のHDDを沢山繋いで、そこに全てのデータを入れれば済む話なのではないか、と。

「知らんよ。俺は言われたことをやっとるだけやからな」

その疑問を口にした私に、彼は不機嫌そうに返答した。



1年後、彼は『マウント』の仕事から解放されたと嬉しそうに電話してきた。今の彼は端末(ターミナル)をあてがわれ『オペレーター』になったという。

「どんな仕事なんや?」

懲りずに私は尋ねた。

「手順書っちゅう、でかいバインダーに綴じられた紙の束があってな。そこに書いてあるようにキーを打つんや」

「そんで?」

「それで、端末に手順書どおりの画面が表示されたかをチェックする。合ってたら、次に進む。これを最後までやるんや。」

「もし、違う画面表示になったらどうするんや?」

「すぐに、内線で違う部署の人に電話するんや」

「ふむ」

「後はその人がなんか端末いじってなんとかするみたいやな。俺にはわからんけど」

「そうか…」

なんだか、『マウント』の頃とそう変わらない気がしたが、それでもキーボードを叩けるだけマシなのかもしれない。
心なしか彼の声も弾んでいるような気がした。


数年後、風の噂で、その幼馴染は会社を辞めたと聞いた。詳しい事情は知らないが、無理はないと思う。

VisualBasic

大学を中退した私は、小さなWeb制作会社に転がり込んでいた。
PerlCGIを書いていた私に社長が言った。

VBVisualBasic)できるか?」

「BASICはやってましたけど。MSXで。」

「そうか」

どうもWebの仕事が切れたらしい。気がつくと私は社長に連れられ、ある大手企業の子会社の会議室に座っていた。

「ずいぶん若いね。」

出てきたシステム部の部長が、私を見るなり言った。部長は仕事の内容を大まかに説明した。

1ヶ月ほど常駐して、Oracleと接続するVisualBasicアプリの機能拡張をして欲しいということだった。

「経験は、『オープン系』だけかな?」

と部長は言った。私はその時初めて『オープン系』という言葉を聞いたので、何とも答えられなかった。

「ええ、そうなります」

代わりに社長が答えた。

「まあ、SQLがわかるならなんとかなるでしょう」

と部長は笑みを浮かべた。


帰り道、私は社長に尋ねた。

「オープン系って、オープンソースのことですか?VBOracleも別にオープンソースじゃないですよね?」

「違うと思うけど、俺もようわからん。VBOracleJavaも『オープン系』って言いよるな。あの時代の人は。」

と社長は言った。

その仕事で、私は生まれて初めてVBプログラムを触った。大丈夫だろうか、内心は思っていたが、中身を見て拍子抜けした。

そのVisualBasicアプリでやってることは、Oracleに接続してSQLを文字列結合で生成して投げ、返ってきた内容をそのままGUIに表示しているだけなのだ。

本当にSQLがわかれば、なんとかなる仕事だった。若い私はVBプログラミングにもその会社にも1日で慣れてしまった。



ある時、オフィスの片隅に冷蔵庫を横倒しにしたぐらいの大きさのコンピューターがあることに気づいた。

「あれは何ですか?」

親しくなった社員の人に尋ねると

オフコンだよ」

と教えてくれた。オフコン(オフィスコンピューターの略)とは小さな汎用機のことで、つまりは、PCの先祖にあたるコンピューターのことである。

そのオフコンにはオレンジ色の文字が表示されるディスプレイの端末がついていて、たまに総務の人が触っていた。

「給与計算に使ってるらしいよ」

と社員の人は言った。


時々、違う階にいるおじさんの社員がオフコンの端末を、大きなバインダーを片手に操作するのを見た。

なんとなく、その様子を見ていたが、おじさんは特に考えるでもなく、機械的に端末を操作していて、一定の手順を終えると、すぐに帰っていった。


それはまるで、水車小屋の番人が、とりたてた感情を浮かべるでもなく羽根板の手入れをしているように見えた。

メインフレーム


昨日の夜。暇なのでなんとなくメインフレームについて調べていた。
TSO、CICS、JCL。『オープン系』の我々には想像もつかないエキゾチックな概念と単語が並ぶ楽しいサイトを見つけた。

www.arteceed.net

そこにこんな記述があった。

メインフレームコンピュータはシステム規模が大きいため、一人で仕事をする事はできません。
業務によっては印刷物をお客様に郵送するために、毎日葉書を圧着しては郵便局に送る仕事をされている方もおられます
これらの仕事に従事されている方々はメインフレームに触れることはありません。
しかし、これらの方々があってこそのメインフレームコンピュータシステムである事を忘れないようにしたいです

なるほどシステムか。

かつては人もコンピューターとともにシステムを構成していたのだ。

今もそうかもしれないが、2016年の『オープン系』プログラマの私にとって、それは良くも悪くも遠い風景のように思えるのだった。

沈黙のプログラマ

プログラマのための練習曲

プログラマと言えば寡黙、というイメージがある。

実際のところ、彼らは寡黙というよりはプログラム以外の話をするのが苦手なだけで、専門分野について話を始めると、こちらが驚くほど饒舌であったりもするものだが、アルゴリズムの計算量の話をしない普通の人間にとっては、無口な人に見えてしまうのも無理はない。

また、彼らは作業中に話しかけられることを嫌う。プログラムという作業は集中を要する仕事であって、その最中に電話や会話で作業が途切れると集中が切れてしまうからだ。作業中のプログラマに簡単な用事を口頭で伝えようとして露骨に不快な顔をされた経験のある方も多いと思うが、そのへんの自制心のなさもプログラマの特徴であるので、プログラマとはとかくコミュニケーションを取りにくいという印象がある。

しかし、システム構築においては、このコミュニケーションの不足が致命的な事態を招くことがある。


知り合い伝手で、その仕事の話が来たのは5月の中頃で、内容は、週に2,3回出社して、現地で構築されているPHPJavascriptで作られたシステムのテスト、バグフィクスを行う、というものだった。報酬は安かったが、内容としては楽な部類に入るし、その時期、他にめぼしい仕事もなかったので、私はそのプロジェクトに臨時に参加することになった。

その会社は建設工事の施工管理を行う会社で、工程ごとの事務作業を効率化するシステムを自社内で構築していたのだが、プロジェクトのメンバーは人材派遣会社から来たという常駐の中年プログラマ一人だけで、ディレクターと言うか、制作管理を行っているのが、この会社の事務部門の課長だった。
彼はシステムについて特に専門的な知識を有しているわけではなかったので、ようするにプログラマーと素人のクライアント二人だけ、という体制でシステム構築を行なっていたわけだ。ある意味アジャイルである。

納期は遅延気味で、というより、はっきりとは言われなかったが、年度末が当初の納期だったのに違いない。5月中旬の現在は、とっくに納期が過ぎている状態で、事務部門の課長は、進捗遅れの理由すらつかめないようで、すっかり憔悴していた。

プログラマの隣の席をあてがわれた私は、早速、現場の先輩である彼に慇懃に挨拶した。彼はこちらを横目でちらりと見ると、「ふん」と鼻を鳴らして、キーボードを叩き続けた。
サポートとして雇われたフリーランスの私のことを特にありがたいとも思っていない様子だった。事前に課長から「彼は(有名なSIer)の出身なのでね」と半ば誇らしげに言われたことを思い出した。

こういう対応には慣れているので、テストサーバーのアカウントや、実行環境など、必要最低限の情報を彼からメールで聞き出すと、さっそくシステムを動かしてみた。とは言っても、仕様がわからないので、何が正しい動作なのかよくわからない。私が困惑していると、「ふん」とプログラマが分厚い紙の束を差し出した。

システムの仕様書だった。Excel方眼紙で作られたと思しきその仕様書は、大手SIer出身の彼らしく、完璧に作られていて、最初に改版履歴のページがあり、システムの各画面にはIDが振られ、Excelアートで書かれたワイヤーフレームの下にはその画面でのUI動作がシステム屋文体で記述されていた。
さらにすごいのは、ご丁寧にもページの右上隅に各担当者(といっても、そのプログラマと課長だけなのだが)の承認の判子を押すスペースが設けられており、全ページに渡ってきちんと2つの判が押されているのだった。

私は少し辟易しながらも、仕様書を見ながらテストを始めた。

どうも課長とプログラマはかれこれ1年近くこのシステムを構築し続けているらしい、ということがわかってきた。PHPのほうはCakePHPフレームワークを使った無難な作りだったが、フロントエンドは、高価な商用Javascript UIフレームワークを使っていて、まるでPCのデスクトップのようにブラウザの画面にアイコンが並んでおり、それをダブルクリックすると、その機能のウィンドウが開く、というような操作感を実現していた。ご丁寧にタスクバーまで実装してあった。

正直なところ、実現すべき要件と比較して、過大なUIだし、もっと言えば、ブラウザの中にPCのようなデスクトップがあるというのは、まるでリモートデスクトップのようで、あまり使いやすそうなUIとは思えなかったが、プログラマはそれを気に入っているらしく、この段階で助言や文句を言ってもしようがないので、私は黙々とテストを行った。

バグをいくつか見つけた。
本来はバグフィクスも私の仕事なのだが、一度私がソースのレポジトリにコミットしようするとプログラマが露骨に不機嫌になったので、面倒くさくなった私は、明らかなケアレスミスの場合のみ、メールで差分パッチを送るぐらいにして、あとは、なんとなく彼が気に入りそうな書式でテスト仕様書とテストマトリックスをそれっぽく自作してみたり、バグレポートを完全な悪ノリで無意味にExcel方眼紙で作って彼にメールしたりした。


1ヶ月ほどたつと、システムのバグもあらかた無くなってきたように思えた。私が課長にそう報告すると、一刻も早くシステムをリリースしていたがっていた課長は、すぐに現場のスタッフにシステムを紹介する説明会をセッティングし始めた。

プログラマは、よくわからない理由をつけて、説明会を行うことに最後まで難色を示していたが、「かれこれ1年もこのシステムを作ってもらってるんですよ。さすがに成果を見せんといかんのです」と課長が焦燥に駆られた表情を浮かべて諭すと、渋々了承したようだった。


かくして、広い会議室に現場のスタッフが集まり、工程管理システムのお披露目が始まった。
私も発表側の末席に座り、PCとプロジェクタの接続などを手伝った。

「かなりの難産となりましたが、ようやく工程管理システムのベータ版が完成いたしました。ここで、現場の皆さんに操作方法などをレクチャーさせていただきたいと思います」

マイクを持った課長が厳かに宣言する。次にマイクを渡されたプログラマが仕様書をめくりながら、プロジェクターに実際の画面を映し出しながら説明を始めた。

スティーブ・ジョブスiPhoneのプレゼンを100点とするなら、この発表は0点かそれに近いものだった。何故なら、彼はシステムの利点や利用シーンごとの操作方法といった一般的なプレゼン手法を全くとらず、仕様書に出てくる順にデスクトップアプリ風の画面を開き、そこにどのような機能があるかをボソボソと順繰りに説明していったのである。

聞いている現場のスタッフは、明らかにざわつきはじめていた。一体こいつは何の話をしているのだ。という表情がありありと見えた。

長い説明が終わって、マイクを渡された課長が言った「何か質問は?」

次々と手があがった。実際の工程管理のこういうケースではどうすれば良いのか?具体的なシステムの利用法についての質問が矢次早にだされる。

その度にプログラマはシステムの難解なインターフェースを操り、その処理を行ってみせた。

聴衆がさらにざわつきはじめた。特に、ある申請をするにはどうすればいいか、に対する答えとして、プログラマが3種類もの画面を行き来し始めた時には、怒りとも悲鳴とも取れぬ不穏な空気が会議室に広がった。

最後に立ち上がった聴衆は明らかに怒っていた。

「工程管理システムが必要だ、そういう話は散々、課長のほうから出ていたと思うんですよ。制作に入って1年ちょっとですか。先ほど見せていただいて。確かに、頑張って作っていただいたとは思うんですが、現場の人間として言わせてもらうと、こんな面倒で難しい作業を我々が実際にできるのか、もっと言えば今のようにExcelに記入して提出するのに比べて、事務方さん含めて、どこが楽になって便利になったのか、さっぱり私にはわからないんですよ」

課長は下を向いていた。私は隣で彼の表情を伺ったが、諦め以外のそれは読み取れなかった。あるいは彼はこうなることを予見していたのかもしれない。

マイクを持ったプログラマはそれでも「データベースに集約する利点」であるとか「このような仕様を統一的に扱うためにはUIとしてこうならざるを得ない」ようなことを、難解なシステム用語を並べて説得しようと試みていたが、私が見たところ、それが成功するようにはとても思えなかった。


紛糾した説明会がお開きとなり、数日後、私の契約も終了することとなった。
課長は「ありがとう、あのシステムも一区切りついたからね。もう少しだよ」と努めて明るく言った。説明会の様子からはとてもそうは思えなかったが、私にはかける言葉が見つからなかった。

最後にオフィスを出る時に振り返ると、あいかわらずプログラマは無言でキーボードを叩き続け、課長はそれに何の関心も払わず別の事務作業に没頭している。私が来る前の光景と、それは寸分違わないように見えた。そこはまるで小さなSIerで、一人のプログラマの王国だった。

彼らはこのままずっと、まともなコミュニケーションもとらずに、仕様書修正や、修正報告書のやり取りだけでシステム構築を続けるのだろうか。


現場のスタッフが改善要望書をExcel形式で彼らに提出できればいいが、と私は思うしかなかった。