2023年の Luup 技術組織の現在地
※この記事は、Luup Advent Calendar 2023 の25日目(最終日)の記事です。
こんにちは、株式会社Luup CTO の岡田(@7omich)です。
2年目もお陰様で完走へ向かっている Advent Calendar ですが、私は今年も最終日の記事を担当することになりました。
今年はさらに多彩なメンバーによって、様々な領域での発信が24記事も揃っています。
事業づくりに全力を注ぎながらもこれだけの発信量を外に出せるメンバーが引き続き集まってくれていることに感謝しつつ、発信されている内容を振り返っていくと、
- (12/3公開) pmconf2023登壇 | 事業のターニングポイントに向けて、開発ロードマップの"策定"と"達成"のためにPMがやったこと
- (12/15公開) アプリの地図上へたくさんのピンを描画する技術
- (12/22公開) インシデントマネジメントのこれまでとこれから
等々、7月の改正道路交通法施行を受けて、急速に拡大しているプロダクトをどのように安定的に維持・運営していくかと繋がる内容が増えてきたなと感じています。
実際のところ、事業規模のわかりやすい目安の数字の1つであるポートの数についても、昨年こちらの記事に記載したところから、
- 2022年12月時点で 2,400 箇所程度
- 2023年12月現在、5,500 箇所程度
と、常にハイペースに拡大を続けています。
お陰様で、LUUP の展開エリア内では街中で見かける頻度も非常に上がり、勉強会やミートアップで外部の方と話す際にも知っていただいている頻度もとても上がりました。
しかし、その一方、それを運営している株式会社Luupの中では一体どんな技術構成でどんな組織体制が取られているのか、といったことについてはまだまだ知らない人が多いかと思います。
今年は iOSDC Japan 2023, SRE NEXT 2023, Google Cloud Next Tokyo '23 などといった大型のカンファレンスでの技術発信・スポンサーとしての露出を少しずつ増やしていますが、それでもサービスそのものの知名度に対して、技術組織の状況やチャレンジの面白さについてはまだまだ認知度が低いと感じています。
ですので、中から見た具体的な Luup の技術組織についてより多くの人に知ってもらえるよう、激動だったこの2023年の終わりに、改めて現在の最新状況をまとめてみようと思います。
LUUP の開発対象ソフトウェア
LUUP のサービスにおいて、我々が開発しているソフトウェアはざっくりと分けると3つあります。
- 『LUUP』本体のユーザー向けアプリ (platform: iOS, Android)
- 社内向けの管理用アプリ (platform: Web, iOS, Android)
- 車載 IoT 制御関連システム
これらのクライアント・フロントエンド開発に加え、バックエンド、インフラ、データ基盤、さらにはQAやSREといった領域までを所管しているのが私たちの所属している Software Development 部です。
※ 管理用アプリのモバイル版については、昨年時点では Android ネイティブアプリとして開発していたものから、今年2月より Flutter を採用したクロスプラットフォームのアプリに置き換えました。
主にオペレーション担当チームによく使われているこのアプリについては、こちらの記事でも説明しているので是非ご覧ください!
また、Luup ではシェアリングサービスにおける車両のハードウェア開発・車載IoTデバイスに乗っているファームウェアの組み込み開発を現在は内製でなく ODM の形態で提携メーカーに委託しています。
後述する IoT チームでは、各車両ごとの通信プロトコルに沿った、車両制御のためのコマンド送信やデータのやり取りをするバックエンドサーバーの開発をしています。
技術構成
2023年9月時点での LUUP 全体の技術構成図
全体として Firebase をフルに活用した構成と、そこを中心に GCP ベースで広く構築されているインフラやデータ基盤の状況は変わらず、IoT 周りは一部 AWS や SORACOM のマネージドサービスを取り入れたアーキテクチャになっています。
前述の通り社内向け管理用モバイルアプリには Flutter を採用しつつ、ユーザー向けアプリはネイティブでの開発を維持しています。
また、バックエンド開発に Node.js+TypeScript, フロントエンド開発には Nuxt.js+TypeScript を採用しており、TypeScript で一気通貫した Web 開発ができるようになっています。
- Mobile App: Swift, Kotlin, Flutter
- Backend: Node.js, TypeScript, Cloud Functions, GCE, Pub/Sub
- Frontend: Vue.js, Nuxt.js, TypeScript
- Infra: Google Cloud Platform, Amazon Web Services, SORACOM(Air, Beam), Terraform
- Firebase(mBaaS):
- Build: Authentication, App Check, Firestore, Storage, Hosting
- Release & Monitor: Crashlytics, Performance, App Distribution, Remote Config
- Engage: Analytics, A/B Testing, Cloud Messaging, In-App Messaging, Dynamic Links
- CI: Xcode Cloud, GitHub Actions
- IoT Communication: MQTT, BLE, Socket
- Data Visualization: Redash, CARTO Platform, dekart
- Data Analysis: Python, SQL, BigQuery, Monte Carlo
- Data Engineering: Airflow on Cloud Composer, Cloud Run, Dataflow, dbt
- Observability: Datadog
- External Services: Stripe, LIQUID eKYC, AppsFlyer, SendGrid, Zendesk, Crowdin, etc.
チーム構成
現在 Software Development 部には7つのチームがあり、それぞれ以下のような役割を持っています。
Software Development 部を取り巻く組織体制 (※各部・チームの人数はイメージです)
iOS チーム
電動マイクロモビリティのシェアリングサービス『LUUP』の、ユーザー向け iOS アプリの開発をしているチームです。事業を拡張するための新規開発、ユーザーのためのUX改善、新技術導入などの技術的改善をそれぞれ事業や組織のフェーズに合わせてバランス良く実行しています。
Flutter を用いた社内向けの管理用モバイルアプリの開発も一部兼務しています。
体制: 正社員3人+業務委託2人(技術顧問を含む)
一緒に働く人: Android チーム、Server チーム、プロダクトマネージャー、デザイナー、QA チーム
技術スタック: Swift(Native), Clean Architecture+MVP, SwiftUI, Swift Package Manager, Xcode Cloud, etc.
詳細はこちら: → Luup iOSアプリ開発の現状と課題
Android チーム
電動マイクロモビリティのシェアリングサービス『LUUP』のユーザー向け Android アプリ開発と、iOS チーム同様に管理用モバイルアプリ開発を一部兼務しています。Luup では iOS と Android の機能差分や施策実施時期のずれなどを意図的に生むことはあまりなく、交通インフラになるサービスとして同等の機能を提供できるようアグレッシブに開発をしています。
体制: 正社員2人+業務委託5人
一緒に働く人: iOS チーム、Server チーム、プロダクトマネージャー、デザイナー、QA チーム
技術スタック: Kotlin(Native), Clean Architecture+MVVM, Jetpack Compose, Android Maps Compose, Kotlin Coroutine, etc.
詳細はこちら: → Androidチームの紹介
Server チーム
『LUUP』本体の iOS/Android アプリのバックエンド開発に加えて、社内向け管理用 Web アプリを開発しており、事業運営を総合的にサポートしています。
Server チームといっても社内向け Web アプリにおけるフロントエンド開発 (Nuxt.js) がガッツリ存在しており、実際にはバックエンドエンジニアとフロントエンドエンジニアの共存する、Web 開発周りを幅広く取り扱うようなチームになっています。
体制: 正社員2人+業務委託9人
一緒に働く人: iOS/Android チーム、オペレーション、カスタマーサポート、マーケティング、and more..
技術スタック: Node.js, TypeScript, Nuxt.js, Firebase(Cloud Functions, Firestore), etc.
詳細はこちら: → LUUPのサーバーチームの現状と課題
IoT チーム
提携メーカーにより製造されたモビリティ車両を iOS/Android アプリから動かせるようにするため、解錠/施錠などのコマンドをバックエンドから遠隔で IoT デバイスに向けて送る通信部の開発をメインで行っています。例えば Server チームが開発しているクライアント向け施錠/解錠APIは、IoT チームが用意したマイクロサービスを呼びだすラッパーとして作られています。
そのため、IoT チームと言っても組み込み開発をしている人がいるわけではなく、その方面に知識や経験を持ったエンジニアがサーバーサイド開発・インフラ構築などの Web 開発業務を行っている形になっています。
体制: 正社員1人+業務委託5人
一緒に働く人: Hardware 部、Server チーム、SRE チーム
技術スタック: MQTT, BLE, Socket, AWS IoT, GCP(Pub/Sub, Functions), SORACOM Beam, etc.
詳細はこちら: → IoTアーキテクチャについて
SRE チーム
上記4チーム(特に Server, IoT チーム)の開発したサービス群をホストするクラウドインフラ(GCP&AWS)の設計から構築、運用までを担っていることに加え、各サービスの信頼性や可用性を向上・担保するための監視の強化や、SLI/SLO の策定・運用、障害対応や On-call 体制の構築に加えて、負荷テスト等の性能試験の実施も行っています。
LUUP のサービスの信頼性向上に力を入れるべく SRE チームと名前を代表していますが、実際にはインフラエンジニアと SRE の混合チームのような形になっています。
体制: 正社員2人+業務委託6人
一緒に働く人: IoT チーム、Server チーム、Data Engineering チーム
技術スタック: GCP, Firebase, AWS, Datadog, SLI/SLO, Monitoring, Capacity Planning, etc.
詳細はこちら: → SRE NEXT 2023でSLOの開発組織とIoTへの導入についてお話ししました
QA チーム
『LUUP』本体の iOS/Android アプリの開発サイクルに合わせて、開発期間と並行しての Feature テスト、スプリント内の開発が完了した後の Release テスト、Regression テストといった QA(Quality Assurance) 業務を実行しているチームです。
加えて、サーバーサイドに変更があった際の Feature テストや、社内向け Web アプリの新規実装に対する Feature テストも行っています。
テストケースに沿った手動 QA だけでなく、不具合の再現検証や複雑な仕様のドキュメント化、自動テストの環境構築など、品質面でアプリ開発を幅広くサポートしています。
体制: 正社員1人+業務委託5人
一緒に働く人: iOS チーム、Android チーム、Server チーム
技術スタック: TestFlight, Firebase Test Lab, App Distribution, etc.
詳細はこちら: → LUUP QAチームの紹介と検証事例
Data Engineering チーム
アプリ・IoT・バックエンドおよび Salesforce・Zendesk などの外部ツールを含め、多様なデータソースを元に主に Airflow を活用して信頼性のあるデータパイプラインを構築し、Luup のデータ基盤を支えています。データカタログの設計・作成や Redash のホスティングなど、社内でデータを誰もが簡単に利用できるようにするインフラも提供しています。
Monte Carlo を活用したデータマネジメント、CARTO Platform を用いた地理空間データの可視化など、Luup のビジネス固有の特徴に根差した様々な取り組みも進んでいます。
体制: 正社員2人+業務委託2人
一緒に働く人: Data Science チーム、Server チーム、iOS/Android チーム、IoT チーム、オペレーション、and more..
技術スタック: Python, Cloud Composer (Airflow), BigQuery, dbt, Monte Carlo, CARTO Platform, etc.
Data Engineering チームの記事はこちら: → 冪等性を担保したGoogle Cloud Composerの設計と実装
最後に
オールインワン的に技術組織の概況が大体なんでもわかるような記事を目指して書きましたが、いかがだったでしょうか。
少しボリューミーになってしまいましたが、それでも本記事に記載したのはあくまで概要でしかなく、実際に内部の開発チームには日々様々な課題や挑戦があります。
人々の生活を変えるような新しい交通インフラを作ろうとしている Luup のシステム開発において、4年目を迎えた今はまさにスケールに向けた最初の一番大きい壁を越えようとしている最中で、一般的な IT ベンチャー、スタートアップでは経験しづらい複合領域での様々なチャレンジができる環境です。
法改正にかかわる大きな変化を乗り越え、事業的にも非常に面白いフェーズにある現在、少しでも面白そう、話を聞いてみたいと思った方がいらっしゃいましたらお気軽にご連絡ください!
私や、それ以外のエンジニア組織のメンバーとのカジュアル面談のお申し込みも常時受け付けているので、お気軽にご連絡ください!
Discussion