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
63
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.5k
Vue.jsの今までをざっくり
cyber_snufkin
1
2.7k
PWAの"A"から始まる話
cyber_snufkin
2
1.2k
Other Decks in Technology
See All in Technology
Oracle Base Database Service:サービス概要のご紹介
oracle4engineer
PRO
1
20k
[OCI Technical Deep Dive] OCIで生成AIを活用するためのソリューション解説(2025年8月5日開催)
oracle4engineer
PRO
0
130
LLM時代の検索とコンテキストエンジニアリング
shibuiwilliam
2
770
datadog-distribution-of-opentelemetry-collector-intro
tetsuya28
0
130
Telemetry APIから学ぶGoogle Cloud ObservabilityとOpenTelemetryの現在 / getting-started-telemetry-api-with-google-cloud
k6s4i53rx
0
160
GCASアップデート(202506-202508)
techniczna
0
210
AIは変更差分からユニットテスト_結合テスト_システムテストでテストすべきことが出せるのか?
mineo_matsuya
5
2.6k
AWSの最新サービスでAIエージェント構築に楽しく入門しよう
minorun365
PRO
9
490
Engineering Failure-Resilient Systems
infraplumber0
0
130
MCPサーバーを活用したAWSコスト管理
arie0703
0
130
AIに頼りすぎない新人育成術
cuebic9bic
3
340
九州の人に知ってもらいたいGISスポット / gis spot in kyushu 2025
sakaik
0
200
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Speed Design
sergeychernyshev
32
1.1k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Site-Speed That Sticks
csswizardry
10
780
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
YesSQL, Process and Tooling at Scale
rocio
173
14k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
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で公開しますー