――ITエンジニアになったきっかけを教えてください。
庄司 プログラマーになる前は、契約社員で4年ほどパソコンのサポートをやっていました。中小企業のヘルプデスク業務を支援したり、プロバイダーの加入者をサポートしたり、仕事は多岐にわたっていました。インターネットが出たての頃だったので、接続方法が分からないお客さんの自宅に行って使い方を教えてあげることもありました。
ちょうど2000年問題が終わって、サポートに燃え尽きてしまったんです。もっとクリエイティブな仕事をしたいと思って、それでプログラマーに転向しました。
――2000年問題のときはどのようなサポート業務を?
庄司 2000年問題のときは、駅の端末を担当していました。駅の端末は2000年問題に対応していなかったので、これを全部入れ替えなければならなかったんです。毎日、毎日、各駅をまわって端末を入れ替えて、セットアップするという作業。宇都宮の方まで出向いて作業をしていたときにはさすがに遅くなり、帰れなくなりかけたこともありました。駅員の方の好意で、新幹線で帰らせてもらったんですけどね(笑)
本当に休日なく、いろいろな所を転々としてセットアップを繰り返していたので、正直、これを一生続けていくことはできないな、と。2000年問題を乗り越えてサポート業務も落ち着いてきたこともあって、プログラミングをできる会社に移りました。
――クリエイティブな仕事として、なぜプログラマーを選ばれたんですか?
庄司 サポートをしていたときのお客さんは、コンピュータは初心者だけど、自分のホームページを開きたいという人が多くいました。そういう人にHTMLや簡単なJavaScriptを教えたりもしていて、楽しかった。本格的にやってみたい、と思っていたんです。
――多少はプログラミングの経験があったんですね。
庄司 いや、いや、本当に初歩の初歩。かじったぐらい。
――だとすると、プログラマーに転向されたものの、苦労があったんじゃないですか?
庄司 プログラミングを始めたのは25歳から。嘘ではなく、本当に泣きながら覚えました(笑) Linuxも使ったことがなかったどころか、コマンドプロンプトも触ったことがありませんでしたから。
入社したのは、外資系の組み込みの会社で、いきなりLinuxを渡されてCのプログラミングを書け、という環境。でも、僕はコンパイルって何という感じだったし、どこでプログラミングを書いていいのかも分からない。
近くの人に聞いてみると「vi」というのを使えばいいと言われて、起動してみたんですが、文字が入力できないんです。入力の仕方が分かっても、文字が消せない……そんなことの繰り返し。本当に泣きたくなりましたね。
――いきなり実践でトレーニングはなかったんですね。
庄司 そうですね。いろいろな会社を受けたのですが、どこの面接官にも「プログラミングの経験がなかったら、どこの会社も厳しいよね」と言われました。ですが、ある会社のCTO(最高技術責任者)の方が「やる気があるなら来い」と誘ってくれた。
その方が最初の2週間ぐらい、夜10時から30分ほど個人的に見てくれました。でも、「何でこんなことも出来ないの。こうやれば簡単じゃん」と言いながら、ガーッとやって帰ってしまう。だから、僕が最初に覚えたLinuxのコマンドは、historyなんです。彼がいなくなった後に、historyと打って、どんなことをしたのか再現して片っ端から調べた。
正直なところ、自分にはプログラミングは覚えられない、と何度も思いました。でもそのCTOは男気があって、こんな自分でも拾ってくれた。その気持ちがありがたかったから、あきらめずに続けられたんだと思います。
そんな感じで1カ月間C言語をやって、その後2年ぐらいその会社のJavaチームにいました。
――ゼロから始めて、すぐにオブジェクト指向などを理解できたんですね。
庄司 実は、組み込みの仕事ではオブジェクト指向を使えなかったんです。組み込みはフットプリントを小さくしなければいけないので、オブジェクト指向的にクラスを分けてしまうと、容量が足りなくなってしまう。全部1つの関数にまとめるとか、変数名もできるだけ短くするなどしなければなりません。オブジェクト指向とは程遠かったんです。
ちゃんとオブジェクト指向を覚えたいと思うようになって、ちょうど盛り上がっていたWebの世界に移ってきたんです。
――最初に作ったといえるプログラムは何だったのですか?
庄司 iアプリですね。ちょうどNTTドコモが503シリーズの携帯を出したところで、iモードで初めてiアプリが初めて動くようになった。会社がiアプリのエミュレータを作っていたこともあって、「割り勘」のアプリケーションを作りました。
ゲーム的な要素を入れて誰か1人だけランダムで1000~2000円多く払わなければならない、というもの。公表はしなかったから、自分の携帯で楽しんでいるだけでしたけど。
――庄司さんはjava-jaを立ち上げるなど、Javaエンジニアとして精力的に活動されていますね。
庄司 仕事では基本的にJavaを使っていますが、ここ1年半ぐらいはPythonにもはまっています。プロダクトコードはJavaですが、普段の作業を自動化したいというときにPythonを使います。昔はシェルが分からなかったので、そこをPerlで補っていたんですが、いまはPython。ちょうどRubyとかPythonが流行っていたので、どちらかをやりたいと思っていたら、イベントで知り合った西尾泰和さんに勧められました(笑)
――java-jaを立ち上げたのには、どういう理由があったんですか?
庄司 僕が観測している範囲では、Javaのコミュニティには固いものしかありませんでした。皆スーツの人ばかりだし、会場はシーンとしている。だから、自分も参加しなくなっていた。そしたら、あるとき日本サン・ユーザ・グループ(NSUG)からJavaのNightセミナーが開かれるという案内が届いた。ビールを飲みながらJavaのことを勉強しようみたいなのり、とのことだったので、久しぶりに行ってみたんです。
そこで、講師だったひがやすおさんと飲みながら盛り上がった。「Javaのコミュニティは世間的にも固いと思われているし、自分もそう思っている。飲み会で話していると面白い人間が多いのに、そういう飲み会みたいなコミュニティはないの? 」と。
ひがさんは「お前が作ればいい」と言うんです。自分が作っても誰も参加しないだろうから、それでは何の意味もないと思ったのですが、ひがさんが「応援する」と言ってくれた。「それならやってみても損はないか」と、2年ほど前に立ち上げたのがjava-jaです。
――そうでしたか。スーツのJavaエンジニアじゃなかったんですね。
庄司 スーツじゃなかったですね。スーツの会社は避けていましたから(笑)
でも、Javaのイベントはやっぱりスーツが多い。上司から言われてきたという人が多いので、そういう人はたいていスーツだから。
――コミュニティを作るのは大変じゃなかったですか?
庄司 僕はそんなにいろいろ世話をしていないんですよね。java-jaを固いコミュニティにしたくなかったから、すべてオープンにしたかった。wikiも誰でも編集できるし、チャットのログも誰でも見られるようにしている。固くならず、すべてオープンにする――それだけ。
僕の知らないところでイベントが開かれていたりもします。東京で開かれるときはさすがに自分も関わるんですが、自分が話すのも気恥ずかしいから、話を聞きたい人にお願いするようにしています。
――庄司さんは休暇などをどのように過ごされているんですか?
庄司 プログラミングもやりますが、基本的にいろいろなことをやるのが好き。映画を見に行ったり、ゲームをやったり、ドライブにいったり。ここ1年ぐらいやっていないのですが、サーフィンもやります。最初の組み込みの会社で知り合った友人が鎌倉に住んでいるので、そこにサーフボードを置かせてもらっているんです。
車で七里ガ浜に行って、サーフィンして、バーベキューして帰ってくる、そんな感じです。そう言うと、記事的にかっこいいでしょ(笑)
――ははは。ルックスからすると、音楽とかエンジニア以外でも活躍してそうですが(笑)
庄司 実は、赤い髪の毛にも理由があるんです。最初の組み込みの会社は外資系だったので、アメリカ人やインド人など多様な人間がいました。お客さんにはフランス人もいた。外国人からすると、日本人の顔はみんな一緒に見えるんです。だから、CTOが「お前は技術的に優れているわけでもないし、顧客に覚えてもらえる点がないのだから、髪の色を変えろ」と言うんです。
最初は銀色に染めたんですが、査定の面談になると「次は、緑な」と上司に決められていました(笑) 赤色にしたらすごく似合っていると評判で、それからはずっと赤にしています。取引先の大手企業に打ち合わせに行くときも赤で通していました(笑)
――もしかして眼鏡の色にも意味あります?
庄司 ええ、青いレンズは目に優しいんですよ。ディスプレーを長時間見るのに適している。この眼鏡に替えてから、本当に目が良くなりました。2年ぐらい経つと、運転免許証の条件から「眼鏡等」の項目が外れた。
――最後に、最近注目しているテクノロジーがあれば教えてください。
庄司 すごく古いものなんですけど、少し前に「デブサミ」で知り合った人からSmalltalkを教えてもらいました。これがすごく興味深かったですね。オブジェクト指向言語の元となっていているもので、「すべての言語はSmalltalkの劣化コピー」と言う人もいるくらいです。
とても特殊な言語で、Smalltalkで書かれた環境の中に、開発環境もバージョン管理システムもあって、そこで動くアプリケーションを作れるというような感じ。言語仕様がすごくシンプルで、trueをfalseのように扱うように環境自体を変更することもできたりする。これは新鮮でとても楽しかったですね。