Upgrade to Pro — share decks privately, control downloads, hide ads and more …

"サービスチーム" での技術選定 / Making Technology Decisions ...

"サービスチーム" での技術選定 / Making Technology Decisions for the Service Team

2025/06/25
プロダクト成長を支える技術選定と開発文化 〜現場の知見LT大会〜
https://canly.connpass.com/event/357205/

"サービスチーム" での技術選定

内田 淳博
ソフトウェアエンジニア

Avatar for 株式会社カミナシ

株式会社カミナシ

June 25, 2025
Tweet

More Decks by 株式会社カミナシ

Other Decks in Technology

Transcript

  1. • 大学院で深層学習(AI)の研究 • freee に SWE として新卒入社 • 2023 年にカミナシ入社

    • カミナシでは「カミナシ従業員」の立ち 上げメンバーとして最初から開発 • AWS Community Builder • 今日は技術選定の話 + コンテキスト補足 自己紹介: 内田淳博 / a2 カミナシで初めて “サービスチーム” という言葉を知る @A2hiro_tim
  2. カミナシ従業員の Application 技術選定 Application 技術選定 9 API定義 GO バックエンド フロントエンド(管理画面)

    TypeScript TypeScript React React PWA Ogen Orval TanStack Query/Router TanStack Query/Router go-chi 若いライブラリの一例 フロントエンド(従業員・モバイル画面)
  3. OpenAPIのスキーマからのコード生成に新しいライブラリを採用 • Controller 部分のみのコード生成なので、困った時に後から置き換え可能なレイヤー • OAPI v2 では Swagger が使えたが、OAPI

    v3 に対応していない • Go の型をつけてくれるコード生成ライブラリは他になかった ◦ → 型がスケール時に大きな違いを生む OAPIv3 対応で型がつく Go のスキーマ生成ライブラリ “Ogen” の採用 →スキーマ駆動で開発を進められている
  4. フロントエンドは SSR か SPA か • 選定をしたのが2023年の8月頃 • AWS からSSRデプロイの十分なサポートがなかったため、インフラに工夫が必要だった

    • 開発者が 2人 + クラウドインフラ1人 の状況で、SSR の採用は見送った — • その後、AWS からサポートが発表(時すでに遅し) 当時のデプロイ周りの整備状況を考えて硬く SPA を選択
  5. 未来はわからない • 半年ずれていたらNext.jsを選んでいた可能性もある • それでもベンダーロックインを考慮して SPA を選んでいた可能性もある • 技術選定のタイミングでは、「いつか来る」ことはわかっていても、「いつ来るか」までは不明 •

    大事なのは、その段階で見えている情報、織り込める未来の不確実性を踏まえて選択して、その決 定にオーナーシップを持つこと(=ここでは、自分で自分の ”ケツを拭く” こと) 今時点でのベストな選択が半年後にはベストではない可能性は十分にある
  6. フロントエンドで複数のセッションを管理する決定 • モバイル専用の BFF を置いて routing するパターン(β)も考えたが、BFF のオーナーシップが浮 いてしまう •

    会社として複数の新規プロダクトを並行で走らせていて、今後も相乗りするプロダクトは増える可 能性が高い • 「隣のチームとの優先度調整がうまくいかず、お客さんへの価値提供が遅れます」が起きにくいの がサービスチームの強み • 最低限の手間で相乗りを実現 サービスチームができるだけ独立するような意思決定