かすみん日記

暇なときに何か喋ります

自作したSafari拡張機能をAppStoreに公開せず使用する

概要

Chrome/Firefoxはググれば情報がたくさん出てくるが、Mac Safariについては全然情報がなかったのでメモ。

自作したSafari extensionをAppStoreに公開せず使用できるようになるまでの道順を以下に示す。

chrome拡張機能は作成済みとして、ストア公開とかはやらない前提。 あとiOSも対象外。Macのみ。

環境

手順

前提準備:chrome用の拡張機能を作成

準備済みの方はスキップして下さい。 そうでない方は、以下にサンプルを置いておくので、コピペしてファイルを用意して下さい。

まず、ディレクトリを作成。とりあえず名前はsample01/としておく。

mkdir sample01

エディタで開くなどして、以下の内容のファイル(2つ)を作成します。

manifest.json:

{
  "name": "サンプル01",
  "description": "Safari拡張機能のテストです",
  "version": "1.0",
  "manifest_version": 3,
  "action": {
      "default_popup": "popup.html"
  },
  "icons": {
    "128": "icon.png"
  }
}

popup.html:

<p>Sample 01</p>

あと、必須ではないですが、後にエラーメッセージが出て少し気になるので、アイコンも用意しておきます。 以下の画像をDLでいいので、icon.pngという名前でsample01/に配置します。

icon.png

以上で準備完了。

chrome拡張機能Safari用にconvert

chrome拡張機能のソースが入っているディレクトリをsample01/として話を進める。

まず、xcodeを持ってない方はインストールして下さい(確か標準でインストール済みではなかったはず)。

xcodeに付いてくる以下のコマンドで、拡張機能chrome用 -> safari用にconvertします。

xcrun safari-web-extension-converter sample01

以下のようなメッセージが出力され、xcodeが起動したら成功。

 % xcrun safari-web-extension-converter ./sample01
Xcode Project Location: /Users/<ユーザ名>/〜〜〜
App Name: サンプル01
App Bundle Identifier: com.yourCompany.-----01
Platform: All
Language: Swift

アイコンがないとエラーメッセージも出ますが、無視して進めても問題ないです。

xcodeが起動せず、なんか長文のエラーメッセージが出た人は、下記コマンドでxcodeをアップデート。

xcodebuild -runFirstLaunch

それでも解決しない場合はググって下さい。

成功した人は以下のようにxcodeが起動しているはず。

また、sample01/と同じ階層に、manifest.jsonnameで指定した名前サンプル01ディレクトリが作成されている。 その中にあるサンプル01.xcodeprojをFinderからダブルクリックしてもxcodeを開けます。

拡張機能に署名

この手順はスキップ可能です。 しかし、署名を行わないと、Safariを再起動するたび拡張機能を再インストールしなければならないので面倒です。

先ほど開いたxcodeにて、左のサイドバーの一番上になるアプリ名サンプル01をクリックします。

そして、中央上部の「Signing & Capabilities」タブを選択します。

中央の左側「TARGETS」で「サンプル01 (macOS)」を選択し、中央の「Signing」>「Team」のプルダウンで「<名前> (Personal Team)」を選択します。 これは自分が持っているApple IDのことです(多分)。

「TARGETS」の「サンプル01 Extension (macOS)」でも同じく「Team」を変更します。

署名の作業は以上で終了です。

拡張機能のビルド&実行

Xcodeのウインドウ上部のメニューバーにて、Schemeを「サンプル01 (macOS)」に切り替えます。 「Product」>「Scheme」からも変更可能。

あとは、メニューバーの「▶」アイコンを押下するか、「Product」>「Run」にてアプリを実行します。

「Build Succeeded」と表示されれば成功です。

Safari拡張機能の方ではなくて、アプリの方のウインドウが表示されますが、こっちはcmd + Qで終了してOKです。

Xcodeの方ももう使わないのでcmd + Qで終了してOKです。

Safari拡張機能を使う。

Safariを開いて、cmd + ,押下するか「Safari」>「環境設定...」を開きます。 環境設定の「拡張機能」タブを開くと、先ほど作成した拡張機能が表示されているので、チェックを付けて有効にします。

そうすれば、Safari上部のメニューバーに描く超勤追うのアイコンが表示されるはずです。 なければ「ツールバーをカスタマイズ」から追加する。

最後に、拡張機能アイコンをクリックしてpupup.htmlの内容が表示されたら成功です。

また、Safariを再起動しても拡張機能がインストールされたままになっていることも確認して下さい。

以上です。お疲れさまでした。

補足

署名しない場合

拡張機能に署名がない場合は、そのままではSafariにインストールできません。

「開発」>「未署名の拡張機能を許可」で許可して下さい。

ただ、Safariを再起動するたびにのこ許可のチェックは外れるので、署名なし拡張機能を継続的に使うのはかなり面倒です。

拡張機能のアンインストール

ビルドで作られたアプリは以下にあるようなので、アプリごと削除。

~/Library/Developer/Xcode/DerivedData

DerivedDataの削除についての記事:

dev.classmethod.jp

参考

xcodeでの署名: anond.hatelabo.jp

chrome用からSafari用へのconvertコマンド: applech2.com

古い: qiita.com