dackdive's blog

新米webエンジニアによる技術ブログ。JavaScript(React), Salesforce, Python など

Chrome拡張をChromium版Microsoft Edgeに対応する

メモ。
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.tabschrome.storage などのAPIがEdgeでもそのまま動く。

なお、記事執筆時点で新版 Microsoft Edge および Addon Store はベータ版という位置付け。
ベータ版 Edge はここからダウンロードできる→https://www.microsoftedgeinsider.com/ja-jp/download/

できたもの

こちらが以前作ったChrome拡張:

同じものを今回 store に公開したもの:

https://microsoftedge.microsoft.com/addons/detail/cepmaeppcipafbfjonahpohfmolliblp

f:id:dackdive:20191226162903p:plain

(なぜかアイコンの背景が青い)

store への公開手順

Microsoft Developer Account を登録する

Partner Center Developer Dashboard にアクセスするとアカウント登録を求められる。
GitHub アカウントでも登録できる。

f:id:dackdive:20191226163615p:plain

もろもろ必要事項を入力する。

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)

f:id:dackdive:20191226164124p:plain

後者については、今のところstoreのどこにも表示されないので謎。


補足

以下、作りながら調べたこととかハマったこと。

注意:個人アカウントの場合、「Publisher display name (Company Name)」は個人名を入れた方が良い

ここの項目は、storeで公開したときに拡張名のすぐ下に表示される。

f:id:dackdive:20191226170859p:plain

そのため、(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

ということで、manifest.jsonなども互換性があるが、一部のAPIは非対応とのこと。