見出し画像

GOGENの開発プロセスと技術スタック

こんにちは。GOGEN株式会社 CTO の楠本です。
私たちは「あたらしいやり方で、人々によりよい不動産を」をミッションのもと、プロダクトを開発しています。
創業してから約1年9ヶ月が経過し、その間に幾つかのプロダクトを市場に送り出すことができました。外部の方々との面談や対話の機会も増え、その中で、私たちの開発プロセスや採用している技術スタックに関する質問を多く受けます。
これを受け、今回はGOGENでのプロダクト開発の流れと、私たちが使用している技術スタックに焦点をあててお話しします。


GOGENが提供しているプロダクトやサービス

プロダクトの開発プロセスや技術スタックの話をする前に、GOGENが提供しているプロダクトやサービスについてお話しします。
事業は大きく分けて3つあり、その中でプロダクトやサービスを提供しています。

事業① 「不動産事業者向けのソフトウェアサービス」

  • Chat管理人
    マンション管理会社を対象にGPT-4を活用したサービス

  • ScanPa
    完全キャッシュレス駐車場精算サービス

事業② 「エンドユーザー向けの不動産購入サービス」

  • ゼロテ
    不動産購入時の初期費用である手付金を保証するサービス

事業③ 「コンサルティング・共同研究サービス」

不動産事業者や関連企業、銀行、保険会社など、不動産売買に関わる多様な機関と共に、不動産業界のあり方の研究を行う事業内容となっています。


他にも新規機能の開発やプロダクトの改善を継続しています。


プロダクトの開発プロセス

プロダクト開発は、エンジニアとデザイナーで構成されるプロダクトチームによって開発しています。
プロダクトチームに関しては、下記の記事にて詳しく掲載しているので、ご興味ある方はぜひご覧ください。

GOGENでは、アジャイル開発、特にスクラム開発を採用しています。1週間のスプリントを基本として、スプリントプランニング、デイリー朝会、仕様会議、スプリントレビュー(デモ会)、レトロスペクティブなどを行います。これらのアジャイルプラクティスをプロダクトチーム全員で実施しています。

開発プロセスは、主に「要件定義フェーズ」と「実装フェーズ(QA&リリース含む)」の2つの段階に分けています。

「要件定義フェーズ」

まず、「要件定義フェーズ」では、プロジェクトの初期段階で仕様案をまとめたドキュメントや、ワイヤフレームを基に、意思決定を行います。決定した内容はプロダクト要求仕様書(PRD)に記録し、これを繰り返すことで、エンジニアが実装可能な状態に持っていきます。

「実装フェーズ(QA&リリース含む)」

次に、「実装フェーズ(QA&リリース含む)」では、PRDを基に開発を進めます。Protobufを使用して、スプリントの初期にスキーマの定義をチーム内で合意し、その後実装に移ります。

また、新規開発プロジェクトでは、仕様が初期段階で完全に固まることは少ないため、決定した範囲内で開発を進め、UXやUIの部分については、複数回変更することを前提にマイルストーンを設定しています。

(現在利用している)技術スタックについて

プロダクトやプロジェクトごとに最適な開発プロセスや技術スタックを決めている為、一概に同じとは限りませんが現在利用している主な技術スタックは、以下となります。

認証・認可   : Auth0
フロントエンド : TypeScript, React, Next.js
通信プロトコル : gRPC, Buf Connect 
バックエンド  : Go, Bun (ORM)
モニタリング  : Datadog, OpenTelemetry
インフラ    : AWS, ECS Fargate, Terraform

具体的に採用している技術スタックは what we use にて詳しく掲載しているので、ご興味ある方はぜひご覧ください。

不動産売買プラットフォームの開発において、限られたリソースを最大限に活用し、価値を提供するための技術選定に注力しています。この過程で、デリバリーコストを削減するために専門領域のSaaS(例えばAuth0)を組み合わせて利用しています。また、メンテナンスコストを抑えるためにマネージドサービス(例えばECS Fargate)の導入も行っています。
また、Release(レリーズ)シリーズではシームレスなデータ連携も見据えて設計していており、共通アカウントでのログイン観点でもAuth0を採用しているなどもあります。
さらに、デリバリーの迅速化を目指して、ローコードで管理画面を作成できる「Dashcomb」を利用しています。
Dashcomb」については、下記のインタビュー記事にて詳しく掲載しているので、ご興味ある方はぜひご覧ください。

もう少し技術スタックについて触れると、GOGENでは Connect を採用しています。

Protocol Buffers でスキーマを定義することで、パラメータやバリーデーション定義、サービスのルーティングを定型化し、エンジニアがアプリケーションのロジック実装に集中することを目的で採用しています。また、スキーマ駆動でもある為、スプリント初期の共通認識をチーム内で容易に共有できることも利点だと感じています。
さらに、gRPCのエコシステムに留まりつつ、Bufなどのツールを活用することで、より広範な機能を享受できる点も大きな利点と感じています。

他には、Bun (ORM) を採用しています。Bulk Insert操作も単一のInsert操作と同様 で直感的な点や、比較的読みやすく処理が隠蔽されていない点など好んで使っています。

おわりに

私たちは、より良い不動産売買プラットフォームを目指し、開発に努めています。この記事が、GOGENの開発プロセスと技術スタックに関する理解を深める一助となれば幸いです。もしこの記事を通してGOGENに少しでもご興味が湧きましたら、ぜひ下記のリンクよりお話の時間を調整させてください。お待ちしております。

この記事が気に入ったらサポートをしてみませんか?