ソニックガーデンでプログラマー兼執行役員
遠藤大介氏(以下、遠藤):というわけで、今日は「Develop with Pleasure!」というタイトルと、あと、もともと言っていたのは、「デフォルトにして至高」というRubyMineの大好きなところだったのですが。
「RubyMine」の大好きなところをいっぱいしゃべろうと思ったら、もとい、それを作っている会社のJetBrainsがなぜ好きなのかを語らないとぜんぜん語り尽くせないことに気づいたのと、RubyMineの好きな機能を挙げようと思ったら1時間以上かかることに気づいたので。
とりあえずプレゼンで好きなところを3つだけ発表して、残りは、懇親会で聞きたい人がいたら特別な時間を作ろうと思うので、もしよかったら(そこで)突っ込んで聞いてください。
というわけで、まず、自己紹介からいこうと思います。遠藤大介と申します。(スライドを示して)こう書いて「ひろかつ」です。一応、ソニックガーデンでプログラマーと執行役員をやっています。
インフラと機械学習系が好きで、GPUをぶん回したりなんなりしたり、インフラは、「GCP」や「AWS」に触れまくっているのが好きです。
あと趣味は、ゲーム廃人なのとロードバイクに乗るのが好きなので、そこらへんをやっています。それから、最近びっくりしたことは、うちの小6の息子が4bit CPU(TD4)を自作するという、まさかの暴挙に出て……。
植木宏氏(以下、植木):いやぁ、そうですね。
遠藤:「本を読みながら作り切った」と言うので「小学生って頑張ったらそんなこともできるんだ」と良い意味でドン引きした、ということがありました。
というわけで、みなさまRubyMine、もといJetBrains製のIDEを使っていますか? どうですか? 先ほどのトレンドを見ると、ちょっと減っているんじゃなかろうかという気がするのですが、そんなのは知ったこっちゃないと(笑)。
植木:「使っています」「使っています」という声がありますので。
遠藤:マジで、いやぁ、すばらしい、ありがたい、いいですね。
今日は推しであるJetBrainsの布教に来ましたという話をしようと思って領収書を漁ったら、どうやら2006年に最初にJetBrainsに貢いでいたので、かれこれ20年くらい推しているらしいです。
植木:長いですね(笑)。
遠藤:というわけで、最初は、JetBrainsが作っていたJavaで作られているJavaを書くためのIDEを使っていたのですが、もうその頃からずっと推しなので、その布教に来ました。
(スライドを示して)一応、今日話すこととしては、RubyMineという言葉はみんな聞いてはいると思うのですが、「そもそも作っているJetBrainsって何者なの?」というのはあまり知られていないと思うので、まず、「JetBrainsってどんな人たちなの?」という話と、次に、なぜ僕がこのJetBrainsという人たちを好きで、ずっとこのJetBrains製のIDEを使い続けているのかというところと。
それから、悩みに悩んだのですが、RubyMineの紹介と最推しなところ3選だけをいったん伝えて、残りのあまたある推しは懇親会でしゃべろうかなと思っています。
いろいろ、入り切らなかった話が多くて、「公式で『Vim(※スライドでは「VIM」)』のエミュレーターあるんだよ」とか、「DBいじるのクソ便利だよ」とか、「依存のGemのコードとか見ると、クソ楽だよ」とか、「ログからコードに飛ぶの便利だよ」とか、メチャクチャいろいろなネタがあるのですが、時間が足りぬということで絞っていこうかなと思っています。
植木:「JetBrainsが作っているとは知らなかった」というコメントが来ていますよ。
遠藤:マジで? そう、JetBrainsが作っているんです。いや、JetBrains好きっている? もうね、それだけでテンション上がっちゃうわ。
JetBrainsは何者か?
遠藤:(スライドを示して)まず、このJetBrainsという会社は、もともとは右下のちょっと小さく入れておいた、オレンジと青のアイコンだったのが、最近リブランディングして、こんな感じのアイコンに変わっています。
(スライドを示して)このJetBrainsは、そもそもぼちぼち古くて、実は2000年に創業したソフトウェア開発企業で、なんと本社がチェコにあります。アメリカとか、そこじゃない、チェコなの。その時点でけっこうおもしろいんだけれども。
植木:チェコなんですね。それは知らなかったです。
遠藤:前は、このプレゼンのタイトルにもしていた、「Develop with Pleasure!」とうたっていて、「喜びとともに開発しよう」みたいな感じの、「楽しく開発しよう」みたいなところもメチャクチャ前面に押していました。最近は、「The Drive To Develop」と言って、「開発することを加速するためにいろんなことをやりまっせ」みたいになったのだけど。
この「Develop with Pleasure!」というのがメチャクチャ好きで、もうそれで一目ぼれして、いろいろ、会社にずぶずぶハマっていきました。
この会社はいろいろなIDEやツールを作っていて、JavaのIDEやJSやフロントエンドに特化したやつも作っているし、いろいろ作っています。
(スライドを示して)製品群がこんな感じで、バグのトラッキングシステム、「YouTrack」みたいなやつや、IDEもC#用の「CLion」とか、Go言語専用の「GoLand」とか、なんか……。
植木:「Rustもある」っていうコメントがありましたけど。
遠藤:そう、そうなんです。
植木:「RustRover」もあります。
遠藤:そうなんです。しかも、なんだかんだ、iPhoneアプリとか、そっち系を作るためのものもあったり、いろいろ手を出しているんです。
植木:これは、言語特化のIDEみたいな感じですかね?
遠藤:そう、それぞれの言語に特化したIDEを作っていて、最近ちょっとそれを統合した「Fleet」という次世代型IDEを作り始めているのですが、一つひとつの言語をすごく掘り下げたIDEを作るのがけっこう得意な会社です。
なんだったら、こじらせた結果、自分たちで言語を作っています。一番右ですが、Androidを触る人は知っているかもしれないですけど、Kotlinというのを作っていて、もうGoogle先生がAndroidの標準の開発環境をJetBrainsのIDEに変えていたりします。「Android Studio」とか。あれはJetBrains製なんです。
そんなマニアックな話もあったりします。この会社はいろいろといい意味で開発をこじらせております。
植木:(笑)。
なぜJetBrainsが好きなのか?
遠藤:なので、「なぜJetBrainsが好きなのか?」と。オタクとしては、これを語らずにはいられないのだけど、もうコードを書く行為に対する情熱があふれているのよ。先ほどの「Develop with Pleasure!」という標語からして大好きなのですが、言わないじゃん、そんなこと、なんか、効率的にするとか……。
植木:そこを掲げないですよね。
遠藤:そう。
植木:そうですよね。
遠藤:そう。そういうことを言う人はいるけど、「『おもしろくコードを書こう』とかいうのを2000年とかから言っているの、ヤバくない?」という。
植木:確かに。
遠藤:「楽しくしよう」とか、いろいろ「毎度毎度繰り返しの不要な作業をなくそうぜ」とか、そもそもIDEを作るためにIDEでコードを書かなくちゃいけないからといって、「自分たちがファーストユーザーです」みたいなことを言っていて。いや、もうね、もうすばらしいと思って、もうこの会社、超好き。
(スライドを示して)これが最近のページで、「The Drive to Develop(※スライドの表記どおり)」となっていて。これは後で読みたい人は、公式のページに行ったら載っているので読んでほしいのですが、「コードは私たちの情熱そのものです」とか書いていて、もうメチャクチャ良いと思って。
植木:しかも(今まで)変わっていない。
遠藤:なかなか、ここまで言い切っていて、かつ、IDEが専業の会社はなかなかないので、個人的には絶対にJetBrainsを潰さないぞという思いで永遠に貢いでいるんですけど(笑)。
植木:(笑)。
遠藤:この人たちは、こんな感じでずっと開発してくれているので、とても良いです。
「コードを書く」という行為に対する情熱
遠藤:いろいろな人にJetBrainsの紹介をする時に言っているフレーズがあります。僕も最初は、その時に先輩だった方からJetBrains製の「IntelliJ」というIDEを教えてもらったのですが。
その時に一番驚いたのが、2000何年かの時代に、エディターにセーブというメニューがなかったの。意味わかんなくない?
植木:いやぁ、ちょっとそれはびっくりです(笑)。
遠藤:その当時のエディターには、絶対セーブとかいろいろあったじゃん。
植木:あった、あった。
遠藤:ないのよ。ないの。「えっ、ないじゃん」と先輩に言ったら、「いや、そもそもセーブしないコードなんか書く?」と言われて、「なるほど」と思って。
植木:なるほど。
遠藤:「セーブもしないで消すコードなんて、そもそも書かなければいいじゃん」みたいなことを言われて、「いや、まったくもってそのとおりだな」と思ったし、「セーブした、していない」って気にすること自体が無駄だと。
今となっては、自動保存されるのは、けっこういろいろなツールで、クラウドだと当たり前だし、ローカルのツールでも当たり前だと思うのだけど、それを2000年くらいからずっと……IntelliJ IDEが出て、しばらくしてからもうずっとそんな実装のはずだから、そもそもそういうぶっ飛んだ感じでIDEを作っているのが、もうこの人たちのぶっ飛び方、最高だと思って。
植木:四半世紀前は、信じられないですね。本当に、フロッピーのアイコンがあった……。
遠藤:そうそう、そうそう、そうそう。
植木:そうでしょう。フロッピーアイコンを押していたような気がしますけど。
Debuggerがクソほど優秀
遠藤:そうなのよ。そんな会社が作っているので、最近だとソニックガーデンでよくRubyを触るので、このRubyMineを使っているんだけど。
では、RubyMineの話をしていきましょう。ごめん、時間大丈夫? ぜんぜん駄目だよね、これね。
植木:大丈夫です。
遠藤:大丈夫? ありがとう。RubyMineは、みなさまご存じのとおり、「Ruby on Rails」に特化したIDEで、公式のうたい文句としては、「ナビゲーションが速いよ」とか、「デバッグとテストが快適だよ」とか、「いろいろ統合されているし、AI Assistantって便利よ」とか書いてあります。
そんなのは完全にブッチして自分の好きなことを語っていこうかなと思います。
とりあえず、ぜんぜん入り切らなかったのは、後々しゃべる予定なので、いったん、まず3選ということで。
1個目ね。これはマジでメチャクチャ推しているんだけど、Debuggerがクソほど優秀なの。ドン引きするぐらい優秀なの。何がそんなにすごいかというとね。
(スライドを示して)まずよ、まずよ。ここで、よく、ここのエディターのところ、赤いのを押すと止まるじゃん。
植木:止まります。
遠藤:「止まる」まではあるんだけど、ここをよく見て。もうね、インラインで、ここのControllerの中でparamsが、これが渡ってきているし、@pollはまだnilだし、とかが全部サッと出るの。
しかも、ちょっと下を見てもらいたいんだけど、一番左下のところのnewとかがいっぱい書いてあるここの部分にスタックトレースが並んでいるんだけど。これはなんとびっくりなことに、スタックトレースの……今だと、このPollsControllerを選ぶと、このPollsControllerのコンテキストにおいて見えている変数が右に出ているの。
だから、実は、下のほうで、send_actionとかでActionControllerやRailsのフレームワークのところにも潜っていけるんだけど、なんと、そこに潜ると、そこのコンテキストで見えている変数しか見えなくなるの。
植木:(笑)。
遠藤:だから、たまにGemのバージョンアップ……よくありがちなんだけど、息を吸うようにRailsのアップグレードとGemのアップグレードするじゃん。だいたいそうすると、たまにバグを引くじゃん。
植木:(笑)。
遠藤:「意味わかんねぇ!」っていう時に、ここのスタックトレースを潜ったら、「あぁ、ここでバグってるわ」とか、だいたいわかるのよ。
なので、それがもう、このボタンをポチッとやって、こっちの左側で「あぁ、とりあえずフレームワークのここらへんかな」って見て、そうしたら右にここの値が出ていると。
なんだったら、今これを止めておいて、この左側でそのスタックトレースを選んで、その時に、「ここの変数の、このオブジェクトのこのメソッドを叩いていたらどんな反応をするのかな?」とか見たくなる時あるじゃん?
植木:あります。
遠藤:それもちゃんとEvaluateというメニューがあって実行できるのよ。
植木:そこで、止めたままですもんね。止めたまま確認して。
遠藤:そう、止めたままの状態で、例えば「@poll.name」というやつがあるとしたら、「.name」と打つとかできちゃうの。
CLIのDebuggerでもすぐできるんだけど、見た目でここに止めて、そこから潜っていってっていうのが、ポチポチってできるのがメチャクチャ便利。
これだけでもだいぶヤバいんだけど、もっとヤバいことがあって。
(次回につづく)