こんにちは。ROUTE06 Tech Blogの編集チームです。
ROUTE06のエンジニアによる対談を、連載でお届けします。
第2回は、CTOの重岡 正さんと星野 剛志(ほしの つよし)さんです。
現在、Ruby on Railsエンジニアとしてエンタープライズ向けAPIプラットフォーム「Plain」のAPI開発に関わる星野さん。実は、Rubyに出会ったことをきっかけに、営業職からエンジニアへ転向するというキャリアを歩んできました。
星野さんに、Rubyの好きなところや日々の開発で大切にしているコミュニケーション、そして「naming」へのこだわりについて聞きました。
プロフィール
星野 剛志 HOSHINO Tsuyoshi
1982年生まれ。東京都出身。
営業企画職として働きながら、独学でRubyを学び、2014年にエンジニアとして株式会社フィードフォースへ入社。その後、株式会社スマービー(現・株式会社ストライプデパートメント)、株式会社クランチスタイルを経て、2020年ROUTE06に入社。
現在は、Ruby on Railsエンジニアとして、PlainのAPI開発を担当。
hoshinotsuyoshi.com (ブログ)
- 「Excelのマクロを書くのが好き」からエンジニアへ。Rubyにのめり込んだ理由
- ROUTE06には、ソフトウェア開発に集中できる環境がある
- フィードフォースで学んだ、みんながハッピーになる開発とは?
- namingへのこだわり。「誰もがわかりやすい」状態を目指したい
- ソフトウェアエンジニアの理想的なコミュニケーション
- ROUTE06のチームやプロダクトの成長が楽しみ
「Excelのマクロを書くのが好き」からエンジニアへ。Rubyにのめり込んだ理由
重岡
星野さんは、社会人になってからエンジニアに転向されたんですよね。そのきっかけって、どんなことだったんですか。
星野
ROUTE06に入社するまで、5社経験しているんですが、最初の2社は営業の企画職でした。資料を作る仕事が多いなか、Excelでマクロを書くのが好きだったんです。裏の画面を開いて、VBAを書いて、いろいろ自動化できることが楽しくて。
効率の良いSELECT文を書いたりとか、どうしたら早くデータが取れるかを考えたり。データベースの正規化もやってました。データベースまわりは自己流で勉強を始めて、のちにデータベーススペシャリストの資格も取ってます。
重岡
営業の企画職で、プログラミングっぽいことをやっていた。
星野
業務で使うExcelのマクロをいろいろ書いているうちに、「もっと簡単に書けるんじゃないの?」と考えるようになり、方法を調べてたんです。そうしたら、Rubyに出会いました。2013年頃の話です。
重岡
そうだったんですね。
星野
当時は今ほどMacも一般化していないし、営業なこともあって、WindowsでRubyを書いてました。WindowsでRubyが使えるのは良かったですね。RubyのWindows対応をメンテナンスされている方々に感謝です。
そのうち、社内のイントラネットのデータを閲覧するソフトウェアなどをSinatraで作ったりもしました。まわりからも喜ばれたので、嬉しかったです。
重岡
それまでは独学で? 今みたいに、プログラミングスクールやエンジニアになりたい人向けの情報が多い時期ではないですよね。
星野
独学です。Rubyの良さは、検索すると日本語の情報がたくさんあったこと。コミュニティも盛んでしたし。
エンジニアとして入社したフィードフォースでは、広告用のデータ変換や、配信システムの開発・運用に関わりました。その後、子ども服のアパレルECサイトsmarby(スマービー、現・STRIPE CLUB KIDS by smarby)と、サブスクリプションサービスの会社を経験して、2020年にROUTE06です。
重岡
Ruby、好きなんですね。今の仕事でも、PlainのAPIをRubyで開発していますし。
星野
「Rubyでやりましょうよ!」って、ゴリ押ししましたからね(笑)。結果、検討してもらって、自分が担当する範囲はRubyで書くことになって嬉しいです。
Rubyは、英語の文法に少し似ていると感じていて、レシーバーとメッセージ(メソッド)の関係から、「誰が何を実行するコードなのか」がわかりやすいところが好きです。短く書けるのもいいし、読みやすい。初心者が勉強をするうえでも、覚えやすかったです。
なにより、Rubyを知るまでVBAでマクロを書いていた。その反動もあって、Rubyスクリプトで書いたときは「こんなに簡単なんだ」と感動したのが忘れられないです。
ROUTE06には、ソフトウェア開発に集中できる環境がある
重岡
これまで星野さんが関わってきたサービスは、BtoCが中心ですよね。BtoB開発をするROUTE06を選んだのは、どんな理由からだったんでしょう?
星野
ROUTE06を知ったきっかけは、遠藤さん(ROUTE06 CEO・遠藤崇史)です。スマービー時代に一緒だったこともあって、前職を辞めたときに「どうですか?」と誘われました。
偶然ですが、これまで事業会社で自社のシステム開発が多かったから、「今度は受託開発もいいかも」って興味を持っていたんですよ。
特定のサービスの開発ではなく、いろいろ関われるから、飽きなさそうと思いました。リモートワークで、子どもとの時間がとれる点も良かったです。
重岡
受託開発の仕事そのものは、他の会社でもできますよね。あえてROUTE06を選んだ理由も聞きたいです。
星野
上場前で楽しそうだなと。これから大きくなる会社だから、のちのち先輩風を吹かせたいみたいな、……というのは冗談ですけど(笑)
組織が小さいうちって、自分がやったことの影響力が大きくなる。「今のタイミングだからできることがあるんじゃないかな」と、わくわくしました。
重岡
組織の立ち上げ時期特有の楽しさって、ありますよね。
星野
それに、やっぱり遠藤さんの存在は大きい。
経営として、エンジニアリングを重視している会社だと感じました。重岡さんが役員として入っていることもそうだし。
重岡
星野さんのいうエンジニアリングとは、ソフトウェア開発や保守はもちろん、エンジニアの採用、チームビルディングなども含めた、「開発にまつわることすべて」の意味ですね。
星野
そうです。
実は、これまでの仕事で、開発だけに集中できないときがありました。リーダーになって会議が多くなったり、外部エンジニアのマネジメントをやったり……。
管理職もキャリアの選択肢のひとつではあるけれど、いざ自分がその領域に足を踏み入れたとき、「やっぱり現場で開発をしていたい」と気づいたんです。
重岡
エンジニアの転職理由として、よく聞きますね。
管理職になって開発現場から離れると、「コード書きたい」となる。管理職でなくとも、会議が多い職場は開発に時間がかけられないから、「開発に集中できる環境に転職しようかな」となる。
ROUTE06では、エンジニアとして何をやりたいかの期待値のすり合わせを大切にしています。
星野さんとは、入社後も「どんな環境が理想か?」の話をしましたよね。プロダクト開発に集中したいから、ROUTE06を選んでくれたわけです。
星野さんに限らず、エンジニア1人ひとりの意向は大事にしていきたいです。
フィードフォースで学んだ、みんながハッピーになる開発とは?
重岡
星野さん、めちゃくちゃコード書くの速いですよね。一緒に仕事している人は、みんな言ってます、「星野さんは開発が速い」って。
それに、pull requestやcommit messageがすごく読みやすいんですよ。情報がまとまっていて、レビューがしやすい。フィードフォースで身についたんですか。
星野
はい。いわゆる駆け出しエンジニアとしてフィードフォースに入社したんですが、いい人ばかりで、まわりに育てていただきました。
年齢も30代に入っていましたけど、会社が終わったあとにカフェに集まって、勉強会をやったり。個人で開発もしていたので、意見をもらうこともありました。
重岡
とくに影響を受けた同僚や先輩は?
星野
僕と同じ日に偶然入社したベテランエンジニアのマスタカ(増田貴士)さん。先日、フィードフォースを退職されたんですけど。
マスタカさんの日々のふるまいやわかりやすいpull request、commit messageの出し方から開発と向き合う姿勢を学びました。
重岡
フィードフォースでの3年間は、エンジニアとしてできること、関わることが増えていったと思うんです。実務を経験して、見える景色はどんなふうに変わりました?
星野
はじめのうちは、自分が何を書いているのか半分もわかっていませんでした。
チーム開発も初めてだったし。個人でサーバーを立てる経験はあっても、メモリの効率やコードの書き方までは意識してなかった。「他の人が見てちゃんと意味が分かるコードを書こう」という心がけは、なかったんですよ。
でも、フィードフォースでみんなと開発しているうちに、わかりやすいコードを書くことはもちろん、「物事の背景まで書いておく」ほうが、みんなハッピーになるんだと気づいていきました。
重岡
とても良い環境だったんですね。
続いてスマービーでは、ECシステムの開発に関わって、管轄する範囲が一気に広がったんじゃないかなと。
ECドメインの知識もインプットしないといけないし、会員情報や購入データなどあつかうデータも増えて、その処理も前職とは違いますよね。どんなふうに開発をしていましたか。
星野
勉強するしかなかったです。ひたすらRailsのコードや、SpreeというECのフレームワークを読んでいました。リモートワークだったので、働く時間の9割を開発に費やしました。
地域のRubyのコミュニティにも参加し始めたのは、スマービーで働き始めてからです。フィードフォース時代も勉強会には顔を出していましたね。Rubyの勉強会やコミュニティは、仲良く話せるし、そこでのインプットが仕事にも生かせるので、好きでした。
namingへのこだわり。「誰もがわかりやすい」状態を目指したい
重岡
星野さんが担当しているPlainは、エンタープライズ企業の商取引のデジタル・トランスフォーメーションを実現する、APIプラットフォームです。
当然、開発サイドにもドメイン知識が重要なんですが、その点を星野さんにとても助けられていて。
星野さんは、企業の受発注の流れを把握しているし、利用するユーザー視点でデータベースの設計を考えてくれます。ビジネス職の経験が生かされているなと感じます。
星野
ムダになってないですね。1社目の会社では、倉庫業務やレンタルモデムの管理をしていたんです。なので、出荷や入荷の言葉に慣れていました。
スマービーのときも、倉庫へ見学に行き、「商品の注文が入ってから商品をピックアップして梱包して……」という、流通の流れを理解したうえで開発に関わっていたんです。
重岡
「Plainに何が求められているか?」がイメージできているんですね。
星野
今は、実際にユーザー企業の話を聞くことが難しいぶん、ビジネス側と「どんな機能がほしいのか」を話し合います。「そもそもなぜこの機能が必要なの?」と、丹念に聞くように心がけています。
重岡
なるほど。星野さんは、プロダクトマネージャーに対しても、「これはどういう意味?」って、ムダなくミニマムに聞きながら、理解を進めていますよね。
見ていて、issue作成能力が高いなと感じています。質問も分解して、1トピックに対してissueを作成して、解決したらclose issueするように、issueを細かく管理している。
星野
月並みですが、「実現したいことはなんですか」「なぜそれをやるんですか」と聞くようにしています。
重岡
良い開発をするうえで、プロダクトマネージャーやデザイナー、エンジニアの間で疑問を解消し、共通認識を持つことは欠かせないです。
星野
あとは、naming(ネーミング)。名前付けにはこだわりますね、「なんでこの名前なんですか」って。
「なんとなく」のノリで呼んでるような名前とか、本来の機能性を表していない名前がついていると、気になるんです。
「こちらの名前がいいんじゃないか」とか、「どんな意味で呼んでいるんですか」って確認したい。すると、相手から「そう呼んでいる背景の話」が引き出せるじゃないですか。
重岡
理解できるし、違う提案もできる。「雰囲気で理解して実装したら違ってた」の、手戻りも防げます。
星野
たとえ話ですが、「なんでも入るポケット」の機能がほしくて、その機能をみんなが「四次元ポケット」と呼んでいるとする。僕は、そう呼んでいること自体から疑ってます。
そもそも「"なんでも入るポケット”の機能がほしいの?」「なんで?」とか。もっと、適切な言葉があるんじゃないかとか。一般的な名称や、英語ではなんと呼ぶかも考えます。
重岡
星野さんが、名前にこだわる理由を知りたいです。
星野
新しく入った人が、理解しやすいほうに寄せたい。驚きが少ないほうが、うまくいくと考えています。開発していたら、読まなきゃいけないものがたくさんある。だったら、頭にスッと入ってくる言葉がいいと思うんです。
重岡
星野さんは、実際にアクションへ落としてますよね。
Plainの開発で、日本語と対応させる英語がわかりにくかったり、定義されづらい言葉は、ユビキタス言語としてドキュメントを作ってるんです。
それを星野さんはGitHubで管理しながら、プロジェクトを進めていて。みんなで合意形成がとれたタイミングで更新している。行動が徹底しています。
ソフトウェアエンジニアの理想的なコミュニケーション
星野
僕からも質問いいですか。
重岡さんから見て、僕は率直なタイプだと思います? 自分は、疑問に思ったことをすぐに聞くタイプだと思っているんですが……
重岡
率直な人ですよ。わからないことははっきりとさせてくれるほうが、僕はありがたいです。
星野さんは、開発のキックオフの段階で「なぜこの開発をするのか」と質問するじゃないですか。そのことで、あいまいなところが明らかになり、みんなの方向性が揃っていくと感じています。
エンジニアは、WHYをちゃんと聞いて、HOWを考えることが仕事。徹底してWHYを聞く星野さんは、率直だし、仕事がやりやすいです。
星野
そう言ってもらえて、ありがたいなぁ。
重岡
もやもやが晴れていくんです。みんながなんとなくイメージしていることが、星野さんの質問によって具体化していく。要件や仕様が固まってきますね。
星野
ふわっとしていることを聞くのは、意識しています。
重岡
プロダクトマネージャーをはじめ、誰かと一緒に開発するうえでのふるまいとして、適切だと思いますね。プロダクト開発における、ソフトウェアエンジニアの理想的なコミュニケーションのひとつではないかなと。
ROUTE06のチームやプロダクトの成長が楽しみ
重岡
ほかにも、星野さんから聞きたいことはありますか。
星野
今後、Plainはどうなっていきますかね。
重岡
エンタープライズ向けの巨大なアプリケーションなので、最近はドメイン境界やモジュラーモノリスの話も出てきましたよね。
足元の技術的な話でいうと、Railsのアプリケーションの範囲だけでも適切な分け方があるので、そのアイディアを考えるのは面白そうだなと思っています。
少し先の未来では、プロダクトラインやサービスを増やしたい。やることがたくさんありますよ。
星野
そうですね。自分も、PlainのAPI以外の開発をすることがあるだろうと思ってます。
今は、Plainの開発の中盤にいる感覚があるんです。
開発することが増えてきて、エンジニアチームが今後どんなふうにスケールしていくのか。自分のことですけど、ちょっと第三者的な視点で興味が沸いています。
重岡
プロダクトの成長とチームの成長のさせ方、そしてチーム分割の仕方を考えながらやっていくフェーズに差し掛かっていますね。何十、何百人で1つの巨大なアプリケーションを開発するってわけにはいかないので。
星野
このあいだ、モジュラーモノリスについて考えて、「まだ早いかもね」の結論になりましたけど。半年後、どうなっているかわからないぞって勢いで、Plainやチームが成長していく可能性もありますよ。
重岡
創業当初から関わっている星野さんやメンバーは、Plainのことをすべて把握している。
でも、これからチームを大きくするなかで、人によって情報理解の濃淡があるのは避けたい。名前や読みやすいドキュメント、情報の共有には意識しないといけないなと、あらためて思いました。
星野
そこで、おっさん力を(笑)。エンジニア歴は7年ですが、名前に対するこだわり、物事を整理する力は、年の功を発揮していけたら。継続して良い開発が続くように、スタートの今を、少しでも良い状態にしていきたいですね。
重岡
私も同じ気持ちです!
今日はありがとうございました。この対談では、話のおわりに10年後のことを聞くようにしているんです。星野さんは、何をしていたいですか。
星野
10年後も、開発をしていたいです。管理職は機会があれば考えるけど、僕にはそれを求められていない気もして。今後パラダイムも変わっていくと思うけれど、今と似たような仕事をしていたいです。
また、子どもがプログラミングがわかる年齢になってきて、一緒に話ができるのが楽しいです。将来エンジニアにはならないかもしれないけれど、プログラミングを教えたり、話し合うことで自分の学びにもなるかなと考えています。
(編集・執筆:マチコマキ)