ソフトウェア開発の本質は「人間の心理」…Rubyの父まつもと氏が語る「Rubyの軌跡」

シード・アーリーステージのスタートアップへ投資を行うSkyland Venturesは、Rubyの開発者で知られるまつもとゆきひろ氏をゲストに迎え、エンジニアやスタートアップ向けに「Rubyエンジニア向け勉強会」と題して「Skyland Ventures Meetup」を開催した。

svmeetup0422

シード・アーリーステージのスタートアップへ投資を行うSkyland Venturesは、4月22日、Rubyの開発者で知られるまつもとゆきひろ氏をゲストに迎え、エンジニアやスタートアップ向けに「Rubyエンジニア向け勉強会」と題して「Skyland Ventures Meetup」を開催した。

本サイト「Pedia News」では、イベントの模様をお伝えしたい。なお、過去に開催した「Skyland Ventures Meetup」のイベントレポートは以下でご紹介している。

* Kaizen Platform創業者須藤憲司氏による「スタートアップの経営、資金の使い方、組織育成とは」

### ソフトウェア開発の本質は「人間の心理」

ruby_matsumotosan1

冒頭、まつもと氏は今回のイベントについて、

今日は「北風と太陽」の話をしようと思う。ソフトウェアや技術を作っていると、人間に関係する側面が多々ある。例えば「想定ユーザーが果たして何を期待して使うのか」など人間の心理の側面が非常に重要になってくる。個人的には、これがソフトウェア開発の本質だと考えている。そのため、人間の心理に非常に関心がある。

と述べ、ソフトウェア開発の本質である人間の心理を「北風と太陽」を用いて話すことを明らかにした。

### ノートでプログミング言語をデザインした高校時代

まつもと氏は「プログラミング言語のデザインの始まり」について、

「プログラミング言語のデザイン」に興味を持つようになったのは高校生の時。一般的には、ソフトウェアはどの言語で書いても同じようなプログラムを書けるので、ソフトウェアを開発する時にどの言語を選ぶかは本質ではないと言われている。英国の有名な数学者で「コンピューターサイエンスの父」であるアラン・チューリングは、あるレベルを超えればどのプログラミング言語でもソフトウェアを理論上記述できるということを発明した。その結果、「どの言語を使っても一緒だからプログミング言語は重要じゃなくてどのソフトウェアを書くか」が重要という考えと「どの言語を選ぶかによって開発の生産性は異なるのでどのプログミング言語を選ぶか」が重要という考えが生まれた。高校の時の自分は後者の考えに関心があった。

と述べ、

中学3年生の時、ポケットコンピューターを使ってBASIC(ベーシック)というプログラミング言語を勉強し始めた。高校生になって、プログラミング言語を勉強していく中で「世の中にはもっと良いプログミラング言語がある」と感じた。そこで、次にPascal(パスカル)を勉強し始めた。Pascalの本を読んでみると、非常に良さそうに見えた。中学生の頃はBASICのプログラミング環境が当然だと思っていたが、非常に制約された窮屈な環境の中でプログラミングを始めていたと気づいた。Pascalを使えば、制約されずにもっと良い環境でプログラミングできると思った。しかし当時、Pascalを使うためには高価な専用コンパイラを買う必要があった。そのため、Pascalという素晴らしい環境があると分かっていながらも、それを動かすコンピューターもコンパイラもなかったので、本だけを読んで「いつかこの言語を使えたら」と思い描きながら高校時代を過ごした。本を読んで勉強していくと、世の中にBASICやPascalだけでなくて多種多様なプログラミング言語があることに気づいた。そして「そのプログラミング言語の一つひとつがそれぞれ異なる発想やアイデア、目的によってデザインされている」と分かった。その後、高校3年生の時、「プログラミング言語はそれぞれ誰かが目的をもってデザインしているならば、自分でもプログラミング言語をデザインできるのではないか」と考えた。当時は、コンピューターもコンパイラもなくて、インターネットが普及していないから知識を得ることも難しかったが、「知識がなくてもコンパイラをする能力がなくても、ノートの上なら僕が考えた最強の言語でプログラムを書くことはできる」と思った。そして、当時の自分が最強だと思う言語をノートに書いた。それが初めての言語デザインだった。

