まつもとゆきひろ氏が語るエンジニアのキャリア

まつもとゆきひろ 氏(以下、まつもと):初めましての方もたくさんいらっしゃいますが、まつもとと申します。Rubyを作った人なんですが、今日は「エンジニア・キャリアアップ」ということでいい感じに話そうかなと思っています。よろしくお願いいたします。

(会場拍手)

こんなアイコンで8年くらい活動していますが、出来合いの部品を組み合わせて作ったわりにはまぁまぁという感じですね。これはイラストレーターとかで専門的に書いたわけではなくて、どこかのWebサイトで部品を組み合わせて作っただけです。

ひらがなで名乗っております。「松本」ってすごいありふれた名字なんですよね。とくに私は鳥取県出身なんですけど、鳥取県の西部は松本がすごく多くて、県内で4番目に多い苗字なんですよ。なので、差別化しようかなと思って「まつもとゆきひろ」と、大学の頃からひらがなで名乗っています。

あとは海外でも問題があって「まつもとゆきひろ」は長くて覚えてもらえないんですよね。我々もロシア人の長い名前とかは覚えられないですよね。なので仕方がないのMatzと自分であだ名を作って「これで呼んで!」と。

アメリカ人だとファーストネームで呼ぶ習慣があるじゃないですか。それで無理して「ゆきひろ」と呼ぶ人がいるわけですよ。でも日本の文化としてファーストネームで呼ばれることにあまり慣れていないんですよね。「ゆきひろ」とか呼ばれるとドキドキするわけです。

一生のうちで母親ぐらいからしか呼ばれたことがないのに「なんでそんなに呼ぶの!?」という感じなので、名字から作ったあだ名を作ることで、みなさん気軽にMatzと呼べるし、私も名字をニックネームとして呼ばれてハッピーだしwin-winの関係が成立しているという感じですね。

Rubyを作り、日本一有名なプログラマに

私はRubyを作った人で、1993年からRubyをずっと作ってます。あとはだいぶ昔の話ではありますが、日経BPの技術賞の大賞を取りました。日経BPの技術賞というのは、日経BPは雑誌をいっぱい出しているんですが、そのいっぱいある雑誌の中で取り上げた技術の中で各賞を表彰するもので、いろいろな部門がある賞です。

2009年のことでしたが、日経BP技術賞のソフトウェア部門で個人が賞を取ったとのはこの年が初めてだったそうです。それから部門賞と大賞があるそうなんですが、個人がソフトウェアで大賞を取ったのも初めてだそうです。ということで、このときはけっこう褒めてもらいました。

これもちょっと前ですが、民主党の政権時代ですね。「世界で活躍し『日本』を発信する日本人」ということで私も選ばれて、別に何があるというわけでもないのですが、賞状を内閣が送ってきて「ありがとうございます」と受け取ったぐらいですね。とくに日本で一番有名なプログラマになったなと思います。

あとは2019年の5月まで政府IT総合戦略本部の委員をやっていました。5月だったので有名な桜の会の招待状が来てですね。

(会場笑)

でも僕は島根に住んでいるので「ちょっと遠いからいいや」と思って行かなかったらこの騒ぎで、ラッキーという感じです。あとは松江市の名誉市民というものをいただいています。

「へびのように賢く、鳩のように素直であれ」

そんな私ですが「エンジニア・キャリアアップ」について語ろうと思います。今日は「自分はエンジニアだ!」と思っている人はどのくらいいるんですか?

(会場挙手)

あ、けっこういるんですね。ありがとうございます。「エンジニアじゃないけどとりあえず来ました」という方は……正直に。

(会場挙手)

あぁ、いらっしゃると。ありがとうございます。あとは40代以上の方っていますか?

(会場挙手)

あぁ、私もだ。それなりにいますね。では、すごく若い人ばかりというわけでもないんですね。わかりました。そんな感じで話しましょう。

「エンジニア・キャリアアップ」と言っても今日は技術の話はぜんぜんしません。このスライドもこれから先で技術の話はほぼゼロなので心しなくてもいいんですけど、聞いてください。

「へびのように賢く、鳩のように素直であれ」。これは新約聖書に書いてある言葉です。2000年前から人間の知恵はこういう教訓みたいなものを用意していて、これをテーマに話そうと思うのですが、その前に自分語りをしようと思います。

新卒で入社した会社の話

だいたい1992年ぐらいにバブルが崩壊しました。バブル経済が崩壊しましてめちゃくちゃ景気が悪くなったんですね。私は1990年に大学を卒業してソフトウェア会社に就職したんですが、バブル期の末期だったので、本当に私がバブル最後の卒業生みたいな感じでした。なので、2,000人ぐらいのソフトウェア会社だったのですが、同期が200人ぐらいいるんですよ。

