少人数でも開発をブーストする仕組み
こんにちは、fundbookでフロントエンド、サーバーサイド、インフラ、その他社内用ツールなど諸々開発をしている藤田です。
もともと弊社では、fundbook cloudの開発を外部の会社にお願いしており、私が今年の4月に入社してから2ヶ月後、開発を内部で引き継ぐことになりました。
ベンチャー企業だと、もともと外部に開発を依頼していて、ある程度軌道に乗った際にコスト削減やよりスピーディーに開発をするために、内製化するパターンはよくあることだと思います。
その際に重要になってくるのが、外部に依頼していた開発スピードを落とさないこと(最低でも)だと思います。
内部での開発に切り替えて、結局開発スピードが落ちて開発コストが膨らんだのでは、コスト削減にもならないし、スピードも落ちるし、何も嬉しくない状況になってしまいます。
また、今回は複数人で開発していたのを1人で開発を引き継いだので、より 開発スピードを落とさないこと(最低でも) を意識しました!
そこで、開発スピードを落とさないためにどんな技術スタック、どんな開発手法で開発をしているかを紹介します。
技術スタック / 開発手法
開発スピードを落とさないためには、人力で頑張るのではなく仕組み化が必要になってきます。
そこで、弊社でどんな技術スタックで、どのようにfundbook cloudを開発をしているか紹介します。
技術スタックとしては、下記の通りです。(インフラ周りや今回の話題と直接関係ないライブラリなどは割愛します🙇)
バックエンド
- 言語: PHP
- フレームワーク: Laravel
- ライブラリ: Laravel OpenAPI、PHP-CS-Fixer、phpstan、openapi-psr7-validator
フロントエンド
- 言語: React
- フレームワーク: Next.js
- ライブラリ: eslint、prettier、openapi2aspida
開発手法
開発手法としては、スキーマ駆動開発で日々開発をしています。
バックエンドの開発時に下記のようにControllerの関数にrequestやresponseの内容を定義して、Laravel OpenAPIを使用して自動的にOpenApiを生成します。
バックエンドの開発が一通り終わると、生成したOpenApiの定義を使用して、openapi2aspidaを利用してフロント側の型だったり、スキーマ定義を自動生成する流れで実装しています。
#[OpenApi\Operation(tags: ['user'])]
#[OpenApi\Parameters(factory: GetUsersRequestParameters::class)]
#[OpenApi\Response(factory: GetUsersResponse::class)]
#[OpenApi\Response(factory: BadRequestResponse::class)]
#[OpenApi\Response(factory: ForbiddenResponse::class)]
#[OpenApi\Response(factory: UnauthorizedResponse::class)]
#[OpenApi\Response(factory: InternalServerErrorResponse::class)]
#[OpenApi\Response(factory: ServiceUnavailableResponse::class)]
public function index(
GetUsersIndexUseCase $useCase,
GetUsersRequest $getUsersRequest,
Request $request,
): GetUsersIndexResource {
// Controllerの処理を記述
}
この開発手法のおかげでバックエンドとフロントエンドでの認識違いなどがなくなり、スムーズに開発することができてます。
また、最近ではCursorを使ってコード生成やコードリーディングなど、積極的にChat GPTを利用して生産性を少しでも上げれるように開発をしています。
まとめ
今回は技術スタックと開発手法を軸に、効率性を高めながらいかにして開発を進めているかを紹介しました。
M&A業界は、エンジニアの視点から見てもまだまだ可能性に溢れ、手を加える余地が多くあると感じています。
M&Aテックの先駆けとして位置付けられるよう、引き続きスピード感を持って開発を進めていきます。
株式会社fundbookについてはこちらから
M&Aサービスについてはこちらから
Discussion