と説明し、初めてのプログラミング言語のデザインを振り返った。

### 限定された環境から恵まれた環境へ

続けて、まつもと氏は「Rubyの始まり」について、

大学に進学してコンピューターサイエンスを専攻した。初めて整備されたプログラミング環境ができて、図書館には過去の論文などたくさんの資料があった。鳥取の田舎で育ってプログラミング環境に恵まれていなかったこともあり、大学は様々なことを学ぶ材料が数多くあって天国と感じた。大学ではプログラミング言語の研究室に入ってプログラミング言語を学んだ。当時、日本のコンピューターサイエンスでは、プログラミング言語を研究しているところはあってもプログラミング言語をデザインしているところはなかった。そのため、研究室の担任の先生に「どうしてもプログラミング言語をデザインしたい」と頼み込んで、先生のテーマとは関係ないテーマで卒業論文を書いた。大学卒業後、プログラマとしてソフトウェア開発企業に就職した。就職してしばらく経過すると、バブルが崩壊して自分が携わっていたソフトウェアプロジェクトがキャンセルになり、プロジェクトチームは解散された。その後、メンテナンス担当に配属されたが、ほとんど仕事がなくて時間を持て余していた。そこで、1993年2月に「何か作ろう」と考えて誕生したものがRubyだった。Rubyを約2年間細々と作り、1995年12月にインターネット上で公開した。それ以降、たくさんの人にRubyを使っていただけるようになって現在に至る。非常に限られた環境の中で「いつかできたら」と思っていたものが、環境に恵まれて約10年の時を経て作れるようになった。初めて作ったプログラミング言語がRubyだった。

と述べ、プログラミング言語を開発できるような恵まれた環境があったからこそRubyが誕生したと語った。

### コミュニティ作りは「北風と太陽」

また、まつもと氏は「Rubyのコミュニティ作り」について、

子供の頃から変わった子供だった。子供の頃、周囲にはコンピューターに関心のある人がほとんどいなかったが、それ以外にも変わった癖がいくつかあった。一つは「緊張するとあくびが出る」という癖。一般的に誰かがあくびすれば余裕がありそうと感じるが、癖のおかげで余裕がないのに余裕があるとみなされてしまった。もう一つの癖は「恥ずかしい時、緊張した時や困った時など変な時に笑う」という癖。内心、非常に緊張しながら話してるにも関わらず、癖のせいで笑ってしまうので楽しそうに話しているように見えてポジティブに評価された。変わった癖のせいでもあるが、これらを繰り返していくうちにポジティブな評価を積み重ねて、自分に能力と自信がついてきた。結果として、Rubyに関わる人たちと良好な人間関係を構築できてプラスに作用した。人間を動かそうと考えた時に方法は二つある。それは「北風と太陽」だ。「北風」とは、怒りや機嫌が悪いなどを態度で示すことで、その人の言うことを聞かないといけないような圧迫する雰囲気を作って人間を動かす方法。この方法は非常に効果的な方法なので、大人になってもこのやり方をする人も多い。本人が自覚しているかはともかくとして人間は学習することもあり、怒りや機嫌が悪いなどを態度で示すと、自分の思う通りに動いてくれることを深層心理で学習する。しかし、実はこのやり方には問題がある。なぜならば、そのような人とは一緒に仕事したくないからである。そのため、「北風」戦法は長期的にはうまく機能しない。さらに、何かによって強制されなければその人と働きたくないような環境作りは、ファンを作ることが難しい。だからこそ、「太陽」のやり方がファンを作るには向いていると思う。オープンソースでコミュニティを作ったり、スタートアップがプロダクトのファンを増やしたり、オープンソースとスタートアップには「太陽」のやり方が非常に有効な戦略だと思う。例えば、プロダクトをリリースすると、みんなが初めから良いというものなら素晴らしいが、実際には良いと感じてくれる人は約10%だと思う。この約10%の人がファンになると、他の人に紹介しようと感じてくれてプロダクトが広まっていく。これはRubyの最初でも同じだった。「Rubyを良い」と言ってくれる人がいなかったら、今のようにはなっていなかった。だからこそ、イソップ童話にあるように「太陽」のやり方がオープンソースやスタートアップには向いていると思う。

