インストールされているドキュメントをきちんと使えるようにしたいっていうビジョンがありました。
Ruby Prize受賞おめでとうございます。
ありがとうございます。
毎回、Ruby
Prize受賞者と最終ノミネートには、こうやってインタビューをしているんですけれども、この記事を読まれる方は、糸柳さんのことを御存じない方もいると思うので、まずは、直近の活動について、ちょっとお聞かせいただけませんか?
はい。直近は、irbっていうRubyのプログラミングを入力して結果を手軽に確認できるツールがあるんですが、複数行入力して編集できる便利な機能をちょっと追加したということですかね。Rubyって、やっぱりお手軽に書けるっていうことを売りにしている言語だと思うんで、そのお手軽さをより促進してさっと確認できるみたいな。
タブを2回打ってドキュメントが出るとかも糸柳さんの作?
もともとは、僕はRDocっていうRubyの標準ドキュメンテーションツールのメンテナーをやっているんですが、そのドキュメントをみんなgoogleで検索してるんですよね。
うん、そうだね。
僕もそうなんですよ。
でも、Rubyってローカルに最初からドキュメントの情報を一緒にインストールされてるんですね。僕には、そのインストールされているドキュメントをきちんと使えるようにしたいっていうビジョンがありました。そのビジョンの一環として、irbの原作者の圭樹さん(石塚圭樹氏)が、複数行で動くビジョンを示していたので、僕がそれに乗っかって、irbで複数行入力をできるようにするっていう便利な機能をとりあえずゼロから最後までつくって、その上で、編集しながらドキュメントも必要なときに表示できるっていう機能を追加しました。irbの機能拡張なんだけど、僕にとっては、Ruby3に向けてのドキュメンテーションのデザインの新しいビジョンの一環として、機能を追加したということですね。
でも、Rubyってローカルに最初からドキュメントの情報を一緒にインストールされてるんですね。僕には、そのインストールされているドキュメントをきちんと使えるようにしたいっていうビジョンがありました。そのビジョンの一環として、irbの原作者の圭樹さん(石塚圭樹氏)が、複数行で動くビジョンを示していたので、僕がそれに乗っかって、irbで複数行入力をできるようにするっていう便利な機能をとりあえずゼロから最後までつくって、その上で、編集しながらドキュメントも必要なときに表示できるっていう機能を追加しました。irbの機能拡張なんだけど、僕にとっては、Ruby3に向けてのドキュメンテーションのデザインの新しいビジョンの一環として、機能を追加したということですね。
賢いツールでRubyの生産性が上がるのは、目指してる方向性に沿っているので、本当にありがとうございます。そういうあたりを評価して、今回の賞だと思います。
じゃあ、次に、糸柳さんがRubyに最初に触れたのはどんな経緯だったんですかね?
じゃあ、次に、糸柳さんがRubyに最初に触れたのはどんな経緯だったんですかね?
2008年ぐらいに仕事でRails を使ったので、10年ちょっと前ですね。
僕が触れたのは、もっと古いコミッターの方よりはもうちょっと最近で、RubyがRailsで流行り始めたころに使い始めました。それまでは、ずっとPython使ってたんですけど。
おお、そうなんだ。
僕は昔ゲームプログラマーだったんですね。そのころ、プライベートでも、ちょっとだけゲームを描いてたんですけど、その時はPythonでつくったりしていました。その後、Railsが入ったころにWebプログラマーに転向しました。仕事では他の言語を使ったりもしてたんですけど、プライベートでRailsを使い始めて、個人的な小さい作業用のツールなんかをつくっていました。それが最初にRubyに触れたきっかけですね。
うん。で、それでRubyにかかわるようになって。
はい、10数年前ですね。
10年、それぐらいですね。Railsが2004年スタートで、10年ちょっと。
たしか、2008年ぐらいに仕事でRailsを使ったので、10年ちょっと前ですね。
Railsユーザーだったのが、Rubyの開発、例えばパッチ書いたりとかみたいな、そういう活動に入り始めたのはどういう経緯で?
ある日電車に乗っていたら、松田さん(松田明氏)が偶然電車に乗っていたんですよ。松田さんは技術イベントに参加した後だったみたいで、僕も技術イベントに参加した後だったんです。
同じイベントっていうこと?
それが違うイベントなんですよ。
両方とも渋谷で開催されていて、僕は友達と一緒に渋谷駅で銀座線に乗ったんですが、松田さんも全く違うイベントに参加して、そのあと銀座線に乗ったんです。僕も松田さんも当時は浅草在住だったので、渋谷から反対側の終点の浅草まで帰っている途中だったんですよ。
技術者って、ほら、イベントでもらったTシャツとかかばんとか使うじゃないですか。
技術者って、ほら、イベントでもらったTシャツとかかばんとか使うじゃないですか。
そうですね。
それを見て、松田さんが「何々イベントの参加者の方ですか?」って話しかけてきたんです。
松田さん、すげえコミュ力!!
電車の中で。「いや、違います。別のイベントです。」と答えて。その後、浅草に行くまでの間ずっと話をしてました。僕は、Webプログラマーになってたんですけど、「ゲームプログラミングでこういうおもしろいのがあって。」って話をしたり、松田さんから「Asakusa.rbというのをやってるんでぜひ来てください。」って言われて。それから、ちょいちょい行くようになって。
僕は趣味で数学、それも、最近いろいろな本で取り扱われるようになった巨大数っていうのをちょっとやってたんですけど、そこら辺の本とかに、実は僕のGitHubのアカウントが載ってるんです。
僕は趣味で数学、それも、最近いろいろな本で取り扱われるようになった巨大数っていうのをちょっとやってたんですけど、そこら辺の本とかに、実は僕のGitHubのアカウントが載ってるんです。
すごい!!
数学関係の、簡単な計算のモデルみたいなものをRubyでいっぱい書いたりしてたんです。他にも、実際の途中までの計算をRubyで出力したりとか、僕がRubyで出力したメッチャでっかい式が漫画で使われたりとか。そのころは、Rubyに貢献するっていうか、完全にRubyで遊んでました。これはかなり楽しいと思って使ってました。
それを、Asakusa.rbで話したんですよ。でも、そんな話しされても、みんな分からないので困りますよね。せっかくAsakusa.rbに参加しているんだから、もうちょっとみんなと話ししたほうがいいなと思うし、Asakusa.rbはRubyコミッターの方がいっぱいいらっしゃるんで、僕もみんながやってることに協力したいなって思って。最初は小さいこと、例えば、CI回すようにしたりとか、僕が困ってたバグを直したりとかっていうところから。結構大きな課題が見えてきたんで。RDocとかirbとかの中に。20年ぐらいずっと継ぎ足し継ぎ足しで……。
それを、Asakusa.rbで話したんですよ。でも、そんな話しされても、みんな分からないので困りますよね。せっかくAsakusa.rbに参加しているんだから、もうちょっとみんなと話ししたほうがいいなと思うし、Asakusa.rbはRubyコミッターの方がいっぱいいらっしゃるんで、僕もみんながやってることに協力したいなって思って。最初は小さいこと、例えば、CI回すようにしたりとか、僕が困ってたバグを直したりとかっていうところから。結構大きな課題が見えてきたんで。RDocとかirbとかの中に。20年ぐらいずっと継ぎ足し継ぎ足しで……。
まあ、あれはね。
これまで保守してくれていたんだけど、もう難しくなってしまっていた古い部分、パーサの部分を、全部Rubyの標準ライブラリで置きかえたとか、そういうことをいろいろやったのが、一番最初にやった大きいことですかね。
irbとか、最古参のツールの一つですからね。
RDocの中のパーサを置きかえるっていうためだけに、多分300か400コミットぐらい必要だったんですよ。
ありがとうございます。それが、何年ぐらいですか?
それが2016年から2017年ですね。なんで、数カ月、半年以上かかってますね。
ありがとうございます。
当時、暇だったんで。やっぱり人生、仕事が暇な時期ってあるじゃないですか。
いや、暇大事ですよね。
そんときに。
余裕って言いましょうかね。
まあ、余裕ですね。
余裕は大事ですね。
余裕がある時期だったんで、そういうのを半年以上何とかこなして。その後は、そのドキュメンテーションに関するいろんなことをやろうっていうビジョンが見えてきて。irbの方に、ちょうどRuby会議2017で圭樹さんが複数行でいろいろ編集できるといいよねっていうビジョンを示してくれたんで。
そういえば、何か発表してましたね。
ちょうど僕もirbに手を入れたいと思ってたんですけど、RDocの方も、パーサは元々irbから導入したものを使っているっていう繋がりがあったので、そのビジョンに乗れば、そのドキュメントをirbで表示できるっていう僕のビジョンと繋げられるかなっていうことです。
それからですね、irbを複数行にしたのは。2年ぐらいかかっちゃいましたけどね。
それからですね、irbを複数行にしたのは。2年ぐらいかかっちゃいましたけどね。
ペーパープログラマー、私もだけど。(まつもとゆきひろ)
ありがとうございます。
糸柳さんがプログラミングに触れるようになったきっかけは?
糸柳さんがプログラミングに触れるようになったきっかけは?
多分まつもとさんのころはまだなかったんじゃないかなと思うんですけど、僕の世代だとN88-BASICが数学の教科書に載ってたんですよね。
糸柳さんの年齢にして、N88-BASICはちょっと古くない?
ちょっと古いんで、僕のちょっと後の世代になると教科書から消えるんですよ。僕のころはまだ大学のセンター試験にN88-BASICの科目があったんです。
そうなんだ。
ぎりぎりまだありました。でも、もう最後のほうですよ。
僕がまだ高校生のころだと、みんながコンピューターを持ってるわけではない。特に田舎、長崎ですから。僕がプログラミング始めたのが14歳とかなんで、25年前。25年前は、地方ではみんながコンピューターを持ってるっていう感じじゃなかったと思うんですよ。「誰かが持ってる」っていう話を聞く程度で。教科書に載ってたんで、ノートにずっと書いてたんですよ。
僕がまだ高校生のころだと、みんながコンピューターを持ってるわけではない。特に田舎、長崎ですから。僕がプログラミング始めたのが14歳とかなんで、25年前。25年前は、地方ではみんながコンピューターを持ってるっていう感じじゃなかったと思うんですよ。「誰かが持ってる」っていう話を聞く程度で。教科書に載ってたんで、ノートにずっと書いてたんですよ。
ペーパープログラマー、私もだけど。
たしか、最初の1年ぐらいはノートにしか書いたことなかったですね。で、「こんな分岐とか自動的に計算とかできるんだ!すごい!!」と思って。コンピューターはさわったことないけどずっとノートに書いて。
1年は長いな、すごいな—。
いや、でも楽しかったですよ。
その後、学校にコンピューターがあることが分かったんで、「何か使わせてくれ」と言って打ち込んでみて、それっぽいものができたっていうので「おお、すごい!」となって。その後も書いては、先生に頼んで打ち込む、っていうのを何カ月かに1回繰り返すっていうのをずっとやって。その次は、今だったら関数とか、Rubyだったらメソッドとか。メソッドなんて、こういうのがありますって言ったら、多分若い人って、普通さっと吸い込んで終わりだと思うんですよ、大体は。僕の場合、全然分かんなくて、「“goto”でいいじゃん」って言ってたんですよね。全然向いてないんすよ、プログラミング。
その後、学校にコンピューターがあることが分かったんで、「何か使わせてくれ」と言って打ち込んでみて、それっぽいものができたっていうので「おお、すごい!」となって。その後も書いては、先生に頼んで打ち込む、っていうのを何カ月かに1回繰り返すっていうのをずっとやって。その次は、今だったら関数とか、Rubyだったらメソッドとか。メソッドなんて、こういうのがありますって言ったら、多分若い人って、普通さっと吸い込んで終わりだと思うんですよ、大体は。僕の場合、全然分かんなくて、「“goto”でいいじゃん」って言ってたんですよね。全然向いてないんすよ、プログラミング。
私も最初、再帰がわからなくてね。
再帰とかも、もうだいぶ後ですね。オブジェクト指向とかもかなり分からなかったですよ。
僕、20歳過ぎても、オブジェクト指向って怪しかったですよ。
僕、20歳過ぎても、オブジェクト指向って怪しかったですよ。
いや、まあ、私も似たようなものかもしれないけども。
楽しい方が一番重要なんで。
なるほど。そういう経緯で、それで、そのまま職業に?
職業もそうですね。
プログラマーに?
上京してきてプログラマーになって。上京してきたのが19歳のときなんですけど、そのときには、Webプログラマーでしたね。もう20年ぐらい前だったんですが、東京だったら仕事は幾らでもあったんで。
20年前。そうか、ネットバブルのころか。
そうです。最初のころはPHPとか書いてました。IPアドレスがわかんなくて、先輩に教えてもらってました。
そういう経緯があったんですね。
そのころには、OSSとかも、自分でSourceForgeで公開したりとかもやったり。まだ地元にいた10代のころに、かなり多言語対応を重視したオープンソースソフトウェアのライブラリを書いていたんです。例えば、ヨーロッパのデッドキーとか日本のインプットメソッドとか、ちゃんとサポートするっていうライブラリを書いてたんですけど、その関係で、多言語とか世界のいろんな入力方法、いろんな文字コードの関係とかをどのように扱ったらいいかっていうのにかなり詳しくなったんですね。それが、relineっていう、複数行編集するっていうのを実装するときかなり活きていて、その背景がなかったら、下手したら諦めてましたね。少なくとも今まだ完成してなかったと思います。
過去の意外な経験が役に立ったということですね。
20年前の。
ちょっとジャングルに行って、食料を現地調達してたら……
あと、糸柳さんといえば、すごいアクティブな活動をしてて、話を聞くとすごい心配になることが多いんですけど・・・。
いや、登山をしているっていう。
登山とか。毒の草を食べて腫れ上がったとか、そんな話・・・。
そうですね。ちょっとジャングルに行って、食料を現地調達してたら、たまに毒を踏むことがあって、何度か毒にはやられたことが。
危ない!!
芋とカエルとキノコですかね。この3つはやられましたね。
すごい心配になるんです・・・。
でも、これまでの経験によって、どんどんうまくなってるんで。
それは、何か危険の回避がっていうことですか?
そうです、そうです。初心者のうちが一番痛い目に合いますからね。
確かにそういうものかもしれませんけどね。
Rubyに貢献してくださることも含めて、そういうような過去の経験を踏まえて、Rubyにいろいろしてくださったのは確かなんですけども、くれぐれも命大事にということですね。
Rubyに貢献してくださることも含めて、そういうような過去の経験を踏まえて、Rubyにいろいろしてくださったのは確かなんですけども、くれぐれも命大事にということですね。
はい、大丈夫です。今のところ一度も死んだことがないっていう実績がありますので(笑)。
大概の人はそうなんだけど、危険との距離が、他人とだいぶ違うので。
安全第一で。
安全第一で、今後ともよろしくお願いします。
どうも、ありがとうございます。