Otterdockのプライバシー:権限、ローカルデータ、オンラインに送られるもの
各版が求めるmacOSの権限とその理由、グループと設定の保存場所、任意の分析を含む4種類のネットワーク通信を解説します。
Otterdockはグループをお使いのMac内に保存します。グループ名、項目のパス、順序、設定はApplication Support(Mac App Store 版ではサンドボックスのコンテナ)に置かれ、アップロードされることはありません。Mac App Store 版は、サンドボックス以外の権限を一切求めません。Direct 版は、独自ポップアップやホバーをオンにした場合にだけアクセシビリティを求め、なくても動作します。ネットワークの利用は、アップデートの確認(Direct 版)、ライセンスまたは購入の検証、Creemのチェックアウトページ、オフにできる利用状況分析に限られ、Mac App Store 版の1.1.4以降では、オンにするまで分析はオフです。
Dockのユーティリティはシステムに近い場所にあるため、何が見えるのか、データがどこに行くのかを尋ねるのは当然です。このページは、Otterdockの両方の版についての完全な答えです。すべての権限、すべてのファイルの場所、すべての種類のネットワークリクエストを説明しています。アプリのソースと配布時の構成に基づいて書いており、両者に食い違いがあれば、拘束力を持つのはプライバシーポリシーです。
版ごとの権限
| Mac App Store 版 | Direct 版 | |
|---|---|---|
| App Sandbox | 常にあり | なし(標準のDeveloper IDアプリ) |
| アクセシビリティ | 要求しません | 独自ポップアップやホバーをオンにしたときだけ要求。任意 |
| ファイルとフォルダ | ピッカーまたはドラッグで追加した項目のみ(セキュリティスコープ付きブックマーク経由) | 追加した項目。標準のファイルアクセス |
| 連絡先、カレンダー、写真、カメラ、マイク、位置情報、画面収録 | 要求しない。エンタイトルメントなし | 要求しない |
| ネットワーク | 以下の目的のための送信のみ | 同じ |
Direct 版がアクセシビリティを求める理由。macOSでは、あるアプリが、別のアプリのDockアイコンをクリックしたときの動作を変えることはできません。そのクリックを検知し、Dock上のポインタ位置を知るための唯一の正式な方法が、アクセシビリティ権限です。Otterdockがこの権限を使うのは次の2点だけです。自分のグループアイコンへのクリックとホバーの検知と、ポップアップを開けるよう標準のスタックを一瞬抑止することです。ほかのウインドウを調べたり、テキストを読んだり、キー入力を記録したりすることはありません。許可しない場合や、あとでシステム設定 > プライバシーとセキュリティ > アクセシビリティで取り消した場合、Direct 版は標準のスタックにフォールバックし、そのほかはすべて動作し続けます。グローバルショートカット、ウィジェット、Dock同期、グループエディタはこの権限に依存しません。3つの操作モードとそれぞれに必要な権限は、クリックモードとホバーモードの比較で比較しています。
Mac App Store 版が求めない理由。Appleのサンドボックス内で動作し、そこではDockの監視が一切禁止されているためです。そのため、グループは標準のスタックで開き、OtterdockがDockの項目を代わりに追加できないのもそのためです。トレードオフはDirect 版と Mac App Store 版の違いにあります。
Mac内に保存されるもの、その場所
| データ | Direct 版 | Mac App Store 版 |
|---|---|---|
グループの構成(groups.json:名前、項目のパス、順序、アイコンスタイル、ショートカット、オープナールール) | ~/Library/Application Support/Otterdock/ | ~/Library/Containers/ の下にある、アプリのコンテナ内の同じ構造 |
| 生成されたグループフォルダ(Dockスタックとして表示されるフォルダ) | ~/Library/Application Support/Otterdock/Groups/ | コンテナ内 |
| スキンとキャッシュされたグループアイコン | ~/Library/Application Support/Otterdock/Skins/ とアプリのキャッシュ | コンテナ内 |
| 設定(操作モード、外観、ログイン時に起動) | 標準の環境設定(fun.savetimefor.otterdock) | コンテナ内の標準の環境設定 |
| ウィジェットのスナップショット(ウィジェット拡張機能用のグループ名、順序、アイコン) | ウィジェットと共有するApp Groupコンテナ | 同じ |
| Direct 版のライセンスキー | macOSのキーチェーン | 該当なし |
| Proの購入 | 該当なし | Appleのレシート(StoreKitで検証) |
| 分析用の識別子(分析がオンの場合のみ) | 環境設定内のランダムID。分析をオフにするとリセット | 同じ |
ここから2つのことがわかります。第一に、Otterdockが保存するのは項目のコピーではなく参照です。2GBの動画を含むグループが保持するのはパスで、グループを削除しても動画が削除されることはありません。第二に、グループはそのMacに閉じています。iCloudやOtterdockのクラウドによる同期はなく、設定 > バックアップの書き出しと読み込みが、別のマシンにグループを移す方法です。詳細と注意点はOtterdockはMac間で同期できる?にあります。
グループフォルダには、Otterdockが生成し更新するエイリアスやリンクファイルが入っています。Otterdockのものとして扱ってください。Mac App Store 版の1.1.4以降は、自分が作成した項目を追跡し、それ以外には触れませんが、Direct 版の1.1.3は同期のときにフォルダを再構築するため、手で置いたファイルが削除されることがあります。自分のファイルは自分のフォルダに置き、グループには項目として追加してください。
ネットワークに送られるもの
Otterdockは完全にオフラインのアプリではなく、そう言うのは誤解を招きます。次が、行うすべての接続です。
- アップデートの確認(Direct 版のみ)。起動時に、Direct 版は
releases.savetimefor.funにSparkleのappcastを問い合わせ、受け入れたときにだけアップデートをダウンロードします。Homebrewのユーザーは、アプリ内の確認をオフにして、brew upgradeに任せられます。Mac App Store 版は、App Storeを通じてアップデートされます。 - ライセンスの検証(Direct 版のPro)。ライセンスキーの有効化、検証、無効化は、私たちのライセンスサーバ(
api.savetimefor.fun)と通信し、そこからCreemに中継されます。リクエストには、3台までの制限を適用できるよう、キーとデバイス識別子が含まれます。キーはキーチェーンに保存され、Otterdockが初めて読み取るときにmacOSがログインパスワードを求めることがあります。そのプロンプトについては、表示される前にアプリ内で説明されます。 - 購入。Direct 版のProの購入ボタンは、ブラウザでCreemのチェックアウトページを開き、Otterdockがカードを目にすることはありません。Mac App Store 版は、Appleのアプリ内課金のシートを使います。Creemのフローのしくみと、Merchant of Recordが何であるかは、OtterdockのCreem決済のしくみで説明しています。
- 利用状況分析(任意)。有効にすると、Otterdockはイベント名(たとえば
popup.openedやsettings.changed)、アプリのバージョンと版、ランダムなインストールID、購入に関連するイベントを、TelemetryDeckとPostHogに送信します。グループ名、項目のパス、URL、ファイルの内容、ライセンスキーは送信されません。Direct 版では、チェックアウトで、ランダムIDを注文と関連づけ、どの機能が購入につながったかを把握できます。設定の説明文にそう記載されています。
分析の初期状態。Mac App Store 版の1.1.4以降:設定でオンにするまでオフです。Direct 版の1.1.3:初期設定でオンで、設定 > 利用状況分析にスイッチがあります。次の Direct 版のリリースでは、同じオフの初期設定になります。オフにするとすぐに送信が止まり、キューに溜まったイベントは破棄され、ローカルのIDがリセットされます。
それ以外にネットワークに接続するものはありません。グループのWebリンクを開くと、URLをブラウザに渡すだけです。
移動、名前変更、欠落した項目
グループはパスを保存するため、ファイルを移動したり名前を変更したりすると、その項目が壊れます。グループ内では開かなくなり、Dockのスタックでは、macOSが表示するエイリアスが解決されなくなることがあります。対処:Otterdockを開き、項目を削除して、新しい場所からもう一度追加します。グループのほかの項目とDockのアイコンには影響しません。Mac App Store 版は加えて、項目ごとにセキュリティスコープ付きブックマークを保持しており、macOSがそれを解決できなくなった場合、Otterdockはファイルの再選択を求めます。これはサンドボックスが権限の更新を求めているもので、不具合ではありません。
きれいにアンインストールする
- Direct 版:Otterdockを終了し、グループをDockから削除し(エディタで「Dockから削除」、またはアイコンをドラッグして外す)、
Otterdock.appをゴミ箱に移動して、グループを残さない場合は~/Library/Application Support/Otterdockを削除します。無効化したライセンスは、キーチェーンアクセスから削除します。先に無効化しておくと、デバイスの枠が空きます。 - Mac App Store 版:ほかのApp Storeアプリと同じように削除します。macOSがコンテナも一緒に削除します。Proの購入は、Apple Accountに残ります。
どちらのアンインストールでも、グループに追加したファイルには触れません。両方の版の完全なインストール手順は、Mac版Otterdockのインストール方法にあります。
よくある質問
Direct 版がアクセシビリティ権限を求めるのはなぜですか?
自分のDockアイコン上のクリックとポインタ位置を検知して、標準のスタックの代わりにポップアップを開き、ホバーを検知するためだけです。画面、キー入力、ほかのAppを読み取ることはありません。独自ポップアップやホバーをオンにしなければ、求められることもありません。
グループやファイルはどこかにアップロードされますか?
いいえ。グループの構成はローカルのファイルで、Otterdockが保存するのはファイルへのパスだけで、ファイルそのものではありません。グループの内容に関する情報がサーバに送信されることはありません。
Otterdockは連絡先、カレンダー、閲覧履歴を読み取りますか?
いいえ。アプリには、連絡先、カレンダー、写真、カメラ、マイク、位置情報のエンタイトルメントがなく、それらの権限を要求することもありません。
利用状況分析をオンにすると、何が送信されますか?
グループの作成やポップアップが開かれたなどのイベント名、アプリのバージョンと版、ランダムなインストールID、購入に関連するイベントです。グループ名、ファイルパス、URL、ライセンスキーは送信されません。オンにする前に、設定でもまったく同じ内容が説明されます。
Otterdockを完全にオフラインで使えますか?
グループが行うことはすべて可能です。Proの購入や復元、Direct 版のアップデートの確認、分析の送信には接続が必要ですが、アプリを使うのにいずれも必須ではありません。