会社の1割を新卒採用するというのはいびつでしたが、その中のほとんどが「経験がありません」という人たちだったんですね。200人の中でコンピュータサイエンスを専攻してプログラミングの経験がある人は6人しかいなくて、私はその6人の中に1人でした。

他の人たちはプログラミングのプの字も知らないのでプログラミング研修というものを半年ぐらいやるわけですが、我々は「そんなのわかるし!」という感じなので、2ヶ月ぐらい社会人研修をしたあとに実践配備されました。

社内のエンジニアたちがより生産性が高くなるためのツールを社内で開発することによって、他社と差別化しようと経営陣が目論んでいたので、私は社内ツール開発の部署に配属されました。

そこは私にとっては天国みたいなところだったのですが、同期たちはけっこうひどい目にあっていました。今でいうとブラック企業に近いような働き方をしていて、夜3時になって「タイムカードを押すぞ! じゃないと徹夜勤務で翌日休暇になっちゃうぞ!」と言ってタイムカードを押したあとにまた働きだすんですね。ひどい話ではありますが、二十何年前の話です。

会社にそういう雰囲気が蔓延していたので、我々も遅くまで働いていたのですが、やることがあって働いていたんです。好きで働いていたのでそういう感じの生活をしていたのですが、ラッキーだったのは、全体のある部分を上から下まで任されたんですね。つまり、システムエンジニアが概要設計をして詳細設計書があって、それに基づいてコーダーがコードを書くという、工程ごとに区別して開発するのではなく、プロジェクト全体の中で「このツールはあなたが設計から最後まで全部やりなさい」ということで、新人ながら作らせてもらえたんですね。それはすごくラッキーだったと思います。

バブル崩壊とともに、やることがなくなった

上の人たちはソフトウェアを開発したことがないので、ソフトウェアを開発することは下賤の者がするものだと考えている人なんですよ。私は設計した設計書に従ってソフトウェアを開発するとか御免だよ、と思っていたのでそういうひどい目にあわなくて済んだというのがラッキーだったのですが、バブルが崩壊しました。

私が作っていたのは社内システムなので、売上が立たないんですよ。景気が悪いので「外貨を稼いでこい!」と言われて、このプロジェクトはキャンセルになってしまうんですね。社内ツールの開発という野心的なプロジェクトがキャンセルになって、「優秀だ」ということで集められたチームのメンバーがそれぞれお金を稼ぐところに割り振られて「外貨を稼いでこい!」と言われるわけです。

マネージャーは、どこかお金を稼ぐプロジェクトのマネージャーになるという感じです。仲の良かったチームはバラバラになってしまいました。ですが、既に社内ツールは社内で使われているわけで、誰かが面倒を見ないといけないというので、30人か40人のチームメンバーのうち2人だけが残されました。そのうちの1人が私だったんですが、正直やることがないんですよね。たまに電話が掛かってきて「おたくの作ったツールが動かないんですけど」と言われるので「そうですか。では、そのPCをリブートしてください」とか。

(会場笑)

そういうのが2日に1回ぐらい起きるんですけど。マネージャーも兼任になったので誰もこっちを見ていないんですよね。幸いにもコンピュータは取り上げられなかったので「しょうがない! 何かやるか!」ということで、時間もあるしコンピュータもあるし、さらに見張られていなかったので、それで作ったのがプログラミング言語でした。

プログラミング言語を作ろうと思った原体験

これがRubyになったわけですが、プログラミング言語を作ることは私の長年の夢だったんですね。Rubyは今でもすごくたくさんの人に使われていますし、今のスタートアップの人たちにもけっこうな割合で「うちのサービスでRubyを使って作ってます」と言っていただきます。たぶん私に対するお世辞がだいぶ入っていると思うんですけど。

(会場笑)

そうは言っても、実際にいろいろなところで使われているわけですね。ですが、このときから「いつか私の開発したプログラムが世界中で使われるようになる」なんて、ぜんぜん思っていなくて、ただ趣味として作っていたんですね。趣味で爪楊枝で姫路城を組み立てましたとか、よくあるじゃないですか。

(会場笑)

あんな感じで作っていたら、みんな使い始めたという感じです。

プログラミング言語が長年の夢だったのは私の好みと関係しています。私はもともとプログラミング言語よりも、日本語や英語など、言語そのものに関心があったんですね。しかも言語を作ることに関心がありました。「エスペラント」って聞いたことありますか?

