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

「速く作る」から「正しく作る」の現場のリアル 〜誰が書いても同じコードになる仕組みを、開発資本...

「速く作る」から「正しく作る」の現場のリアル 〜誰が書いても同じコードになる仕組みを、開発資本として積み上げる〜

Transcript

  1. ⾃⼰紹介 • ニックネーム ◦ • 所属 ◦ • ファインディ(株) プロダクト開発部

    Team+推進 担当領域 ◦ • robin:高校の頃にクリストファー・ロビンに似てたらしい バックエンド、フロントエンド 最近ハマっていること ◦ ガチャガチャ ◦ 散歩 © Findy Inc. 2
  2. 元講演と、今⽇の話 🎤 🛠 元講演 今⽇の私 AI Engineering Summit Tokyo 2026

    「速く作る」から「正しく作る」へ (⼾⽥ 千隼) Findy Team+ 開発エンジニア Findy Team+ の API と MCP サーバーの開 発を担当 © Findy Inc.
  3. 現場で起きていたこと:Controller に何でも書く ruby # Before: ArticlesController(説明用の例) def index raise BadRequest

    if params[:limit].to_i > 100 articles = Article.where(team_id: params[:team_id]) if params[:keyword].present? articles = articles.where("title LIKE ?", "%#{params[:keyword]}%") end render json: articles.order(:published_at).limit(params[:limit]) .map { |a| { id: a.id, title: a.title } } end © Findy Inc.
  4. After:Controller は委譲するだけ ruby # After: ArticlesController(説明用の例) def index input =

    ArticlesParams.new(params) # 入力の契約 articles = ArticlesQuery.call( # データ取得 team: current_team, keyword: input.keyword, limit: input.limit ) render json: ArticlesSerializer.call(articles) # レスポンス整形 end © Findy Inc. 10
  5. レビューの中⾝が変わった Before(〜8/4) After(8/5〜) • インライン指摘 4.0件 / PR • インライン指摘

    0.78件 / PR • 指摘の約4割が「責務‧置き場 所」 • 論点は性能‧セキュリティ‧API 契約へ • 同じ指摘を何度も書く • 指摘は「規約の◯◯によると」 と引⽤する形に © Findy Inc. 12
  6. Team+ で⾒ると③:レビューから Approve までが短く なった レビュー → Approve 約1.7h →

    約0.5h(⼈のレビューのみ‧21⽇移動平均) © Findy Inc. 14
  7. 別チームのメンバーでも「同じコード」になった 初めての API 実装、PRの積み順が固定キャストどおり ① Params ② Query ③ Serializer

    ④ Controller ⑤ OpenAPI 規約に関する指摘 0件 ∕ 承認コメント「skinny controller!!!」 © Findy Inc. 14
  8. 開発資本スコアで⾒る現在地 ⼿戻りの少なさ 50 → 72 ∕ PRあたりコメント数 4.7 → 3.1件(2026年6⽉

    → 9⽉) ※開発資本スコアβ版の値。9⽉からβ版の定義で計算 © Findy Inc.
  9. トークンを「消費」して、rules という「資本」を⽣み出した ✅ 🧩 🧭 Quality 変更単位の制御 コンテキストの制御 ⼿戻りの少なさ 50

    → 72 (6⽉ → 9⽉) スコア 100 ハーネス整備度 38.2% (スコア基準は策定中) 資本: rules が次のPRでも 効き続ける ⼩さなPR × 固定キャスト が効いている 次の投資: rules を他領域 へ‧OpenAPI‧⾃動⽣成 © Findy Inc.