なぜプログラマになったかについて

過労で休日をとっていて、「そもそも何で俺はプログラマなどをやっているのだろう」と思った。

中学で最初に関心を持った段階では、コンピュータというものは、単なる手段だった。我が親族の借金は莫大で、片親の母も難病を抱えていつ死ぬかわからない。何かが起こって突然路頭に迷っても生きていくにはどうするか、ということについて考えていたところ、コンピュータとインターネットに行き着いた。アラン・ケイがマクルーハンから援用した「人間を拡張するテクノロジーとしてのパーソナル・コンピュータ」というビジョンには非常に共感できたし、モバイル通信が誰にでも使えるようになれば、人間関係をたどって仕事をもらったりといった新しいライフスタイルが可能になるだろう。

当時、コンピュータに関心を持つということは、コンピュータ「技術」に関心を持つということと等しかった。Linux、TCP/IP、C言語、当時最先端のJavaScriptなどなど書店で立ち読みをして自分なりのコンピュータのアウトラインを描いていった。そのまま、高校大学と情報系に進み、最終的にはつまらなくなった。

大学で、現在も理系の人間には奇妙な魅力を醸し出す複雑系科学、特に2006年当時最初の解説書が出た複雑ネットワーク分野に関心を持ち、そのような研究室に顔を出していた。そのノリで、当時存在したmixiという最先端のソーシャル・ネットワーキング・サービスでべき乗則のオフ会に顔を出したところ、いわゆる情報系でない人間がたくさんいた。そこで教えてもらったのが、主にルーマンを中心とした社会学である。

まず、中野ブロードウェイの本屋で東浩紀「存在論的、郵便的」マクルーハン「マクルーハン理論」馬場靖雄「ルーマンの社会理論」を購入して、いろいろ深めていった。当時は国際大学グローバル・コミュニケーション・センターでisedもやっていたし、InterCommunicationもまだあったので、見取り図を見出すのは早かった。特に、文系の理論に圧倒的な精緻さと説明力があるということを知った時、完全に関心は文系にシフトしていった。

はっきり言ってコンピュータに飽きていた。大学で情報通信工学実験などという必修科目があり、それはレポートを1つ遅らせた段階で留年になるのだが、レポートの提出日が過ぎていくのをボーっとしながら待って、数日間放心状態になった後に同じ大学の人間コミュニケーション学科に編入学した。社会学への関心は既に行き着くところに行き着いた人間の終着駅の一つである、エスノメソドロジーに到達した。

人間コミュニケーション学科ではいろいろ雑に過ごしていた。当時拡張現実感技術を扱った「電脳コイル」というアニメが流行しており、ちょうど触覚ARに関する研究室ができたのでそこに出入りしたりしていた。雑だったのであまり覚えていない。夜学だったので、夕方まで寝て大学に行き深夜まで酒を飲んでいた気がする。

就職活動の時期が来たとき、クソのような事実に気づいた。社会学は、何の役にも立たないのだ。むしろ、俺の時流に反して社会学よりプログラムを書ける人間の方が優遇されるらしい。10社くらい受けて1社最終面接までいって雑過ぎて落ちたところで、エスノメソドロジーをやっている教授の授業に潜った。大学院で聖典である「Studies in Ethnomethodology」を購読して議論をしたあと、就職活動をやめて大学院に行った。

大学院では、高度な理論的考察とともに、テクノロジーが利用される場面に社会学的分析を与えるということを中心としていた。私はなぜか人の言うことを聞けないので、自分なりにどのようなテクノロジーを使うか考えたところ、まだ熱の冷めていないARや位置情報技術に焦点を当てた。通常、研究室では「科研費」というものがあり、科研費の使い道に沿って研究をすると捗るのだが、それに乗ることをしなかったのでダメ確定である。

修士の2年間では、半分社会学をやって半分ARなどの実験システムに関するコードを書くというサイクルでやっていた。また就職活動の時期が来た。リーマン・ショックが過ぎ、文系修士にはろくでもない選択しかなかった。チームラボというキラキラした会社一社だけを受けたのだが、社長の猪子さんに「本質的には問題ないんだけど〜」と何度も言われたのを覚えている。猪子さんは通ったが最後の謎の面接で落ちた。つまり、具体的には問題があるのだ。

そして、気がついたら技術力のあるとされるエンジニアになっていた。俺にはそのような根拠は一切ない。修士時代に手嶋屋というオープンソースのソーシャル・ネットワーキング・サービスを作っている会社でエンジニアのバイトをしていたが、どうもぱっとしなかった。gitとRedmine、PHPをCのソースから読むことと、MVCフレームワークを理解した程度である。また、個人でOpenCVを使った画像認識プログラムとARToolKitを使ったテーブルトップに収まる全方位映像プラットフォームを作った程度である。

画像認識やARができると技術があるという印象が世の中にはあるが、全くそういうことはない。OpenCVの仕様を見ればわかるが、あれはメモリが自動で解放されるC++としては素晴らしい仕様になっている。C++11では標準でスマートポインタがついたので、アレもなかなか良い。つまりメモリ管理を考えなくても、馬鹿でもパーツを組み合わせればコードが書けるようなことしかしていない。また、ARに関しても、インターネットでドイツ人の卒業研究の成果を見つけて、オブジェクト指向を徹底させたプラットフォームを使えたおかげで、簡単に継承して機能を追加できただけで、あとは見せ方の勝負だった。俺が今客観的に見たら、技術力の欠片も感じないと評するだろう。

まあともかく、なぜか技術力のある人間と看做された俺は会社でコードを書いている。正直言って向いていないと感じる。俺は今でもプログラミング言語より自然言語の方が圧倒的に記述力が高いと信じているし、プログラミング言語は窮屈で仕方がない。その理由として、自分の技術力のなさが筆頭に挙げられる。最近感じるのが、俺はどちらかというとCなどの硬い言語が好きで、動的型付け言語は苦手であるということだ。動的型付け言語を書くと、自分の能力というかセンスの無さを非常に痛感する。とどのつまりロジックの中で何が起きているのか直観できておらず、構造を破壊してしまうのだ。俺のような人間がプログラミング言語を書くべきではないと常に思う。

最近はオープンデータなどの絡みでエンジニアだというだけで凄いという視線を向ける人をたくさん見るが、日本語という凄まじい記述力のある媒体を使いこなしている人間が何故プログラミング言語を特権視するのか理解できない。俺はプログラミング言語を書くのは単に人生の過程であると感じているが、それがいつまで続くかわからない。