「当社のデータ=業界のスタンダードとなるところまで目指したい」と話すのはCTOの新谷です。2018年のリリースから5年経った今でも成長し続けるプロダクト「スマサテ」。開発チームではどのような想いで開発しているのか、そしてCTOとして今後どのような開発組織を目指しているのかを聞きました。
新谷 英幸
スマサテ株式会社 取締役CTO。
新卒で入社した企業で3年間プログラマとして勤めた後、社内で新たに立ち上がったセキュリティ部門に異動し、セキュリティ全般とインフラ全般を担当。
その後Web広告配信系企業で、エンジニアとして複数の新規サービスの立ち上げからグロースを経験した。大学との共同事業開発など特徴的な取り組みに興味を持ち、2017年ターミナル社(現スマサテ社)に参画。AI賃料システム「スマサテ」の立ち上げから関わり、会社並びに開発チームを牽引している。
技術だけでは実現できない「“顧客の声を直に聞く”開発チームが目指すもの」
―開発チームでは、どのような想いで開発を進めているか教えてください。
基本コンセプトは「顧客により良いものを、素早く届ける」です。
これは社内のメンバ全員に言えることですが、プロダクトをより良いものにしようという意識が非常に強いです。具体的には、ある機能が形になった段階で、開発部門だけでなく、営業やプロダクトマネージャなど全員が機能チェックに参加します。そして、それぞれの視点で「もっとこうした方が良いのではないか」「ここはおかしい」といった意見をぶつけ合う。全員がプロダクトを良いものにしようと同じ方向を向いているんです。これはスマサテの特徴の一つだと思います。
そのなかで特に開発チームが目指すのは「顧客が必要としている機能を的確に、なおかつ使いやすく実装する」ということ。そのために、顧客のニーズに関する情報共有を密にしています。営業から細かなフィードバックをもらうだけでは足りない。開発メンバが直接顧客の声を聞く機会を作って、それを機能改善に反映させているんです。
また、現在エンジニアは私も含めて4名いますが、各メンバがプロジェクト単位にオーナー性を持ち、責任感を持ってやり切るというカルチャーがあります。全員がフルスタックエンジニアというわけではないためすべての領域を一人で完結できるわけではありませんが、補完し合いながら開発を進めています。各々がDevOpsを意識しており、開発から運用、リリース、また戻って設計といったように、アジャイルに開発しています。
―どのようにして「顧客により良いものを素早く届ける」を実現しているのでしょうか?
例えば、アプリケーションのリリース時にはバッチサイズをできるだけ小さくすることにしています。そのぶん、顧客に届ける頻度を上げる。ユーザと直接関わることが多いアプリケーションを小さく速くリリースすることで、何か不具合があってもすぐに改修できる点がメリットですね。
実は、以前はある程度の機能をまとめてリリースしていたのですが、機能が大きくなると開発やレビューに時間がかかります。またメンバ一人ひとりの抱えるサイズが大きくなるので疲弊してしまうことが課題でした。さらに実装してみたけど「ここが違う」という意見が出てくることが多々あったので、このようなリリース方法に切り替えました。
―時間も手間もかかるように思えますが、無駄に遠回りしないことで結果的に“必要とされる良質な機能”を“最短”で届けられるんですね。では、開発チームの体制についてはいかがでしょうか。
現在、開発部門は大きくデータチームとアプリケーションチームの2つに分かれています。
まずデータチームですが、これは私と社員のエンジニア1名、協力会社2名の合計4名で構成されています。スマサテは賃料査定を実現するために大量のデータを扱っています。そのデータをアプリケーション側で的確に扱えるよう整形するのがデータチームの役割です。
また、ここ数ヶ月は賃料だけでなく売買価格の査定にもチャレンジしています。売買査定は賃料査定とデータ特性が異なるため、どのような形でユーザーに見せるのが最適か試行錯誤しているところです。
もう一方のアプリケーションチームは、テックリードと若手エンジニアの2名が社員で、そこにパートナーを含めた6名体制です。プロダクトマネージャから上がってきた企画や仕様を元に機能を設計し、開発を進めています。その他、査定のモデル開発のためにデータサイエンティストの方にも協力していただいています。
ただデータチーム・アプリケーションチームは完全に独立して活動するというわけではありません。例えば査定モデルなど、両チームの連携が必要となる場合は、プロダクトマネージャを交えてどのように組み込むかを共に検討します。
―開発メンバー間の情報共有も重要になりますね。
そうですね。ツールとしては特別なものを使っているわけではなく、Slackを使って情報共有をしています。ただ、当社にはフルリモートのエンジニアや外部のパートナーさんもいるので、問題発生時には「すぐに音声だけでもつなぐ」「画面共有をする」といったことを意識しています。
また開発ドキュメントは、情報共有ツールのesaを使って技術情報を社内向けに公開しています。そうすることで、後からキーワード検索して見つけられるように整備していますね。
急成長を遂げた今でも続く試行錯誤「“追求”と“改善”が生み出す高品質を顧客へ届ける」
―プロダクトをよりよくするためにどんな取り組みをしているのでしょうか?
品質と生産性の向上については常に考えていますね。
特に品質に関しては、複数レイヤーで改善を進めています。まず、インフラレイヤーに関しては私自身が知見を持っているので、障害発生をすぐに検知できるようアラートの設定をしています。
次にアプリケーションレイヤーについては、コードレビューをどこまでやるかが今後の課題となっています。コードレビューとテストの棲み分け、つまりレビューとテストのそれぞれが何をどこまでやるのかを試行錯誤している段階です。
最初にお話しした通り、できあがったプロダクトを全員でチェックする文化ができているので、そこで細かな不具合はチェックできています。もちろんまだまだできることはありますし、品質に関しては追求してもしきれるものではないので、引き続き改善を続けていきたいと思います。
また今後、新たな事業が立ち上がったり、エンジニアが増えて開発部門が大きくなったりしたら、品質を高めるためのレビュー専門部隊を置くことも検討しています。
―生産性についてはいかがでしょうか。
生産性に関しては、いかに効率よくコードを書ける環境にするかを考慮しています。よく使われるのは共通して使えるパーツを用意するといった手法ですよね。私たちが今検証しているのはChatGPTのようなAIツールを使って瞬時にコードの雛形を生成し、それを元に人が正しいコードに書き替える方法です。
当社では会社負担で、社員全員がChatGPTの有料版を使えるようにしているんです。各メンバーが使い方を熟知し、AIツールを使って生産性が上がるのであればこれを積極的に活用していきたいと思います。
また、作業効率を向上させるため、テストを自動化することを考えています。直近では、時間がかかっていたE2Eテストに対し、テスト自動化プラットフォームのAutifyを導入しました。
当社ではリリースの頻度を高くしているので、例えばAPIを増やして外部データを接続すると、その度に人の手をかけてテストすることが必要です。しかし、こういった自動化ツールを導入し自社用にカスタマイズすることで、人間に頼らなくても最低限のところは担保できるような仕組みを模索しています。
スマサテはサービスの特性上、顧客にお届けするデータが週次で変わりますが、急激にデータに変化があった場合、問題が発生している可能性も考慮しなければなりません。結果自体が大きく変わってしまう可能性があるため、原因究明は必須です。常にデータをチェックし、瞬時に異常を検知できる仕組みを作っていきたいと考えています。
「修羅場こそ成長のチャンス」エンジニアの挑戦と底力で 業界のスタンダードへ
―今後、どのような開発組織を目指したいとお考えですか?
キーワードとして考えているのが「自律稼働」です。自分の担当しているプロジェクトを責任を持って遂行するのはもちろんのこと、サービス全体を俯瞰して、自ら担当外の領域にも能動的に柔軟に対応していけるような組織を目指しています。
当然、その中では壁に突き当たることもあるかもしれませんが、そのときにどんな選択肢があるかを自主的に考えられるメンバーを増やしていきたいです。
―どんなエンジニアと働きたいか教えてください
今後、スマサテのデータ=不動産業界のスタンダードというところまで持っていきたいと考えています。不動産テックはまだ新しい業界なので、そのうち統一されたデータ規格が出てくるかもしれません。でもその規格よりもスマサテのデータの方が良いと思ってもらえる、そこまで振り切ってやっていきたいと思っているので、そういった思想や興味を持っていただける方だとマッチすると思います。
また、何度か修羅場を乗り越えてきたような方は魅力的です。壁に突き当たったときに乗り越える努力ができる方だと思うんですよね。実際に現在のメンバーも何らかの修羅場をくぐり抜けてきています。
特にエンジニアにとっては緊急トラブルの対応は一つの修羅場です。ただし同時にトラブル発生時は知識の吸収力が一番高まるチャンスでもあります。その経験を避けずに通ってきた人は底力がある。トラブルに率先して対応するのはもちろんですが、トラブルを自分の成長の糧として楽しめる人と働きたいと思っています。
とはいえ、決して壁に対して一人でぶつかっていけということではありません。チーム単位で乗り越えるという経験でも十分です。
相互に信頼し、何かあっても背中を預け合える、そんな開発組織に共感いただける方からのご応募お待ちしております。