次は、プログラミングの話とかにちょっと入っていきたいんですけれども、初めてコードを書いたのはいつぐらいの時ですか。小6でHSPにちょっと触っていたぐらいが最初かなという気がします。小6の時に、もうHSPをやったの?国分そもそもパソコンを持っていたのは、小1の時におじからなんか中古のパソコンをもらって、それを触ってはいたんですけれども、なんですが、インターネットにつながったのは小6なんで、それまではなんかMSペイントとかを小いじりしているみたいな感じだったんで。卜部インターネットがないと。小5でタイピングソフトの特打というやつをソースネクストのやつでやっていて、小6でやっとインターネットにつないでもらって、ずっとインターネットにつなげてと言っていたんですが、なんかなかなかつながっていなくて。つながってやっていたのが、インターネットで適当にやっていただけなんですが、そうするとゲームを自分でつくりたいという気持ちがやや芽生えて、やってみたけれどもなかなか続かなくて、その後もう高校ぐらいまでずっとやっていなかったみたいな感じです。一応、プログラミングしなくてもゲームをつくれるなんていっぱいあるじゃないですか。卜部うん、ありますね。国分それをなんかホームページで公開とかはしていたんで、HTMLは書けたんです。なんかHTMLでCSSもほぼ書かないぐらいのホームページで、なんかゲームを公開するみたいなことは結構やっていて。それを小中高までずっとやっていたんですけれども、ちゃんとプログラミングをもう一回始めたのは、なんか高校の授業でスーパーサイエンスハイスクール3というのに高校が指定されていたんですが、それをしているとなんか特別授業みたいなのがたまにあって、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と比較すると、まあいろいろ。設計された時代もちょっと違うしね。それがそのままサーバサイドのほうをやり始めて、ゲームをつくるのはそのままなんですか。ゲームはそこでもう満足したというか、自分でやってみたら、サーバサイドをいじいじしているほうがなんか楽しいことに気付いちゃって、で、もうずっとそっちをやっているみたいな感じです。LambdaでRubyがでサポートされていなかったんです。今はサポートされているんですけれども、なかったんで、チームの他の人が使えるPythonを去年は書いていて。今年はまた別のチームに移って、バックエンドチームというところにいるんですが、そこだとJavaで書いたライブラリを使わないといけないんで、ここから少し基になったKotlinを今は書いているみたいな感じです。卜部Kotlinは何で書くんですか。IDEAで書いているという感じ。国分もともと僕はJavaはVimで頑張って書いたんですけれども。卜部そいつは書かないんですか。なんかJava、vim−javacomplete2というやつが、割とインポートの補完は少なくともできるし、僕はインポートの補完があれば別に書けると思っていたのでやっていたんですけれども。KotlinだとVimでそれに相当するプラグインがなくて、なんでさすがにしんどいなと思って、IntelliJを使うようになりました。卜部なかなかタイピングの量がね。国分はい、しんどいですよね。卜部もうやりたいことが決まっているのに、あとタイピングの量が、ちょっとだよね。卜部Rubyは、じゃあ仕事ではあまり使っていないということですか。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というツールは、HCL4という外部DSLを使っていて、なんでGoで実装されているけれども、別にGoを使えるわけじゃないという。定義されているんですけれども。interpolation5みたいなのを、Rubyで結構きれいに書けるというか、文字列の処理を柔軟に書けるじゃないですか。それをHCLでやろうとすると、なんか結構ワークアラウンドっぽい書き方になっちゃっていて、なんかすごい書きづらいんです。DSLはすごい使いやすいなと思っています。3つ目は普通にRailsでWebアプリをつくるときのツールとして、僕が今でも一番最初に選択するのがRailsで、一応、今は仕事でKotlinでウェブアプリを書いていますけれども、それでもやっぱりなんかJavaのツールの影響をだいぶ受けているので、Kotlinのために設計されたライブラリではないという感じがするんです。なんで、なんかちょっとアノテーションがめちゃくちゃ並んで、見通しが悪いみたいなのが結構あって、それに比べるとRailsでRubyのためにつくられたようなフレームワークで書けると、すごいやっぱりすごいよくできているなという感じがしていて、Railsが使えるという意味では、Rubyはそこの用途になんかすごい使えるなと僕は今でも思っています。卜部Kotlinで、Kotlinだけで書かれているプログラムはそんなにつらくない感じ?国分それ用にできていれば多分、結構、なんか僕だったらこうつくるかなというイメージはあるんですが、でも、それが実際に存在するかというと、みんななんかJavaで枯れた技術を使いたがるんで。卜部それは難しいですね。なんかJavaのライブラリが使えるから便利というところもあると思うので。langの流儀になるんだけれども、それはスタイルが統一されるという意味ではいいかもしんないけれども、でも、既存のライブラリが使えないのは痛いよね、みたいな話が。Rubyについて卜部どこが落としどころなんでしょうねという感じですね。