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
広がれSafari Web Extensions!Safari Web Extensions ...
Search
Matsue Kenta
September 10, 2022
3.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
広がれSafari Web Extensions!Safari Web Extensions の始め方/iOSDC22
Matsue Kenta
September 10, 2022
More Decks by Matsue Kenta
See All by Matsue Kenta
Swift Charts で「良い感じ」に3変数を持つデータを表示するまでの軌跡
matsuei
0
340
Bitrise × XCTest × Codecov
matsuei
0
96
Featured
See All Featured
Context Engineering - Making Every Token Count
addyosmani
9
970
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
720
Balancing Empowerment & Direction
lara
6
1.2k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
230
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
300
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.8k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Everyday Curiosity
cassininazir
0
230
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Utilizing Notion as your number one productivity tool
mfonobong
4
320
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Transcript
広がれSafari Web Extensions! Safari Web Extensions の始め方 kenta matsue iOSDC
2022 Day0 2022-09-10
所属 ディー・エヌ・エー 仕事 ブラウザアプリSkyLeap 最近欲しいモノ MAZDA CX-60 Twitter:
@base_front Github : matsuei
None
今日は別のブラウザのお話
None
Safari Web Extensions
目次 1. Safari Web Extensions 2. 基本の構成 3. 簡単なSafari Web
Extensionsを実装
1. Safari Web Extensions
1. Safari Web Extensions Safari における拡張機能 macOS 11 or iOS
15 以降で利用可能
1. Safari Web Extensions 基本的な仕組みは その他のブラウザと共通
1. Safari Web Extensions 何が出来るのか🧐
1. Safari Web Extensions ほぼ何でも出来る! (Javascriptで出来ることなら)
1. Safari Web Extensions アイデア次第で 可能性は無限大💪
2. 基本の構成
2. 基本の構成 Safari Extension App の テンプレートを使用して説明
2. 基本の構成 File→New→Project
2. 基本の構成
2. 基本の構成
2. 基本の構成 アプリ本体 拡張機能
2. 基本の構成 まずはビルドしてみる
2. 基本の構成 アプリ本体 拡張機能
2. 基本の構成 ディレクトリの中身を確認
2. 基本の構成
2. 基本の構成 拡張機能からのデータを Appで受け取る場所 (今回は割愛)
2. 基本の構成 拡張機能を管理する json
2. 基本の構成(manifest)
2. 基本の構成(manifest)
2. 基本の構成(manifest) background Webページの状態に関 係なく実行できる Javascriptを管理
2. 基本の構成(manifest) content_script Webページの読み込み時に 実行するJavascriptを管理 ★要素の操作が可能
2. 基本の構成(manifest) permissions 拡張機能に必要な許可 例:「activeTab」で 表示しているタブへの 操作が可能になる
2. 基本の構成 実行されるJavascript mainifestの修正が必要だが ファイル名の変更 ファイルの追加も可能
2. 基本の構成 background.js content.js
2. 基本の構成 background.js content.js sendMessage onMessage.addListener .then(response) sendResponse
3. 簡単なSafari Web Extensionsを実装
3. 簡単なSafari Web Extensionsを実装 今日のお題
3. 簡単なSafari Web Extensionsを実装 Wikipediaから Javascriptを使って タイトルを削除する 「Captain America」Wikipedia: The
Free Encyclopedia. Wikimedia Foundation, Inc, https://en.wikipedia.org/wiki/Captain_America
3. 簡単なSafari Web Extensionsを実装 まずはタイトルの要素を特定
3. 簡単なSafari Web Extensionsを実装 MacのSafariでWebInspectorを起動し タイトルの要素名を特定
3. 簡単なSafari Web Extensionsを実装
3. 簡単なSafari Web Extensionsを実装 Javascriptの修正をする 要素の削除を行いたいので content.jsを修正
3. 簡単なSafari Web Extensionsを実装
3. 簡単なSafari Web Extensionsを実装
3. 簡単なSafari Web Extensionsを実装 content.js の読み込み時には 要素の取得がまだ出来ないので シンプルなこの実装では
どうするか?🧐 3. 簡単なSafari Web Extensionsを実装
background.js content.js sendMessage onMessage.addListener .then(response) sendResponse 3. 簡単なSafari Web Extensionsを実装
3. 簡単なSafari Web Extensionsを実装 background.js のメッセージを 受け取ったタイミングで実行
3. 簡単なSafari Web Extensionsを実装 実行してみる!
3. 簡単なSafari Web Extensionsを実装 失敗…
3. 簡単なSafari Web Extensionsを実装 manifest を確認
3. 簡単なSafari Web Extensionsを実装 matches: [ "*://example.com/*" ]
怪しい 🧐
3. 簡単なSafari Web Extensionsを実装
3. 簡単なSafari Web Extensionsを実装
3. 簡単なSafari Web Extensionsを実装 成功👏
3. 簡単なSafari Web Extensionsを実装 実装のポイント 1. 実行タイミングに気をつけよう 2. 困ったらmanifestを確認しよう
3. 簡単なSafari Web Extensionsを実装 これで今日からあなたも Safari Web Extensionsを 実装出来ます👍
ご清聴ありがとうございました!
Appendix 今回のコード github.com/matsuei/SafariWebExtensionsDemo 実践的な実装をしたコード github.com/matsuei/NoSpoilerHelper