Slide 1

Slide 1 text

Sansan株式会社 部署 名前 10年以上続くプロダクトで 取り組んでいること、取り組もうとしていること 【Ruby×⼤規模開発】3社のエンジニアが語るスケーラブルな設計と運⽤ 技術本部 Eight Engineering Unit 平⽯ 健太郎

Slide 2

Slide 2 text

1. サービス紹介 2. プロダクトの現実 3. 取り組んでいること(過去・現在) 4. 取り組もうとしていること(未来) アジェンダ 1

Slide 3

Slide 3 text

写真が⼊ります 平⽯ 健太郎 Sansan株式会社 技術本部 Eight Engineering Unit Product Dev Group 2021年Sansan株式会社に新卒⼊社 プロダクト開発チームに配属しサーバー開発を担当 現在は技術的課題の改善やAIエージェントによる⽣ 産性向上に向き合っている

Slide 4

Slide 4 text

サービス紹介

Slide 5

Slide 5 text

© Sansan, Inc.

Slide 6

Slide 6 text

サービス概要 アプリを開いて すぐ名刺交換ができる 取り込んだ名刺を 簡単に管理・検索 異動・昇進・転職など 近況情報が届く 名刺を撮るだけで 素早く正確にデータ化

Slide 7

Slide 7 text

Eightに付随するサービス Eight Team Eight Career Design Event Business 5000社以上で導⼊されている 企業向け名刺共有サービス 400万⼈以上に ダイレクトリクルーティングができる 採⽤サービス Eightユーザをメインターゲットに 年間4万⼈を超える参加者を集める ビジネスイベントを企画・運営

Slide 8

Slide 8 text

Eightの年表 2012 サービスローンチ 2015 ユーザ数が100万⼈を突破 2017 企業向けプレミアム機能(現Eight Team)の提供開始 2019 Eight Career Designサービス提供開始 2023 東京ビッグサイトで⼤規模イベント Eight EXPO を開催 2025 ユーザ数が400万⼈を突破

Slide 9

Slide 9 text

プロダクト開発の現実

Slide 10

Slide 10 text

- 複雑な処理 - 名刺のデータ化処理、ユーザ間のつながり処理 - デッドコード - 使われているか、使われていないか不明なコード・テーブル群 - 古いメンテされていないGem - Gemを⼊れた当初はそこそこ使われ活発にメンテされていたが、 直近はリリースが3年以上⽌まっているものが多数 技術的負債の蓄積

Slide 11

Slide 11 text

膨⼤なドメイン知識 - 13年のサービスの中でいくつも機能を追加してきた - 名刺管理、Eight Team、転職サービス、イベント連携… - ある改善タスクにおいても想定しない箇所に影響を与えることがある - 機能間のインターフェースが複雑に絡み合い、⼀つの改善でも他の機能との 整合性を取るための調整に多くの⼿間がかかってしまう

Slide 12

Slide 12 text

- データ量の増加によるパフォーマンスへの影響 - ユーザー数・名刺データにおける13年分の蓄積 - データベースの応答速度低下や、データ処理の⻑時間化 - 個⼈情報を取り扱うことによる開発・運⽤上の制約 - 名刺は「個⼈情報の塊」 - 調査や開発の際にデータアクセスが制限され、対応に時間がかかる 増え続けるデータと、その責任

Slide 13

Slide 13 text

Eightで取り組んでいること

Slide 14

Slide 14 text

技術改善に集中できる新体制への移⾏ - Enhancementチームの発⾜ - 腰を据えて技術改善に向き合えるように - 機能別のチームは廃⽌ - Featureチームとしてドメイン関係なくプロダクト開発を⾏う

Slide 15

Slide 15 text

積極的なバージョンアップデート - 積極的にRuby, Railsのアップデートを実施 - QA体制の充実やテストカバレッジを90%維持している - アップデートの恩恵をなるべく早く受けれるように - 開発メンバーにも「〇〇が使えるようになった」や 「パフォーマンスが〇〇%改善した」などメリットを伝えるように

Slide 16

Slide 16 text

型の導⼊ - コードの保守・品質・可読性の向上のためにRubyの型を導⼊ - Eight では Sorbet を導⼊ - コードベース全体の8割以上で型チェックが有効化されている状態に 詳しい導⼊背景・進め⽅はブログにまとめています https://buildersbox.corp-sansan.com/entry/eight-steep-vs-sorbet

Slide 17

Slide 17 text

これからEightで取り組もうとしていること

Slide 18

Slide 18 text

AIフレンドリーな開発

Slide 19

Slide 19 text

ドキュメントを残すための仕組みづくり - 今まで開発においてスピード重視で設計資料を残す仕組みがなかった - 散発な努⼒はあったものの、組織としての標準を定められていなかった - AIエージェントが実装するためのサポートになるように - 設計書だけじゃなく開発プロセスも明⽂化 - Devin DeepWikiも使いながらドメイン知識をドキュメント化

Slide 20

Slide 20 text

依存Gemの削減 - メンテされていないGemが最新のRuby/Railsに追従していないとアプデ 作業が停滞する - Eightの例: Her, activerecord-redshift-adapter - デファクトスタンダードなGem依存に置き換えていく - Her → Faraday - activerecord-redshift-adapter → pg

Slide 21

Slide 21 text

機能のスリム化 - プロダクトをスリムにしていく - ログなどからあまり使われていない機能をリストアップ - PdMと議論、合意を取った上で機能を削除していく - メンバー全員がEightを理解している状態にする - 誰も知らない/コードを読まないと理解できないをなくしていく

Slide 22

Slide 22 text

- プロダクト開発の現実 - 蓄積する技術負債、複雑化するドメイン知識、増え続けるデータ - ⾏っている取り組み - 体制づくり、積極的なアップデート、コードの堅牢化 - 今後の取り組み - AIフレンドリーな開発、プロダクトのスリム化 まとめ

Slide 23

Slide 23 text

22 © Sansan, Inc. We are hiring! ⼀緒にEightの価値を⾼められる⽅を募集しています! Webアプリ開発エンジニア

Slide 24

Slide 24 text

No content