と述べ、「太陽」のやり方によってRubyコミュニティが広まっていったことを説明した。

### 「場を作る」「フェアでありたい」

さらに、まつもと氏は「Rubyのコミュニティ作りで気をつけたこと」について、①「場を作る」、②「フェア(公平)でありたい」という2点を心がけていたことを明らかにした。

①の「場を作る」ことについて、まつもと氏は、

一つはRubyという「場を作る」ことを考えた。そこで、当時の主な連絡手段であったメールでメーリングリストを作った。メーリングリストの公開から2週間で約200人集まった。その約200人がいろんな環境でRubyを使ってくれた。当時、自分は使い物になると思ってRubyを公開したが、実際にはたくさんの人に使ってもらって様々な問題が生じた。このフェーズで重要だったことは、Rubyが完璧すぎなかったことだと思う。もともと少し興味を持ってコミュニティに関わってくれた人たちを巻き込んでRubyコミュニティの一員として参加してもらった。これにより、Rubyは成長できた。もちろん、メーリングリストではポジティブな意見もネガティブな意見も様々な意見が届いたが、それら全ての意見をインプットとして捉えて参加者はRubyの貢献者であると捉えることで、Rubyのコミュニティは成長できた。

と述べた。

②の「フェア(公平)でありたい」について、まつもと氏は、

もう一つは「フェア(公平)でありたい」と思った。参加者がRubyを始めたタイミングが遅いか早いかは本人のせいではないので、例え当たり前のことを聞いてきたとしても丁寧に答えるように心がけた。コミュニティの中にはトロール(あらし)もあったが、他の参加者がなだめてくれたり、コミュニティの中で自発的な秩序が生まれた。

と述べた。

### ファンと共に作ったコミュニティ

続けて、まつもと氏は「Rubyの普及」について、

Rubyコミュニティが拡大していくにつれて、たくさんのファンが生まれた。そうすると、自分が何もしなくてても、本を書いてくれたり、解説書を書いてくれたり、カンファレンスをオーガナイズしてくれたり、様々な活動をしてくれるファンが続々と出てきた。ファンがいたからこそ、Rubyができた。

と述べ、ファンのおかげでRubyが成長できたことを強調した。

### 「早すぎる」未来を今作る

ruby_matsumotosan2

最後に、まつもと氏は「Rubyのこれまで」を振り返り、

1995年に、Rubyをインターネットに公開した。1995年は、プログラミング言語の当たり年だった。現在メジャーなプログラミング言語である、JavaもJave ScriptもPHPもRubyも全て1995年に公開された。この理由は定かではないが、おそらくWindows 95がリリースしてインターネットが一般化された時に公開されたことがキッカケだったと思う。Javaは1993年、Rubyも1993年、PHPは1995年から開発されており、Jave Scriptは開発から2週間で公開された。いずれにしても、インターネットのアプリケーションツールを作り始めて必要になってから作り始めていたのでは、その他のものにポジションを奪われてしまっていたと思う。偶然にも運良くニーズが発生する前に作られたプログラミング言語が現在まで生き残っている。これまで「Ruby」はいろいろなことを言われて心折れそうになった時もあったが、長い目で見て「継続する」ことは重要なことだったと考えている。皆さんのプロダクトが少し先の未来をターゲットにしていると、いろいろなことを言われると思うが、もしかしたら、それは5年後には当たり前になっているかもしれない。未来の当たり前を作る時に、当たり前になった時から作り始めたのでは間に合わない。皆さんがプロダクトを作る時に、「早すぎていろいろなことを言われる」か「遅すぎて競争に負ける」かを選ぶならば、個人的には「競争に負ける」よりも「早すぎる」方が良いと思う。万が一、皆さんがプロダクトを作っていく中で心が折れそうになった時があったら、まつもとがこのようなことを話していたと思い出して、もう少しがんばってみるのも一つの戦略ではないかと思う。

と語り、会場のエンジニアやスタートアップに励ましの言葉を送った。

[写真協力:カメラマン 延原優樹氏]