Ruby on Railsコミッター松田明氏×RIZAP若手エンジニア座談会 〈3/3〉
RIZAPがRailsを
メインスタックに採用した理由
――ここからは、プロダクト開発統括1部の佐藤部長も交えて、RIZAPの開発現場のメインスタックとしてのRuby on Rails(以下、Rails)について話し合っていただければと思います。
まずは松田さん、Railsはどういう現場に向いていると思われますか?
松田:あらためて Railsの特徴 について言うと、スモールスタートアップやスモールチームでレバレッジをきかせてグレートなソフトウエアを作るということに特化しています。
理想を言えば4〜5人とか10人弱ぐらいのプログラマーがいるチームが、最もRailsのパワーを発揮できる規模感じゃないかなという気はしていますが、なんなら1人でも始められます。
――では、佐藤部長が実際にRubyとRailsをメインスタックとして選んだ理由はなんでしょうか。
佐藤:一番の前提としては、まず僕がネイティブにできるからです。
それだけではなくて、実際RIZAPの開発現場に向いているなと思ったのは、うちが下手なスタートアップよりスピード狂だからです(笑)。もうドッカンドッカン、変わっては生まれ、変わっては生まれを繰り返しているので、そういったプロダクトだと本当にRailsが向いているんじゃないかなと思うんですよね。
あともう一つは、やっぱり少数精鋭でやっていかざるを得ないだろうなと思っていたからです。
――佐藤部長が参画されたとき、RIZAPにはエンジニアが1人もいなかったんですよね。
佐藤:はい。私が入ったときはゼロでしたし、これから新卒ベースで人を増やしていくと言っても、バックエンドエンジニアだけで何百人という体制になるのはまだまだ先の話だと思っていて。そうすると、少数精鋭ですごいスピードで開発していくことが重要になるだろうなと。
いっぽうで、すごいベテランエンジニアがRIZAPに転職するケースはあまり想定していなかったので、そういう意味では、教育のしやすさも重要なポイントでした。
Railsは書籍も多いし、日本語のコミュニティも割とあるし、フレームワークがすごくしっかり支えてくれる。なんなら、Railsが技術を教えてくれるから、初学者の人にも教えやすいんです。
松田:そうそう。佐藤さんの話を補足すると、「Rails」という名前はレールが敷かれていることに由来しているんです。言うたら、敷かれているレールがフレームワークで、アプリケーションはその上に乗っている電車。
Railsは「もう黄金のレールを敷いておいたので、ここに沿って走っていただければ成功は約束されていますよ」というフレームワークなんです。
佐藤:そうなんですよね。だから逆に「Rails嫌い」という人もいて、それは、Railsがすごく考え方を押し付けてくるから(笑)。
だからもちろんメリット、デメリットはあるのですが、イチからエンジニア組織を立ち上げて引っ張っていくという意味だと、ポジティブに働くのがRailsだと思うんです。
松田:それはRailsの作者であるDHH(※David Heinemeier Hansson。デンマーク出身のプログラマーで、Ruby on Railsの作者)の演出でもあるんですよね。
彼がもともとそういう押し付けがましい人間だから、それが自然ににじみ出ているのかもしれないですね(笑)。
佐藤:あともう一つ、さっき松田さんがおっしゃった通り、Railsは20年たってもRailsであることがすごいんです。たとえば、PHP上で動作するアプリケーションフレームワークといえば最初はCake PHPでやっていて、その後Symfonyが出て、続いてLaravelが出たんですよね。もちろん全部残っていますけれど、「今Cakeでやっています」というのはあんまり聞かなくて、もう Laravelなんです。
この15年間で三つがポンポンポンって出て変わっている中で、Railsはもう20年間もRailsのまま。
エッジな組織を常に追い求めるエンジニア集団ももちろんいいと思うのですが、RIZAPのような組織だとフレームワーク自体が消えてしまうと追いついていけません。
あくまでビジネスを成功させることが主目的だと思っていますので、Railsにしっかりワンサポートしてもらったほうが向いているのじゃないかなと思って選択しています。
松田:特性をよく理解されていますね。よく勉強している。
佐藤:ありがとうございます(笑)。
まるで魔術的?
記述量の少なさもRailsの特徴
梅田:実際に勉強してみると、佐藤さんがおっしゃっていた「Railsが教えてくれる」というのがその通りだなと思っていて。
自分はWebの仕組みとかを本当に何も知らない状態で入ったので、「このブラウザでこのホームページを見られているけど、なんで見られているんだろう」といった裏側の仕組みをゼロから勉強するって結構難しいのですけれど、Railsの1個のソースコードを解読すると自然とそれが知識として入ってくる。
単純にWebアプリを作るというだけじゃなくて、Webアプリの裏側の仕組みとか、そもそもなんで表示できているかみたいなところをすべて体系的に勉強できるっていうことも踏まえても、Railsを勉強していてすごくよかったなって思っています。
松田:Railsアプリケーションってプログラマーが書かなきゃいけないコードの量ってすごい少ないんですよね。だから1行1行の密度がすごい。
これ1行書いただけで、裏側であんなことやこんなことをRailsがやってくれて、その結果こういう動きをするっていうのが、なんかもう魔術的じゃないですか?
昔のプログラマーは、それを全部自分で書いていたのに対し、Railsは「全部フレームワークにしておきましたんで、呼び出しの一言かけてくれれば勝手に動きますので」っていう魔法なんです。
でもその分、理解するのは難しいと思うんです。 好奇心を持って「え、ちょっと待って、なんでこれを書いただけでこうなるの?」っていうのを、Rails自体のソースコードもちゃんと深掘りして、自分の中でちゃんと腹落ちさせていかないと振り落とされるかもしれませんね。
梅田:振り落とされないように頑張ります…!
松田:あと、記述量が少ないということがチーム開発にとって最適なんですよね。
チーム開発って、コードを書くだけじゃなくて、むしろ同僚が書いたコードを読んでレビューしたり、読んでちゃんとキャッチアップしたりする、という仕事がある。
なので、読まなきゃいけないコードの量が少ないと、それだけそこのコストが短縮されるというわけです。
書いちゃったソフトウエアというのはどうしても負債になるので、コードの行数が少ないと負債になる量が少なくて済むわけですし、書きかえていくにしても、とにかく量が少ないから身動きがとりやすい。
そういうメリットがあって記述量が少ないというのが、Railsのすごくよい特徴かなと思います。
大塚:自分も今のWebの体系的な知識を、ほとんどRailsで学んだと感じています。
というのも、Javaを使ったフレームワークでWebアプリケーションを作るという授業が学校であったんですけど、そこをどういうふうに組み立て行くかというのがわからずに挫折する人が多い中、自分は「あ、これRailsでやったところだ」みたいな感じでポンポンポンポン作っていけたんです。
あとはソースコード1個で、ライブラリーはどういうふうに書かれているのかを見たときに、膨大な量のソースコードが書かれていて。そこでRailsって、本当にレールという名がつくだけのことがある、素晴らしいフレームワークだと思いました。
チーム開発はダイバーシティが重要!
個性も若さもみんな不可欠
――松田さんから、若手のエンジニアに「RubyやRailsを使ってこういうことをしてほしい」と何か期待することはありますか?
松田:ちょっと話は違うかもしれないのですけれども、若い人は本当に必要なんです。
今の物事の流れって、昔のように既存のチームの形があってそこにピースとして人を埋め込むのではなくて、人がいてくれて、その人それぞれが個性を発揮するからこそできるチームの形があって、そこからボトムアップ的にプロダクトができるというものなんです。
なので、よっぽど人に迷惑をかけるタイプの個性でなければ、何かしらその人がいてくれる分だけチームにとってはプラスになりますので、個性的な人がいいし、若い人の勢いというのはすごく大事なんです。
インターネットの顧客は多様なので、現代的なチーム開発もそれに合わせたダイバーシティがすごく重要で、それでこそ現実のニーズに合ったもの作りができるんです。多様性を持った人たちがお互いに言いたいことを議論しながら物を作ってほしいなと思います。
――自分の持ち味みたいなものをちゃんと発信していく発信力も必要そうですね。
松田:そうですね。だから「自分は未熟だから仕事で迷惑かけて申し訳ない」というようなことを気にする必要はなくて。 何か一つでも「これが得意です。だから自分に任せてください」っていうものがあると強いですよ。「この技術に関してだったら俺、ちょっと世界で一番詳しいかも」みたいな必殺技があれば、もうそれだけで戦っていけると思います。
梅田:今の時点で「これがあります」とはなかなか言えませんが(苦笑)、もともと自分は事業部にいたので、ユーザー目線を第一に「世の中にこういうサービスあったらいいな」というのをどんどん提案していけたらとは思います。
松田:いいですねえ。
大塚:鈴木さんとの対談でも話題になっていましたが、ここ2〜3年でビッグデータが一気に注目されるようになった感じがあるので、自分はそこにすごい興味があります。
将来的にはデータ分野やRIZAPのほかの事業も一緒に触れていけたらいいなと思っています。Railsとデータとかをうまく組み合わせて、そこで唯一無二のエンジニア像を作っていきたいです。
松田:最高ですね。素晴らしい。必殺技ってさっき言ったけれど、それが二つ、三つぐらいの組み合わせになると、現実的な技になってくると思うので。
たとえばヘルスケア分野にものすごく詳しくて、自分でコードも書けるとか、データ処理もできるしRailsアプリも作れる。そういう合わせ技1本みたいなのを狙うというのは非常に強い武器になると思います。
コミュニティと交わることで
世界レベルの技術者との出会いも
――これから技術顧問として、松田さんがRIZAPでやりたいことはありますか?
松田:RIZAPという企業単体として頑張りましょうというよりは、うまいことコミュニティと交わったほうが絶対力が出ると思うので、その橋渡しをお手伝いできたらと思います。
企業は国と同じで、鎖国していればある程度統治はしやすいんですよね。でも僕はそれをやめて「貿易していこうぜ」と言いたいわけなんですよ。
そうすると何が起こるかというと人や物が入ってくる。
でもその分、流出もするので、他社に比べて魅力的な会社にならないと出ていくほうが多くなっちゃう。
そういう意味ではもろ刃の剣なのですが、ではどうしたらいいかっていうと自分たちのビジネスを信じて、自分たちの価値を高めていって、堂々と外に出ていっても負けない会社にしなきゃいけません。
すると、「こんないい会社あるんだ、俺も入りたい」って人が入ってきてくれるチャンスが増えるので、そのコミュニティとの交流がプラスになるんですよね。
単にやみくもに交流しましょうと言うのではなく、いい組織を作って自力を高めつつ、外に対してちゃんとアピールして健全な交流をしていくという二本立てが必要なのかなと思っています。
どうして外の人たちと交わってほしいかというと、仮に何十人かいる同僚の中で1人や2人すごく仕事できる人がいたとしても、たかが知れてるんですよ。皆さんにはそんな井の中の蛙になってほしくない。
いっぽうオープンソースのコミュニティというのは無限の広がりがあって、世界で一番プログラミングが上手な人の仕事っぷりが見られるわけですね。
僕自身オープンソースプログラマーをやっていて本当に恵まれているなって思うのは、たたとえばあのまつもとさんと一緒のチームで開発ができている。Railsチームではさっき言ったDHHというスーパープログラマーと一緒に仕事ができている。
これはプログラマーとしてはものすごい財産です。でも、会社にとじこもってプログラミングをやっていても、そんな機会は得られません。
なので、せっかくプログラミングを始めるのであれば、ぜひオープンソース開発に足を突っ込んでみてほしいです。
梅田:興味はあったものの踏み込めていなかったので、これからは積極的にコミュニティに参加してみます! まずは5月のRubyKaigiをきっかけに、いろんな人に会って知識を得て、自分や会社の成長につなげていきたいです。
松田:是非コミュニティに参加してください!と言いたいところなんだけど、新型コロナウイルスの感染拡大で、すべて流れが変わっちゃったんですよ。昔は毎日のように、東京のどっかでみんな集まってワイワイやっていたんですけど、それがプッツリ途絶えちゃって。
なので、今このタイミングで入ってくる若者たちは、どこに行ったらコミュニティに触れるのかわからないので、本当に受難の時代だなって思っています。
でも、コミュニティにはやっぱり若い人たちが不可欠なので、期待しています。
大塚:自分も松田さんに出会ったこの機会に乗じて、コミュニティに片足どころか両足を突っ込んで行こうと思っています。
松田:お待ちしています(笑)。
佐藤:それでは松田さん、今後ともよろしくお願いいたします。
松田:こちらこそよろしくお願いします。
(了)
この記事が気に入ったらサポートをしてみませんか?