メモ。
Microsoftのこちらのブログを読んで。
In most cases, existing extensions built for Chromium will work without any modifications in the new Microsoft Edge
というのを見て、半信半疑で試してみた。
実際やってみると、必要な作業としてはMicrosoft Edge Addon Store に公開する作業だけで、ほんとに既存のChrome拡張のソースコードをそのまま使うことができた。
chrome.tabs
や chrome.storage
などのAPIがEdgeでもそのまま動く。
なお、記事執筆時点で新版 Microsoft Edge および Addon Store はベータ版という位置付け。
ベータ版 Edge はここからダウンロードできる→https://www.microsoftedgeinsider.com/ja-jp/download/
できたもの
こちらが以前作ったChrome拡張:
同じものを今回 store に公開したもの:
https://microsoftedge.microsoft.com/addons/detail/cepmaeppcipafbfjonahpohfmolliblp
(なぜかアイコンの背景が青い)
store への公開手順
Microsoft Developer Account を登録する
Partner Center Developer Dashboard にアクセスするとアカウント登録を求められる。
GitHub アカウントでも登録できる。
もろもろ必要事項を入力する。
Extension を登録する
「Create new extension」からパッケージ(.zip)をアップロードし、Chrome ウェブストアのように必要事項を記入していく。
記載する内容はだいたいこんな感じ。
- Availability
- パッケージをストアに公開(Public)するか、URLを知っている人だけ利用可能(Hidden)にするか
- Properties
- 拡張のカテゴリーや、個人情報を収集するかどうか。収集する場合はプライバシーポリシーが記載されたサイトへのURLが必要
- Store listings
- store に公開したときのロゴや説明文を載せる
Chrome拡張として公開済みの場合、Edge用に新たに必要になるのはおそらく以下の2つの画像だけで済むはず。
- 300 x 300 のロゴ
- 440 x 280 のプロモーション画像(Small promotional tile)
後者については、今のところstoreのどこにも表示されないので謎。
補足
以下、作りながら調べたこととかハマったこと。
注意:個人アカウントの場合、「Publisher display name (Company Name)」は個人名を入れた方が良い
ここの項目は、storeで公開したときに拡張名のすぐ下に表示される。
そのため、(Company Name)とあるが Account type が Individual であれば自身の名前やニックネームを付けた方が良い。
また、フォームにも書いてあるが、この項目を更新した際はそのままだとstoreには反映されず、拡張側の再Publishも必要。無意味にバージョンを上げる羽目になる。
storeへの公開には審査が必要で、2~3日待たされる
初回だけでなく、パッケージのアップデート時も同じぐらいの日数を要した。
開発者向けのドキュメントはどこ?
https://docs.microsoft.com/en-us/microsoft-edge/extensions-chromium/
このページから始まる、 Extensions(Chromium)
というセクションにまとまっているよう。
本当にすべてのChrome拡張が動くの?
Port Chrome Extension To Microsoft (Chromium)Edge - Microsoft Edge Development | Microsoft Docs
によると、
The Extension APIs and manifest keys supported by Chrome are code-compatible with Microsoft Edge. However, Microsoft Edge does not support the following Extension APIs:
chrome.gcm
chrome.identity.getAccounts
chrome.identity.getAuthToken
chrome.identity.getProfileUserInfo
chrome.instanceID