Slide 1

Slide 1 text

© Findy Inc. 2025.08.20 すごくすごい。フロントエンドミートアップ AI疲れに効く、 フロントエンドのワークフロー整備 1 甲斐 和基 ファインディ株式会社 フロントエンドエンジニア @karukan029

Slide 2

Slide 2 text

© Findy Inc. ファインディが展開するエンジニアプラットフォーム サービス紹介 ToC / ToB 正社員エンジニアの採⽤ 約12万⼈のエンジニアと880社以上のテッ ク企業をマッチング。 マッチングサービス フリーランスエンジニアの採⽤ 5万⼈以上のフリーランスエンジニアの成 功報酬型の⼈材紹介サービス。 外国籍エンジニアの採⽤ インドを中⼼とした海外のハイスキルエン ジニアと⽇本企業をマッチング。 SaaS / ToB エンジニア組織の⾒える化 GitHubやJiraを解析し、エンジニア組織の ⾒える化と⽣産性向上をサポート。 組織分析SaaS ToC / ToB 開発ツールのレビューサイト 実際に利⽤している企業の声を元に、開発 ツールの導⼊や検討に必要な情報を集約。 企業の技術選定をサポート。 開発ツールメディア ※ 各種数値は、2024年6月時点のFindy転職、Findy Freelance、Findy Team+、Findy Globalの4サービスの累計での社数及び登録者数です。 
   なお、1社又は1名の方が複数のサービスに登録している場合は、そのサービスの数に応じて複数のカウントをしています。 β版 2

Slide 3

Slide 3 text

© Findy Inc. 3 AI疲れしていませんか?

Slide 4

Slide 4 text

© Findy Inc. 4 AI疲れしていませんか? ● AIがコード書いてもいいけど散らかさないで ○ コードを書くという楽しい部分をAIがやっている ○ こちらが想定しているレベルのコードを出⼒してくれるまで四苦⼋苦 ● AIが⽣成したものが正しいか最終的に評価するのは⼈ ○ 読まないといけないものが汚いと⼈が⾟い ● AIに好き勝⼿させないための仕組みの整備が重要 ○ 機械的にチェックできるものは仕組みでカバーしたい ○ 守りと⾼速化を両⽴したい

Slide 5

Slide 5 text

© Findy Inc. 5 AI疲れしていませんか? ● 前提 ○ ⽣成AIを活⽤するために新たに環境整備した話ではありません ○ 今まで実施していた環境整備の取り組みの内、⽣成AI活⽤するようになって特に役⽴っているも のを紹介しています

Slide 6

Slide 6 text

© Findy Inc. 6 守りと⾼速化を両⽴するための ワークフロー

Slide 7

Slide 7 text

© Findy Inc. 7 「守り」の仕組み

Slide 8

Slide 8 text

© Findy Inc. 「守り」の仕組み 8 ● 静的解析 ● ⾃動テスト ● フィーチャーフラグ

Slide 9

Slide 9 text

© Findy Inc. 静的解析 9 TypeScript ● 型チェックによる静的解析 ESLint‧Stylelint ● コード解析によってルールに沿ったコードであることを静的解析 Prettier ● コードをルールに沿ってフォーマット pre-commitのタイミングでチェック、コードを⾃動修正 ● ルールに従ったコードのみコミット ● 不要なCIの実⾏を防ぐ

Slide 10

Slide 10 text

© Findy Inc. 静的解析 10 モジュール境界の強制 ● Findy Team+のフロントエンドは、Nxを使⽤したモノレポ構成になっている ○ Nx:モノレポやアプリケーションのビルド、テストの実⾏、コード⽣成などの機能を備えた統合 的なツール ○ 内部に100以上のモジュールを持つモノレポ構成であり、複雑性が⾼い ■ 循環参照(循環依存)が発⽣しないよう注意する必要がある ● Nxが提供している @nx/enforce-module-boundaries ルールで制御 ○ プロジェクトの設定でタグを指定することができる ○ プロジェクトに設定したタグに依存可能なタグを定義することで、依存の⽅向性を定義すること ができる

