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
【TSKaigi2026登壇資料】バイトル」のTypeScriptリニューアル — 積み上か...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ディップ株式会社
PRO
May 22, 2026
970
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
【TSKaigi2026登壇資料】バイトル」のTypeScriptリニューアル — 積み上がったレガシーとパフォーマンスに挑む現在地
ディップ株式会社
PRO
May 22, 2026
More Decks by ディップ株式会社
See All by ディップ株式会社
【iOSDC登壇】Kotlin Multiplatformを軸にした技術戦略
dip_tech
PRO
0
61
_型ガードしたのにnullable_から卒業する.pdf
dip_tech
PRO
0
58
はじめての環境構築!デプロイ〜Docker基礎を学べるワークショップ!
dip_tech
PRO
0
52
【TSKaigi2026登壇資料】決定論的な型チェックへ Go 製コンパイラによる10倍速の裏側で stableTypeOrdering から見える並列化への挑戦
dip_tech
PRO
2
480
【新卒研修】ライブデモ + compose.yaml読解_講義資料
dip_tech
PRO
0
580
【ディップ|26年新卒研修資料】OpenAPI/Swagger REST API研修
dip_tech
PRO
0
760
【ディップ|26年新卒研修資料】Docker_ハンズオン研修
dip_tech
PRO
0
680
【ディップ|26年新卒研修資料】TDD実装演習
dip_tech
PRO
0
740
ハッカソンや個人開発で何作る? テーマ発見〜アイデア発想ハンズオン! 技育CAMPアカデミア
dip_tech
PRO
0
120
Featured
See All Featured
Bash Introduction
62gerente
615
220k
4 Signs Your Business is Dying
shpigford
187
23k
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
330
HDC tutorial
michielstock
2
860
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
490
Documentation Writing (for coders)
carmenintech
77
5.5k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
700
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
450
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
BBQ
matthewcrist
89
10k
Transcript
「バイトル」の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 ⼀緒に変⾰に挑戦する仲間を募集中です!