WealthParkのエンジニア組織、技術スタック紹介

fallback
フジイ タカヒロ
21/Aug · 20 min read
fallback

はじめに

今回は、WealthParkのVPoEとして、WealthParkの開発組織について、紹介します。今後、弊社のブログなどを始めた際は、そちらに記事を移管する可能性があります。
WealthParkは、そこまで歴史が浅いサービスではありませんが、今まで外部に向けて、特にエンジニアリングに関連する情報の発信はあまりしてきませんでした。(Googleなどで検索しても、全く情報が出てこないと思います😅)
そんな中、エンジニアの方々や、WealthParkに興味を持たれている方々に対し、WealthParkのエンジニアがどのような組織で、どのようなことを考え、日々プロダクトの開発・改善を行っているのか発信したいと考えています。
WealthParkの エンジニア / プロダクト / デザイン組織は、国際色豊かな組織です。エンジニア組織は、非常に国際色かで、10ヵ国以上の国から、約20名ほどの人数で構成されています。その為、通常の業務はほぼ英語で行われています。(正直、僕が一番英語苦手なんじゃないかと思います笑)
そういった環境もあり、別途英語版のブログも展開する予定です(今回は僕の個人ブログで日英併記ですが)。弊社のエンジニア組織は、日本人は僕を含めて2人しかおらず、他は全員海外出身のエンジニアです。その為、今後、このような記事は段々と英語のものが増えていくんだろうなと思っています。ただ、先にあるように、エンジニアに向けた発信だけではなく、WealthParkに興味を持ってくださっている方々などに対して発信したいという動機もあり、日本語としても記事を書かせて頂いています。
· · ·

事業内容

WealthParkは、個人投資家・不動産管理会社に資産運用・管理プラットフォームアプリケーションを提供するスタートアップITベンチャーです。現在はまず、オルタナティブアセットのなかのひとつである不動産業界で非流動資産の「見える化」に挑戦しています。
· · ·
エンジニアポジションも採用中です。
· · ·

多様性 / 国際色豊かな組織

WealthParkのエンジニア組織は、非常に国際色豊かです。(プロダクト組織もです。)様々なバックグラウンドを持った人々が集まっています。この点は、僕の前職の楽天とも似ている点です。
ただ、WealthParkのエンジニア組織はもともと日本人0の状態で始まり、比較的長い間その状態を維持してきました。ですので、多様性があり、国際色豊かな組織であるということがより自然に、また当たり前のこととして、会社内に浸透しています。
先ほども共有しましたが、日々のコミュニケーションは英語で行われています。
弊社の多様性に関しては、弊社モバイルチームのHead of Mobile(ChapterLead)のShoumeiが下記の記事で面白いエピソードと共に語っています。

でも、仲の良い和気あいあいとした雰囲気だけではなく、良いプロダクトを作ろう、ゴールを達成しようという真剣さもうまく共存していて、働いていてすごく楽しいチームなんです。メンバー全員が仕事において「面白さ」と「シリアスさ」の両立が出来ていて。これに関してはチームの多様性もポイントで、同じ価値観や考えを持つメンバーしかいないユニカルチャーのチームだと一方に偏りがちになってしまうところが、例えば今の様な構成のチームだと、おのずとバランスが良くなるなと感じています。

WealthParkのエンジニア組織は、非常にコミュニケーションを大切にしています。自分の非常に好きな習慣としては、大体午後3時頃になると、"コーヒー行く?"にというメッセージがSlackのエンジニアチャネルに流れます。みんなで近くのファミリーマートまで散歩し、コーヒーを買って話しながら帰ります。全員が絶対行くというわけでもなく、行きたい人、行ける人はという感じです。
Coffee Coffee
個人的には入社直後、この習慣によて、エンジニア全員と話をする機会が自然と出来て、オンボーディング的な観点でも非常に助かりました。(現在は基本的にリモートワークで業務にあたっている為、出来ていません。たまにコーヒーを飲みながらビデオチャットをしたりしています。) また気軽に会社にいける状況になって待ち遠しいことを挙げろと言われれば、僕はコーヒータイムを挙げます笑
また業務においてもコミュニケーションやディスカッションを大切にしています。皆で常にオープンに議論やフィードバックできるカルチャーがあり、大切にしていきたいと考えています。
· · ·

多様性 / 国際色豊かな組織

組織体系を紹介します。開発、プロダクト組織はいわゆるマトリクス型となっています。
· · ·

Product / Design / Engineering

弊社では、COO, CPOである間瀬の直下に、プロダクト、デザイン、エンジニアリングの組織が展開されています。エンジニア組織は現在5つのチームに分かれています(FrontEnd, BackEnd, Mobile, QA, DevOps)。それぞれのチームにはChapter Lead(Head of X)と呼ばれるリードポジションのメンバー(詳細は後述)と、メンバーがいます。事業のメンバーとも密にコミュニケーション、議論をしながら、Product, Design, Engineeringの三つ巴で日々プロダクト開発、改善に取り組んでいます。
大まかな組織図 大まかな組織図
· · ·

水平型

先ほどWealthParkの組織はマトリクス側と述べましたが、組織図上は水平なものになっています。つまりFrontEnd, BackEndなどの専門性に応じたチーム分けをしています。
少し矛盾しますが、一方で1個人として、FullStackな働き方も歓迎しています。メンバーによっては、チームを跨いで、プロダクト開発に貢献しているメンバーもいます。一方で専門性を突き詰めるメンバーもいます。本人のキャリア思考にも寄り添い、柔軟に考えています。例えば、QAのChapterLeadであるSwarnaは、ScrumMasterとして開発プロセスの改善にも取り組んでいます。
各チームには、Chapter Leadがいて、メンバーの日々の開発のサポートや、各技術レイヤー毎のガイドラインの検討や、目標設定などを行います。一方で、Chapter Leadは1エンジニアとして、何かのプロジェクトやSquad(後述)に所属しており、他のメンバーと同じように(時間の使い方は異なりますが)、開発作業も行っています。WealthParkでは、Chapter Leadに対する期待値を次のように定義しています。
WealthParkが考えるChapter Leadへの期待値 WealthParkが考えるChapter Leadへの期待値
· · ·

