ステイホーム期間が続き、開発者がオフィスで顔を突き合わせることも少なくなっています。そんなリモートワークが既定となった状況下でも、ユーザベースのB2B SaaS事業では開発に関わる全てを徹底してペアプログラミングで行っています。
その根幹には、XP(eXtreme Programming)のプロセスを推進することで開発効率を向上させる意図があり、それが多種多様なプログラミング言語やマイクロフロントエンドといった目新しい技術を恐れることなく積極的に採用する開発文化を生み、ひいてはシェアドリーダーシップによる自己組織化されたチームのあり方につながっています。
わずか10人程度だったエンジニア組織を4年で10倍の規模に拡大し、さらに組織と事業の成長を目指すCTOの林尚之さん、スペシャリストとしてFellowの肩書を持つ板倉大輔さん、入社2年目のエンジニア片山景太さんの3人にお話をうかがいました。
※ この記事は株式会社ユーザベースによるSponsoredContentです。
- 事例が少ない技術でも優れていれば積極的に採用する
- マイクロフロントエンドとマイクロサービス導入の実態
- 技術選定には制限がない
- ペアプロもXPも全ての工夫は開発効率向上のために
- シェアドリーダーシップを推進してエンジニアの成長を支援
※ 記事末に、Amazonギフト券500円分が当たるプレゼントのお知らせがあります。
事例が少ない技術でも優れていれば積極的に採用する
──ユーザベースのB2B SaaS事業では、経済情報プラットフォーム「SPEEDA」を始めとして複数のサービスを運用しています。それぞれの概要と、エンジニアリングの面でどういったフェーズなのかを教えてください。
林 最も歴史が長いのは、今も名前が上がった「SPEEDA」です。リリースから10年以上が経過しているためそれなりに技術的負債も蓄積しており、今後も開発スピードを維持していけるように機能の一部をマイクロサービス化、マイクロフロントエンド化しています。
スタートアップ情報プラットフォームの「INITIAL」も、前身となる「entrepedia」を含めるとサービスの運用年数が長いですね。SPEEDA同様にマイクロサービスとマイクロフロントエンドを導入して、開発効率の向上を図っているところです。
他にABMと呼ばれるマーケティング手法の実践をサポートする「FORCAS」、提案営業の質を高める「FORCAS Sales」というプラットフォームがあります(ABMについては後述)。まだ開始から4年目と1年目という開発中のサービスです。
林 尚之(はやし・たかゆき)株式会社ユーザベース B2B SaaS事業 執行役員 CTO。松山大学経済学部を卒業後、SIerを経て2009年に独立。エンタープライズ向けシステム開発等に従事した後、2013年からSPEEDAの開発にフリーランスとして参画。2017年1月に入社し、2018年1月より現職。
──いずれもただ運用しているフェーズではなく、継続的に開発が進められているわけですね。4つのサービスをどのくらいの組織で開発しているのでしょうか。
林 エンジニアだけで100人ほどいますが、さらに増員を目指しています。事業全体の技術力を高めることでサービス改善のスピードを向上させ、さらなる事業拡大を狙っているところです。
B2B SaaS事業で開発・運用するサービス
- SPEEDA(スピーダ)
- 経済情報・ビジネス情報を収集・分析するクラウド型プラットフォーム。ユーザベースの起点となるサービスとして2009年5月から提供開始。
- INITIAL(イニシャル)
- スタートアップの事業概要から関連ニュースまでワンストップで検索・閲覧できる情報プラットフォーム。2011年にサービス開始したentrepedia(アントレペディア)がM&Aやリブランディングによって2019年11月から現在の形に。
- FORCAS(フォーカス)
- ABM(Account Based Marketing)の実践をサポートするB2Bマーケティングプラットフォーム。ABMとは成約確度の高い企業をデータ分析に基づいて特定し、マーケティングと営業のリソースをターゲット企業に向けて集中する最新マーケティング手法のこと。2017年5月リリース。
- FORCAS Sales(フォーカスセールス)
- 顧客の課題本位の営業活動を支援するセールスリサーチプラットフォーム。2020年7月にサービス開始。
──先ほど「マイクロサービス」と「マイクロフロントエンド」を導入しているという話がありました。バックエンドをマイクロサービス化する話題はよく耳にしますが、フロントエンドでも同様にモノリス化を避けるアーキテクチャを導入しているのですね。
マイクロフロントエンドとは、マイクロサービスの思考をフロントエンドに拡張したもの。詳細は次の記事などを参照
▶ [翻訳記事]マイクロフロントエンド - マイクロサービスのフロントエンドへの応用
ユーザベースでいつごろからどのように取り組んでいるのか教えてください。
板倉 分かりやすい事例は、SPEEDAのニュース機能の改善でしょうか。2017年末から2018年にかけて、マイクロサービス化とマイクロフロントエンド化に取り組みました。
板倉 大輔(いたくら・だいすけ)株式会社ユーザベース B2B SaaS事業 Fellow†。SIerを経て2012年に独立。2013年にNewsPicksの立ち上げからフリーランスとして開発に参画し、2017年からSPEEDA開発チーム。2019年に正社員となり、B2B SaaS事業各サービスの開発に携わる。
†Fellow …… ユーザベースB2B SaaS事業で、エンジニア組織内に設置されたポジション。卓越した知見と技術力を生かして事業全体の技術クオリティーを高め、開発に深くコミットすることでプロダクトおよびエンジニアの成長を促す。UB Journalの記事も参照。
──2017年ならマイクロサービスの国内事例は増えている頃かと思いますが、マイクロフロントエンドに取り組んでいるサービスは少なかったのではないでしょうか。
板倉 確かにそうですね。しかし、先行事例が少なくても、優れている技術なら積極的に採用するのがユーザベースの文化です。挑戦することを恐れない。
林 その時期にはThoughtWorksのテクノロジーレーダーにも掲載されてましたしね。
Micro frontends | Technology Radar | ThoughtWorks
募集中! マイクロフロントエンド・マイクロサービスを推進しよう
マイクロフロントエンドとマイクロサービス導入の実態
──ニュース機能の改善をどのように進めたのか具体的に教えていただけますか。
板倉 ニュースを表示する機能は以前からSPEEDAにありましたが、情報を提供されているサプライヤーは20社ほどでした。この情報を充実させるためより多くサプライヤーと契約し、国内だけでも約200、海外も含めると2,000媒体以上に増えたため取り扱う記事も膨大な数になったのです。
既存のアーキテクチャでは、大量のデータを適切に取り込み、表示させることが難しいと判断しました。そのため、ニュース機能をマイクロサービス化して、容易にスケールできるシステム構成にするニーズが出てきたのです。それに伴って、コンポーネント単体でのリリースや改善を行いやすくするため、ニュースを表示させる画面のコンポーネントもマイクロフロントエンド化する方針になりました。
──工夫した点はありますか?
板倉 マイクロフロントエンドを実現するには、大きく分けてWeb Componentsを用いる方法と、iframeを用いる方法があります。後者はドキュメント同士での情報連携が難しいため、一般的にはアンチパターンとされています。
ですが、SPEEDAの既存アーキテクチャとの相性や、ユーザーに一定数のInternet Explorer利用者がいることなどを鑑みて、iframeを用いる方針を選びました(IEではWeb Componentsが動作しないため)。ドキュメント同士の情報連携の課題は、postMessageやEventDispatcherなどを用いて疎通を行うことで解消させています。
とはいえ、今後も継続してiframeを用いる予定ではなく、どこかのタイミングでより利便性に優れたWeb Componentsによる設計に変えたいと考えています。ブラウザがIEの場合だけ別のスクリプトを読み込ませるなど、何らかの解決策はあるはずですから。
──マイクロサービス化はサービス全体で進めているのでしょうか。
林 基本的には、既存サービスに対して何かの機能追加・変更を行うタイミングで、アーキテクチャの導入を検討するケースが多いです。機能をサービス単体として独立させる利点が大きい場合に、マイクロサービスやマイクロフロントエンドを用いて新規構築する方針をとっています。
逆に言うと、単にシステムの裏側をマイクロサービスにするだけの施策は実施しません。それだけではユーザーへの提供価値が大きくならないため、私たちはシステムの刷新とユーザー価値の向上を両立させることを重視して、技術選定を行っています。
──他にマイクロサービスの導入事例や工夫があれば教えてください。
片山 SPEEDAやFORCASなど複数のサービスから利用される、企業情報を扱うAPIがあります。実は私たちが運営しているB2B SaaSでは、たとえ同じ企業情報を扱う場合でも、どのような形式の情報が必要なのか、閲覧できる企業の種類や表示させる優先度がサービスにより異なっています。
そのため、API側でその差異を吸収できるように、マイクロサービス群にレイヤーを定義し、責務を明確にするよう設計しています。最も内側にあるマイクロサービスは、特定のサービスに全く依存しないロジックを記述します。より外側にある(利用者に近い側の層の)マイクロサービスは、逆に特定のSaaSのユースケースに沿ったロジックにしています。これによってマイクロサービス自体の柔軟性と拡張性を向上させています。
片山 景太(かたやま・けいた)株式会社ユーザベース SaaS Product Divisionメンバー。北九州工業高等専門学校卒業。SIerとして経済情報を取り扱うWebサービス開発に従事した後、リファラル採用でUzabaseに転職。現在はFORCAS Salesの開発に従事する。
技術選定には制限がない
──マイクロサービス化で刷新したアーキテクチャにおける技術選択を教えてください。
板倉 ニュース機能では、サーバーサイドをKotlinで開発しています。ニュースの取り込み処理やBFF(Backends For Frontends)にはClojureを、フロントエンドにはAngularを採用しています。
──Clojureをプロダクトに導入されているのですね。
板倉 Fellowの矢野勉(@t_yano、前掲したUB Journalに登場)が、Clojureに詳しいのです。彼が勉強会やモブプログラミングを通じてこの言語をユーザベースに普及させていきました。
この例を含めて、ユーザベースでは新しいサービスを構築する際に、開発担当のエンジニアたちが各々で技術選定を行っています。何の技術を選ぶかに制約はないため、社内で用いられている技術スタックは非常に多種多様ですね。
──技術選定の制約がないというお話ですが、扱うプログラミング言語やライブラリの種類が増えると学習コストも増大しますよね。どう対策されていますか?
板倉 事前に申請すれば、エンジニアは業務の一定時間を勉強に使用できることになっています。週あたり数時間を新技術のキャッチアップに使う人もいれば、チーム内に特定技術を普及させる勉強会を開催するものもいます。これが何らかの技術を導入する助けになっていますね。
林 エンジニアの所属するチームを異動させて、いろいろな機能や言語を体験して知見ができるようにもしています。
ユーザベース内で用いられている技術スタック
- プログラミング言語
- Go、Kotlin、Rust、Clojure、TypeScript、Python、Elixir、Java、Ruby、Scala
- ストレージ、DB、その他の各種ミドルウェア
- PostgreSQL、MySQL、Cloud Bigtable、Redis、Google Cloud Storage、Elasticsearch
- クラウドプラットフォームなどのインフラ基盤
- GCP、Google Kubernetes Engine、Anthos GKE、AWS、Amazon ECS、AWS Fargate
- デプロイ、CI/CD、ソースコード管理などの開発環境
- Jenkins、Buildkite、Bitbucket、GitHub
ユーザベースではSREも募集中!
ペアプロもXPも全ての工夫は開発効率向上のために
──ペアプログラミングを積極的に実施していることも特徴だそうですね。
片山 はい。プログラミングはもとより、基本的に全ての業務をペアで作業しています。例えば、新しい技術を導入する際など、一般的にはメンバー各々が環境構築を終えてプログラミングできる段階になってからペアで作業しますよね。私たちは、環境構築の方法をGoogleで検索するところからペアで行います。
アプリケーションのデプロイや各種運用作業も、基本的にペアで実施します。さまざまなオペレーションの内容や意図といったナレッジがチーム全員に共有されるため、運用の属人性解消にもつながっています。
林 先ほど話に出た多種多様なプログラミング言語を習得する上でも役立ってますね。
──ペア作業はエンジニアが同じオフィスに出社していないと実施が難しいと思いますが、どういった工夫をしているのでしょうか。
片山 オフィスに出勤していた頃は、1つのマシンに2つのキーボードをつないで作業することが多かったですね。現在はコロナ禍の影響でリモートでの作業が前提になっているため、Visual Studio Live Share、Code With Me、AnyDeskなどのツールをうまく活用しつつ、作業を進めています。
ペアププログラミングをリモートで実施するツールの工夫
- Visual Studio Live Share
- IDE(統合開発環境)のVisual StudioやエディターのVisual Studio Codeでペアププログラミングや対話型教育を実現するためMicrosoftが提供する機能拡張。
- Code With Me
- IntelliJ IDEAなど、JetBrainsが提供するIDEでリモート共同開発およびペアプログラミングを実現させるプラグインサービス。
- AnyDesk
- ドイツのAnyDesk Software社が2014年にリリースしたリモートデスクトップアプリケーション。Windows、macOS、Linuxといったデスクトップ版のほかスマートフォンでも提供されている。
──ペアプログラミングを実施する際に心掛けていることはありますか?
板倉 やはり頻繁にコミュニケーションをとることですね。かとじゅん(@j5ik2o)さんによる「ペアプロの心得」にも「15秒の沈黙ですら長すぎ」るとありますが、私たちも常に会話し続けています。リモートになってからもその傾向は変わらず、常にペア同士で何かを話しながら作業しています。
──ペアプログラミングはXP(eXtreme Programming)のプラクティスの1つですが、アジャイル開発手法のなかでもXPを選ばれてた理由を教えてください。
林 XPは他の手法より、プログラマーに焦点を当てたプロセスだと考えています。私たちのエンジニア組織ではシェアドリーダーシップと言われる考え方に基づいて、エンジニアの自主性や成長を重んじた組織づくりを行っています。そういったエンジニア組織には、XPで掲げられた理念がよりマッチすると考えています。
ペアプログラミングもXPの導入も、目的はあくまで開発生産性を向上させることです。現在のユーザベースではXPのプラクティスが効果的に作用し、高い生産性を実現できていると考えています。
──実際に日々の開発でXP的な考え方を意識することはあるでしょうか?
片山 そうですね、例えば私たちはSaaSプロダクトを非常に細かい単位でリリースして、ユーザーからのフィードバックを素早く得ています。それを踏まえて機能をブラッシュアップさせ、事業改善につなげる。仕様を変更したり、ときには機能開発を止めるケースもあるほどです。
XPで認められる5つの価値にも「フィードバック」という項目がありますが、私たちのリリースプロセスがまさにこの概念を体現していると考えています。
ペアプログラミングはXPの5つの価値をエクストリームにする - Uzabase Tech(参考)
ユーザベースではデータサイエンティストも募集中!
シェアドリーダーシップを推進してエンジニアの成長を支援
──先ほど少し話に出た「シェアドリーダーシップ」について教えてください。組織運営の方針としては非常に特徴的ですね。
林 これは、XPなどのアジャイル開発でいう自己組織化(self organizing)されたチームという考え方を推し進めたもので、チームにマネージャーやリーダーといったポジションを配置しないという体制です。実は「シェアドリーダーシップ」という言葉があることは後で知ったことで、私たちはもともと「リーダーが存在しない」という意識で動いていました。
現在ではもっと主体性が感じられるように「全員がリーダー」という言い方をしています。 メンバー全員が「自分自身がリーダーである」という意識を持ち、1人ひとりが自ら思考して行動することで、リーダーやマネージャーなどの役割を設けなくても組織をスケールさせることができています。
──とはいえ実際にはマネージャーの指示を仰ぎたくこともあるのではないかと思いますが、チームのメンバーとして片山さんや板倉さんはどのように感じていますか?
片山 シェアドリーダーシップの方針は、日々の業務における意思決定のフローにかなり影響しています。例えば先ほどの技術選定の話でも、一般的なIT企業ではテックリード的な人が選定することが多いと思いますが、私たちはその機能を開発するチームの全員が平等に意見を出して、採用技術を決めていきます。
板倉 私たちは技術のことだけでなく、組織運営に関しても全員で意見を出し合い、採用やチーム予算の議論にもみんなが参加します。最適なチーム運営の方法をメンバー全員で考えることは、エンジニアのスキル向上にも結びつくように思います。
世界一、エンジニアが働きやすいチームをつくる――リーダーを置かないSPEEDAプロダクトチームのユニークな文化 | UB Journal(参考)
──そういった開発組織にいることで、エンジニアとしてどういった成長があったか、あるいは何が実現できたと考えますか?
板倉 自分らしく働けるようになりました。オープンコミュニケーションの文化が根付いているので、自分の意見や考えを受け入れてもらえる土壌があります。
ミーティングで複数の意見が出て議論が平行線になった場合など、一般的にはどちらかが諦めて折れてしまうケースもありますが、ユーザベースではそういったことはありません。お互いの意見を尊重しつつ、全員が納得するまで議論を行います。そういう文化ですし、だからこそエンジニアが自ら考えて行動する習慣が育まれるのだと考えています。
──片山さんはいかがでしょうか?
片山 2つあります。1つは、好きな技術に気付けたこと。実は、私はユーザベースに入社するまで、プログラミングの好きな部分を明確にできずにいました。しかし、入社してElixirやClojure、Scalaといった多種多様な言語に触れたことをきっかけに、自分はデータの集合体(コレクション)を操作することが好きだと分かったのです。
もう1つは、同僚からのフィードバックを通じて自分自身の成長につながる体験ができたこと。ユーザベースには360度フィードバックという制度があり、一緒に働いているチームメンバーから忌憚のない意見を得ることができます。改善すべき点を具体的にアドバイスしてくれるため、自分だけではたどり着けなかった気付きが得られました。
──お2人のお話を受けて、林さんはどう思われましたか?
林 チーム内でのオープンコミュニケーションやフィードバックはすごく大切にしている文化ですから、2人がそうした点に魅力を感じてくれたのはうれしいですね。
片山が言ってくれた技術的な多様性も、やはり私たちが大切にしている点です。私自身、過去にさまざまな言語やライブラリに触れたことが成長に結びついたと考えています。今後もエンジニアが成長しやすい環境を維持し、さらに発展させていきたいですね。
──さらなる成長が楽しみです。最後に、この記事を読んでユーザベースでの開発に興味を持った方にメッセージをお願いします。
片山 私は、ペアプログラミングに強い魅力を感じながら、日々の業務に取り組んでいます。同じようにペアプログラミングが好きな方や、技術力をさらに高めていきたい方、メンバーと切磋琢磨しあって働きたい方には非常にマッチする環境です。そうしたエンジニア組織に興味を持っている方は、ぜひ私たちと一緒に働いてほしいです。
板倉 向いているのは、新しいことに積極的に挑戦できる方や、未知の分野に取り組むことを楽しめる方でしょうか。設計やプログラミングだけではなく多種多様な業務に携われるのがユーザベースのエンジニアの特徴ですから、どんな仕事にも前向きに取り組めるエンジニアと一緒に働きたいですね。
林 コミュニケーションが好きな人もきっとマッチします。さまざまな人とコミュニケーションを深めながら業務を推進することに興味を持てる方は、私たちの開発チームで活躍できると思います。来てくれるとうれしいですね。
──素晴らしい出会いがあるといいですね。本日はありがとうございました。
ユーザベースではアジャイル開発に興味のあるエンジニアを広く募集中
- ▶B2B SaaS - SRE(Site Reliability Engineer)の募集要項を見る
- ▶B2B SaaS - ソフトウェアエンジニア(サーバー/フロント)の募集要項を見る
- ▶B2B SaaS - テストエンジニア
- ▶B2B SaaS - データサイエンティスト(ML/NLP)の募集要項を見る
ペアプロとシェアドリーダーシップがあなたを待っている!
※取材は感染症予防に配慮して実施し、マスクは撮影時にのみ外しています。
🎁 Amazonギフト券500円分が当たるプレゼントのお知らせ!
※プレゼント企画は終了しました。ご協力、ありがとうございました。
この記事で語られているユーザベースの開発文化や働き方について、みなさんはどのように感じたでしょうか? ぜひ次のアンケート「ユーザベースで働くこと」にご回答ください。
アンケートに協力いただいた方の中から抽選で40名様に、Amazonギフト券500円分をプレゼントします。応募期間は2021年6月16日(水)まで。その他詳細は下記の応募要項をお読みください。
期間 | 2021年5月26日(水)から2021年6月16日(水)まで |
---|---|
賞品 | Amazonギフト券500円分 ×40名様 |
応募方法 | 上記のアンケートにご回答ください ※ はてなのアカウントをお持ちでなくても応募できます。 |
当選 |
|
注意事項 |
|
[SponsoredContent] 企画・制作:はてな
取材・構成:中薗 昴
撮影:小野奈那子
関連記事 - NewsPicksの開発者体験について
はてなニュースでは、ユーザベースがB2B SaaS事業と並んで注力する「NewsPicks」開発チームへのインタビューも掲載しています。あわせてお読みください。