どうも、くじらいどです。
今回は、Chrome拡張機能のV2からV3への移行についてお話ししたいと思います。
2023/06/12現在は、V2が使用可能ですが、Chrome拡張機能のV2が近いうちに使えなくなると思いますので、これからchrome拡張機能を作成しようとしている方は、V3(バージョン3)での開発をおすすめ致します。
また、ChatGPTでchrome拡張機能を作成してもらう場合は、V2で作成される可能性がありますので、V3で作成してくださいと追記しておきましょう。
V2からV3への変更点
- バックグラウンド処理:
- V2: バックグラウンドスクリプトやイベントページを使用。
- V3: サービスワーカーが導入され、バックグラウンドタスクを実行。
- manifest.jsonの変更:
- V2:
"background"
キーでバックグラウンドスクリプトやイベントページを指定。 - V3:
"background"
キーでサービスワーカーファイルを指定。
- V2:
- イベントハンドリング:
- V2: バックグラウンドスクリプトやイベントページ内でイベントをハンドリング。
- V3: サービスワーカー内でイベントをハンドリング。
- パフォーマンスとオフライン動作:
- V2: バックグラウンド処理が制限され、パフォーマンスやオフライン動作に制約がある。
- V3: サービスワーカーにより、パフォーマンスの向上とオフラインでの動作が可能になる。
- 追加機能の利用:
- V2: プッシュ通知やバックグラウンド同期など、一部の高度な機能が制限されることがある。
- V3: サービスワーカーを使用することで、より高度な機能を実現できる。
- コードの変更:
- V2のバックグラウンドスクリプトやイベントページ内で行っていた処理を、サービスワーカー内に移行する必要がある。
- イベントハンドリングやバックグラウンドタスクの実装方法が変わる。
manifest.jsonファイルの変更点
それでは、まずmanifest.jsonファイルの変更点をコードも交えて見ていきましょう。
V2のmanifest.json
{
"manifest_version": 2,
"name": "My Extension",
"version": "1.0",
"description": "This is my extension.",
"permissions": [
"tabs",
"http://*/*"
],
"background": {
"scripts": [
"background.js"
],
"persistent": false
},
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"js": [
"content.js"
],
"run_at": "document_idle"
}
],
"browser_action": {
"default_popup": "popup.html",
"default_icon": {
"16": "icon16.png",
"48": "icon48.png"
}
},
"icons": {
"16": "icon16.png",
"48": "icon48.png",
"128": "icon128.png"
},
"manifest_key": "value"
}
V3のmanifest.json
{
"manifest_version": 3,
"name": "My Extension",
"version": "2.0",
"description": "This is my extension.",
"host_permissions": [
"tabs",
"http://*/*"
],
"background": {
"service_worker": "background.js"
},
"action": {
"default_popup": "popup.html",
"default_icon": {
"16": "icon16.png",
"48": "icon48.png"
}
},
"icons": {
"16": "icon16.png",
"48": "icon48.png",
"128": "icon128.png"
},
"permissions": [
"scripting"
],
"manifest_key": "value"
}
変更点は、いくつかあります。
V3では、manifest_version
の値は3に設定されます。
V3では、バックグラウンドスクリプトはbackground
フィールドのservice_worker
フィールドにファイル名を指定します。
V3では、ブラウザアクションはaction
フィールドで定義されます。
ちなみにV2では、browser_action
でした。短くなっていますね。
- V2では、必要なパーミッションは
permissions
フィールドに配列として指定します。 - V3では、必要なパーミッションは
host_permissions
フィールドに配列として指定します。また、APIの特定の機能に対しては、permissions
フィールドを使用して許可をリクエストする必要があります。
上記のように、V3のmanifest.jsonに移行するには、いくつかの変更をする必要があります。
下記に公式のmanifest.jsonの移行に関するドキュメントのリンクを貼っておりますのでご確認ください。
メソッドの変更点
廃止されたメソッド(一部の例)
chrome.extension.onRequest
– 代わりにchrome.runtime.onMessage
を使用してください。chrome.extension.getBackgroundPage
– 代わりにバックグラウンドスクリプト内の関数やイベントハンドラを直接呼び出してください。chrome.extension.getURL
– 代わりにchrome.runtime.getURL
を使用してください。
新しく導入されたメソッド(一部の例)
chrome.scripting.executeScript
– Content Scriptを実行するための新しいメソッドです。chrome.scripting.insertCSS
– CSSを注入するための新しいメソッドです。chrome.tabs.query
– タブをクエリ(検索)するための新しいメソッドです。
今後、廃止されるメソッドが追加になったり、新しいメソッドが追加されたりするばあいがありますので詳しくは、公式ドキュメントをご覧ください。
まとめ
いかがでしたでしょうか。V3になって間もない事もあり、まだV4が誕生するのが結構先かと思いますので、この際にchrome拡張機能開発に入門してみるのも良い機会かなと思います。
普段、私たちがよく使うchromeブラウザで動作するので、結構役に立つchrome拡張機能も作れるかと思います。
もっとchrome拡張機能の中身について知りたい方は以下の記事ご覧いただければ幸いです。
コメント