Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
vue-browscan
Search
cyber_snufkin
August 20, 2025
Technology
2
110
vue-browscan
cyber_snufkin
August 20, 2025
Tweet
Share
More Decks by cyber_snufkin
See All by cyber_snufkin
2023/10/28 Vue Fes Tokyo Vue.js プロジェクト設計のベストプラクティスを求めて
cyber_snufkin
5
3.7k
Vue.jsの今までをざっくり
cyber_snufkin
1
3k
PWAの"A"から始まる話
cyber_snufkin
2
1.3k
Other Decks in Technology
See All in Technology
LINEアプリ開発のための Claude Code活用基盤の構築
lycorptech_jp
PRO
2
1.4k
社内でAWS BuilderCards体験会を立ち上げ、得られた気づき / 20260225 Masaki Okuda
shift_evolve
PRO
1
160
Security Diaries of an Open Source IAM
ahus1
0
200
Windows ネットワークを再確認する
murachiakira
PRO
0
260
生成AI活用によるPRレビュー改善の歩み
lycorptech_jp
PRO
5
2k
Secure Boot 2026 - Aggiornamento dei certificati UEFI e piano di adozione in azienda
memiug
0
130
三菱UFJ銀行におけるエンタープライズAI駆動開発のリアル / Enterprise AI_Driven Development at MUFG Bank: The Real Story
muit
11
21k
Exadata Fleet Update
oracle4engineer
PRO
0
1.3k
A Gentle Introduction to Transformers
keio_smilab
PRO
1
100
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
7
7.1k
実録・Platform Engineering 失敗から学び、AI時代の波を乗りこなす技術
sansantech
PRO
1
100
オンプレとGoogle Cloudを安全に繋ぐための、セキュア通信の勘所
waiwai2111
3
1.1k
Featured
See All Featured
A Tale of Four Properties
chriscoyier
162
24k
Balancing Empowerment & Direction
lara
5
930
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
We Have a Design System, Now What?
morganepeng
55
8k
How to Think Like a Performance Engineer
csswizardry
28
2.5k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
460
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.3k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Optimizing for Happiness
mojombo
378
71k
エンジニアに許された特別な時間の終わり
watany
106
240k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
130
Transcript
解析ツール作ってる話
自己紹介 安積洋 (@cyber_snufkin) Software Engineer LAMP環境何でも屋 > Vueでフロントエンド(ver0.11の頃) > スマートフォンアプリ
PjM > 行動解析 > リーガルテックのフロントエンド Vue.jsはVer0.11 > Ver1 > Ver2 > Ver3 Vue Fes 2023 登壇
日常
vue-browscan SFCごとの「このCSSを理解できる最小ブラウザ」を静的解析で算出するCLI (読み:ビューブラウスキャン / Vue Browser Scan)
なぜ必要? • プロジェクトで「どのブラウザをどこまでサポートできるか」が曖昧になりがち • PostCSSのターゲット指定だけでは、実際に書かれたCSS機能を網羅できない • Vue SFCは template/script/style の多言語混在で見落としが発生
• リリース判断で「最小UAの根拠」を即提示できず、レビュー工数が増える
None
何をするツール? • SFCごと(ブロック解析→ファイル集計)に、CSS機能から最小対応ブラウザを計算 • 互換データ:@mdn/browser-compat-data(BCD) • 解析基盤:Stylelint(API) • 出力:JSON(ブロック単位)/CSV(ファイル単位) •
付加情報:ブラウザのバージョン+リリース日
どう動く?(フロー) • 1) ディレクトリを再帰走査 → .vue/.css/.scss/.less/.pcss • 2) Vue SFCを
template/script/style に分解 • 3) <style> と外部CSS系を Stylelintで解析 → 機能ID抽出 • 4) BCDで各ブラウザの最小バージョンと releaseDate を決定 • 5) usedFeatures は Blinkバージョン降順に並べ替え • 6) ブロック→ファイル→ディレクトリへ集計(Route集計は将来)
使い方(デモ想定) • pnpm vue-browscan analyze "src/**/*.{vue,css,scss,less,pcss}" --format json,csv --out ./reports
• (オプション)--upload で Google Sheets へアップロード • VUEBROWSCAN_SHEET_ID 未設定なら起動時にIDを対話入力 • CSV:ファイル1行、chrome_style / firefox_style / safari_style / edge_style / usedFeatures_top
得られる価値 • リリース会議で即答:「このコンポーネントは Safari 15 以上必須」 • レビュー効率:差分で“要件を引き上げるCSS”が一目でわかる • CIガード:既定のサポート範囲を超えたら
Fail 可能 • 説明責任:機能→最小バージョン→リリース日まで根拠付きで提示
アーキテクチャ(要点) • Node 22+ / ESM / pnpm • Plugin式:analyze(content,
context)(関数型・ステートレス) • AnalyzeResult:usedFeatures(Blink降順)/ browsers{version,releaseDate} / mimeHint / lang / startRow / rowCount • JSONはブロック単位、CSVはファイル単位(template/script/style列)
現状と次の一歩 • Done:CSV出力 / SFC分解・並列解析の土台 / Biome+Stylelint 整備 • Next:CSS機能→BCDマッピングの精度強化、releaseDate付与の拡充、ディレクト
リ集計の仕上げ(Route集計は設計ドラフト)
制約(MVP) • CSSにフォーカス(HTML/JS/TSは次フェーズ) • JS↔CSSの動的依存(v-bind()のCSS変数、DOM操作でのstyle変更)は未対応 • URLスキャン/パフォーマンス/SEO/監査系は対象外
ご清聴ありがとうございました! 反応があるようならnpmで公開しますー