垂直型

一方で組織図には表されていませんが、日々の業務は、Squadというプロダクトベースのチームで一緒に働くことが多いです。Squadについては、本日はそこまで詳しくは触れません。別の記事でSquadについては説明しています。
例えば、管理会社様に向けて提供しているWealthPark Businessというプロダクトがあります。そのプロダクトで1つのSquadがあり、そこには義業側のメンバー、Product Manager, FrontEnd/BackEnd/Mobile/QA/DevOps Engineerが所属しています。いわゆる垂直型の組織です。そのプロダクトが掲げる目標を達成する為に、日々Squad毎に一丸となって業務に取り組みます。
但し、コードレビューや、課題の解決は、Chapter間で行ったりもします。
· · ·
WealthParkでは、水平型(Chapter)と垂直型(Squad)が共に存在する、マトリクス型の組織体系を採用しています。これにより、各人が専門性と高めつつも、他の部署の人とも一切の壁が無い状態を目指しています。
Matrix Organization Matrix Organization
· · ·

WealthParkの開発手法

Discovey

いわゆる、プロジェクト初期のDiscoveryフェーズでは、様々な取組を行っています。WealthParkでは、ビジネスと開発の距離が近いので、ビジネスの課題やIssueをエンジニアのmtgに同席してシェアして頂いたり、一緒にDesign SprintやPlanningに取り組んだりします。
プロジェクトキックオフ時は、プロダクトマネージャーを中心として、現状のIssueや、ビジネスとして期待したいことの共有や、それをどのように解決するか、プロジェクトをどのように進めていくか議論しています。
Design Sprintも、最近のリモート環境に合わせて、Miro上で行うことが増えました。Miro上でスケッチや、コメントを書き込んだりすると、後でグルーピングができたり、コメントを再確認できるのでおすすめです。Design Sprintはアイデアを出し合うことも重要ですが、このフローを取り入れることにより、より早いフェーズからエンジニアがプロダクト開発に携わることができるようになり、より1人1人のオーナーシップをEngageすることができていて、特にこの点が素晴らしいと感じています。一方で、元来のDesign Sprintが定義する5日間ほどの期間はとることがなかなか難しいということもあり、弊社にとってより良いスタイルを模索しています。
· · ·

Development

WealthParkでは、基本的にAgileで開発を進めています。Squadや、Product、Projecによって、カスタマイズされている部分がありますが、大まかには、
Maintenance Work - Kanbanを利用した継続的なフロー
Squad - Scrumで2週間Sprintで開発
となります。実は、比較的スプリント開発を全社的に明確に始めたのは最近です。または、スプリント開発をしていても、プランニングやデモ、振り返りに時間を使えていないといった課題がありました。現在はそういった点を見直しながら、改めてSprintに挑戦しています。
Kanban vs Scrum Kanban vs Scrum
· · ·

WealthParkの技術スタック

  • Code : github, gitlab
  • FrontEnd : JavaScript(React, TypeScript), PHP
  • BackEnd : golang, Node, Python, Ruby, PHP
  • Mobile: Swift, Java, React Native
  • CI/CD : Jenkins, GitLab CI
  • Infrastructure: AWS, GCP, k8s
  • Other: AWS Lambda, Cloud Function, GraphQL, gRPC etc..
弊社に入社してから自分も驚いたのですが、細かい所も含めると、非常に様々な技術が混在しています。WealthPark自体はそこまで歴史が浅いプロダクトではなく、最も古いものだと5年以上前に作られたプロダクトも存在しています。
Webに関しては、レガシーなプロダクトがPHPなMonolithなアプリとして存在していて、FrontEndに関しては新しいものに関しては基本的にReactで開発を行っています。BackEndに関しては、プロダクトに応じて現在は議論している段階です。比較的新しいものは、Goであったり、BFFとしてのNode(GraphQL)のものなどがあります。Mobileは、基本はSwiftとJavaでiOSとAndroidを開発していますが、一部ReactNativeも利用しています。
今後の方向性としては、FrontEndは、今後はReactに統一していきます。既存のプロダクトに関しても、置き換えていく予定です。BackEndは、今後の議論によっては、ある程度方向性をもたせていくことになります。ある程度Goに寄せていくことになると考えています。また、用途によって、FaaSを使うこともあります。現状、そもそもAPIとしても足りていない機能が多々あるので、API群の拡充も図っている最中です。Mobileは、継続して負債を返却しつつ、モダンな技術の採用を検討しています。
アーキテクチャ変更や、技術的負債に対する想いは採用ページの募集要項に少しですが書かせて頂いています。興味がある方は、こちらもご覧下さい。
· · ·

まとめ

はじめて、明確に会社の組織の紹介ということで、やや網羅的な文章となりました。より深掘りして聞きたい部分などありましたら、気軽にご質問ください。
また、もしも弊社のエンジニア組織に興味がある方がいらっしゃいましたら、カジュアル面談なども可能ですので、お声がけ頂けますと幸いです。
日々、いろんな点で改善を重ねています。次に組織や技術スタックを紹介する時は、めちゃくちゃよくなってるなーって思われるような記事があげられるように頑張ります!
· · ·