Chromeの拡張機能をSafari向けに変換する方法(Safari 14・Xcode 12ベータ)

NOTE
本記事の方法を実行するにはmacOS Big Surのベータ、またはSafari 14ベータ及びXcode 12ベータが必要です。

macOS Big SurではGoogle Chromeなどの拡張機能をデベロッパーが簡単にSafari 14上に移植可能になるとアナウンスされている。

しかし実際のところはデベロッパーでなくてもユーザー側でちょっとした作業をすればGoogle Chrome拡張機能をSafari 14向けに変換することが可能である。

ここではSafari 14ベータ及びXcode 12ベータを使用してGoogle Chromeの拡張機能をSafariに変換する方法をまとめる。

本来この変換機能はmacOS Big Sur向けであるが、Safari 14のベータとXcode 12のベータがあればCatalinaでも利用可能。

デベロッパープログラムに登録していない僕がなぜSafari 14のベータを持っているのかは下記の記事にて。

AppleSeed Programに招待された話

なお、僕の使用しているAppleSeedプログラムのSafari 14ベータは秘密保持契約(NDA)の対象に当たるため、Safari 14特有の機能の説明やスクリーンショットは掲載せず、Safari 13で説明可能な場合はSafari 13のスクリーンショットを利用するのでご理解願いたい。

また、本記事の方法で変換した拡張機能には何らかの不具合が発生する可能性がある点に注意。

Google Chromeの拡張機能をSafari向けに変換する手順

1. macOS Catalinaの場合はXcode 12ベータをダウンロード

macOS CatalinaでChromeの拡張機能をSafari向けに変換するにはSafari 14のベータの他にXcode 12ベータが必要なので下記ページからXcode 12ベータをダウンロード。

なお、Safari 14のベータは「誰でもデベロッパーページへ行けばダウンロードできる」という話もあるが、仮に可能だったとしても規約違反のためデベロッパープログラムに登録するかAppleSeedプログラムに招待されない限り利用しない方が賢明ではないかと思う。

2. ターミナルにコンバーターをドラッグアンドドロップ(macOS Catalina)

macOS Catalinaの場合はまずXcode 12ベータを右クリックしてパッケージの内容を表示する。

パッケージの内容を表示したら下記フォルダまで移動する。

/Contents/Developer/usr/bin

中にある「safari-web-extension-converter」をターミナルにドラッグアンドドロップ。

こんな感じでsafari-web-extension-converterへのパスが入力されればOK(まだ実行はしない)。

3. ターミナルにコマンドを入力(macOS Big Sur)

macOS Big Surベータなどを利用している場合は下記コマンドの1つ目をターミナルで実行、2つ目は入力してまだ実行はしない。

sudo xcode-select -s /Applications/Xcode-beta.app
xcrun safari-web-extension-converter

4. 変換したいGoogle Chrome拡張機能を探す

これ以降の手順はmacOS Catalina&Big Sur共に共通

コマンドを入力したターミナルはそのままにして下記の場所にあるGoogle Chromeの拡張機能フォルダを開く。

~/Library/Application Support/Google/Chrome/Default/Extensions

ランダムな文字列の拡張機能フォルダが表示されるが、この中からSafari 14向けに変換したい拡張機能を地道に探す。

それぞれの拡張機能フォルダの中にはバージョン番号で始まるフォルダがあるのでバージョン番号を目安に探すといいだろう。

5. 拡張機能をターミナルにドラッグアンドドロップ

Safari 14向けに変換したいGoogle Chrome拡張機能を見つけたらバージョン番号から始まるフォルダを先ほどのターミナル画面にドラッグアンドドロップ。

6. コンバーターを実行する

ドラッグアンドドロップして正常にGoogle Chrome拡張機能フォルダへのパスが入力されたらエンターキー。

「Is this correct?[yes]」と表示されたら「YES(小文字でもいい)」と入力してエンターキー。

7. Xcodeでビルドする

ターミナルで先ほどのコマンドを実行するとXcodeが自動で開く。

もしデベロッパープログラムに登録していてコード署名が可能なら「Signing & Capabilities」のペインでコード署名を行う。

僕はデベロッパープログラムに登録していないため、コード署名はデフォルト設定のまま変更しなかった。

続いてメニューバーから「Product」>「Build For」>「Running」を選択して実行する。

8. Safari 14を起動して未署名の機能拡張を許可する(コード署名しなかった場合)

デベロッパープログラムに登録していてXcodeでコード署名を行ったのならいいが、デベロッパープログラムに登録していない場合はコード署名なしでもSafari機能拡張を利用可能な設定に変更する。

まずSafariの設定画面を開く。

「詳細」の項目の下部にある「メニューバーに”開発”メニューを表示」にチェックを付ける。

メニューバーの「開発」をクリックして「未署名の機能拡張を許可」をクリック。

9. Safari 14で変換した機能拡張を有効化して完了

Xcodeでビルドしたあと(もしくはビルドして未署名の機能拡張を許可したあと)、Safari 14を再起動して機能拡張を見てみるとGoogle Chromeから変換した機能拡張が表示されているはずだ。

NOTE
Safari 14ベータの情報の公開は禁止されているため、スクリーンショットやSafari 14の内容については掲載なし。

あとはチェックをつけて機能拡張が使用可能であることを確認したら完了。

僕は既にいくつかの機能拡張を変換したが今のところ全く問題なく機能している。

とはいえ冒頭で書いたように変換した拡張機能がSafari 14で機能拡張としてきちんと動作するかは保証できない。

コード署名がない場合の問題点

現行のSafariではコード署名がない機能拡張はSafariを起動する度にメニューバーから「未署名の機能拡張を許可」をオンにして機能拡張にチェックを付ける必要があり不便極まりない。

デベロッパープログラムに登録しているならいいが、一般ユーザーの場合はこれら一連の変換作業は機能拡張のデベロッパーに任せた方がいいだろう。

まとめ

これら一連のコンバーターを利用したメソッドが正式版のmacOS Big SurやXcode 12、Safari 14で利用可能なのかは不明だが、いずれにしろ正常にGoogle Chromeなどの拡張機能を変換できたとしてもコード署名が必要であるため、今のところ一般のエンドユーザーが無理に変換する必要はないかもしれない。