Rubyist Hotlinks 【第 38 回】国分崇志 さん
著者:るびま編集部
初稿:2020年2月2日
はじめに
著名な Rubyist にインタビューを行う企画「Rubyist Hotlinks」。第 38 回となる今回は、国分崇志さん。
では、お楽しみください。
インタビュー
- 聞き手
- 卜部さん (@shyouhei)
- 語り手
- 国分崇志さん (記事中「国分」)
- 野次馬
- 遠藤さん、村田さん、柴田さん、sorahさん
- 日にち
- 2019 年 9 月 某日
- 写真提供
- 村田さん、柴田さん
目次
プロフィール
- 卜部
- じゃあ録音をします。
- 柴田
- 始まり。
- 卜部
- じゃあ、お願いします。
- 国分
- よろしくお願いします。
- 柴田
- おはようございます。
- 卜部
- まず生年月日、家族構成などというやつを、言えるところだけ言ってくださいという感じです。
- 国分
- はい。生年月日は別に隠していないんで。1993年の平成5年の1月2日なんですけれども。
- 卜部
- 1月2日?
- 国分
- はい。
- 卜部
- 結構、なんか冬に生まれている。
- 国分
- そんな正月に産むことになったら大変ですよね。
- 卜部
- お産はコントロールできないからどうしようもないんだけれどもね。
- 国分
- はい、まあ覚えやすくていいですがね。
- 卜部
- はい。
- 国分
- 何だっけ、家族構成ですか。
- 卜部
- うん。
- 国分
- 妻と僕がいて、子どもはまだいないんで、という感じなんですけれども、親とかも言ったほうがいいですか。
- 卜部
- いやいや、それは全然。というか、出身がどこかとかあります?
- 国分
- 出身は群馬県高崎市みたいな所なんですけれども。
- 卜部
- 関東地方。
- 国分
- 関東地方、そうですね。母親が前橋で父親が福島だったんですが、なんか父親が頑張って群馬のほうに来て、高崎で生まれてみたいな感じです。
- 卜部
- じゃあ、ちょっと生い立ちに絡むけれども、ずっとそこで大学院まで?
- 国分
- いや。高校までは群馬にいましたけれども、大学は東工大で東京の大岡山までやってきて、そこからずっと東京にいるみたいな感じです。
- 卜部
- 生い立ちの話は、どういう順番か知らんけれども多分、後でやるでしょう。次は、好きな言葉や座右の銘があれば教えてください。
- 国分
- これは最適化ということにしようと思っているんですけれども。
- 卜部
- 好きな言葉は最適化、いいですね。
- 国分
- はい。何かと仕事とかでも、遅いのがあったときに速くするというのは今でも結構やっていて、そういうときに結構、自分が楽しんでいるなと思うんで、やっぱり好きなのかなと思います。
- 卜部
- そういう、なんか最適化みたいなやつをやり始めたのは仕事からですか。
- 国分
- 多分、クックパッドにいる時に、前職のクックパッドにいる時に、いつやり始めたんですかね。Hamlの自分の実装、Hamlitというやつをつくり始めた時に、速くなってしまったので。最初はなんかバグッて速くなっていただけなんですけれども。ただ、そこから真面目に速くしようとして、なんかちゃんと速くすることを考え始めた結果、なんかどんどん他のも速くし続けてきたみたいな感じです。きっかけは多分、興味でHamlの実装を始めたというのが最初だと思います。
- 卜部
- じゃあ、やってみたら性に合っていたみたいなやつと?
- 国分
- まあ、そうですね。なんか面白さが分かってくると、なんかはまっちゃったみたいな。
- 卜部
- 次は、尊敬する人はいますか。
- 国分
- そうですね。僕のロールモデルは何人かいるんですけれども、そのうちの1人は弊社の古橋さんという人で、fluentdとかをつくっていて、かつプログラマーとしてすごい理想的な生き方だと思っていて、なぜかというと、シリコンバレーでスタートアップを創業して、ちゃんとイグジットにこぎ着けてすごいお金を持っているし、自分が発明したソフトウエアが結構いろんなところで使われているというところが、すごい尊敬しているというか、僕もそうなりたいなと思っていて。それで、あと一番自分がつくったソフトウエアがいろんな人に使われるようになりたいと思っているんですが、それで一番すごいなと思っていたのが、やっぱりまつもとさんで。それで、かつ、あと速くするというところに僕は興味があるんで、なんか速いのをつくっている人で言うとOku Kazuhoさんとかが尊敬しているという感じです。
代表作
- 卜部
- すごい細かい理由まで言ってくれそうなので。次は、代表作となると何でしょうか。
- 国分
- 僕個人でつくったやつで、多分一番使われているのはHamlitのgemが一番ダウンロード数的には使われていて、多分その次というか、につくったやつだと、逆にHamlの5.0は大体僕が書いたというか設計した部分が大きくて、それは今も使われている数はそのほうが多分、多いんですけれども、それより多くしようとすると、なんかJITで頑張っていきましょうという感じですよね。
- 卜部
- JITは代表作にしていく感じですか。
- 国分
- いや、なるように頑張っているところなので、どうにか頑張りたいという感じです。
- 卜部
- 頑張ってください。
- 国分
- はい。
- 卜部
- 他に何かつくった、これをつくったぜ、みたいなのはあります?
- 国分
- それを言うと結構いっぱいつくっているつもりなんですけれども、例えば、Itamaeはご存じですか。Chefのパクリのやつの。
- 卜部
- そこまで、そういうのは大丈夫です。(笑)
- 国分
- いや、分かんないですけれども。
- 柴田
- Lightchef、Lightchef。
- 国分
- Lightchefという名乗りをしていた、ItamaeというgemのパクリをしたMItamaeというのを僕がつくったんですが、もともとItamae自体も僕がメンテしているんですけれども、開発環境のセットアップに僕が凝っていた時期があって、なんかコマンドを一発たたいたら開発環境が一から全部できるみたいな、いろんなものを結構つくっていたんです。なんですが、それをRuby DSLで途中で書きたくなって、だけどRuby DSLだと、CRubyだとRubyをインストールするためにCRubyが必要でという、なんかブートストラップに困るじゃないですか。なんですが、mrubyだと、このバイナリを1個を置いたら、もうRuby DSLが使えて、しかもRubyのインストールが、特にCRubyに依存なくできるみたいなところが、自分ではよくはまったツールだなと思っていて、そこは自分の中ではなんかよくできたツールだと思っていて。あとは、前職でなんかジョブキューシステムのbarbequeというのをクックパッドでつくったんですが、コンテナベースでのジョブキューシステムで、それはスケーリングがDockerを使うと、その1個のジョブ当たりのCPUリソースとかメモリのリソースをかっちり決められるんで、それを基にスケーリングがかなりかっちりできるんです。そこがスケーラブルなところが気に入っていて、とかですかね。
- 村田
- ベンチマークドライバは?
- 国分
- ベンチマークドライバは、そうですね、去年やったやつだとJIT以外だとベンチマークドライバかなと思っていて、Ruby3x3の計測のために、まあもともと笹田さんがやっていたbenchmark/driver.rbを改良したツールではあるんですが、結構なんかきれいにプラグインシステムとかもつくれたと自分では思っていて、なんか最近、今年のGrantのChartyをやっている別の古橋さんがプラグインをつくってくれたりしていて。
- 村田
- 秒速さんです?
- 国分
- まあ、なんか割とうまくいったかなと思っています。
- 村田
- LLRBの話はしないんですか。
- 国分
- そうですね。JITをやっている時に、最初はCコンパイラでやるという発想には僕は至らなかったので、LLVMにちょっと興味があったので勉強した時期があって、その後、その流れでそのLLVMを使ってJITをやっていたんですけれども、なんかまつもとさんがあまりLLVMが好きじゃないということで、それは入らないだろうなということで、もう少し入りやすそうな形に変形したのが、今は入っているというような感じです。
- 卜部
- LLVMはお勉強がちょっと大変だよね。
- 国分
- まあ、はい。C++が読めないと、なんか中身が読めていけないし。
- 卜部
- 学習曲線というか。
- 国分
- はい、最初が。
- 卜部
- 最初がちょっと大変?
- 国分
- はい。
- 村田
- 分かってしまうと、LLRBは拡張ライブラリでやろうとしていたところがあった。
- 国分
- そうですね。なんか頑張っていたポイントというか。
- 村田
- JITとしては珍しかったですね。
- 国分
- はい。なんかよくやったなという感じですけれども。そうすると、いろいろと困るポイントがあるんで、結局公式に動かせるようにはできなかったですけれども。
- 卜部
- じゃあ、次は著作はありますか。
- 国分
- 著作。著作というのは、本ということになるんでしたっけ?
- 卜部
- そう、あるいはなんか雑誌に書いていましたとか。
- 国分
- そうですね。WEB+DBにこないだ、この辺の人たちと一緒に2.6でなんかどういうのがあったかというのを、なんか最適化の紹介をしていたんですけれども、それ以外は多分書いたことがなくて。なんかやろうとしていたことはあったんですけれども、結構長い文章を書くのが苦手なことに気付いてしまって、もうこれはなんか結構厳しいなと思いました。1冊書くとかは、多分、難しいなと僕は思います。
- 卜部
- でも、なんかプレゼンとかを結構、今のところはしゃべっていますよね?
- 国分
- そうですね。資料をつくるのもすごい苦労しているんですけれども。
- 卜部
- 結構大変なんですか。
- 国分
- それもだいぶ厳しいぐらいなんで、あれが僕の中では限界です。
プログラミング経験
- 卜部
- そうなんですか。分かりました。次は、プログラミングの話とかにちょっと入っていきたいんですけれども、初めてコードを書いたのはいつぐらいの時ですか。
- 国分
- 多分、小6でHSPにちょっと触っていたぐらいが最初かなという気がします。
- 卜部
- 小6の時に、もうHSPをやったの?
- 国分
- そもそもパソコンを持っていたのは、小1の時におじからなんか中古のパソコンをもらって、それを触ってはいたんですけれども、なんですが、インターネットにつながったのは小6なんで、それまではなんかMSペイントとかを小いじりしているみたいな感じだったんで。
- 卜部
- インターネットがないと。
- 国分
- はい。小5でタイピングソフトの特打というやつをソースネクストのやつでやっていて、小6でやっとインターネットにつないでもらって、ずっとインターネットにつなげてと言っていたんですが、なんかなかなかつながっていなくて。つながってやっていたのが、インターネットで適当にやっていただけなんですが、そうするとゲームを自分でつくりたいという気持ちがやや芽生えて、やってみたけれどもなかなか続かなくて、その後もう高校ぐらいまでずっとやっていなかったみたいな感じです。一応、プログラミングしなくてもゲームをつくれるなんていっぱいあるじゃないですか。
- 卜部
- うん、ありますね。
- 国分
- それをなんかホームページで公開とかはしていたんで、HTMLは書けたんです。なんかHTMLでCSSもほぼ書かないぐらいのホームページで、なんかゲームを公開するみたいなことは結構やっていて。それを小中高までずっとやっていたんですけれども、ちゃんとプログラミングをもう一回始めたのは、なんか高校の授業でスーパーサイエンスハイスクールというのに高校が指定されていたんですが、それをしているとなんか特別授業みたいなのがたまにあって、2回プログラマーが高校に来て、なんか授業をしてくれたんです。1個目が、なんかCでロボットを動かしてみましょう、みたいなやつで、それも楽しかったんですけれども、2つ目がJavaでプロジェクト・オイラーで、なんか競プロみたいなパズルをやりましょう、みたいなやつで、その2つともなんかすごい楽しかったなと思ってて、かつ、なんか来たプログラマーの人がすごいかっこいいなと思ったので、なんかプログラマーになろうかな、みたいなのがその時にやっと芽生えたみたいな感じです。
- 卜部
- その時に来たプログラマーが誰だったとかわかりますか。
- 国分
- いや、全然分かんないです。多分、2人目の人はなんか国の人だったというのは覚えているんですが、でも名前とかも全然思い出せないんで分かんないです。
- 卜部
- 業界もそんなに広くないんで、実は擦れ違っているかもしれないですね。
- 国分
- はい。
- 卜部
- 最初というか興味が、なんかプロジェクト・オイラーとか、あるいはなんかロボットを動かしてみましょうとか系のやつだったんですね。
- 国分
- そうです、高校、はい。
- 卜部
- その後、でもRubyに行き始めるまでの間は、結構やっぱりなんか遍歴みたいな、何をやって、何をやってみたいなのがあるんですか。
- 国分
- 高校の間は部活と受験で大体忙しかったんで、あまりまともにやっていなくて、大学に入ってから真面目にやり始めたんですけれども。それで、なぜがよく分かんないですけれども、取りあえずC言語をなんかやろうと思ったんです。
- 卜部
- というか、東工大は入ったら普通にC言語を学ぶものですか。
- 国分
- はい。一応、2年生からCとJavaとSchemeをやるという感じなんです。
- 卜部
- 多い。
- 国分
- なんですけれども、1年の時から一応始めたかったんで、なんか取りあえず自分の生活費を稼ぐのも兼ねて、Cでバイトをやろうか、Cでというかプログラマーのバイトをやろうと思っていて、初心者を受け入れてくれているバイトが、探したらなんかある1つだけ見つかって、そこがCでなんか研修をやってくれるんです。1カ月間、C言語を教わるだけの体験ができて、しかもなんか800円の時給がもらえるみたいな、最低賃金を下回っているような気がするんですけれども。それは置いておいて、そこでCを覚えて、なんかバイトでもCを使ってというのが最初なんですが、実際にやりたかったのはなんかちょっと違っていて、ゲームをやっていた時期が長かったので、ゲームをつくりたいなと思っていたんです。なんで、実際にその時にiPhoneがすごいはやっていたので、iPhoneでゲームアプリをつくりたいなというふうに思ったんです。で、Objective-Cを勉強し始めて、その大学2年くらいに入ったのがObjective-Cで、iPhoneアプリのゲームをつくるというところだったんです。それで実際につくっていたら、サーバサイドになんかデータを送って、通信してみたいなのをやりたくなったんですが、そこでやっとRubyが現れてきて、サーバサイドの実装をするときに、その会社の周りの人は大体PHPを使っていたんです。なんですけれども、そのPHPを勉強するときに、なんかフレームワークを使うといいよみたいに言われて、CakePHPというのがいいらしいというのを聞いたんですが、本を読んでみて開けてみたら、なんか最初のほうに、これはRailsをまねしてつくられたものですと書いてあって、じゃあなんでRailsを使わないんだと思って。というのと、あとはインターネットで見た人たちが、なんかRubyを使っている人たちが、割と周りにいたんで、なんか良さそうだなと思ってRailsをさわり始めたところ、Objective-Cに比べてRubyのほうが、だいぶシンタックスがきれいで、なんかObjective-Cで苦労した経験からすると、なんかすごい書きやすいなと思ったので、そっちに移ってきたみたいな感じです。
- 卜部
- Objective-Cと比較すると、まあいろいろ。設計された時代もちょっと違うしね。それがそのままサーバサイドのほうをやり始めて、ゲームをつくるのはそのままなんですか。
- 国分
- そうですね。ゲームはそこでもう満足したというか、自分でやってみたら、サーバサイドをいじいじしているほうがなんか楽しいことに気付いちゃって、で、もうずっとそっちをやっているみたいな感じです。
- 卜部
- 他に今、なんかRuby以外で使っているプログラミング言語とかがあります?
- 国分
- 去年はSREチームというところにいた時に、Pythonで、なぜPythonを使っていたかというと、その当時はAWS LambdaでRubyがでサポートされていなかったんです。今はサポートされているんですけれども、なかったんで、チームの他の人が使えるPythonを去年は書いていて。今年はまた別のチームに移って、バックエンドチームというところにいるんですが、そこだとJavaで書いたライブラリを使わないといけないんで、ここから少し基になったKotlinを今は書いているみたいな感じです。
- 卜部
- Kotlinは何で書くんですか。やっぱりEclipseで書くの?
- 国分
- 僕はIntelliJ IDEAで書いているという感じ。
- 卜部
- IDEAだ。
- 国分
- もともと僕はJavaはVimで頑張って書いたんですけれども。
- 卜部
- そいつは書かないんですか。
- 国分
- いや。なんかJava、vim−javacomplete2というやつが、割とインポートの補完は少なくともできるし、僕はインポートの補完があれば別に書けると思っていたのでやっていたんですけれども。ただ、KotlinだとVimでそれに相当するプラグインがなくて、なんでさすがにしんどいなと思って、IntelliJを使うようになりました。
- 卜部
- なかなかタイピングの量がね。
- 国分
- はい、しんどいですよね。
- 卜部
- もうやりたいことが決まっているのに、あとタイピングの量が、ちょっとだよね。
- 国分
- はい。
- 卜部
- Rubyは、じゃあ仕事ではあまり使っていないということですか。
- 国分
- 僕は今、現職のTreasure Dataに入った時は、Railsアプリを書く人として入ったので、最初の1年ぐらいAPIチームというのがあって、そこでRailsアプリを書いたんです。その後、それを出たからといってメンテを下りられるわけではないので、僕自身がつくったRailsアプリが1個か2個ぐらいあるんですが、それもたまにレビューとかをしていますし。あとはSREチームにその1年後に入ったんですけれども、そこでさっき紹介したMItamaeがあるんですが、それをデプロイに使っているんで、そこのスクリプトもRubyで書かれていますし。あと、そこ以外のところだと、インフラのプロビジョニングにChefが使われているので、そこでRubyを書くこともまだありますし、という意味はRubyを使っていますし。あと、一応うちのチームにも、Rubyで書かれたコンポーネントが幾つかあって、ジョブをRailsのフロントエンドが受け取ったワーカー、ワーカーが、弊社の古橋が書いたPerfectQueueというgemで動いているんですけれども、それがRubyがベースで書かれているんでRubyで動いていますし。というのと、fluentdをベースに作られたミドルウエアがあって、それもRubyなんで、コードレビューレベルでは、僕がそれを書いているわけじゃないんですが、レビューを触ってはいますという感じです。
- 卜部
- コードレビューとかは呼ばれていく感じですか。自分で見て?
- 国分
- チームがあって。
- 卜部
- なんか全部見ていると、いつまでたってもコードレビューが終わらない問題とかがあるじゃないですか。
- 国分
- なんですが、チーム、全チームごとにメンションがまず飛んでいるんです。一応、ノーティフィケーションが来るわけじゃないですか。全部を見るとさすがにしんどいんで、自分が見ているやつを見るわけですけれども、そうするとRubyは見られちゃうんで、まあRubyのやつは見ますという感じです。
- 卜部
- サックリ見って、すごいですね。あとは、Rubyの好きなところと嫌いなところは、それぞれありますか。
- 国分
- 好きなところは、僕が思うのは3つで、スクリプト言語としてだいぶ使いやすいと思っていて、それを例えばPythonとかbashで書こうとすると、なんかちょっと書き味が悪いというか、少なくとも自分の趣味じゃない。Rubyがちょっとした自動化をするときには、だいぶ手になじむかなというところが気に入っています。というのと、DSLとしての用途として使っていることが割とあって、さっきのMItamaeもそうですし、あとキーリマッパーにもRubyのDSLで設定できるようにしたりとかしているんですけれども、書きやすいというのと自由が利くというところがあって、他のやつと比較すると、例えばTerraformというツールが結構はやっているですが、それは……
- 卜部
- Terraformがはやっているんだ、知らなかった。
- 国分
- まあまあ、はい。それは置いといて、HashiCorpというところがつくっているTerraformというツールは、HCLという外部DSLを使っていて、なんでGoで実装されているけれども、別にGoを使えるわけじゃないという。ちゃんとかっちり定義されているんですけれども。ただ、シンタックスがちょっと微妙で、String interpolationみたいなのを、Rubyで結構きれいに書けるというか、文字列の処理を柔軟に書けるじゃないですか。なんですが、それをHCLでやろうとすると、なんか結構ワークアラウンドっぽい書き方になっちゃっていて、なんかすごい書きづらいんです。なんで、Rubyで書くと、なんかいろいろ再定義できて危ないというか、やりたい放題できてしまうというのは悪いところだと思いますが、少なくとも1人で書いているとか少人数で書いているときは、それは問題にならないんで、自分が好き放題に使う分には、Ruby DSLはすごい使いやすいなと思っています。3つ目は普通にRailsでWebアプリをつくるときのツールとして、僕が今でも一番最初に選択するのがRailsで、一応、今は仕事でKotlinでウェブアプリを書いていますけれども、それでもやっぱりなんかJavaのツールの影響をだいぶ受けているので、Kotlinのために設計されたライブラリではないという感じがするんです。なんで、なんかちょっとアノテーションがめちゃくちゃ並んで、見通しが悪いみたいなのが結構あって、それに比べるとRailsでRubyのためにつくられたようなフレームワークで書けると、すごいやっぱりすごいよくできているなという感じがしていて、Railsが使えるという意味では、Rubyはそこの用途になんかすごい使えるなと僕は今でも思っています。
- 卜部
- Kotlinで、Kotlinだけで書かれているプログラムはそんなにつらくない感じ?
- 国分
- それ用にできていれば多分、結構、なんか僕だったらこうつくるかなというイメージはあるんですが、でも、それが実際に存在するかというと、みんななんかJavaで枯れた技術を使いたがるんで。
- 卜部
- それは難しいですね。なんかJavaのライブラリが使えるから便利というところもあると思うので。
- 国分
- そうなんです。
- 卜部
- 全部自分で、Go langだったら全部自分で書きゃみたいな話なので、それはそれでGo langの流儀になるんだけれども、それはスタイルが統一されるという意味ではいいかもしんないけれども、でも、既存のライブラリが使えないのは痛いよね、みたいな話が。
- 国分
- そうなんですね。
Rubyについて
- 卜部
- どこが落としどころなんでしょうねという感じですね。ごめんなさい。嫌いなところ。
- 国分
- 嫌いなところは、最適化がしづらいところだと僕は思っているんですが、なんですけれども、実際に何が妨げになっているかというと、例えば大域脱出とかトレースポイント辺りが大変だと思っているんですが、そのどっちも外せないなと思っていて、だって大域脱出がなかったら、僕はRubyは多分、使わないぐらい不便になるんでというのと。トレースポイントはデバッガに絶対必要ですし、かつトレースポイントは、例えば無効にしたモードとしないモードがあったとするじゃないですか。そこでしないモードでだけ最適化を有効にしちゃうと、最適化をしたことによって発生するバグがデバッグできなくなっちゃうんで、やっぱりトレースポイントがある状態で最適化をしないといけないというふうに思っていて、そう考えるとその嫌いなところも割としょうがない部分かなとは思っています。
- 卜部
- そうですね。多分コンパイル系のプログラムだと、最適化したという情報もDWARFのセクションの中に残しておいて、いざブレークポイントに落ちたら、そこで残しておいた情報から再構築してみたいな話に多分なっていくんだけれども、なかなか「それをやるのか?俺らが?」みたいな。
- 国分
- はい。
- 卜部
- なんかそのDWARFのデバッグ情報とかをある時ふっと見て、これすげえつらいなと思って、同じことをやる気にはならない。
- 国分
- そうですね。
- 卜部
- 次は、Rubyを使って成功だったという事例はありますかというやつを聞くんだけれども、それはさっきなんかこれまで何をつくりましたかのやつで、結構聞いたと思うので。
- 国分
- そうですね。
- 卜部
- その次の、自分にとってこれはキラーアプリだったというのは何ですか。
- 国分
- キラーアプリは……
- 卜部
- 自分が作ったんじゃなく、他人がつくったやつでこれはというやつ。
- 国分
- 他人がつくったやつ?多分、Railsが僕の中で今のところは一番お気に入りなんですが、あと挙げるとしたらfluentdが一番クラウドネイティブとしていろんなところで使われているので、そこはRailsの次ぐらいに普及しているぐらいの気持ちで見ていて、すごい頑張っているなと思います。なんかポジショントークみたいになっていますけれども。
- 卜部
- 次はRubyの習得は簡単でしたか。
- 国分
- そうですね。Objective-Cを勉強した時点で、オブジェクト指向特有のなんか難しいポイントを既に突破していて、例えば、最初とかはクラスメソッドとインスタンスメソッドの違いとかが全然分かんなかったんです。でも、それをObjective-Cで突破していたので、Rubyに入ってくると、なんか別に同じ機能が単に楽なシンタックスで使えるぐらいの差しかなかったので、特に障壁は感じなかったです。
- 卜部
- そういう意味で言うと、C++とかJavaとかのオブジェクト指向と、Objective-Cのオブジェクト指向はちょっと違うよね。
- 国分
- まあそうですね。あんまり僕はC++はがっつり書いた経験がないんで、そこまで違いはよく分かっていないんですが、どの辺が違う感じなんですかね?
- 卜部
- なんかメソッド呼び出しじゃないですか。
- 国分
- はい。ディスパッチがダイナミックかどうかという話ですか。
- 卜部
- そう、という辺りでなんか。シンタックスはさておき、動き方は結構似ている。
- 国分
- まあまあ、はい。
- 卜部
- Objective-Cは、ちょっとシンタックスが特殊過ぎて、なんか。
- 国分
- なんか全然違いますね。
- 卜部
- 引き数の渡し方とかがちょっと特殊ですけれども。これはRubyだけじゃなくて、全般的なんですが、今まで読んだ中で最も美しいソースコードは何でしょうか。
- 国分
- あれですね。vm.cからincludeされてる.incのファイルの生成機構が今はすごいきれいになったなと思って、卜部さんがやったやつなんですけども。
- 卜部
- そうなんですか。ありがとうございます。
- 国分
- あれは何がきれいかというと、Cのコードを生成するためにRubyが使えるわけじゃないですか。Rubyを使うと普通は遅くなっちゃいますけれども、Cのコードを生成しているんで、Rubyできれいに書きつつ、しかも早いコードが書けるというところが、なんかすごいいいなと思っていて、それをなんかMJITでもだいぶ使わせていただいているので、とてもお世話になっていますという感じです。
- 卜部
- 良かったです。
- 国分
- はい。
- 卜部
- でも、あれも結局、大きいERBだよね。
- 国分
- まあ、そうなんですけどね。
- 卜部
- ERB関連のなんかものが、なんだかんだでこれまで人生で関わりが多い感じですかね?
- 国分
- そうですね。まあChefとかを使っているとテンプレートというか設定ファイルはERBで生成するんで、そういう意味でERBは使いますし、そうですね。ERBを今はメンテしていますし、というところでは関わりはあります。
- 卜部
- 僕も前職でfluentd.confをERBで設定するという。
- 国分
- まあそうなりますね。
- 卜部
- なかなかすごいことやってます。
- 村田
- ちなみにジェネレーター系が多いんですか。
- 国分
- なんかSQLをERBで生成しているみたいな人もいますよね。というか、多分古橋さんがうちのアプリでもやっていると思います。
- 卜部
- 今、興味を持っているテーマは何ですか。
- 国分
- 分散システムですかね。うちの会社がスケールする大規模な分散システムを、データの処理を頑張ってつくっているみたいな感じなんですが、それをうまいことスケールするシステムをデザインする、かつレガシーなシステムを抱えつつ、そこから少ない工数でどうにか実現できる道を探していくみたいなのは、結構難しいと思っていて、それを考えるのは僕にとっては結構楽しいんで。それをずっとやっていて、それが今のところ、まだ自分がすごいできているとは思っていないので、伸ばしたいスケールなんで、そこを伸ばすところが楽しんでいるという感じです。
- 卜部
- その分散システム特有の面白さというか、難しさみたいなところはあります?
- 国分
- 1つのシステムに比べると障害が起きやすいんです。例えば、プログラムのプロセスの中で走っているやつは、メソッドが呼び出せませんみたいなことは、バグじゃない限りはなかなか起きないわけじゃないですか。なんですけれども、他のシステムになった瞬間に、RPCは普通にネットワーク障害とかは、突然シャットダウンされましたとかで失敗しやすくなりますし、というところを、設計の仕方が変わってくるというところが、問題が変わるポイントかなと思います。
- 卜部
- ありがとうございます。プログラミング系の話は大体そんな感じなんですけれども、他になんかプログラミングのことで聞いておきたいみたいな?
- 柴田
- 突然振られるなんて考えてなかった。
- 卜部
- まあまあ、まだまだ時間があるんで。
- 村田
- 学生の時の研究と今のやっていることは、なんかつながりがあったりするんですか。
- 国分
- 学生の時の研究は、鈴木将哉さんという人が同じ研究室で先輩にいたんですが、その人が…モデル検査は分かります?
- 卜部
- うん。
- 国分
- モデル検査用の言語、モデリング言語と呼ぶんですけれども、モデル検査用のツールとして簡単な言語を設計していて、それをgoでコンパイル、別のモデルチェッカー用のより低レベルな言語にコンパイルするやつを書いていたんですが、そこのそれが何用のツールかというと、分散システム用のモデル検査言語なんです。何かというと、分散システムのプロセスとかシステムとかを抽象化してかけて、こことここがつながっていてみたいな、その挙動を通信の記述とかができるんです。それを書いておくと、その通信が突然シャットダウンされましたとか、そのネットワークが故障しましたとかが、自動でモデル検査できるようになっていて、それの分散システムのアルゴリズムを検証するのに特化した言語なんです。それがもともとの研究なんですが、僕がやっていたのは、自由に障害を挿入できるようにするというのを、言語の拡張としてやっていて、学部の研究なんですけれども、その言語の上にここを故障させるみたいなのを、なんかDSL的に書けるようにして、言語を拡張してより多くの故障を検査できるようにしましたというのが、研究でした。
- 卜部
- 楽しそう。なんかそれは今、僕らがやろうと思うと、いきなりChaos Monkeyみたいな話になっちゃって、本番に突っ込むのかみたいな話だけれども、別にモデルで検査できれば便利だよね。
- 国分
- そうですね。
- 村田
- モデル検査上でのChaos Monkeyみたいな感じなんですかね?
- 国分
- だからアルゴリズム、モデルチェッキングはそのデザインの検査なんです。実際のシステムでテストをするわけじゃなくて、アルゴリズムそのものを網羅的に検査するという話なんで、ちょっとレイヤーが違うかなと思います。
興味ある言語
- 柴田
- じゃあ、質問を思い付いたんで。
- 国分
- はい。
- 柴田
- 今は触っていないプログラミング言語で、なんか勉強しておきたいなとか、興味あんなみたいな言語は何ですか。
- 国分
- それはRustですかね。
- 柴田
- Rust。
- 国分
- こないだ言語の速いランキングの、こうTierみたいなツイートが最近流れていましたけれども。
- 柴田
- あったね。
- 国分
- RustはCとC++と一緒のところにあって、おお、すごいなと。
- 柴田
- 一番上にあったよね。
- 国分
- Goの1個上なのか、みたいな。
- 柴田
- そうね。
- 国分
- そこがなんか本当にそうなのかという感じはしますけれども。でも、そこに本当にできているとしたら、だいぶ使い勝手も良さそうですし、いいんじゃないかと思います。本当にSEGVしないのかというと、アンセーフが囲まれているところによってくると思いますけれども、それをなんかちゃんと使わない文化が根付いているとしたら、うまく機能すると思います。
- 卜部
- 何年か前のRuby会議だっけかなんて、wycatsが来て、Rustで拡張ライブラリ書くぜみたいな話をして。
- 柴田
- アーティーチョークだっけ、なんか。
- 国分
- も、まあRustですね。
- 柴田
- Rust製で、確かなんかRubyだかgemのなんかやるみたいなやつだよね。
- 卜部
- あまり真面目に聞いていませんでした。(笑)
- 柴田
- 僕も真面目に聞いていませんでした。へえーみたいな、そうか、はい。
- 卜部
- あとCargoが良さそうだよね。
- 国分
- そう、なんかあんまり使っていないんで、なんかあんまり分かっていないんですけれども、どの辺が良かったですか。
- 卜部
- なんかDependency Trackingとかが、ちゃんとちゃんとしている気がする。
- 国分
- bundlerがないところですか。
- 柴田
- そう。Cargoは素晴らしいんです。Cargoはrakeとgemとbundleが全部ちゃんと1個のコマンドで実行できるさんみたいなのなので。
- 国分
- rakeも一緒なんですね。
- 柴田
- そうそう。だから
- 国分
- npmとかも、まあそういう。
- 柴田
- npmだっけ。npmはちょっと違うけれども。
- 国分
- あれは違うかな、ちょっと違うな。
- 柴田
- そのなんかCargoでもうそのライブラリのひな形をつくって、その中にもうなんかdependencyをピッピッと追加して、cargo build、cargo testやるとか、ビルドできてテストできて、cargo publishみたいな、パブリッシュじゃないと思うけれども、そのリリースしますみたいなコマンドを実行したら、もうそのライブラリがピッと入って、自分のアプリケーションに戻って、それをdependencyに追加して、またcargo buildしてcargo testしてみたいなのがすごくよくできていて、賢い人がつくったんだろうな、みたいな、wycatsという人なんですけれども。
- 国分
- なんだろう。ツールが統合されていて覚えることが少なくて良い、みたいなことですかね。
- 柴田
- そうですね。なんか理想の言語のツールチェイン、なんかコマンダーみたいな感じがします。
- 国分
- なるほど。
- 村田
- これからはRustだ。
- 柴田
- うん。(笑)
- 国分
- まあ、Goとかその辺は後から追加されたような感じですもんね。
- 柴田
- うん。
- 村田
- Rustの時代が。
- 卜部
- まあ、なんかやっぱり新しいプログラミング言語とかを勉強してみると、新しい知見があっていろいろ面白いですよね。
- 村田
- うん。他の言語でなんか困っていることが多い部分を、ちゃんとつくり直すというのは、いいことですよ。
- 国分
- そうですよね。
- 村田
- ゼロからやり直す手間が。いいな。
- 卜部
- プログラミングの話はこんな感じですか。
- 柴田
- はい。
大学入学後のお話
- 卜部
- じゃあ、次は生い立ちの話の続き辺りなんですけれども、大学に入りましたくらいのところまで聞いたと思うんです。
- 国分
- はい。
- 卜部
- そこからRubyの話に行っちゃったんだけれども、大学はその後、どうなったんですかという話。
- 国分
- その後どうなったのか。
- 卜部
- だから、結局分散システムのモデルチェッキングみたいな研究室に進んだと。
- 国分
- はい。研究室に入るのは4年生の時なんで、それはもうほぼ卒業間近みたいな感じなんですけれども、僕は院に行っていないので4年で終了なんで、3年間何をしていたかというと、その最初の1年半ぐらいがそのCのアルバイト。それはWindowsのなんかデバイスドライバをいじくって、なんかセキュリティーのツール、Windows用のセキュリティーツールをつくるという会社にいたんですが、なんか全てのWindows APIコールをトラッキングして、なんか不正なことが行われていないかみたいなのをチェックするツールをつくっていて、というところにいて。
- 卜部
- なんかすごいテクノロジーにとんがっていそうな会社ですね。
- 国分
- でも、なんかだいぶエンタープライズというかセキュリティーの会社なんで、お堅い感じだったので、何というか、がりがり開発するような感じじゃなかったので、そこは辞めたという感じなんですけれども。そうですね。2年、その大学2年の半分ぐらいから3年のクックパッドに入る直前ぐらいまでは、そのObjective-Cでアプリをつくっていたんですけれども、それと並行して、なんか僕は音ゲー、音楽ゲームサークルに入っていて、入っていてというか、なかったのでつくって、そこでなんかその会員たちがランキング、スコアランキングで競うみたいなサイトをRailsでつくったりとかしていて、そこが趣味のプログラミングで、なんかいろいろやっていたような場所です。
- 卜部
- 大岡山はゲーセンがあるんだ?
- 国分
- 大岡山はないんです。東工大の近くのゲーセンは幾つかあって、武蔵小山か。
- 卜部
- 近くって言うほど近くない。(笑)
- 国分
- それは、ちょっとまあ、そうですね。ちょっと電車で行かないといけませんけれども。あとはさらに遠いですが、溝の口とかには割と行きますね。
- 卜部
- まあ、まあ言うても電車で1本ということか。
- 国分
- そういうことです。
- 卜部
- 電車で1本のところに遊びに行ってみたいな感じで。
- 国分
- 結構なんか溝の口が特に大きくて、なんかいろんな学年を集めて、集まっても、なんか普通に収まるみたいな。いろんなゲームで対抗してみたいなのをやっていました。
- 卜部
- ちょっと話がずれるけれども、その頃遊んでいたのは何なんですか。
- 国分
- 僕は一番やっていたのはbeatmania IIDXで、なんか鍵盤が7個あってターンテーブルがくっ付いている、よく分かんないやつを一番やっていて。あとはjubeatというちょっと前ぐらいにつくられたやつもやっていましたし、あとREFLEC BEATというその頃につくられたやつもやっていて、あとはDDRとポップンもちょっとやっているぐらいの感じです。
- 卜部
- その頃ね。
- 国分
- はい。
- 卜部
- そのゲームのやつは今でもやっているんですか。
- 国分
- なんかそのbeatmania IIDXで皆伝というランクがあるんですけれども。
- 卜部
- すごい、皆伝まで行った?
- 国分
- はい。なって、なんかちょっとやったら、なんかだんだん……
- 卜部
- 極めちゃった?
- 国分
- そこで極めたとは思っていなくて、なんかランカーみたいな人が割と友達にいたので、なんか自分はそこまですごくないと思っていたんですけれども、ただ、その皆伝になるというのを目標にはしていたので。だんだん伸びが縮んでいくわけです。
- 卜部
- そうですね。
- 国分
- かつ、就職しなきゃいけない時期がだいぶ僕は近づいていたので、そろそろプログラミングをもっとやらないといけないんじゃないかという焦燥感が芽生えてきて、だんだんやめていったみたいな感じでした。
- 卜部
- 今はじゃあ、あんまりゲーム、ゲームセンターに行ったりとかはしないの?
- 国分
- そうですね。なんか本当にやろうと思うと、毎日何時間かやんないと腕がどんどん落ちていくので、さすがにそれはできないと今は思っているので、今は全然行かないです。
- 卜部
- なんかたまにエンジョイしに行けばいいと思うけれどもね。
- 国分
- まあ、たまにエンジョイは、たまにはしますけれども。
就職
- 卜部
- 大学、じゃあ、就職しましたという感じですか。
- 国分
- そうですね。そのiPhoneアプリの後にクックパッドに入って、クックパッドに入ってからは、ほぼ単位が取り終わっていたので、もう週5の毎日8時間ほぼ来ているみたいな、ほぼ正社員並みにバイトをしていたんです。
- 卜部
- アルバイトだけれども、みたいな。
- 国分
- はい。なんか……(笑)
- 卜部
- 最初の頃は何をやっていたんですか。
- 国分
- そうですね。普通にレシピサイトの中にも幾つか機能があったんですが、その時、新規サービスとして考えられてたのが多分4つくらいあって、1個が買い物事業部というのが、特売、今はトクバイという別の会社として今は動いているんですけれども、特売情報を出しているやつで。あとは有料のレシピを出しているプロのレシピというやつと、あとは野菜の直売、直販、野菜を送るサービスをやっていて、それがやさい便というやつなんですが、それとあと1個、健康レシピです。やや不健康な人向けのレシピをやってましたね。
- 村田
- 糖尿病とか。
- 卜部
- そうそうです。
- 村田
- 食事制限をしなきゃいけない人向けに、食事制限があるんだけれども、楽しくご飯が食べられるようなレシピを提供という感じのサービスでしたね。
- 国分
- その4つを転々と回るような遊撃部隊な、なんかアルバイトとして活躍していて、なんかその全てのRailsアプリを触ってみたいな。まあ同じアプリですけれども、なんか別々のコードベースみたいな感じなんで、なんかいろいろなやつを触れて、そこでいろいろ覚えたみたいな感じでした。
- 卜部
- じゃあ、最初はなんかどこぞの部署に所属とかじゃなくて、いろんなところを見て、回ってみたいな。
- 国分
- 一応多分、新規事業部という名前でまとめられた、別にまとまっていないグループみたいな感じでした。なんかRailsというか、そもそもCSSもJavaScriptも全然分かりません、みたいな感じだったので、そこでいろいろ教えてもらったという感じでした。
- 卜部
- そういう意味で言うと、そうか。最初はだからゲームをつくりたくてゲームバックエンドでという話で来たから、別にそういうHTMLがどうとかCSSがどうとかという方向から入ってきたわけじゃないんだ?
- 国分
- そうですね。だからRailsのコードは書けます、本当か? みたいな感じだったんですけれども、まあRubyが書けるつもりみたいなアルバイトとして来て、実際はウェブも全然触ったことないんで、なんか頑張りました、みたいな感じでした。(笑)
- 柴田
- 頑張り屋さんだね。
- 国分
- はい。
- 村田
- 全然そんな頃のことを覚えてねえや。特売にもいたの?
- 国分
- 特売にも、はい、特売は結構やっていましたよ。
- 村田
- 健康チームにいたことは覚えているけれども、特売にいたことは全然覚えていなかった。
- 国分
- 今言ったやつは、割と全部触っていました。インターンはプロのレシピにいたんです。なんかSolrとかは当然全然触ったことがないけれども、HTMLもCSSも、なんかJavaScriptも全然分かんないけれども、その全てを書き、Solrのクエリをがちゃがちゃするやつ、コードを書いて、なんか検索サービスをつくるみたいなのをやったりとかして、なんか頑張りましたという感じですけれども。
- 村田
- いいな。
- 国分
- はい。それができたので、どうにか受かりましたという感じでした。
- 卜部
- その後、なんかERBとかHamlとかの話が始まるのは、全然仕事とは関係ないんですか。それとも仕事絡みなんですか。
- 国分
- 仕事は多分、関係はなくて、仕事でそういうのをやっている部署はクックパッドにあるんですけれども、あったんですけれども、開発、Devインフラは何だっけ?
- 村田
- 開発基盤。
- 国分
- 開発基盤、開発基盤グループというのがあって、もう少し広く言うと技術部と呼ばれていたんですが、なんか技術部と言われている人たちが、なんかスーパーハッカー集団みたいなイメージがあったんです。でも実際、なんかsorahとか、Rubyコミッターみたいな人たちが大体いるみたいな部署で、Miyagawaさんとかも所属していましたし、なんかそこにやや憧れがあって、バイトの時からそこにずっと入りたいと言っていたんです。別にHTMLが書けないくせに何を言っているんだ、みたいな感じなんですけれども。
- 卜部
- HTML書ければいいかという、なんか。
- 国分
- まあまあ、それはあれですけれども。そこに入られたのは新卒として入社してからなんです。なんでバイトの間はそれを仕事としてはやっていなくて、それまで入るために、頑張ってなんか実績を残そうとしていたんです。なんで、バイトの間はRailsのプラグインを、なんか自分でRailsのコードを読んで、頑張って1人で公開していたりとかを趣味でやっていて、それをいろいろやっている延長上で、なんかHamlをつくったら、それが一番なんかこうヒットしたというか認められて、技術部に入れてもいいんじゃない? みたいになって入られたという感じでした。
- 卜部
- それはいつ頃ですか。
- 国分
- それはだから大学卒業直前なんで、2015という感じ、頭ごろ。
- 卜部
- じゃあ、アルバイトをして、始めて1年はたたないくらいか。
- 国分
- そうです。クックパッドのアルバイトを始めて、多分1年たたない、たったぐらいじゃないですか。
- 卜部
- お?
- 国分
- お、来た。こんにちは。
- sorah
- こんにちは、すいません、体調が死んでいます。
- 国分
- 大丈夫ですか。
- sorah
- まあ、大丈夫。
- 村田
- クックパッドのバイトはいつからなんでしたっけ?
- 国分
- 何て?
- 村田
- クックパッドのバイトを始めたのは、2014年ですか。
- 国分
- 2010?
- 村田
- 13?
- 国分
- 2014か、14の夏にインターンをした後、ずっとバイトみたいな感じなんで、そうですね。3年の後半、2014の後半。
- 村田
- じゃあ、僕はバイトでいた時はかぶっていないですね。
- 国分
- いや、むらけんさんはいたんじゃないですか。
- 村田
- スペインに。
- 国分
- ああ。
- 村田
- 2014年の夏だとしたら、僕はもうスペインに行っている。
- 国分
- いや、でも僕……
- sorah
- いや、まだ白金台のオフィスで、ワイワイガヤガヤやっているのを見たことがあるから、多分かぶっていない、かぶっていないことはないと。
- 国分
- そう、2013かも。
- 村田
- 13かもしれない?
- 国分
- 13?
- 村田
- じゃあ、13じゃないですか。
- 国分
- あ、13です。13の夏からです。
- 村田
- だとしたら、約1年か半年ぐらいは白金台のオフィスで見掛けているはず。なんか見た記憶もある。
- 国分
- なんか白金台の面接に最初に行った時、むらけんさんが料理していたのが記憶に残っているんです。
- 村田
- 本当ですか。
- 国分
- まあ、いたんです。
- 村田
- じゃあ、いましたね。
- 国分
- はい。
- 卜部
- なんか初期の頃の国分さんの印象とかは、記憶に残っているとかはなんかあります?
- 村田
- ないな。
- sorah
- とにかくコードが書けなくて大変そうだなと思ってて。気付いたらこうなっていたから、結構びっくりすることがありで。
- 村田
- スペインから戻ってきてから開発基盤にいたから、あれ? と思った記憶はある。
- 国分
- そうなんですね。その間……
- 村田
- だから、その前は開発基盤に来るタイプの人だと思っていなくて、開発基盤に来たいという気持ちがあったというのを、今、初めて知ったので。
- 国分
- そうなんですね。
- 村田
- 知らなかったです。
- 国分
- ずっとそう言っていましたよ。
- 村田
- サービス開発をしたくて来た人という勝手な印象で記憶して。
- 国分
- なんか……
- sorah
- サービス開発をしたいという印象があったわけじゃないけれども、僕はでも開発基盤に向いている人材とは最初の頃は当然思えていなかったから。
- 村田
- 露骨に言われている。
- 国分
- 手厳しい発言が。
- sorah
- いや、なんかそこを狙って意図的にそこまで行動しているのかなと思っていたのは、完全に知らなかったから、ええ。
- 村田
- よく頑張ってちゃんと開発基盤に入ったし、素晴らしいですね。
- 国分
- いえ、それはなんか……
- 卜部
- すごい、だから会社に入ってからすごい成長したのかもね。
- 村田
- うん。
- 国分
- 多分、面接の時に、なんかどこに入りたいですか、みたいなのを言われて、技術部に入りたいですって言ったら普通に断られて、なんか多分悔しかったんだと思います。
- 村田
- それはセコンさん?
- 国分
- その時はセコンさんだったと思います。
- 卜部
- 面接の時の希望は、どのぐらいあれなんですか、真面目に取ってもらえるんですか。
- 村田
- 人によりますけれどもね。彼の先輩のeagletmt君とかは、もう最初からインターンの時に私の下でインターンをして、そのままアルバイトを続けて、そのまま開発基盤にすっと入ってきました。
- sorah
- 今でもうちの感じだと、新卒入社でこの部署に配属されなかったらやめますみたいなことを、強気なことを言って通る会社ではまああるので、そんな感じかな。
- 卜部
- そうなんだ。
- 村田
- だから、十分やれそうなら通りますよね。
- 国分
- うん。まあ実力次第と私は…多分、当時の実力は全然なかったという話で。
- 村田
- なので、そう当時は、当時は十分やれなそうだったから、逆にあれなんじゃないですか、守ってもらったんじゃないですか。やれそうなところに置いてもらったんじゃないですか。
- 国分
- まあ、そういう見方も。
- 卜部
- でも、もう新卒入社して、しばらく技術部でやっていたという感じですか。
- 国分
- そうです。
- 卜部
- その頃のエピソードは、多分しゃべられないことも多々あると思いますが、しゃべられそうなやつを。
- 国分
- そうなんですか。しゃべられないことはないんじゃないですか、分かんないですけれども。
- 卜部
- そうなの。
- 国分
- なんかそういうやっていたうちの、だいぶオープンな仕事の一つだと、byebug、Rubyのデバッガが、byebugというのがあるじゃないですか。
- 卜部
- ありますね。
- 国分
- pry-byebugというやつを入れると、binding.pryとやって、なんかデバッガを起動すると、Railsが10倍遅くなる。
- 卜部
- pryがコンソールに落ちてくると、そこで既にデバッガになっていて、みたいな感じね。
- 国分
- はい。
- 卜部
- ステップ実行とかができる。
- 国分
- 要は中身でトレースポイントがEnableされているわけですが、そうするとなんか10倍遅くなるという現象があって、それはなぜかというと、デバッグしていく途中が遅いのは当然そうなんですけれども、それを抜けた後も遅くなっちゃうというのが問題で、それがなぜかというと、トレースポイントがEnableされたままだったんです。それは遅いでしょうねという感じなんですが、それをdisableにするとSEGVしてしまうという問題があって、それが僕が最初にRubyを送った最初のパッチで、なんかvm_trace.cの中でGCのバグがあって、すごい見つけるのが大変なやつをどうにか見つけて、なんかそれを見つけるのに、なんか多分何日かかかって、業務時間を何日も捧げて、なんかデバッグしたみたいな感じだったんですけれども、それがどうにか成功してbyebugも速くしたし、Rubyのバグも直してというのが、なんか割とオープンな仕事のうちの一つです。
- 卜部
- デバッガのデバッグは普通にいかないからさ。
- 村田
- そうですね。
- 国分
- だいぶしんどいですよね。
- 卜部
- 霊感に頼るしかない。大変ですね。
- 国分
- はい。そういうところはやっていました。
- 卜部
- とか、なんかそういう感じで、ずっとローレベルというか低レイヤーな話をずっとやっていた感じですか。
- 国分
- そうですね。それはだいぶレイヤーが低いんですが、他のやつだと、Railsアプリを開発環境を速くするというのを結構長い間やっていて、それはbyebug自体がそもそもそれの一つではあるんですけれども、なんかGC.disableするみたいなのをローカルでだけやったりとか、あとはなんかそもそもレガシーなアプリだったんで、Railsのベストプラクティス的な設定がアップデートに追従できていなかったんです。なんで、ブラウザのキャッシュとかが全然利けていなかったんです。だから、一回ローカルで配信したやつが、アセットが全然ブラウザ側でキャッシュされていないとか、そういうのを一つ一つ見つけてつぶしていくみたいな仕事をやっていたりとかもしました。
- 卜部
- さっきのMItamaeの話とかもそうだけれども、開発環境を整備するみたいな話に結構モチベーションがあるんですかね。
- 国分
- そうですね。自動化と高速化が2つ好きなテーマだったと思います。
- 卜部
- クックパッド時代にこんなことがあったぜ、みたいな話とかは、なんか。
- 国分
- こんなことがあったぜ、こんなことがあったぜ。あとは何ですかね。sorahさん、なんかありますか。
- sorah
- 今、社内で過去のプルリクエストを順番に見ているんだけれども、なんか面白いのがないかなとずっと探しているんで、ちょっと待って。
- 村田
- インサイダー、インサイダーの人はいいな。
- 国分
- 何だろうな。なんかいろいろやらかしたような気はするんですけれども。
- 村田
- まあ、やらかしはみんなやっていると思う。
- sorah
- デプロイボーナスタイムの話とかはどうですか。
- 国分
- デプロイ何て?
- sorah
- デプロイボーナスタイム。
- 国分
- デプロイボーナスタイム?
- 村田
- それは何の話だ。
- sorah
- 覚えていない?
- 国分
- デプロイボーナスタイム、何だ? なんかreturn trueされていたやつの話?
- sorah
- なんかうちの開発をするときに、デプロイが本当は11時以降だとできなかったりするようになっているんだけれども。
- 村田
- そうだ、そうだ。
- sorah
- デバッグしていて、deployable timeとその1行目でreturn trueと書いた状態で、国分さんがコミットをしていて。
- 国分
- 最悪の。
- sorah
- で、意気揚々とデプロイできない時間にデプロイしちゃった人がいて、周りから、周りからこれ、違う、「これはデプロイできちゃいけないやつじゃん」と言いだして(笑)。
- 国分
- そうですね。やばいバグを埋め込んでいまして。
- 卜部
- なんかそういうのを気にしたくないから自動化するんだもんね。
- 国分
- そうなんですよね。ミスっちゃうとどうにもならないというか。なんかその自動化というか、開発用のツールはなんかテストを書くと、そのテスト自体のメンテもあるし、あんまりペイしない感じがあって。本番のアプリだと、テストはそれは書くんですけれども、開発ツールだと、まあバグったら直せばいいというのがあって。ただ、デプロイになると、デプロイがなんかできちゃったから直すというわけにもいかないんで、なんか怪しいラインですよね。
- 卜部
- オペミスに若干寄ってくる感じ?
- 国分
- そうですね。
- 卜部
- どういうふうに復旧すればいいのかみたいな。ありがとうございます。クックパッドに結局、何年いたんですか。
- 国分
- バイトを合わせると3年半だと思います。
- 卜部
- 3年半くらい。
- 国分
- はい。
トレジャーデータ入社
- 卜部
- で、2社目ですか。
- 国分
- 今は2社目です。
- 卜部
- 今は2社目ですか。
- 国分
- 一応、なんか買収というのと、これからアメリカオフィスに移るというのがあって、なぜかオファーレターは毎年もらっていますが、2回社内で転職しているみたいな感じなんですけれども、そうです、今は2社目です。
- 卜部
- なんかトレジャーデータに行きたかったのは何があったんですか。何をやろうと思って。
- 国分
- 分散システムに興味があって、あとはミドルウエアの開発を、まあRubyでも、例えば前職でつくったbarbequeというやつは一応、ミドルウエアと呼べるとは思うんですけれども、Rubyしか書けない人間になりつつあるなと思っていて、なんかちょっと自分の個人のキャリアとしてはリスクがあるなと思っていて、いろんなRuby以外の開発を経験したいと思っていたんです。なんで、トレジャーデータだと、Rubyもまあ使っているんで自分は活躍できるし、かつJavaも他でメインで使っているので、それでミドルウエアを書くみたいな体験も割とできるところなので、それをやりたかったのが一つと。あとは英語をメインで使う会社なので、英語の勉強にもなりますし、あと、アメリカで働きたいというのを思っていたので、それがクックパッドだと海外拠点が今はブリストルだったりするので、アメリカには行けないというのがあって、本社がアメリカにあるトレジャーデータにより興味があったみたいな感じではあります。
- 卜部
- ブリストルは行ってみたことはあります?
- 国分
- いや、ないんですけれども、どうなんですか。
- 卜部
- 行ってみたことないのに、ブリストルは嫌だという。
- 国分
- いや(笑)。なぜアメリカに行きたいかというと、半分は英語が勉強したいというところがあるんで、それは別にブリストルでもいいんですが、シリコンバレーがあるわけじゃないですか。
- 卜部
- はい。
- 国分
- かつ、技術者コミュニティーとして一番進んでいるのは、やっぱりシリコンバレーだと思うので、一番面白いエンジニアにも会えるし、面白い会社もあるし、なんか一番刺激的な場所だなと僕は思っているので、それはブリストルで扱うことはないだろうというのは想像はできるので、というような感じです。
- 卜部
- なるほどね。
- 村田
- あの場所は別格ですよね。
- 国分
- まあ、そうなっちゃいますよね。
- 村田
- シリコンバレー、マウンテンビューとかあの辺は。
- 柴田
- そこまで見据えて転職したんですか。
- sorah
- まあ、そうだよなと質問を今。ちなみに来週から、私はブリストルに行くんですけれども、いい街ですよ。
- 国分
- はい(笑)。
- 村田
- 悪い街とは言っていないけれども。
- 国分
- 悪い街とは言っていないですよ。
- 卜部
- まあ、街そのものはいいよね。
- 村田
- ちなみにトレジャーデータ1本で転職活動をしていたんですか。
- 国分
- そうです。なんか複数箇所に申し込んだことが、多分過去に一度もなくて。
- 村田
- すごい。
- 国分
- なんか、落ちたら死ぬぐらいの気持ちで常にやっていました。
- 村田
- すごいって、だけど、そう言われると私もそうだな。
- 卜部
- 受かって良かったですね。
- 国分
- はい、良かったです。入りたいというのは、申し込む前から割と思っていて、その根回しとして、なんか東京Ruby会議みたいな時に成瀬さんに話し掛けて、どうやったらトレジャーデータに入られるんですか、みたいに聞いたことがあって。
- 卜部
- どうしてもタイミングを待て、みたいな話が。
- 国分
- そうなんです。なんかシリーズCの増資の時というか、スタートアップに入りやすいのは、資金調達をしたタイミングの後だと言われて、それまで待っていたんです。ちょうどその年の11月ぐらいに調達して、その直後にもう申し込んだ、みたいなというようなことは考えていました。
- 村田
- 的確なアドバイスですね。
- 国分
- はい。実際に入れましたから。
- 卜部
- だから、実際にいろんなプログラミングでも、言語もそうだし、いろんな分散環境のやつをやれるようになったという感じですかね。
- 国分
- そうですね。今はだいぶ目的が達せられている気がします。
今後の話
- 卜部
- 今後はどうするんですかという話。
- 国分
- 取りあえずアメリカに移れることになったので、移って、なんかまず生活に慣れないといけないと思っているのと、あとは英語がもうちょっとできるようにならないといけないなと思っているので、だから……
- 卜部
- 転職した瞬間に、なんか2週間ぐらい行かされるんじゃなかったっけ?
- 国分
- そうです。それでまず行っていたこともありますし、あとはなんか短期間でこのプロダクトをつくってくださいみたいなことがあって、それでもう来週からアメリカに行ってくださいということもあって、それで2週間飛んでつくっていたということもありましたし、割と行ってはいます。
- 卜部
- まあまあでも2週間で帰ってこられたのは良かったですね。
- 国分
- はい(笑)。
- 卜部
- つくり終わらないと、延々とかもあり得ます。
- 国分
- どうにか終わらせました。
- 卜部
- じゃあ、現地に行っている人たちにも、そんなに面識がないわけでもなくて、みたいな感じ?
- 国分
- そうです。割と、向こうから来ることもありますし、行っていると面識は普通にあります。
- 卜部
- チームが変わる感じですか。
- 国分
- チームは変わんなくて、まだ一応、最初に入った1年はRailsアプリで書いているチームで、その次がSREチームに1年で、今はまだ3クオーターぐらいバックエンドチームにいるだけなんですが、そこがその他の2つに比べると僕が一番やりたかったところはそこだし、かつ経験がまだ浅いので、まだあとそこで何年かやろうとは思っています。
- 卜部
- じゃあ、働く場所が変わる。やることは変わらないと。
- 国分
- そう、オフィスだけが変わるみたいな。あとオンコールのタイムゾーンが変わって、ややカバレッジが低くなるなるみたいな感じですが。
- 卜部
- でも、それだったら行きたいですと言えば行けるんだ、すごいね。
- 国分
- そこは、何というか微妙なラインで、さすがに会社側にするとお金がかかるわけです。そうすると、会社のなんか利害が一致しないといけなくて、なぜ行けるかというと、向こうのアメリカでいい人を取ろうとすると、めちゃくちゃ高いわけです。そうすると、日本のレベルの額で満足してくれる人を、アメリカの普通の企業でハイヤリングするだけで、もう給料がほぼ倍ぐらいになっちゃうんで満足してくれるし、しかもなんかトレジャーデータだと、日本のほうがやや知名度がある印象なので、いい人が日本から送ってきたほうが取りやすいんです。なんで。ただし、日本からアメリカに行きたい人が別にそんなにいないというのもあって、来てくれる人がいるなら、普通に会社が結構そっち側のタイムゾーンで人がいっぱい欲しいという意味でも歓迎してくれるんです。なんで、たまたまアメリカに行きたい人がいるのと、会社がそっちに人が欲しいのとがマッチして行けたという感じです。
- 卜部
- 良かったですね。
- 国分
- はい、とても運が良かったと思います。
- 村田
- ですね。年収も上がるし。
- 国分
- はい。
- 村田
- 向こうでは、ちゃんと生活できるレベルがもらえるということで、もちろんそうでしょう。
- 国分
- そうですね。ビザの申請をするときに、向こうの基準が公式に公開されていて、アメリカの、例えばシニアソフトエンジニアだったらこれくらいだというの、基準が公式に出ているんです。それを超えていないとビザが通らないということになっちゃうんで、完全にそれと同じ額になっているんです。なんで、もう自動的にそこに上がるという。
- 村田
- 確かにね。移民で入ってきて路頭に迷われても困りますもんね。
- 国分
- はい。
- 卜部
- 取りあえず生活に慣れるのは大変かもしれないので頑張ってくださいという感じですね。
- 国分
- 頑張ります、そうですね。
- 卜部
- まず家を探すところから、現地のコミュニティーの人から手伝ってもらう。
- 国分
- 家はまだ……
- sorah
- 車の免許は結局どうするの?
- 国分
- なんか昨日、その向こうに今年の3月くらいに移った人にちょっと話を聞いたら、国際免許で最初はやっていかざるを得ないと言われて、なんで国際免許、なんか日本の免許を適当に翻訳したやつをもらって、それで生活しつつ、免許はやや何カ月か時間をかけて取るようにしたほうがいいみたいなのを聞きました。
- sorah
- あれ?日本の免許は持っている?
- 国分
- 一応、いや持っていますよ。
- sorah
- じゃなくて、過去に数カ月頑張って取って渡米した人がいて、その人との会話で頑張るとか国分が書いていたから、ないのかなと。
- 国分
- ああ。いや、日本の免許自体はまあ持っているけれども、国際免許にまだしていないから、一回最初に行った時に、空港でなんかレンタカーを借りられることになっているけれども、それが借りられないから、なんかUberしなきゃいけないとか、そういう困難があるだけで、国際免許は多分やれば別にできる状態です。
- sorah
- 良かった。
- 村田
- 国際免許は神田に行けばすぐ取れますよね。
- 国分
- 神田、神田?まじですか。
- 村田
- 神田の。
- 村田
- 神田の免許更新センターに行って。
- 国分
- え、日本でできるんですか。
- 村田
- 日本でできます。
- 国分
- へえ。
- sorah
- というか、日本でやらないと取れない。
- 国分
- そうですか。死ぬところだった。
- 村田
- 私も取ってからスペインに行って。
- 国分
- まじか。
- 村田
- うん。
- sorah
- 国際免許だと、カリフォルニアだと住民登録とかをすると、国際免許で運転できなくなるなどもあるので、ちゃんと調べておかないと詰むと思う。
- 国分
- まじか。そうなのか、え、そうなのか。
- 村田
- ちゃんと調べといたほうがいいですね。
- 国分
- そうですね。今、助かりました。
- 卜部
- カリフォルニアの免許とか、さまざまな話を聞きました。
- 村田
- でも、なんか日本と違って、すぐ取れるみたいな話も聞いたことがある。
- 卜部
- でも、運転免許場に自分の車を持っていかなきゃいけないんでしょうという、まずそこからですね。
- 国分
- そう。ブートストラップに(笑)。
- 柴田
- またブートストラップ問題だね。
- 国分
- いろいろ問題が発生して。
- 村田
- それはひどい。
- sorah
- 運転免許証は、カリフォルニアの話だと常に自分で車を持っていかなといけないけれども、免許がないと持っていけないので、それをどうするかという話。
- 村田
- なんかすごい、すごいなんか。
- sorah
- 友人を連れて行くというのが、ブートストラップの唯一の方法。
- 国分
- らしいですね。なんで向こうのオフィスの同僚を適当に連れて行くしかないなと。
- 卜部
- いろいろな話をしています。なんか普段の生活スタイルはどんな感じですかという質問があるんだけれども、これからはだからがらっと変わってきそうですよね。
- 国分
- そうですね。今は一応、フルフレックスというか裁量労働なんで、いつ出社してもいいし、退社してもいいみたいな感じなんで、なんか適当な時間に起きて、起きたら行って、なんか6時になったら絶対に帰るみたいな生活をしているんですけれども。その後は自由にJITをしたりというような生活をしていて。
- 村田
- いいね、JITをしたり。
- 国分
- していて(笑)。
- 村田
- 激しくJITをする。
- 国分
- 向こうに行っても、多分、その少なくともなんか働く時間帯は別に自由だと思うんで、そこは変わんないと思っているんですけれども、通勤時間次第かなと思います。
- 卜部
- まあね。確かにどのぐらい時間をかけて通うかという話は、そう。
- 国分
- なんか車で行ったときに混んじゃうのかもな、みたいなのとか、そういうところは。
- 卜部
- そうね。電車はないからね。まああるといえばあるけれども、使い物に……
- 国分
- 会社にはいけないんで。
- 卜部
- 1人で行くんですよね、家族も行く?
- 国分
- 妻も連れて行きます。
- 卜部
- そうなの。
- 国分
- はい。
- 卜部
- じゃあ、奥さんとのなんかどういうふうに生活しようかみたいな話とかは、しているんだ。
- 国分
- 一応、なんかもう妻が働けないビザで行くので、働かないことはもう事前に分かって、なんでもう妻はなんか夜勤とかがあって仕事がつらいと言っていたので辞めてもらっていて、なんか家事をやってもらっているので、僕が働いて、妻が家事をするみたいなところは、向こうに行っても多分変わんないかなとは思います。
- 卜部
- 奥さんが外に出て行くチャンスをつくらないと、家の中でずっと。
- 国分
- そうですね。なんか福利厚生で向こうに行った時に、どう生活していくかを教えてくれるトレーナーがいるんです。それで、なんか現地でボランティアとかをすると英語の勉強になるし、なんか友達もできるみたいなのとかを教えてくれる、アドバイスしてくれる人がいて、そういうのを聞きながら頑張っていこうみたいな感じです。
- 卜部
- ぜひぜひ頑張ってください。
- 国分
- はい。
- 卜部
- なんか日本からもう既に向こうに行った先輩みたいな人たちもいるんだよね?
- 国分
- そうです、います。
- 卜部
- そういう人たちの話とかも全然参考にするんじゃないですかね。
- 国分
- はい。Rubyコミッターでいうとnahiさんとかも去年、2年前かな、多分行ったという感じなんで、いろいろ聞きます。
- 卜部
- 仕事とプライベートの両立はどうしていますかという質問なんですけれども。
- 国分
- 平日は会社に行った後はJITをするみたいな感じで。
- 柴田
- JITをする。
- 国分
- なんか。JITをプライベートにするかどうかはよく分かんないですけれども。
- 柴田
- JITするとは何だ。
- 村田
- JITするというのはね。
- 国分
- プライベート的な部分で言うと、土日は基本的に妻となんかややデートをしに行く時間を持つようにしているので、そういう意味では両立できているかなと思っていて、コンスタントに2つともやれていると思っています。
- 卜部
- そのJITのプログラミングとかをするみたいなやつは、会社でちょろっとやったりとかはしない感じですか。
- 国分
- 余裕があってというか、すごい時間をつぶしたくなったときに、GitHubのruby/rubyを見に行ってCIが落ちていたら、なんかちょろっと自分のエリアに関係があったら直すみたいなところはたまにやったりしますけれども、基本的には業務時間中はやんない感じではあります。帰ってからたっぷり時間があるんで、なんかわざわざ混ぜる必要もないというか、仕事中は集中していることが多いです。
- 卜部
- 逆に仕事中に仕事をいろいろできている、やることがあるという感じなんですかね。
- 国分
- まあそうです。だいぶなんか余裕を持たせてはいないというか、目標は割とかっちり付けて進めるという感じになっているんで。
普段の生活
- 卜部
- でも、普段家では何をしていますかという質問が次なんですけれども、大体プログラミングをしていると。
- 国分
- そうですね。趣味がせいぜいなんかSwitchでテトリスを妻とやるぐらいなんで、それ以外の時間は大体JITをしているみたいな状態です。
- 村田
- 今も音ゲーはやっていますか。
- 国分
- 音ゲーは本当にたまにしかやんないです。というか衰え過ぎて、なんかやる気もそがれるというか、もうだいぶ下手になっているんです。なんで、やりに行くと、というか、大体妻とデートをしに行く時だけ外に出るみたいな感じなので、大体妻と一緒にやることになるんですが、そうすると僕が弐寺をやっていても全然、beatmaniaをやっていても全然分かんないんで、大体、太鼓の達人とかをすることになります。なんで太鼓の達人だけは、やや技術が維持されたみたいな状態になっています。
- 卜部
- じゃあ、結構インドア派だ。
- 国分
- そうですね。土日はなるべく外に出るような感じにはなっているつもりですけれども、平日は少なくとも家にいることのほうが多いです。
- 卜部
- なんか映画を見たりとか、そういうのはやります?
- 国分
- 妻が何というか節約が好きなので、映画館は高いんじゃないかという思想で、すごい興味があるときじゃないと行かないです。
- 卜部
- でも最近だと、ほら、Amazon Prime Videoとかでやっていますよね。
- 国分
- まあまあ、そうですね。それで、妻がもうAmazon Primeで映画を既にやたら見ていて、僕がJITをしている間見ているみたいな感じなんで、それで見られる辺りはもう多分、ほぼ興味あるやつは見切っていて、そういう意味で言うと、もう全然今は見ていないという、多分、今はドラマをせいぜい見ているぐらいです。
- 卜部
- 一緒に見たりとかはあまりしないの?
- 国分
- したりもしますけれども、僕がJITをしている時間が長過ぎてという。
- 卜部
- ちょっとそれ、大丈夫なの?若干不安になる。
- 国分
- すいません。
- 村田
- まあ、そうですね。
- 卜部
- あと、音楽、スポーツ観戦など。
- 国分
- スポーツ観戦は2人ともしないんで全くしなくて、音楽も聴くことがないですね。アニメを見ている時は、なんかそのテーマソングとかを聞きはしますが、それぐらいなんで別に音楽が趣味なわけじゃないというか、なんかコンスタントに聞くのはないです。
- 卜部
- 週末外に出る時はどんな感じですか。
- 国分
- 外に出る時? なんか……
- 卜部
- ごめん、2人の話なんで、言えなきゃ別に。
- 国分
- いやいや、いいんですけれども、大体なんか2人とも働いていた時は定期があったんで結構いろんなところに行けたんですけれども、妻が定期がなくなったので、あんまり遠出をすると電車賃が高くなるんで、なるべく近い所に行っていて、今、僕は西日暮里に住んでいるんですが、上野とかが近いんで、上野に行って、なんかゲーセンで太鼓の達人をしたりとか、なんかケーキ屋さんでケーキを食べたりとか、最近だとたこ焼きを食べたりとか、なんか食べ物系がちょっと多いんですが、あとはいきなりステーキを食べるみたいな、食べ物ですけれども。なんか大体、食べるか太鼓の達人をするか、なんか上野公園をぶらぶらするみたいな、そういうような感じですね。
- 卜部
- いいですね。西日暮里から上野は結構近いし。
- 国分
- 近いですね。
- 柴田
- あそこの上野公園の真ん中は、毎週なんかやっているからね。各国各地の何とかフェスみたいなのが。
普段使っている計算機
- 卜部
- 散歩しているだけでも、結構楽しいよね。あとは、普段使っている計算機は何ですか。
- 国分
- 計算機?
- 卜部
- 雑多な話。
- 柴田
- そうだね、計算機は何ですか。
- 国分
- パソコンではなく?
- 柴田
- カシオの関数電卓です。
- 国分
- いや。計算機は使わないです。強いて言えばirbですけれども。
- 村田
- コンピューター。
- 柴田
- コンピューター。
- 国分
- コンピューターですか。自作、PCを2015年に自作して、それをずっと使い続けてきて、なんかその時で一番強いCPU、i7-4790Kを入れたやつを、せいぜい10万円、全体10万円で自作PCをつくって、それをずっと使い続けている感じです。割と4年たつとがたがくるんで、なんかOptcarrotをずっと走らせていると、どんどんCPU、というか温まって100度になって、もうどんどん性能が落ちてみたいになるんで、最近は頑張ってエアダスターで掃除したりとか、CPUグリス塗り直すとかをやりましたけれども、それでもまだちょっとぼろが来ている感じがするんで、なんか向こうに行ったら買い換えたいなと思っています。
- 卜部
- PCゲームとかはやらないんですか。
- 国分
- PCゲームはやんないです。やるとしても多分、音ゲーをやるかなと思うんで。でも、やると時間が無限に吸われるというか、やる気になると多分、無限にやっちゃうんで、意図的にやらないようにしているというか、自制しているという感じです。
- 卜部
- その自宅PCは、でもWindowsで?
- 国分
- デュアルブートにしていて、なぜかというと、Windowsのmswinとmingwの動作確認用にやっているというだけなんですけれども。
- 卜部
- すごい。
- 国分
- はい。それ用にデュアル型にしているだけなんで、ゲーム用ではないです。
- 村田
- それはデュアルブートでやるんですね。
- 国分
- まあ、なんというか、VMにすると操作がしづらいと思っていて、なんか抜け出せるようにすると全てのキーマップを使えないというか、僕はキーマップにかなりこだわりがあるんで。
- 村田
- キーボード制約ということですね。
- 国分
- はい。LinuxとWindowsで全く同じ操作性を出せるようにしているんです。全く同じのは無理なんですが、なるべく近いようにしているんで、VMじゃなくて、もう全くデスクトップPCとして同じように使えるようにしているという。
- sorah
- キーボードの話を聞きたい。
- 国分
- キーボード、キーボードのリマップじゃなく、キーボードの話ですか。
- sorah
- いや、リマップのほうの話です。
- 村田
- その話をしようと今、思ったんですけれども、なんでそれぐらいこだわるんだったら、自作してファームウエアでやったほうがいいんじゃないかなと思ったんですけれども、そうはいかないんですか。
- 国分
- ファームウエアレベルでできていたこともあって、ErgoDoxを使っていたことがあるんですが、それは一応ファームウエアで変えられるんですけれども、そういうことではなくて、修飾キーと組み合わせていろんなことをやりたいわけです。
- 村田
- マクロっぽいことをやりたい?
- 国分
- そうですね。それは多分ファームウエアレベルではできてもいいけれども、できないことのほうが多分多いと思っていて、単一キーのリマップは普通にできることのほうが多いと思いますが、修飾キーとくっ付けては普通はできないんじゃないですかね。例えば、何をやっているかというと、Ctrlと、Ctrl + Hをすると、僕はターミナルがぽっと出てくるようになっていて、アクティブになる。Ctrl + Uをすると、Google Chromeが有効になって、Ctrl + Oをすると、SlackかTwitterクライアントがアクティブになるみたいな。Ctrl + Yをすると、IntelliJ IDEAがぽっと出てくるみたいな、みたいな。
- 村田
- 確かにそれはVMだと、VMを使うと厳しいですね。
- 国分
- はい。
- 卜部
- そのYとかOとかのチョイスは何なんですか。
- 国分
- 僕は最初はEmacsを使っていたんですけれども、それに今……
- 卜部
- 最初の頃、意味のあるものにしようと思っていたか。
- 国分
- いや、なるべく自分が使わないやつを使っているという感じです。他は何かのことに使っていて、SKKとVimを普段のEditに使っているので、それで例えばCtrl + Jとかがぶつかるんで使えないしとか……
- 卜部
- Ctrlをモディファイアーにするのはつらくないですか。なんか他のCtrl、モディファイアーをやってもいいような。
- 国分
- そうなんですけれども。そうなんですけれども、何ていうか押しやすいんです。
- 卜部
- まあね。
- 村田
- そうだ。
- 国分
- Ctrlキーを一番押しやすいところに置いてあるんでしょうがないという、はい。リマップの話で言うと、スペースキーの左側を僕は親指でCtrlにしていて、かつそれをやるためには、スペースキーが十分に短い必要があって、そのためだけに僕はJISの配列のキーボードを使っています。US、クックパッドはUS配列を強制される会社だったんですけれども、なんでUS配列を使わされていたこともあるんですが、今は絶対にJIS配列をすることにしていて。スペースキーの左がCtrl、その右がShiftで、その右がaltかコマンドになっています。だから、親指だけで修飾キーができるという。なぜかと言うと、僕は小指が弱いんです。Emacsを使った時期に小指でCtrlキーを押していたら、小指がもういかれたというか、めちゃくちゃ痛くなったことがあって、もうけんしょう炎にならないように親指だけで全てを完結できるようにしたという感じです。なんかShiftキーですら、僕は指が痛くなるような気になっちゃっていて、なんかShiftキーの、もう今は普通のShiftキーの場所は全く押してないみたいな感じです。
- 卜部
- そうなってくると、もう物理的にキーボードを自作したほうがいいのでは、という気がするんですけれども。
- 国分
- そうなんです。ただ、少なくとも左右に割れているキーボードは、ばらばらでバランスが取りづらいなと思っていて、なんかそこ僕はくっ付いているほうがいいんです。ただ、そうなるとなんかキーボードのKinesisとかがあるじゃないですか。だからあれを直すとめちゃくちゃ高いんで、ちょっとコスパが微妙になるわけです。そうすると、僕が今、使っているキーボードはなんか2,000円とかで、なんかそれはスペースキーが短いんですけれども、スイッチがメンブレンなんでめちゃくちゃ耐久性は低いんですけれども、買い直せばいいという話で、それが今のところ一番気に入っているんで、まあまあいいかなという、コスパ上はそれになっているという感じです。金が無限にあったらKinesisを一番使いたいと思っています。
- 柴田
- 金が無限に。
- 国分
- ないんですけれども。
- 村田
- 気持ちは分かる。
- sorah
- いや、その本当になんか一緒に働いていた頃、トラブルシューティングとかペアプロとかで一緒に作業をしようと言って国分先生のマシンを触ると、まずそのターミナルでCtrl + Uとかを押すと、よく分かんない挙動をして。
- 国分
- Chromeが起動する(笑)。
- sorah
- そう、Chromeが起動してきて、何だこれはとなって、スペースを押してもよく分かんない挙動をするから対応できない。Shiftも一緒で。
- 国分
- スペースキーを長押しするとShiftにしていたこともあって。
- 卜部
- それはすごい。
- 国分
- それが暴発していたこともありますよね。
- 卜部
- 会社で支給されているPCとかでも、じゃあ、普通にそういうキーマップを使っているんですね。
- 国分
- そうです。Linuxだと自分がつくったキーリマッパーのxremapというやつを使って、かつMacだとKarabiner-Elementsというやつで、もうだいぶ自由にリマップができるんで、もうその2つを使っていれば大体できて、Windowsでも似たような名前、のどかかな、を使っているんですけれども、それで大体何とかなるという感じです。
- 卜部
- すごいですね。
- 国分
- いや、なんかそれがコンパチにできるようにするには結構いろいろな設計が必要なので、それはそれで大変ですけれども。なんかそれが壊れたときにデバッグも大変ですし、あんまりお勧めはしないです。自分の指を守るためなんで、維持するしかないんですけれども。
- 卜部
- あとはやっぱりだから、それとVimとかIntelliJとかがコンフリクトしないようにしているのがやっぱりすごいと思う。
- 国分
- いや、本当に地獄です。IntelliJは、それのために本当に使いたくなくて、もう本当に使いたくなかったんですが、Kotlinのせいで使わざるを得なくなってしまったという感じです。
- sorah
- 何で使わざるを得なくなった?
- 国分
- Kotlinで、Javaを書いている時は、vim-javacomplete2で満足していたけれども、KotlinをVimでやろうとするとJava相当のプラグインがKotlinにはなかったから、Kotlinを出しているIntelliJを使うと、JetBrainsのIntelliJを使うのがいいだろうということになって、仕方なく使い始めたみたいな。
- sorah
- なるほど。
- 国分
- だいぶ仕方なくですよ。しかもなんかIntelliJはIdeaVimというVimっぽい挙動をするプラグインがあるけれども、それをするとVimじゃないことがだいぶ……
- 卜部
- あくまでVimっぽいというだけなの。
- 国分
- そうなんです。すごいなんか不快な思いをすることになるんですが、なんで。
- 卜部
- 全然違うのよりもちょっとだけ違うほうが、やっぱりちょっとという。
- 国分
- そうなんです。途中でなんかそのためにEmacsキーバインドでIntelliJを操作したことがあるんです。なんですが、それをやるとなんか複雑なことをやろうとしたときに、例えば矩型(くけい)選択をやろうとかをやろうとすると、なんかちょっと困るわけじゃないですか。Emacsで取りあえずできるはずなんですが、なんですけれども、自分がまず覚えていないというのと、IntelliJだとどうやるんだみたいなのがあって。そうすると、なんかその時だけ特殊なエディットをしたいときだけIdeaVimも起動することになるんです。それでなんかすごいエディットモードみたいなのとして使ってると、なんか切り替えがだるくなってきて、最終的にまたIdeaVimに戻ってくるみたいな。で、今はどうにかそれだけで生活しています。
- 卜部
- すごいつらそう。
- 国分
- やや不快な思いをするので、なんかリマップとかはあまりしないほうがいいとは思います。
- 卜部
- Vimを使い始めたのは、リマップとは関係ないんですか。
- 国分
- Emacsで小指が痛くなったので、これは悪いプラグインだと、エディタだと思って、なんかVimのほうがエスケープだけで良いということで、なんか長押ししなくて済むというところでその時にVimに変えました。
- 卜部
- それはいつ頃ですか。
- 国分
- クックパッドに入った瞬間はEmacsを使っていたんですけれども、その途中、クックパッドに入った早い段階、2013年の多分秋ぐらいにVimに改宗したと思います。
- 卜部
- これは駄目だ、みたいな感じかな。
- 国分
- 指が痛かったので。
- sorah
- でも、国分先生のVimもなかなか面白くて、なんかJとかKとかでカーソル移動をすると、なんかすごい描画がめちゃくちゃ重かった印象が強い。
- 国分
- なんかきらきら、若者だったのでキラキラエディタにしていて、めちゃ重くてeagletmtさんにVimというのはこうすると速くなるんだよといって、設定をなんか無にされたらすごい速くて、なんか怒られました。
- sorah
- なんでそんな遅いVimでやっているのと、その場ですごい指摘した気がする。
- 国分
- 今はその遅くなる原因が明らかに分かっていて、それはもう切っています。なんで普通な、ちょっときらきら感が薄れた、なんかおじさんのエディタになりました。
- 村田
- これは使えないんですか。
- 国分
- これは何ですか。
- 村田
- これはIntelliJの。
- 国分
- それは知っているんですけれども、なんかややハック感が強過ぎるというか。
- 卜部
- もう、これだと録音されないからもう名前言って。
- 村田
- ごめんなさい。ijaasという。
- 卜部
- ijaas。
- 村田
- IntelliJ as a Serviceというのがあって、これがさっき名前が出てきた彼の先輩のdraftcodeさんがつくっているやつなんですけれども。
- 国分
- Suzuki Masayaさん。当然存じ上げてはいたんですけれども。
- 村田
- 知っていましたか。
- 国分
- その人はVimでJavaを書いているんです。
- 村田
- そうですね。
- 国分
- それだと大変なんで、IntelliJにつないで補完をそれで頑張るみたいなやつなんですけれども、それはちょっと大変じゃないかなと思って。その機能自体を自分でデバッグするとなると、そのつくった作者自体は絶対楽だと思うんですが、僕がそれを頑張って読んでとなると大変だなと思って。
- 村田
- まだ挑戦していない?
- 国分
- 普通になんか王道というか、普通にIntelliJを使うほうが楽だろうなと思ったので、頑張ったという感じです。
- 村田
- 分かりました。
- 卜部
- 作者の人に直してと投げる。
- 国分
- まあ、それはそうなんですけれども。
- 卜部
- 近くに住んでいるから、よろしくみたいな。
- 国分
- まあまあ、はい。向こうに行ったら。
- 村田
- これから引っ越すから。
将来の夢
- 卜部
- 今後の展望、将来の夢などがあれば。
- 国分
- 一応今後の展望というか、目標としては、分散システムのところでもっと強くなりたいと思って、設計レベルだとあんまり自分で設計したものを実装してという経験がまだちょっと足りていないかなと思っているんで、スケールするような設計に変えていくという経験をもっと積みたいと思っているのと、あともう一つ長い視点だと、僕は自分が死んだ後も使えるソフトウエアをつくりたいなと思っていて、それが目標なんですけれども、まだ多分そういうのをつくれていないかなと思っているので、なんかどうにか。
- 卜部
- どうなんでしょうね。なんかソフトウエアをつくった後、死んだ人はまだそんなにたくさんいないから、使われていくかどうかというのは、まだよく分かんないよね。
- 国分
- 例えばrakeとかはそうじゃないですか。
- 卜部
- まあ、確かにそうですね。
- 国分
- かつ、それが他の人にメンテされるくらいには使われていてほしいんです。そういうのをつくるのには、まだ至れていないかなと思うので、これから頑張りましょうという感じなんです。
- 卜部
- じゃあ、これからどんどん新しいプロダクトをつくっていくという感じですね。
- 国分
- そうですね。そうしていきたいと思っています。
- 卜部
- いいですね。なんか具体的にこういうのが今、構想があるみたいな?
- 国分
- いや、構想は今はなくて、というか、そもそも今はJITをどうにか形にしたいと思っているところなので、まずそこからかなと思っているんです。それをまずなんかちゃんとRailsでも速くできるようにして、これをまずそこで成功したようにはしたいんです。その上でその次のステップに進みたいんで、まず今はそこにフォーカスしているという感じです。
- 卜部
- JITは今後はどういうふうなロードマップでやっていくぜ、みたいなところがあります?
- 国分
- 今一番困っているというか直さないといけないと思っているのは、生成コードをロードしてくるオーバーヘッドがあまりにも大き過ぎて、メソッドのコンパイルした数が増えると、どうやってもこれは遅くなるなと思っていて。それが今のRailsの一番のボトルネックだと思っているんで、まずそこをオフセットする機構を追加しないといけないと思ってるんですが、それをやるためには、MJIT用のメソッドを呼び出すパスを速くすればいいと思っていて、それは別に今、めちゃくちゃ最適化されているとは全く思っていないので、なんかVladが最初につくった機構がそのまま使われている状態なんですけれども。それが、例えば最近実験した機構だと、例えばMJITの呼び出し専用の命令をつくって、一回MJITの呼び出しをしたらその命令に差し替えて、それに最適化されたパスとして用意することによって、少なくとも100メソッドくらいまではオーバーヘッドが共有できるくらいまで速くできるというようなところで、今のところは攻めようとしていて。それで少なくとも遅くならないところまで来たら、もう最適化し放題と思っているので。例えば、オブジェクトのスタックアロケーションとかもやりたいと思っていて、それは、例えばRailsには効くかなと思っているので、そこの辺で攻めていけたらなと思っています。
- 卜部
- 大変、なんかオブジェクトのスタックアロケーションとか、全然、JITとぱっとは絡まないので。
- 国分
- まあまあ、本当はそうなんですけれども。
- 卜部
- そこまで先まで、頑張ってほしい。それを何年間でやります?
- 国分
- いや、オーバーヘッド。
- 卜部
- 3.0になっちゃうんだけれどもね。
- 国分
- そうです。3.0になるまでには、どうにかしないとなんか格好がつかないんで、今年、来年の間になんかどうにかけりをつけたいなとは思います。
- 卜部
- 別に速くならなくても、取りあえず同じぐらい速い、同じぐらいのスピードで動きますよというところだと、取りあえずオンにしとくかなという、みたいのが含まれるよね。
- 国分
- そうです。
- 村田
- そうですね。
- 国分
- なんかすごい早く進めば3.0デフォルトオンにできたらいいなぐらいの感じですが、さすがにそれはちょっと早いかなという気もするので、まあどうなんでしょうねという感じなんで、今後の進捗(しんちょく)にご期待くださいという感じです。
- 卜部
- すごい未来の夢という話で言うと、その死んだ後も使われ通すことに。
- 国分
- そうですね。それがもう僕の一生の夢みたいな感じなので。
- 卜部
- ぜひぜひ頑張ってください。なんかもうそろそろその他というやつに来ちゃうんだけれども、他の皆さんの、なんかこれを聞いておきたいみたいな質問とかはあります?
- 柴田
- 日本に帰ってくる予定とかはあるんですか。行く前から聞くなよみたいな感じですけれども。
- 国分
- 老後は帰ってきたいなと思っていて。なぜかというと、アメリカに行くのは半分は英語の勉強で、もう半分はエンジニアとして成長しつつ金を稼ぐというところなんで、僕はなぜ働いているかというと、働けなくても済むようにするために働いているんで、例えば、貯金が3億円あったら僕はもうゆるゆるとして生きたいんです。
- 村田
- 分かります、同じ気持ち。
- 国分
- なんで、その……
- 柴田
- 早くイグジットしたい?
- 国分
- はい。だから人生がイグジットできたら、なんか今後日本に帰ってきて、日本語を話すだけで生活できるところで、ゆるゆると生きていきたいなと思っているので。
- 村田
- その夢、それだけ金があったら、自分は働かないでJITしていますよね。
- 柴田
- 働かないでJITしている(笑)。
- 卜部
- じゃあ、あまりグリーンカードとかではなくて、働いてまた戻ってきたいな、みたいな感じ?
- 国分
- グリーンカードを取らないと、さすがに短過ぎると思っていて、H-1Bのビザで行くんですけれども、それだとまず最初3年なんですよ。で、もう3年更新できて6年ですけれども、6年だとさすがに3億円は稼げないんで。
- 卜部
- そらそうだ。
- 国分
- なんで、まずグリーンカードを取って、10年か20年、30年ぐらいは働こうかなとは思っています。
- 柴田
- なるほどね、そうなんだ。
- 卜部
- ぜひぜひ、トリクルダウンで僕らにも。
- 柴田
- いや、ここで待っていますよ。
- 村田
- 雇ってください。
- 柴田
- 3人して、年上3人が待っていますよ。
- 村田
- いや、勢いのある若者のほうが、お金は増えると思う。
- 柴田
- そうそう、いやね、なるほどね。あとは何かあるかな。全部……
- 卜部
- じゃあ、ちょっとその他のところにも若干絡むけれども、前回むらけんが質問もしくは一言ありますかというやつで、akrさんと同じ研究室の出身はどうでしたかと言っているんですけれども。
- 村田
- そうですね。
- 国分
- いや、なんかそのコミッターとしてakrさんに話し掛けた時の話のねたにはなりましたけれども、実際の交流は特になかったので、渡部先生を通じてというか、なんか多分eagletmtさんとかから、あの人は先輩だったよみたいなところは聞いたような気がするんですが、なんか伝聞で伝えられる伝説の存在でしかなかったので。
- 村田
- 伝説の存在にまでなっているんですね。
- 卜部
- 時間は絡んで、重なっていないわけですね。
- 国分
- 当然そうです。なんで、直接の絡みは特になかったですが、話のねたの一つとしては、なんかきっかけになって良かったなという感じはあります。
- 卜部
- あとは、何がきっかけで速度を求める話になったんですか、と言っています。
- 国分
- 一応さっきのHamlを、Hamlがどう実装されているかにまず興味があったので、それをやり始めたところ、まあはまったというところかなと思っていますけれども。あとは遅いソフトウエアに結構不快感を感じるというか、遅いのを見つけると、まず自分がめちゃくちゃ不快だし、かつなぜ遅いのかに、多分性質としてすごい興味が出るんですよね。そこがやや他の人と違うポイントかなと思っていて、なんか例えば、パフォーマンスが会社でまず劣化しましたみたいな、なんか数字が飛んできたときに。なんかぱっと分かるときは別にあんまり興味は示さないんですけれども、これはどうなっているの? みたいなのが全然分からないときとかに、すごい興味があって、すぐ計測に飛び付くみたいなのやっていたりするんですが、そこはなんか趣味というか感性が他とやや違うところかなと思います。やや高速化に興味が強過ぎるというか、ちょっとそこに執着しているという感じはあります。
- 村田
- クックパッドがHamlだったから、良かったのかもしれないですね。
- 国分
- そうですね。Slimだったら別に最初から早いし、みたいな。
- 卜部
- それを言うと、Chefが遅くてカッときたりしません?
- 国分
- まあ、そうかもしれないです。一応、僕がつくったMitamaeは、だいぶレイヤーが低いところで実装できるようになっているんで、結構Itamaeと比べてすら速いし、Chefに比べたらだいぶ速いんで、なんかだいぶ快適なツールではあります。
- 卜部
- だから、Chefをどうにかしようという話じゃなくて、自分でつくったという感じなの?
- 国分
- なんか代替実装をつくっていることが結構ある気はします。
村田さんとの関係
- 卜部
- 前のインタビュイーである村田さんとの関係は、どのようなものですか。
- 国分
- さっき言ったように、インターンの応募に来たら料理をしていたというあれですけれども、もともと来る前から、Rubyに興味を持った時点で、Rubyコミッターの人がすごいというイメージはもともと持っていて、そのうちの一人としてむらけんさんは存じ上げていたんです。
- 村田
- ありがとうございます。
- 国分
- で、なんかRubyコミッターに料理をさせている会社だ、みたいな感じで、これが最初に来て。すごいもう雲の上の存在として見ていました。
- 卜部
- その時、だからそのアルバイトの面接に来た時に、面接をしたわけじゃないんだよね?
- 国分
- ではないです、はい。
- 村田
- 普通の社員として、ただご飯を作って食べていただけということですよね。
- 国分
- そうです。
- 卜部
- その後の付き合いとしては?
- 村田
- 部署をきっとかぶっていないんですよね?
- 国分
- 開発基盤としてかぶった時期、全くないんでしたっけ?
- 村田
- ないですよ、きっと僕……
- sorah
- なかったと思う。
- 村田
- スペインに行って帰ってきたら会員事業部だったんで、その時もう開発基盤でしたよね?
- 国分
- そうですね。なんかむらけんさんが過去に書いたコードをメンテしてみたいなことは、多分結構あると思うんですけれども、コード上の絡みみたいな感じのところはありますね。
- 村田
- 僕が残していった負債を、国分さんと、あとmakimotoさんも、私が残していった腐ったモンキーパッチを消したと言って喜んでいました。
本当に申し訳ない。
- 国分
- まあ、そういうつながりです。
次のインタビュイー
- 卜部
- じゃあ、次は誰にしますか。
- 国分
- 昨日、ちょうどいたので、なんかここをお願いしといたんですけれども、古橋さんにお願いしたいなと思って。ただ、日本にあんまりいないじゃないですか。なんですが、結構なんかどのくらい日本に来るんですかと聞いたら、少なくとも1年に3〜4回は来ているよと言っていて、そのタイミングでお願いできればと思っているんですけれども。
- 卜部
- まあまあ、どこかのタイミングで、はい。
- 国分
- 聞かれたらと思っているのは、もう一発当てられた人の側だと思うんで、なんかどういう人生なのかを聞きたいなと思って。
- 柴田
- 一発人生。
- 卜部
- 人生、人生について。
- 国分
- もう働かなくていいんじゃないのとか。働かない、辞められると社内の一人としては困るんですけれども。
- 卜部
- 今はどういうモチベーションで働いてんのかみたいな話。
- 国分
- まあ、とかですね、はい。
- 村田
- 次につくるものとか、何を考えているのかとか。
- 国分
- そうですね。あとはfluentdとかを発明するにはどうしたらいいのかみたいな。たまに聞きはするんですが、なんか掘り下げられたらとか。
- 卜部
- 会社でなんかそういうのをふらっと聞くチャンスとかはないんですか。
- 国分
- ふらっと聞くと、なんか脳に全てをキャッシュできるとできるみたいな。僕はその筋力がなくて。
- 柴田
- よく分からない。
- 国分
- どちらかというとノートにいろいろまとめて、なんか脳の足りない容量をダンプして考えているんです。なんでキャッシュはちょっとできないと思って、なんか違う方法で攻めないといけないと思ったんですけれども。
- 卜部
- じゃあ、その辺の話をちょっと詳しく聞いてみたいと。
- 国分
- はい。
若手の読者に一言
- 卜部
- 若手の読者に一言頂けますか。
- 国分
- Rubyコミッターがやや高齢化している気がするので、なんか若い人でコミッターが、sorahとかがレニウムさんとかがもうちょっと活発になりつつ、他の新しい人も入ってくれるといいなと思っているので、なんか皆さん来てくださいという感じです。
- 卜部
- なんかすごい昔はRubyコミッターになるのに、障害、障壁が高かったけれども、ついにマージボタンが実装されたんで。
- 国分
- 頑張りました。
- 卜部
- なんか今やもうプルリクエストをがんがんくれるだけで。
- 国分
- そうですね。コミット、コミッターにはなれます、git committerには少なくともなれますね。
- 卜部
- いや、なんかこれまでも結局プログラムを、パッチをたくさん送ってくれればなりますよという話だったわけじゃないですか。でもやっぱり若干パッチを送るというところに障壁があったと思うんで、もうプルリクエストするだけでいいから、じゃんじゃん欲しいという感じですね。
- 国分
- 今は縮まりました。
- 卜部
- その話も、なんか苦労話とかがあればぜひ言ってください。こういうチャンスですので。
- 国分
- いや、僕はGitHub育ち、GitHub育ちなんで、なんかGitHubの開発をするのにだいぶ慣れているんで、GitHubだけで開発を本当はしたいんです。なんですが、コミッターの中にGitHubをマスタにすると良くないんじゃないかという派閥の人が、複数にいることに気付いて、それを言われたんで、何かどうにかしないといけないなと思って。
- 卜部
- そこでこれまでは止まっていたんだけれども、そこから具体的に動きだしてという話があるじゃないですか。
- 国分
- どうして動けたかというと、まずGit化がまず大事ですよね。svnだった頃に比べると、柴田さんが頑張ってくれたおかげで、まあどうにかGit化にはこぎ着けて、そこからGitHubに行くまではどうにもならないというのはありますが、そこまでは多分柴田さんは全くモチベーションがないのは分かっていて、僕が自分でやんないといけないことはまあ分かっていたんです。僕が割と今も活発にコミットしているんで、自分が困るし、しかも自分は割とGitHub派なので使いたいというところなんで、自分がどうにかするしかないということは分かってるんですけれども、障壁は実装上の問題で、まつもとさんは、Gitに移行してしまえばGitHubと双方同期は簡単だというツイートを過去にしていたんです。
- 村田
- 言っていましたね。
- 国分
- まあ、そんなことはないと僕はその時にすぐ思ったんですけれども。
- 柴田
- ねえ、本当にビジョナリーだよね。
- 国分
- いや、分散同期をそんな簡単にできるのか、みたいなところで。
- 卜部
- しかも双方向だからね。
- 柴田
- そうそう。
- 国分
- そうなんですよ。
- 柴田
- 夢だけをしゃべる仕事みたいなね。
- 卜部
- それまではgit-svnがこの一方向だから。
- 柴田
- そうそう。
- 卜部
- 多少遅延しても、まあ後から追い付けばいいや、みたいな話なんだけれども、双方向はなかなかそうはいかない。
- 国分
- 技術的にはGitHubだけを使うのが当然一番簡単で、なんですが、それにできない理由は政治的な理由なんで、その政治的な理由を何らかの政治的なパワーで解決する必要があって。ただ、それを直接解決するのは無理だったので、技術的にワークアラウンドする必要があったわけです。双方向同期をするとなると、実装のパターンとしてはまずcgitのgit.ruby-lang.orgをマスタにするか、GitHub.comをマスタにするか、どっちかだと思うんですけれども。GitHub.comをマスタにしてしまうと、政治的に問題があるわけです。なんですが、実装上はそうしないともうお話にならないぐらいぶっ壊れるんで、完璧というか不整合が起きにくいようにするには、実装上GitHub.comをマスタにせざるを得ないんです。ただし、それを公にそうなってしまうと、もう政治的に無理だという話になっちゃうんで、なんかこれは無理かなと思って僕はSlackにこうしないといけないと思うけれども無理だよね、と書いていたら、成瀬さんが実装上のマスタだけれども、公式にはgit.ruby-lang.orgがマスタだというふうに言っていれば、まあ大丈夫だろう、みたいなことを言っていて。かつ、見掛け上も今のフローはGitHubを突然シャットダウンするような、双方向同期をGitHubからこっち側にgit.ruby-lang.orgにシンクしないようにして、git.ruby-lang.orgをもう完全にマスタだとすることも当然可能ですし。かつ、見掛け上もGitHubにプッシュする、git.ruby-lang.orgにプッシュしかできないような感じにはなっているんで、プルリクエストもマージはできるけれども、マスタ以外でGitHub.comに突然プッシュはしないような運用ですし、という辺りで事実上、もう挙動的にはもう完全にgit.ruby-lang.orgをマスタにしつつ、政治的にもそういうことにしつつ、実装上の詳細としてはGitHub.comをマスタにすることに成功したので、どうにかうまくいったという感じです。
- 卜部
- ですね。
- 村田
- お疲れさまでした。
- 国分
- はい。完全に政治の問題でした。
- 卜部
- 今、その同期をどういうふうにやっているみたいな話を、今、ここでインタビューを聞いてもしょうがないんだけれども、なんかどこかで資料として残したりしています?
- 国分
- なるべくRuby commit hookのReadmeにまず概要は書いてあるのと、それをやっていたbugsのチケットには、概要というか戦略は書いてあって、実装はそんな複雑じゃないので、まあ見れば分かると思っているんですけれども、なんか本当にいじりたくて概要を説明してほしい人は、僕にお声掛けくださいという状態ではあります。
- 卜部
- Rubyはこれで解決したからいいんだけれども、なんか同じことをこれから先、他にやりたいと思う人は、何を見て参考にすればいいのかなというと、まとまってはいないかもしれないですね。
- 国分
- そうですね。なぜそうなっているかというと、あまりがっつり話しちゃうと、これはGitHub.comマスタやんけみたいに言われるかもしれないと思ったので、あまりつつかれないような対策としては、まあ、頑張ります。
- 卜部
- 話がずれたけれども、他に読者へ何か一言。
- 国分
- 弊社ではとても楽しい仕事がいっぱい待っておりますので、応募をお待ちしておりますという感じです。
- 村田
- Rubyですか。
- 国分
- Rubyでもすごいたくさんのチャレンジがあると思います。普通の会社だとRailsアプリでウェブアプリケーションを作ることが多いと思いますけれども、うちはRubyで書かれたミドルウエアで、かつすごいトラフィックがあるやつがたくさんあるんで、それ、Rubyを書ける人が以外と少ないというか、書ける人は忙しくて他のことをやっていることが多いんで、引き続き募集していますという感じです。
- 柴田
- あそこにちょっと、なんか掘り下げたほうがいいんじゃないの。
- 国分
- そうなんですか。
- 柴田
- いや、なんかRails以外でそのRubyを使って仕事をするみたいな部分で、まあfluentdとかだろうけれども、なんかもうちょっと具体的にはこういう問題があって、こういうことのその問題の解決にこういうような取り組みができるみたいなものは、何かないですか。
- 国分
- 多分、現状一番使っているのは、そのfluentdの上に、プラグインの一つとして、なんかHTTPサーバーを載っけたやつがあって。それでもうJavaScriptのSDKからめちゃくちゃイベントを飛ばしまくったやつがあって、それが社内で多分、一番トラフィックが、外部からのトラフィックが来るところなので、もう花形のミドルウエアというか、すごい大変なところなんです。それが、まず完全にもうRubyで書かれていますというのと。あとそれはとにかくトラフィックが多過ぎるところが大変で、デプロイするだけで結構危険というか、それをまず安全にするところも大変だし、スケールできるようにするのも大変だし、Rubyも速くなりたいですね、みたいなところもあるし、みたいなところで、まずそういうのがありますというのと。さっき言ったPerfectQueueというのは、ジョブキューシステムなんですけれども、キューがMySQLというかRDB上で実装されているんで、そこにスケール上の問題があるんで、なんか過去に結構スケールを頑張っていますというのと、プロセスの管理とかもPerfectQueueが結構持っているんですけれども、その辺が割と複雑なんで、問題が発生したときにデバッグとかが大変だったりとか、ミドルウエアなんで普通のRailsアプリとは違う問題がいっぱい発生するんです。それをメンテできる人は割と限られているというか、ちゃんとした人が来てほしいなと思うので、なんかちゃんとした人が必要ですという話です。
- 柴田
- ちゃんとした人。じゃあ、ちゃんとした人は応募してもらっていいですかね。
- 国分
- はい。
- 村田
- そういうタイプのRubyの仕事は、今どきほぼなさそうですね。
- 国分
- あんまり。
- 柴田
- まあ多くはないよね。
- 卜部
- 弊社でもRubyプログラマーという、なんかRuby経験者といって採用しても全然足りないので、そのくくりじゃなくて採用しているかもしれないです。
経験、Rubyじゃなくてもいいけれども、なんかやりたい人。
- 国分
- まあ、そうですね。
- 村田
- Rubyは勉強すれば書けるようになるけれども、それ以外のところが結構…。
- 国分
- はい。
- 卜部
- どっちかというとその分散システムの勘所とかそういうのが、なんかつらそうだね。
- 国分
- 割とそっちが、はい。
- 卜部
- 予定していた質問は以上なんですが、他になんか言っておきたいみたいな話とか。
- 柴田
- 言っておきたい。
- 国分
- 言っておきたい。
- 柴田
- この野郎みたいな。
- 国分
- 言っておきたいことはだいぶ言い尽くした気がするんで、多分。
- 村田
- インターネットの向こう側の方とかどうですか。
- 国分
- どうですか。
- sorah
- 私は特にないんだけれども、他の人は全員マイクミュートですね。
- 村田
- 今、マイクミュートになっていますね。
- 国分
- 遠藤さん、生きているのかな。
- 村田
- 聞いているとは言っていましたけれども。
- 卜部
- でも、ないならないでこんなもんですかね。
- 柴田
- うん。
- 卜部
- はい。インタビューお疲れさまでした。
- 国分
- ありがとうございました。
- 柴田
- お疲れさまです。
–