開発担当取締役が語る、Scalebaseの技術選定と技術組織
こんにちは。アルプnote編集部です。
本日は、エンジニア組織を統括している取締役・竹尾に技術選定の背景や、エンジニア組織についてお話を聞きました。
ーーー自己紹介をお願いします
アルプの共同創業者で開発を担当している竹尾と申します。
ーーー簡単に経歴を教えてください
創業以前は新卒でサイバーエージェントに入社し、アドテクノロジーの事業部に所属していました。DSPと呼ばれる領域のプロダクトで配信サーバーや広告入札ロジックの実装を担当していました。ゲーム事業者向けのリターゲティングプロダクトでは、クライアントの中に米国企業あったこともあり一時期は米国で開発をしたり、クライアントの方とお話したりしていました。
アルプの創業エピソードについては、同じく共同創業者の山下とのインタビュー記事がありますのでそちらもご参照いただければと思います。
ーーー2021年7月現在の開発体制を教えて下さい
アルプ全社員では25名、その中でエンジニアは15名です。エンジニアに関してはパートナー(業務委託、副業)の方を含めると30名近くいて、現時点では1チームで動いています。プロダクトとしては、Scalebaseの本体、Connectと呼ばれるSalesforceのアプリケーション開発をしています。
ーーー具体的にScalebaseはどのようなフローで開発されていますか?
開発工程ではPRD(プロダクト要求仕様書 / Product Requirements Document)を使って、開発する機能の仕様策定・要件定義をしています。
PRDには開発する機能の詳細、お客様からの要望、その機能を市場がどう必要としているかなどが書かれています。ビジネスメンバーがお客様からの要望を加味した上でPRDに落とし込み、PRDを元にプロダクトメンバーとすり合わせています。
弊社ではドメインモデリングの工程があり、PRDからその機能をどのように設計・モデリングするべきか検討します。概念図やクラス図を書き、PRDにある機能の詳細を固めていき、ユースケースを作成します。作成したユースケースを元に実装を開始して、実装後にQA環境に投入し、問題なければ本番へのリリースとなります。
ーーーScalebaseではScalaを使っていますが、採用の経緯を教えてもらえますか?
事業の特性から非常に堅牢性が求められるというところで静的型付け言語が良いだろうと思いました。当時は Go、Java、Scala が候補にあがりました。絶対この言語にすべきというのがなかったのもあって、自分が一番得意としていたScalaを選びました。結局最後に自分が責任持てるというのと、Scalaだったら困ったときに頼れる仲間が多く居たというのが決め手になりました。
Scalaを選んだからにはScalaコミュニティにはコミットしたいと考えています。その想いもあって創業初期からScalaMatsuriのスポンサーをしていますし、イベントのたびに登壇しています。今後は、Scalaコミュニティ以外にもプロダクトで関わるフロントエンドのコミュニティ、Salesforceのコミュニティにはコミットしていきたいと考えています。
ーーーDDDを採用した経緯も教えていただけますか?
DDDを始めたキッカケですが、これは僕からではなく今エンジニアリングマネージャーをやっている丹賀が提案したものです。丹賀は元々ピクシブで決済基盤をやっていて、僕らのScalebaseで解決したい領域と近いこともあってアルプの創業初期にアドバイザーに入ってもらいました。そのときにScalebaseくらい複雑度が高いプロダクトであればDDDやっていくのが良いのではというアドバイスをもらいました。当時、僕自身はDDDをやったことはなかったし本で見たくらいでしたが、丹賀の話を聞いていく中で議論の過程や設計の仕方としてプロダクトにすごく向いているなと思いDDDを採用しました。
あのときDDDを採用していなかったとしたら今のフェーズで「DDD良さそうだよね」となっていたと思います(笑)。結果としてDDDを創業初期から取り入れたことはかなり良かったです。DDDを途中から導入するのはかなり難易度が高いです。例えばユビキタス言語は途中から入れるのは非常に難しいです。お客様、ビジネスメンバー、プロダクトメンバーでそれぞれ違った言い方をしている中で途中から統一するのはほぼ不可能に近いですし、実際別の会社の方から、そういった課題を聞くことも多いです。ユビキタス言語は創業初期からメンテナンスしていて、抜け漏れがある場合はビジネスメンバー、プロダクトメンバーで随時アップデートしています。お客様に関しては、長きにわたるオンボーディングの中でユビキタス言語で対話する、マニュアルにもユビキタス言語を使うことで同じ言語で話すことができています。
ーーーエンジニアとして、アルプならではの面白さについて教えてください
複雑性の高いプロダクトにおいて、スピードと継続的価値提供をどうやって両立させるかというのが難しさでもあり、面白さでもあると思います。
今までサブスクリプションビジネスを管理するというビジネスモデルがほとんどなかった中で、自分たちで設計・定義していくことの難しさがあります。ドメインとしても複雑な領域、かつお客様のビジネスの中でもクリティカルな領域であるため堅牢性を維持しつつスピード感をもって開発することが常に課題になっています。
今後プロダクトと組織が進化するほど、開発スピード・堅牢性を維持しながら継続的に価値を提供することが困難になっていくでしょう。このような困難な状況の中で、スピードと継続的価値提供を両立させるために設計は重要だと思っていますし、難しい問題に取り組むのが好きな人には良い環境だと思います。メンバーも自分たちが難しい領域に挑んでいると思っているし、複雑さに富んでいるがゆえに強い仲間が集まっています。
ーーー設計のスキルは必須ですか?
ドメイン設計やソフトウェア設計の経験があることは強みになりますが、なくても、経験豊富なメンバーが揃っているので教えていける土壌は整っていると思います。設計に興味ある人や、BtoBが好きという方も大歓迎です。
ーーー現時点での技術的な課題を教えてください
一つはバックエンドアーキテクチャの設計です。今はエンジニアの社員は15人ですが更なる拡大を目指しています。30人、50人と組織が大きくなってくるとソフトウェアの設計も変える必要が出てきます。その中で現在、ドメイン境界を意識することを主目的としたモジュラモノリスを試し始めていています。世の中であまり実例がないと思っていて、それが組織がスケールしていった時にフィットするのか、またさらに進化するとどうなっていくべきなのか、というところを考えていきたいと思っています。
もう一つは複雑なプロダクトに対して質の高いUXを担保することです。これまで、プロダクト初期からお客様のサブスクリプション管理のオペレーションが一気通貫で行えるように機能を追加してきましたが、徐々に機能の複雑性が増し、使いづらい部分も出てきました。単にできることを増やすだけでなく、お客様の視点、お客様の行いたいタスクに沿った UI/UX の設計と実装を強化していきたいと考えています。
ーーーエンジニア目線で今後どのような組織にしていきたいですか?
組織が急拡大していってもメンバーが今以上に自律的に動ける組織にしたいと思っています。そのために必要なことはメンバーが迷わずに意思決定ができる土壌で、例えば、ミッション・バリューのブラッシュアップ、創業者(経営陣)がプロダクトの未来をどう描いているか、どの方向に進んでいるのかということの言語化、発信が大事だと考えています。
プロダクトが解決する課題や未来に対する共感は強い一方で、エンジニアの中にはサブスクリプションの契約や請求管理業務におけるペインを直接感じた経験がない人もいます。プロダクト開発において業務オペレーションのリアリティを持つことはとても大事です。 エンジニアが一次情報であるお客様と直接お話する機会を増やしたり、ビジネスメンバーからもらえる二次情報の解像度を上げていきたいです。なるべく多くの情報を受ける、受けにいける機会を作っていきたいと考えています。
ーーー竹尾さんはどういう方と一緒に働きたいですか?
ミッションの「企業が創造的な価値提供に、よりフォーカスできる社会を実現する。」に共感してくれることが第一です。働き方だとバリューの「顧客に、プロダクトに、チームに、自分に、真摯であること」に共感いただけることです。
また、できないこと、やったことないことに対して臆せずチャレンジできる人と働きたいなと思っています。
バックエンドでいえばもちろんScalaの経験が豊富であることに越したことはないですし、フロントでいえばReact/TypeScriptの経験があることが強みになるということに変わりはないですが、僕はそこはあまり重要でないと思っています。アルプの現フェーズにおける1人が担う業務範囲において、特定の言語でプログラムが書けるということはほんの一部でしかありません。要件定義やQAといった開発フローにおける別業務もそうですが、それ以外に採用含め全員でやるべき業務がたくさんあります。その中には今までやったことないこともたくさんあると思います。そういったやったことないこと、会社を前に進めるために必要なことに臆せずチャレンジできる人と、一緒に働きたいと思っています。
ーーー終わりに
アルプではエンジニアを積極的に募集しています。今回の記事を見てご興味を持ちましたら、是非以下の採用ページからご応募お待ちしております!
この記事が気に入ったらサポートをしてみませんか?