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
実例と表現で学ぶWeb Components 〜"愛される"広告表現とShadowDOM〜 ...
Search
CARTA Engineering
November 28, 2025
Technology
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
実例と表現で学ぶWeb Components 〜"愛される"広告表現とShadowDOM〜 / practical-guide-to-lovable-ads-shadow-dom
フロントエンドカンファレンス東京 x Vue Fes Japan コラボイベント
登壇者: @hako584
CARTA Engineering
November 28, 2025
More Decks by CARTA Engineering
See All by CARTA Engineering
テックリードが学生に戻って "強くてNew Game "するなら? 〜成長の攻略本〜 / techlead-newgame-spz-geekfest-2026-spring
carta_engineering
0
340
CARTA HOLDINGS エンジニア向け 採用ピッチ資料 / CARTA-GUIDE-for-Engineers
carta_engineering
0
50k
キーワードは「延命」 ― リプレイス困難システムの現実的バージョンアップ戦略 / The keyword is extending lifespan a realistic upgrade strategy for systems that are difficult to replace
carta_engineering
0
890
「何を作るか」でなく「何を解くか」 事業をエンジニアリングし、AIと共に進化する / Not What to build but What to think about Engineering businesses and evolving with AI
carta_engineering
1
550
CARTAのAI CoE が挑む「事業を進化させる AI エンジニアリング」 / carta ai coe evolution business ai engineering
carta_engineering
1
5.6k
Snowflakeとdbtで加速する 「TVCMデータで価値を生む組織」への進化論 / Evolving TVCM Data Value in TELECY with Snowflake and dbt
carta_engineering
2
940
エンジニアインターン「Treasure」とHonoの2年、そして未来へ / Our Journey with Hono Two Years at Treasure and Beyond
carta_engineering
1
960
AIに淘汰されない技術力とは?事業を進化させるエンジニアの実践知 / engineering-skills-that-ai-cant-replace-and-drive-business-evolution
carta_engineering
0
260
AIは脅威でなくチャンス。 AIと共に進化するエンジニアの成長戦略 / spz-colab-conf-2025
carta_engineering
0
360
Other Decks in Technology
See All in Technology
山手線を徒歩で一周してわかった、 位置情報アプリは「足」が最強のデバッガー
hinakko
0
160
今話題のAI「Jev」って何? 宇宙最速で学ぶ会
minorun365
PRO
21
12k
beyond jj: config & tools ecosystem
indirect
0
420
データ界隈LT祭 第1回LT登壇
taromatsui_cccmkhd
1
1.3k
AI に書かせたその API、 “信頼” できますか?
nagix
0
110
Reactの設計論
uhyo
24
13k
SREは、MCPとAutopilotをこう使え!
kazumax55
2
800
株式会社シーエーシー エンジニア向け会社紹介資料
cac
0
57k
OpenTelemetry eBPF Instrumentationの舞台裏 / Behind the Scenes of OpenTelemetry eBPF Instrumentation
ymotongpoo
4
1.3k
【技術的負債conf】事業成長に伴う技術的負債の説明責任とAIによるモニタリング、認知的負債について
i35_267
2
1.6k
HHKBエバンジェリストになる方法
941
0
100
Railsのように考える: See through the Master
snoozer05
PRO
3
850
Featured
See All Featured
Game over? The fight for quality and originality in the time of robots
wayneb77
1
280
Git: the NoSQL Database
bkeepers
PRO
432
67k
The World Runs on Bad Software
bkeepers
PRO
72
12k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Paper Plane
katiecoart
PRO
4
53k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Tell your own story through comics
letsgokoyo
1
1.1k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
The Language of Interfaces
destraynor
162
27k
Building AI with AI
inesmontani
PRO
1
1.2k
Transcript
実例と表現で学ぶWeb Components 〜"愛される"広告表現とShadowDOM〜 CARTA HOLDINGS フロントエンドエンジニア 小橋はこ(@hako584) フロントエンドカンファレンス東京 x Vue
Fes Japan コラボイベント 2025.08.25
実例と表現で学ぶWeb Components 〜"愛される"広告表現とShadowDOM〜 ねらい • Web Components がどんなものかを掴んでもらう • 世の中にこんなにWeb
Components が溢れているかを知ってもらう • “愛される” 広告表現とは? そして WebComponents 特にShadow DOMが役に立つかを実践を交えて
CARTA HOLDINGS / fluct フロントエンドエンジニア 小橋 はこ @hako584 略歴 ある日「自分をここまで育ててくれたインターネットに恩返しをしよう」
と思い立ち、アドテク企業に就職を決める。 広告業界の深層の浅瀬チャプチャプしつつ、皆が"無料のインターネット" を楽しみつつ世界よくなれ〜を模索する日々。 好きなものはかりんとう饅 頭とAngularとブラウザレンダリング周り。 過去スライド/領域 #年2回沖縄 #javascript #同人誌描き(ex) #タコライス #エッグタルト management engineering Server Data Cloud Infra Front 4000いいね!
AGENDA 01 Web Componentsの歴史とコア技術 02 実世界の採用例 / ReactやVueとの関係 03 広告×Web
Components / 愛される広告とは
01 Web Componentsの歴史とコア技術
実例と表現で学ぶWeb Components 〜"愛される"広告表現とShadowDOM〜 Web Componentsとは 3つの柱 • Custom Elements:customElements.define('my-element', class
{...}) • Shadow DOM:DOM/スタイルのカプセル化( attachShadow({mode:'open'})) • Templates/Slots:<template>, <slot> による構造再利用 期待される効果: • CSS/JSの衝突低減、再利用性、フレームワーク非依存
実例と表現で学ぶWeb Components 〜"愛される"広告表現とShadowDOM〜 Custom Element • VueやReactの ”コンポーネント”相当 ◦ 独自要素をjsで定義
◦ <my-custom> とHTML中に書く ことで、ブラウザが解釈して独自 要素をレンダリングしてくれる • 独自要素を作るだけ? ◦ そうではある ◦ React/Vueっぽいね? ◦ そうだね JSで定義 HTMLでその要素を描画
実例と表現で学ぶWeb Components 〜"愛される"広告表現とShadowDOM〜 Shadow DOM • いわゆる Scoped CSS をブラウ
ザのネイティブで実現する機能 • シャドウツリー側のCSSは切り離 されるため、外部CSSの影響を 全く受けない • ネイティブ実装のため、*{...} や img {... } のような全称セレクタ や要素セレクタの影響も受けな い ◦ 確実な分離ができる ※画像出典: MDN https://developer.mozilla.org/ja/docs/Web/API/Web_components/Using_shadow_DOM
実例と表現で学ぶWeb Components 〜"愛される"広告表現とShadowDOM〜 Templates/Slots • Vueの Slots 相当 • Reactでは
props.children 相当 • 子要素を受け渡せる ◦ 名前付きでも受け渡せる ◦ このへんは本当にVueと同じ
実例と表現で学ぶWeb Components 〜"愛される"広告表現とShadowDOM〜 • 2006–2012:jQueryプラグインと巨大 CSSの時代 ウィジェットはコピペ &グローバルJS/CSS。名前衝突・スタイル崩れ・ライフサイクル不一致が常態化。 iframeは安全だが 重く、親ページとの連携や計測が難しい。
1. 先行する “ブラウザ組み込みの部品化 ”の試み Mozilla XBL(XML Binding Language)、IEの HTML Components / behaviors(.htc)など、ベンダ固有機能で カスタム要素に振る舞いを付与。しかし互換性・保守性の壁が。 • 2011–2013:Web Components v0 提案 Shadow DOM v0 / Custom Elements v0 / HTML Templates / HTML Imports HTML自体にコンポーネントモデル 1. カプセル化 (DOM/CSSの衝突回避)配布可能性 (タグ1つでどこでも動く=広告 /決済/埋め込み向け)相互運用 (フレームワークをまたぐ共通フォーマット) アクセシビリティ内包 (部品側でARIAやフォーカス管理を設計) パ フォーマンス /安全性 (iframe依存からの脱却、境界の明確化) • 初期の紆余曲折 HTML Importsは標準から離脱 →ES Modulesへ統一。v0→v1でAPI刷新、Polyfill(ShadyDOM等)の負担が一時期課題 に。2016–2018に v1が安定実装 され実用段階へ。 • 2020-:定着のフェーズ なぜ Web Components が必要になったか(前史)
実例と表現で学ぶWeb Components 〜"愛される"広告表現とShadowDOM〜 2014→2025:かんたんな歴史 • 2014頃:v0仕様/Polymer実験期 • 2016–2018:v1仕様安定、主要ブラウザが実装 • 2020s:Lit・Stencil等のエコシステムが成熟、Design
SystemがWeb Componentsへ • 2024–2025: ◦ Declarative Shadow DOMでSSR/初期描画の課題を緩和 ◦ Vue 3ではWeb Componentsをターゲットにビルド ◦ React 19のCustom Elements強化 ◦ Scoped Custom Element Registries(進行中):名前の衝突を回避 🗣: 「いまは“実用の時代”。」
02 実世界の採用例 / ReactやVueとの関係
実例と表現で学ぶWeb Components 〜"愛される"広告表現とShadowDOM〜 実世界の採用例 : GitHub • GitHubは徐々にWeb Componentsへ 置き換わっていっています
• 特に、左上部などは全部 Web Components! • パーツごとに違う採用状況 ◦ 漸進的な採用
実例と表現で学ぶWeb Components 〜"愛される"広告表現とShadowDOM〜 実世界の採用例 : YouTube • YouTubeはかなりの部分が Web Componentsでできています。
• <ytd-*, <ytm-* 等、ほとんどが Custom Elementで作られています
実例と表現で学ぶWeb Components 〜"愛される"広告表現とShadowDOM〜 Custom Element ベースのjsだと 行数が 半分以下 & 読みやすい!
実世界の採用例 : Swiper.js • メジャーなサイトでも見る、ギャラリー用の js(Adobe, ASUS, McDonald, BYD, …) • 従来のjsベースよりもずっと読みやすく早い、 Web Components版が強い!
実例と表現で学ぶWeb Components 〜"愛される"広告表現とShadowDOM〜 React/Vue 等との関係 • React: ◦ v18以前は属性/イベント連携の扱いに癖 →
v19で改善 (Custom Elementsの受け入れが容易に) ◦ 状態管理/SSR等の強み+Web ComponentsでのUIカプセル化の組合せで利用 ▪ 他フレームワークもおよそ同様の状況 • Vue 3: ◦ defineCustomElementでSFC→Web Components化が可能 ◦ vue.config.js で isCustomElement を指定すれば外部からの導入も容易 • Angular: ◦ 最も早くからWeb Componentsを志向していた ◦ Web Components化 createCustomElement() や、プロパティバインディングも容易 • Lit/Stencil:Web Components実装専用の生産性ツール (小さなランタイム or ビルド時コンパイラ) 「“対立”ではなく“補完”」 置き換えるものではない
実例と表現で学ぶWeb Components 〜"愛される"広告表現とShadowDOM〜 いつWeb Componentsを使うべきか? 1. UI部品の「埋め込み」と「配布」をしたい ◦ サードパーティウィジェット、社内共通 UI、決済・認証ボタン(セキュア)
◦ フレームワーク横断・カプセル化 (Shadow DOM) 2. Design Systemの核 ◦ Button, Tooltip, Modal, TextField を共通化 ◦ 一旦包まれることで、各所で実装が異なるものが乱立することを防ぐ 3. マイクロフロントエンドの「独立した UI部品」として ◦ チーム間で技術を疎結合にするためのツール・明確な境界 4. コンテンツ主体のサイト( CMS、ドキュメントサイトなど)の組み込みパーツ ◦ 記事の本文中に<my-video-player video-url="..."></my-video-player>と書くだけで、動画サイトのプレ イヤーを埋め込める 5. 使いたくなったとき!
03 広告×Web Components / 愛される広告とは
実例と表現で学ぶWeb Components 〜"愛される"広告表現とShadowDOM〜 “愛される広告” • 静か:音の自動再生しない、画面がチカチカガチャガチャしない • 速い:CLS/LCPに配慮、初期負荷を最小化 • 礼儀正しい:明確な閉じる/ミュート、フォーカス管理
• 役に立つ:文脈/クリエイティブ品質、誤クリック誘発なし • 測れる:ビューアビリティ/ブランドリフト等の設計 • ・・・何より、”愛される” ! ◦ 隣の人やSNSで「ねえ見て、これ」とシェアしたくなる ◦ 新しい!楽しい! ▪ 動画や静止画などのデザイナーのこだわり部分も愛されに重要な要素だが、サイト にマッチした動きのある広告なども重要
実例と表現で学ぶWeb Components 〜"愛される"広告表現とShadowDOM〜 “愛される広告” の例 • 本当はもっとクリエイティブにこだわった実案件をお見せしたい …! ◦ 今はこれがせいいっぱい
• 「新しい!楽しい!」 の演出のため にアニメーションや透明化演出を行 う • Shadow DOMのCSS分離・レンダ リング分離で可能に • (本発表の範囲外だが) Web Animation API: WAAPI での描画 も活用 • クリエイティブ(画像や動画)も合わ せて「見たこと無い!」を演出 -> SNSでの反響は上々 ❤ ◦ 広告自体がシェアされるも のになる
実例と表現で学ぶWeb Components 〜"愛される"広告表現とShadowDOM〜 “愛される広告” • Web上のプレイアブル広告 (実際にプレイできるゲー ム広告)なども、Shadow DOM と相性が良い
◦ 分離されたレンダリングが可能 ◦ 実際にはまだまだiframeで作るケースが多い … • このようなプレイアブル広告は、いまはスマホのアプリ 向けが圧倒的に多い ◦ サイトとの連携感がもっと出せたり、遊びたいと きに全画面化なども出来るようになると楽しそ う!! ◦ まだまだアイデア段階 • 「これって広告?」って言われるようなものを!
実例と表現で学ぶWeb Components 〜"愛される"広告表現とShadowDOM〜 広告の前史 • 広告は基本、 iframeサンドボックス を利用していた ◦ 広告といえばiframeの中に出るもの…
▪ もっと古代は、 document.write で書いていた ▪ iframe + document.write なんてことも… • リッチな挙動は グローバルJS/CSS を使っていた → 体験/計測/パフォでトレードオフ。 ◦ メディア側(Webサイト側)にたくさん貼ってもらう広告タグ ◦ メディア側のCSS変更で壊れる広告(レイアウト崩れ) ◦ 演出的にどうしても、「iframeを飛び越える挙動」は必要 ▪ 衝突しまくるCSS ▪ ロードタイミングの問題で重くなりがちな DOM ▪ 分離されないDOMツリーによる構造の激しい変化 … • Shadow DOM の登場でフェーズが変わった! ◦ 衝突しないCSS分離 ◦ 共通のレンダリングツリー上での表示・非表示 (iframe不使用、軽い) ◦ 複雑すぎるz-indexからの解放・・・はまだならず ▪ とはいえ、shadow-rootについてだけ考えれば良い
実例と表現で学ぶWeb Components 〜"愛される"広告表現とShadowDOM〜 Shadow DOM が広告と相性が良い理由 • CSS衝突ゼロ設計 :Shadow DOM
+ ::part/exportpartsでホスト側カスタムも許可できる。 サイトCSSに汚染しない/されない • カプセル化と軽量化 :iframeよりも圧倒的に軽量、必要十分なサンドボックス いずれにせよ “信頼された” Webサイト・広告ベンダでだけ出すので問題ない • 遅延初期化 :IO/ROで可視時にだけ初期化。非表示時は影響なし • A11y:アクセシビリティAPI(スクリーンリーダー等)への対応も可能。iframeは読み飛ばされる 「アクセシブルな広告」も可能(責任重大だ・・・) • パフォ:iframeに比べレンダリングコンテキスト分離しないため軽い。さらに画像最適化、APNG/WEBM活用、 動画最適化、GPUフレンドリーなCSSを組み合わせることで、サイトのパフォーマンスへの影響を防ぐ
Web Components 使っていきましょう!