Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Findyの開発生産性向上への取り組み ~Findyフロントエンドの場合~ Qiita Conference 2023 Autumn @puku0x Noriyuki Shinpuku
Slide 2
Slide 2 text
登録ユーザー 10万人以上 導入企業 1,000社以上
Slide 3
Slide 3 text
バッジ機能リニューアル! https://findy-code.io/badges
Slide 4
Slide 4 text
4
Slide 5
Slide 5 text
Findyの開発生産性は? 5
Slide 6
Slide 6 text
直近1年間の転職サービス「 Findy」フロントエンドのリードタイムおよびプルリクエスト数
Slide 7
Slide 7 text
PR数 10件/日 超え PRオープン後、即レビュー その日の内にマージ 直近1年間の転職サービス「 Findy」フロントエンドのリードタイムおよびプルリクエスト数
Slide 8
Slide 8 text
以前のFindyはどうだった? 8
Slide 9
Slide 9 text
2020年のFindy
Slide 10
Slide 10 text
レビューされるまで6日かかる PR数 1〜2個/日 1件の改修に1週間かかる 2020年のFindy
Slide 11
Slide 11 text
以前のFindyフロントエンド ● Railsモノリス上のReact ● バージョンの古いツール・ライブラリ多数 ● 型(Flow)はある ● テストが無い ● 見通しの悪い設計 11
Slide 12
Slide 12 text
刷新しよう 12
Slide 13
Slide 13 text
モノリス解体
Slide 14
Slide 14 text
モノリス解体 ● バックエンド: Ruby on Rails ● フロントエンド: Next.js ● 「Findyがモノリス環境をやめて得られたユーザへの爆速価値提供」 https://note.com/ma3tk/n/na502374b6ad6 ○ リリース回数: 9倍 ○ マージ回数: 6倍 ○ PRクローズまでのスピード : 35倍 ○ GitHub上のアクティビティ数 : 4倍 14
Slide 15
Slide 15 text
技術的負債の返済
Slide 16
Slide 16 text
開発基盤の刷新 ● 依存ライブラリのバージョンアップ ○ Dependabot導入 ○ メンテされないライブラリの廃止 ● モダンな環境に移行 ○ TypeScript ○ React 16.8+(現在はReact 18系) ○ Nx、Jest、ESLint、Prettier ■ nx migrateコマンドによる自動更新 16
Slide 17
Slide 17 text
設計の刷新 ● 依存の方向を揃える ● Container/Presentational Componentベース ○ データの流入元に合わせた三層構造 17 Page Component Container Component Presentational Component URLパラメータの解釈 APIとの通信 描画・フォーム制御 Custom Hook Custom Hook Custom Hook
Slide 18
Slide 18 text
テストの拡充 ● 書けそうなところから着手 ○ ロジックのユニットテスト ○ コンポーネントのスナップショットテスト など ○ 慣れてきたら結合テストを増やす ● Wallaby.jsなどの可視化ツールも有用 ● テストを書く→テストを書きやすい設計 の好循環 18
Slide 19
Slide 19 text
現在のFindyフロントエンド ● Next.js v13 / React 18 + TypeScript + GraphQL ● Jest, Testing Library, Storybook, Chromatic, Autify ● Prettier, ESLint, Stylelint, Commitlint ● Nx + Nx Cloud ● GitHub Actions 19 モダンな環境に刷新できた
Slide 20
Slide 20 text
めでたしめでたし 20
Slide 21
Slide 21 text
完 21
Slide 22
Slide 22 text
これだけではまだ終わらない 22
Slide 23
Slide 23 text
新たな課題 ● CIが遅い ○ コード量が増えるとCI時間も増える ● CIが遅いとどうなる? ○ レビューが放置される ○ ブランチ生存期間が延びる ○ コンフリクト多発 23 レビューは 後回しでいいや
Slide 24
Slide 24 text
https://twitter.com/ayamakkie/status/1657279013260525568 時間が 無い!
Slide 25
Slide 25 text
CIの高速化
Slide 26
Slide 26 text
CIの高速化 ● 変更検知+キャッシュ活用 ○ その他、ジョブ並列化、仮想マシンのアップグレードなど 26 平均5分で完了 毎月300時間以上のCI時間を削減 https://nx.app/ はいいぞ
Slide 27
Slide 27 text
2022年 2021年 2023年 一人あたりの開発生産性が約3倍に ※2021年〜2023年までの転職サービス「Findy」フロントエンドの4月のデータ
Slide 28
Slide 28 text
まとめ ● Findyの開発生産性向上への取り組み ○ モノリス解体 ○ 技術的負債の返済 ○ CIの高速化 ● 日々の改善が大事 28 https://findy-team.io/ https://zenn.dev/starfish/books/6966f2e8450a70
Slide 29
Slide 29 text
ご清聴ありがとうございました @puku0x Noriyuki Shinpuku