Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
「バイトル」のTypeScriptリニューアル — 積み上がったレガシーとパフォーマンスに挑む現在地
Search
Hayato Yokoyama
May 23, 2026
Technology
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
「バイトル」のTypeScriptリニューアル — 積み上がったレガシーとパフォーマンスに挑む現在地
2026/05/23 TSKaigi 2026
Hayato Yokoyama
May 23, 2026
Transcript
47 slides
「バイトル」のTypeScriptリニューアル 〜 積み上がったレガシーとパフォーマンスに挑む現在地 〜 ディップ 横⼭ 隼 2026/05/23 TSKaigi 2026
横⼭ 隼 Yokoyama Hayato ディップ株式会社 プロダクトソリューション部メディアWeb開発課 2022年 新卒⼊社 現在の仕事 バイトルの求職者向けサイトのリニューアル
主にフロントエンド
× “Labor force solution company” ⼈材サービスとDXサービスの提供を通して、労働市場における諸課題を解決し、 誰もが働く喜びと幸せを感じられる社会の実現を⽬指します。 VISION Human work
force solution ユーザーファーストな独⾃機能を搭載した、 求⼈情報‧⼈材紹介サービスの提供を通じて、 ユーザーの就業課題を解決しています。 ⼈材サービス事業 Digital labor force solution バイトコミュニケーションアプリ『バイトルトーク』や、 機能を絞ったシンプルなSaaS型の『コボット』を通じて、 職場環境やコミュニケーション課題を解決しています。 DX事業
Copyright © DIP Corporation, All rights reserved. 📝 本⽇お話しすること 弊社プロダクト「バイトル」のリニューアルで取り組んだパフォーマンス改善のお話をします。
王道な取り組みから、ちょっとニッチな事例まで、 プロダクトを選ばず、明⽇から取り組めるものもご紹介します。 "⾃分のチームでも試せそう" と思えるものを1つでも持ち帰っていただけたら幸いです。
Copyright © DIP Corporation, All rights reserved. 20年超えの歴史を持つ アルバイト求⼈サービス
Copyright © DIP Corporation, All rights reserved. インターネットの家庭普及率が18%程度だった2002年 「バイトル」サービス開始
Copyright © DIP Corporation, All rights reserved. スマホ普及率が4%だった2010年 ガラケー全盛期に「動画」で仕事探しができる機能を実装
Copyright © DIP Corporation, All rights reserved. 2024年⽇本初となる対話型バイト探しサービス 「dip AI
AGENT」をリリース
Copyright © DIP Corporation, All rights reserved. サービスは成⻑を続けている
Copyright © DIP Corporation, All rights reserved. サービスの成⻑に伴って「技術的負債」は溜まってきた • JavaScriptで動いているため型安全性がなく、動かすまでバグに気付けない
• グローバルスコープのCSS (Sass) で、1つ直すとどこに影響があるか分からない • テストが形骸化している‧存在しない • ライブラリのバージョンをあげるだけでもきつい
Copyright © DIP Corporation, All rights reserved. サービスの成⻑に伴って「技術的負債」は溜まってきた • JavaScriptで動いているため型安全性がなく、動かすまでバグに気付けない
• グローバルスコープのCSS (Sass) で、1つ直すとどこに影響があるか分からない • テストが形骸化している‧存在しない • ライブラリのバージョンをあげるだけでもきつい ➡ 事業の成⻑を⽀えられない
Copyright © DIP Corporation, All rights reserved. そんな経緯もありバイトルを今 リニューアル
Copyright © DIP Corporation, All rights reserved. TypeScript ⾔語 React
Router (framework mode) フレームワーク CSS Modules スタイリング Vite 8 ビルド Rolldown Oxlint / Oxfmt リンター / テスト Vitest TypeSpec API定義 / 型⽣成 Orval React 技術スタック
Copyright © DIP Corporation, All rights reserved. ✅ 型安全性を⼿に⼊れて、動かすまで気付かないバグが消えた ✅
テストもちゃんと書けるようになった ✅ 型に守られて、AI駆動で開発が爆速になった
Copyright © DIP Corporation, All rights reserved. 万全に進めてきた リニューアル
Copyright © DIP Corporation, All rights reserved. 負荷テストで 本番相当の負荷を流すと
Copyright © DIP Corporation, All rights reserved. ......
Copyright © DIP Corporation, All rights reserved.
Copyright © DIP Corporation, All rights reserved.
Copyright © DIP Corporation, All rights reserved.
Copyright © DIP Corporation, All rights reserved.
Copyright © DIP Corporation, All rights reserved.
Copyright © DIP Corporation, All rights reserved. 型もテストもあるから、AIで仕様通りに動くものはサクサク作れた。 API,DB などの⼀部は既存のものを継承する設計だった。
結果、どかっと機械的に負荷をかけたら、改善点が⾒つかった。
Copyright © DIP Corporation, All rights reserved. 型もテストもあるから、AIで仕様通りに動くものはサクサク作れた。 API,DB などの⼀部は既存のものを継承する設計だった。
結果、どかっと機械的に負荷をかけたら、改善点が⾒つかった。 ➡ やるしかない
Copyright © DIP Corporation, All rights reserved. TypeScriptのパフォーマンス改善 • 型チェック‧コンパイルにかかる時間を短縮すること
• JavaScriptにコンパイルされた後、⾼速に動くこと
Copyright © DIP Corporation, All rights reserved. TypeScriptのパフォーマンス改善 • 型チェック‧コンパイルにかかる時間を短縮すること
• JavaScriptにコンパイルされた後、⾼速に動くこと ←今回 狙うはこっち
Copyright © DIP Corporation, All rights reserved. まず「低コストかつ効果が⼤きそうなもの」を中⼼に取り組んだ
Copyright © DIP Corporation, All rights reserved. 画像の軽量化やWebP変換
Copyright © DIP Corporation, All rights reserved. loading="lazy" / fetchpriority="high"
/ rel="preconnect" など リソースの読み込み優先度やタイミングの調整 <img src="thumb.jpg" loading="lazy" /> <link rel="preconnect" href="https://fonts.googleapis.com" /> <script async src="https://example.com/script.js"></script> 外部リソースの⾮同期読み込み 外部リソースの事前接続 画像の遅延読み込み
Copyright © DIP Corporation, All rights reserved. Cache-Control ヘッダーの設定し 可能な限りCDNキャッシュから配信
"Cache-Control": "public, max-age=31536000, immutable" ハッシュ付きの静的アセット
Copyright © DIP Corporation, All rights reserved. かなり効果はあった 👍
Copyright © DIP Corporation, All rights reserved. もうちょっとミクロな問題への取り組みも 1. 計測‧広告タグのメインスレッド占領によるパフォーマンス低下
2. ⼤量に分割されたJavaScript,CSSによるリクエスト数増加 3. Core Web Vitalsを可視化できていない
Copyright © DIP Corporation, All rights reserved. もうちょっとミクロな問題への取り組みも 1. 計測‧広告タグのメインスレッド占領によるパフォーマンス低下
2. ⼤量に分割されたJavaScript,CSSによるリクエスト数増加 3. Core Web Vitalsを可視化できていない
Copyright © DIP Corporation, All rights reserved. 現バイトルから受け継いだ 計測‧広告タグの積み重なりによるパフォーマンスの悪化 •
⻑年の機能拡張に応じて、計測‧広告タグが肥⼤ • 初期ロード時にメインスレッドが⻑時間占有され、 Core Web Vitals(特にTBT) が悪化した ⚠ リニューアルでも計測‧広告タグの多くを引き継ぐ
Copyright © DIP Corporation, All rights reserved. requestIdleCallback() で計測タグが 描画とユーザー操作をブロックしないようにする
requestIdleCallback() でアイドル状態になったタイミングで、 スクリプトが発⽕するように調整
Copyright © DIP Corporation, All rights reserved. もうちょっとミクロな問題への取り組みも 1. 計測‧広告タグのメインスレッド占領によるパフォーマンス低下
2. ⼤量に分割されたJavaScript,CSSによるリクエスト数増加 3. Core Web Vitalsを可視化できていない
Copyright © DIP Corporation, All rights reserved. JavaScriptやCSSが過剰に分割され リクエスト数が増加していた
Copyright © DIP Corporation, All rights reserved. バンドルを可視化して改善点を特定
Copyright © DIP Corporation, All rights reserved. バンドルを可視化して改善点を特定 ➡ ⼤きなチャンクを動的インポートで切り出したり
⼩さすぎるチャンクを束ねたり、チャンク戦略を⾒直す
Copyright © DIP Corporation, All rights reserved. 📝 ⼤きすぎるチャンクは動的インポートに切り出す •
動画再⽣ボタンが押されてから動画再⽣ライブラリをインポート • 検索バーがタップされたら、検索のシートコンポーネントをインポート 📝 ⼩さすぎるチャンクは束ねる • アイコンライブラリを1つに束ねる • デザインシステムを1つに束ねる
Copyright © DIP Corporation, All rights reserved. 📝 ⼤きすぎるチャンクは動的インポートに切り出す •
動画再⽣ボタンが押されてから動画再⽣ライブラリをインポート • 検索バーがタップされたら、検索のシートコンポーネントをインポート ✅ 初期転送量を削減し、ロード時間を改善 📝 ⼩さすぎるチャンクは束ねる • アイコンライブラリを1つに束ねる • デザインシステムを1つに束ねる
Copyright © DIP Corporation, All rights reserved. もうちょっとミクロな問題への取り組みも 1. 計測‧広告タグのメインスレッド占領によるパフォーマンス低下
2. ⼤量に分割されたJavaScript,CSSによるリクエスト数増加 3. Core Web Vitalsを可視化できていない
Copyright © DIP Corporation, All rights reserved. New RelicでCore Web
Vitalsを可視化
Copyright © DIP Corporation, All rights reserved. ちょっとずつ改善出来てきている • ⾚(Poor)
→ ⻩(Needs Improvement) 、 ⻩(Needs Improvement) → 緑 (Good) になった。⼀段ずつ改善中 • パフォーマンスは、⼩さなベストプラクティスの積み重ね • 正直、TypeScript単体の部分での改善はあまり出来なかった tsconfigの "verbatimModuleSyntax": true , "isolatedModules": true などの 挙動がモダンバンドラーのデフォルトになっている • TypeScript, Viteの最新のエコシステムに乗ること⾃体が⼤きな最適化になった
dip_tech Copyright © DIP Corporation, All rights reserved. 最後に
Copyright © DIP Corporation, All rights reserved. まだまだ道の途中です パフォーマンス改善の余地はまだ沢⼭あります。 リニューアルしきれていない機能もあります。
テスト、デザインシステムなど、まだまだ整えるところもあります。
We are hiring ⼀緒に変⾰に挑戦する仲間を募集中です!
More Decks by Hayato Yokoyama
See All by Hayato Yokoyama
「型ガードしたのにnullable」から卒業する
hayato_yokoyama
0
160
AIが特別じゃなくなった時代に、作ることを楽しもう
hayato_yokoyama
0
42
AIのためのテスト戦略 〜TDDが難しいフロントエンド開発でのアプローチ〜
hayato_yokoyama
0
340
実はすごいスピードで進化しているCSS
hayato_yokoyama
0
270
Next.js AppRouter × GraphQL 〜 夢見た理想と現実の課題 〜
hayato_yokoyama
0
190
フロントエンドテストを書きやすくするために工夫したこと
hayato_yokoyama
1
100
Other Decks in Technology
See All in Technology
Claude Codeで作ったアプリを安全に公開する/Built with Claude Japan 2026
yoshidashingo
0
250
AI時代における医療情報システムのセキュリティ / Security of Healthcare IT Systems in the AI Era
henryofficial
0
170
AIネイティブ組織の作り方。1人のPOとAIから始める、自社での実験
ama_ch
1
430
セキュリティ専任チームなしで攻撃を先回りするSREが実践したSIEM on Amazon OpenSearch Service
cscengineer
PRO
1
880
会社説明資料_最新版
demaecan
0
32k
Reticulum, le réseau cypherpunk dont vous avez besoin !
rlifchitz
0
140
Agent Harnessはどう作る?事例から学ぶAI Agentの設計思想
sergicalsix
0
300
Claude Codeで新規事業を伸ばせるか? Zennの試行錯誤の記録
wadayusuke
2
180
狙われているAPIの脆弱性!今こそ手をつけるべき根本的な対策とは?
nagix
0
130
The Author Pays
hiccupps
0
210
Quick Automate | 目指せ Quick マスター 12
inariku
PRO
1
110
顧客合意を取りながら進めるAWSコスト削減の実践
optim
0
170
Featured
See All Featured
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
460
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.2k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
560
My Coaching Mixtape
mlcsv
0
390
For a Future-Friendly Web
brad_frost
184
11k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
KATA
mclloyd
PRO
35
16k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1.1k
First, design no harm
axbom
PRO
2
1.4k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k