Slide 11

Slide 11 text

© Findy Inc. 静的解析 11 設定の例 libs/components (type:ui) → libs/utils (type:util) の依存は許可され、逆⽅向の依存は許可されない

Slide 12

Slide 12 text

© Findy Inc. 12 ⾃動テスト ● Unit、Integration テスト ○ Vitest ○ Testing Library ● E2Eテスト ○ Playwright ● VRT(Visual Regression Testing) ○ storycap+reg-suit ○ UIコンポーネントの意図しない⾒た⽬の変化を⾃動検知

Slide 13

Slide 13 text

© Findy Inc. 13 ⾃動テスト ● 期待する振る舞いをテストコードで保証する ○ AIは仕様があっているか判断するためにもテストコードは重要 ■ 期待値を明確にできる ■ テストが失敗する=仕様通りでないとAIが判断できる ● 修正時の影響範囲を予測しやすくする ○ 影響あればテストコードが落ちる ○ テストがちゃんとしていればコードの質が⾼くなくてもマージしても問題ない

Slide 14

Slide 14 text

© Findy Inc. 14 フィーチャーフラグ ● コードを書き換えることなく特定の機能を有効化‧無効化できる仕組み ● ユーザーに影響がでないように本番環境にコードを反映することができる ○ 開発途中の状態のコードもデプロイできる ○ コンフリクトが発⽣しづらくなる ○ ⽣成AIの活⽤により、Pull Request数が増加するとマージする回数も増加するため、コンフリク トが発⽣しづらくなるメリットをより享受しやすくなる

Slide 15

Slide 15 text

© Findy Inc. 15 「守り」の⾼速化

Slide 16

Slide 16 text

© Findy Inc. 16 キャッシュ活⽤によるCIの⾼速化 Nxのキャッシュ活⽤によるCIの⾼速化 ● 変更があったプロジェクトと依存関係のあるプロジェクトのみをCIの対象にする ○ 依存関係がないプロジェクトはスキップする ○ 依存関係が⼩さいPRほどCIが早く終わる ○ PRを適切な粒度に保つことがCIの⾼速化にも結びつく構成 ● 依存関係を適切に整理し、アーキテクチャをメンテナンスすることでキャッシュの恩恵を最⼤限受ける ことができる ○ キャッシュをうまく活⽤できるようにプロジェクトの構成も継続的に改善している

Slide 17

Slide 17 text

© Findy Inc. 17 CI環境の最適化 負荷に合わせてスペックを最適化 ● GitHub Actionsのrunnerのスペックを最適化する ○ 依存するプロジェクト数に応じて、Larger runnerを使⽤ ■ 負荷が⾼い時だけスペックを上げる ● 現在のGitHub Actionsには、変更の規模や負荷に応じて動的にランナーを切り替える機能がない ○ Nxを使⽤して、影響を受けるプロジェクトの数を取得 ○ プロジェクト数に応じてランナーを切り替える

Slide 18

Slide 18 text

© Findy Inc. 18 CI環境の最適化 負荷に合わせてスペックを最適化

Slide 19

Slide 19 text

© Findy Inc. 19 まとめ

Slide 20

Slide 20 text

© Findy Inc. 20 まとめ ● これらの取り組みは元々、品質を保ちながらスピード感を持って開発するための取り組み ○ 今までの積み重ねの結果が、AIと協業するための⼟台となっている ● ⽣成AIを活⽤するために整備するというより、今までと変わらず品質の⾼いコードを安全に⾼速にリ リースし続けるための環境整備が重要 ○ 品質を保ちながら⾼速にリリースできる環境整備は、⼈にとってもAIにとっても重要

Slide 21

Slide 21 text

© Findy Inc. 21 ご清聴ありがとうございました