これは人工言語なんですけど、ポーランドのザメンホフさんが趣味で言語を作ったんですね。フランス語、ドイツ語、ポーランド語など、よその言語から単語を借りてきて自分の言語に置き換えるルールを作って、辞書を作ったりしていました。それを1人でやるのかよ、という感じなんですが、そういうことをしていた人がいたんですね。

それがすごくおもしろいなと思って、中学生・高校生くらいの若い頃に、言語についていろいろと考えていました。ただ、日本語とか中国語とか英語とかの自然言語は、ザメンホフさんは別として、手に負えないなと思ったんですね。

ちょうど同じ頃、プログラミング言語の存在に気が付きました。私は中学校3年生の頃からプログラミングしています。BASICという昔のプログラミング言語でプログラムを始めたのですが、機能が制約されているのでフラストレーションを感じたんですね。

私が触っていたのはポケットコンピュータのBASICですので、メモリが400ステップしかないんですね。つまり、400行ぐらいしかないんですよ。さらに変数名が1文字に制限されているんですね。アルファベットは26文字しかないのでグローバル変数を26個作ったら以上! 終わり!

(会場笑)

すごく制約されたプログラミングを書いていたんですね。ですが中学時代は他に知らないので「こういうものなんだ。プログラムって大変なんだ」って思っていました。そうしていたら、だいぶ遅いですが雑誌や本を読んで、世の中には他にもプログラミング言語があるということに気がついたんですね。

言語は思想に影響するのか

言語学にはサピア・ウォーフ仮説というものがあります。学術的には否定されているらしいのですが、サピアさんとウォーフさんという2人のアマチュアの言語学者の人が作った仮説です。これは人間の考えることはその人の使う言語によって規定される、強く影響を受けるという仮説です。実際、ふだんの生活をしているとわりとありそうな気がします。私は日本語で話すときと英語を話すときもありますが、使う言語によって自分の性格が違うような気がするんですね。

使っている言語が私の思考に対して影響を与えている気がします。あとはサピア・ウォーフ仮説の中にあったのは、南アメリカのアマゾンには数の概念がない部族があるんですね。1、2、3、たくさん、という感じ。その部族では数学の概念はけっこう発達しづらいようです。

たくさん+たくさんはたくさん。そういう人たちにとって、算数の概念を理解することはつらい。一方でイヌイットの人たち、カナダとかアラスカとかに住んでいる人たちは、雪と氷の中に住んでいるので、雪と氷に関する表現が非常に豊富なんですね。

イヌイット文学では雪と氷について非常にクリアに表現されているのですが、それを日本語に訳すのはつらいところがあります。逆に言うと日本では雨の表現が豊富ですよね。五月雨とかなんとか、これを英語に翻訳しようと思ったらクラクラするわけですけど、そういう表現力は思考に影響を与えるという説があります。

色に関しても、日本語には豊富な表現があって、そういった表現は日本語でしか完全には表現ができない。そんなことがあって言語そのものに関心があって、とくに言語を作るほうに興味がありました。

原点は「自分の満足する作品を作りたい!」

そういう関心について考えたときに、プログラミング言語は私にちょうどよい存在でした。私がRubyを作ったとき、「人のためにRubyを作ろう!」と思ったわけではなくて、わりと利己的な感じで作り始めました。だって自分がプログラミング言語に関心があっていつか作りたいと長年思っていたんですが、1980年代ってインターネットがないんですよ。

そうすると、知識を身に付ける手段が非常に限定されているんです。本とか雑誌とか紙情報とか、あるいは大学に行って講義で学ぶとかそれぐらいしかないんですね。

一方で、現在ではインターネットもありますし、オープンソースもすごくたくさんあります。最近私は22歳以下のプログラミングコンテストの審査員をしているんですけど、私が審査員をしているせいなのかは知りませんが、高校生くらいの若い人たちが毎年プログラミング言語を作ってもってくるんですよ。

今年の大賞を取ったのは中学生ですよ!? 「プログラミング言語を作ってしました」って言って持ってきたので、「まじかぁ」という感じなんですけど、時代が違うとそういう早熟な人たちが現れたりするわけです。

話を戻すと、作りたいと思ったものを作りたかったけど、大学や本で勉強して実際に就職して、プログラミングに対する経験とスキルを身に付けたあとに暇になったので、誰も見張ってないし給料も出るから「いっちょやるか!」と思ってプログラミング言語を作り始めました。

「自分の満足する作品を作りたい!」ということで、業務命令もないので会社の時間と電気とコンピュータを使って作ったんですね。そのときに、自分のためのツールを作りたい、自分があったら使いたいようなツールの言語を作りたいと思って作り始めました。