概要
Chrome/Firefoxはググれば情報がたくさん出てくるが、Mac Safariについては全然情報がなかったのでメモ。
自作したSafari extensionをAppStoreに公開せず使用できるようになるまでの道順を以下に示す。
- 前提準備:chrome用に拡張機能を作成する
- chrome用拡張機能をSafari用にconvertする
- 拡張機能に署名
- xcodeでビルドして、Safariにインストール
- Safariでインストールした拡張機能を使う
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/
に配置します。
以上で準備完了。
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.json
のname
で指定した名前サンプル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の削除についての記事:
参考
xcodeでの署名: anond.hatelabo.jp
chrome用からSafari用へのconvertコマンド: applech2.com
古い: qiita.com