← 記事一覧

アプリ制限アプリは安全?どのアプリを選んだかは見られているのか

iPhoneでは、Appleのスクリーンタイム関連フレームワークの上に作られたブロックアプリは、あなたが選んだアプリを見ることができません。 ポリシーの問題ではなく、構造の問題です。タップしているあの選択画面を描いているのはiOSで、アプリの手元に返ってくるのは不透明なトークンの集まり。名前もバンドルIDもアイコンも入っていない、封のされた取っ手です。アプリはトークンをOSに渡し返してブロックを立てられますが、開くことはできません。アプリごとの使用時間も受け取りません。信じるかどうかを問われずに済む、数少ないプライバシーの主張であり、何かを入れる前に知っておく価値があります。

スクリーンタイムの設定画面が表示されたiPhone

ブロックアプリで「アプリを選ぶ」とき、実際に何が起きている?

想像とはほとんど違うことが起きています。

まともなiPhone向けブロックアプリはすべて、Appleの3つのフレームワークの上に立っています。許可と選択のためのFamilyControls、ブロックそのものを立てるManagedSettings、スケジュールとしきい値のためのDeviceActivityです。流れはこうなります。

  1. アプリがスクリーンタイムの認証を求めます。あなたはFace IDかパスコードで承認する。目に見える許可はこの1回です。
  2. アプリが選択画面を出します。ここが肝心なところで、その画面を描いているのはアプリではありません。OSのビューです。あなたのアプリ一覧を描画しているのはiOSで、しかもサードパーティ製アプリからは読み取れない境界の向こう側で描かれています。開発者が用意しているのは外枠だけで、中身には触れません。
  3. 選び終えて画面を閉じます。アプリが受け取るのはFamilyActivitySelection、つまりトークンの袋です。

直感が壊れるのは3番目です。アプリに一覧を渡したように感じます。渡していません。あなたが一覧を渡したのはiOSで、iOSがアプリに渡したのは引換証の束です。

不透明なトークンとは、要するに何?

クロークの番号札を思い浮かべてください。番号札はコート1着とちょうど対応していて、そのコートに対して働きかけられます。札を返せばコートが出てくる。けれど札そのものは、コートについて何も語りません。色も、ブランドも、持ち主も。

ApplicationTokenもこれと同じです。アプリはこれをManagedSettingsに渡してこれをブロックしてくれと言い、DeviceActivityに渡してこれが15分を超えたら教えてくれと言い、いくつ持っているかを数え、明日また同じブロックをかけ直すために保存できます。名前にもアイコンにもバンドルIDにも使用時間にも変換できません。しかもトークンにはスコープがあります。同じアプリでも、別のブロックアプリの中では別のトークンになるので、サービスをまたいで同一人物をひもづける材料にはなりません。

でも、アプリ名もアイコンも表示されている。なぜ?

プライバシーの主張はただの宣伝文句だろう、と多くの人を納得させるのがこの反論で、その答えは見事です。SwiftUIには、トークンを受け取って正しいアプリ名とアイコンを画面上に描画するLabelビューがあります。描かれる場所は、OSが管理しているビューの内側です。ピクセルはアプリの画面に現れますが、その文字列自体はアプリのコードに一度も入らず、ログにも残せず、どこにも送れません。

だからあなたにはInstagramが見えていて、開発者のコードには、それを指す読めないトークンが見えている。この2つは同時に成り立ちます。窓と写しの違いです。

ブロックアプリに見えるもの、絶対に見えないもの

見えるもの絶対に見えないもの
スクリーンタイムの認証を許可したこと選んだアプリが何か(名前でもバンドルIDでも)
アプリ、カテゴリ、ドメインをいくつ選んだか個々の選択のアイコンやカテゴリ
自分が登録したしきい値を超えたことアプリごとの正確な分数や使用履歴
ブロックがかかった、または外れたことアプリの中であなたが何をしたか
アプリの中に自分で入力したもの(目標、メモ、設定)閲覧履歴、メッセージ、通信の中身

正しいイメージは、そのブロックアプリが目が見えないままスイッチを握っている状態です。スイッチが倒れたことと、自分で置いたカウンターにどれくらい溜まったかは分かる。壁の向こうに何があるかは分からない。

サードパーティの使用時間が推定値どまりなのはなぜ?

同じ設計から出てくる結論であり、プライバシーという利点の正直な裏面でもあります。ブロックアプリは、生きた分数のカウンターを受け取りません。受け取るのはDeviceActivityに登録したしきい値です。選択したアプリがこの期間内で5分に達したら知らせてくれ、という登録に対して、超えたタイミングでiOSが呼び返してくる。つまり使用時間は、どのしきい値が発火したかから逆算されています。さらにiOSが測っているのは一定期間の累計であって1回ごとではないので、サードパーティ製アプリの側にはこのひと続きという概念そのものが存在しません。

iPhoneのアプリで秒単位のアプリ別の精度を出しているものがあるとしたら、Apple自身の端末内レポート機能を使っている(これは外へ送れないほど強く隔離されています)か、あるいは一度は疑ってみるべき経路で数字を得ているかのどちらかです。粗い数字は不具合ではなく、良いプライバシー設計の症状です。

VPNプロファイルや構成プロファイルを求めるアプリがあるのはなぜ?

FamilyControlsにできないことをやっているからで、ここで信頼の計算が本当に変わります。

VPNやコンテンツフィルタのプロファイル。 Webサイトのブロックは、ブラウザのリクエストを止める必要があり、Appleのアプリ用のブロックはSafariの通信の中までは届きません。VPNの構成は、あなたのネットワーク通信を、アクセス先のドメインを検査できるフィルタ経由で流します。Windows、Android、iOSをまたいでカバーする道具は、AppleのフレームワークがそもそもほかのOSに存在しない以上、たいていこの方式です。動きますし、正当な手法でもあります。ただし面積が根本的に大きい。そのフィルタを動かしている側は、あなたがどこへ行ったかを見られる可能性があります

構成プロファイルやMDMのプロファイル。 これは会社や学校が所有する端末のために設計された、端末管理の設定一式です。内容によっては、利用者が解除できない制限を強制でき、その端末について非常に多くのことを露出させられます。一般向けアプリが個人にこれを入れさせるのは、そもそもその関係のために作られていないものを求めているということです。

どちらも自動的に怪しいわけではありません。保護者向けの製品や、仕事用のパソコンまでカバーしなければならないブロッカーには、ほかに手がないこともあります。ただ、自分がどちらの取引をしているのかは知っておいてください。FamilyControlsのブロックアプリは、あなたについて多くを学ぶことが構造的にできません。VPN方式のブロックアプリは、信頼してくださいとお願いしています。

注意を1つ。これはiOSの話です。Androidのブロックアプリは、たいていアクセシビリティサービスとUsageStatsManagerに依存していて、どちらもパッケージ名とアプリごとの使用時間をそのまま渡します。不透明なトークンによる保証はAppleのプラットフォーム固有の性質で、そのままは移りません。

「病院で働いていて、スマホに入っているものの半分が仕事関係です。この手の集中アプリはどれも裏で自分のプロフィールを作っているんだろうと思って、ずっと入れませんでした。考えが変わったのは、あの選択画面の仕組みを読んだときです。iOSがそもそも渡していないから、アプリ側には私の選択が見えない。プライバシーポリシーとは、種類の違う約束だと思いました。」 — 奈緒(病院薬剤師・38歳)

スクリーンタイム系アプリのプライバシーは、どう見極める?

このカテゴリのアプリなら、5分でできる確認項目です。

  1. どの権限を求めているか。 スクリーンタイムの認証だけなら、範囲のはっきりした狭い許可です。VPNプロファイル、構成プロファイル、アクセシビリティの権限、通信全体へのアクセスは、どれも範囲をかなり広げます。その追加の権限で何が買えるのかを聞いてください。
  2. ブロックするのにアカウントが必要か。 アプリを1つブロックする前にログインを作らされるなら、状態がどこかへ出ています。同期のためなら問題ないこともありますが、必然ではなく選択です。
  3. 数字はどれくらい精密か。 iPhoneで分単位のアプリ別グラフが出るのは、褒めるべき機能ではなく、よく見るべき合図です。
  4. App Storeのプライバシー表示を読む。 特に、ユーザーにひもづくデータとして何が挙がっているか(英語表記は Data Linked to You)。解析やクラッシュレポートは普通ですが、利用状況が個人と結びついているもの、あるいはトラッキングに使われるデータ(英語表記は Data Used to Track You)に何かが載っているのは、話が別です。
  5. 第三者提供の記述を確認する。 行動データがよくできたアプリから漏れ出す現実的な経路は、広告SDKと計測パートナーです。
  6. その会社が消えたらどうなるかを考える。 端末内で完結する設計なら、アプリが動かなくなるだけです。クラウド型なら、あなたの履歴は誰かの買収案件の中に残ります。

Unscrolはどう役立つ?

先に正直な答えを。iPhoneでいちばんプライバシーに優れたスクリーンタイムの道具は、Appleが最初から入れているものです。 「スクリーンタイム」も「アプリ使用時間の制限」も「休止時間」も、第三者が関与せず、費用もかからず、すべてApple自身の仕組みの中で完結します。「休止時間」の時間帯と、パートナーが持っているスクリーンタイムパスコードで問題が解けるなら、それが正解ですし、ここで読むのをやめてかまいません。

Unscrolは、Appleの制限の画面が何も変えてくれなくなった場合のための、iPhoneとApple Watchのアプリです。ここまで説明してきた境界の外側ではなく、内側に作られています。

今日のスケジュールと、ゲーム、エンターテインメント、SNSというブロック対象のカテゴリを表示するUnscrolのブロック画面

決めるのは2つの数字、1日の合計1回あたりの上限です。どちらもiOSが適用します。予算のうち一度分にあたる量を使うと、選んだアプリは15分ロック。1日の予算を全部使い切ると、翌日までロックされます。睡眠や仕事のような時間帯は、スケジュールできるシールドが受け持ち、途中でオフにするのはわざと遅くしてあります。呼吸のエクササイズと待ち時間があり、ボタン1つの解除ではありません。

プライバシーについて具体的に言うと、Unscrolが求めるのはスクリーンタイムの認証だけです。VPNはありません。構成プロファイルもありません。あなたが見ている選択画面はOSのもので、アプリが受け取るのは不透明なトークンだけなので、選んだアプリも、その名前も、アイコンも、アプリごとの使用時間も読めません。ブロック対象のリストと利用時間のデータはiOSが端末内で処理し、Unscrolのサーバーには届きません。その代償はアプリの中にはっきり書いてあります。使用時間の数字はしきい値の通過から導いた推定値であって、ストップウォッチではない。この構造から出せる数字が、それしかないからです。ダウンロードは無料。任意のプレミアムでは、1日抜けたときの連続記録の保険と、同時に進められるチャレンジ枠が1つから5つに増えます。

よくある質問

アプリ制限アプリは、どのアプリをブロックしたか見えているのですか?

iPhoneでは見えません。AppleのFamilyControlsフレームワークの上に作られたブロックアプリには、アプリの正体が一切渡されないからです。アプリを選ぶときにタップしているあの画面は、アプリではなくOSが描いています。返ってくるのは不透明なトークンの集まりだけで、これはiOSに渡し返してブロックをかけるための封のされた取っ手です。名前にもバンドルIDにもアイコンにも展開できません。アプリが知れるのは選択の個数だけで、中身については何も知りません。これはポリシーの約束ではなく、OSが強制している構造です。

Appleのスクリーンタイム関連APIでいう「不透明なトークン」とは何ですか?

あなたが選んだアプリ、Webサイトのドメイン、カテゴリの代わりに立つ、それ自体には意味のない参照です。AppleのFamilyControlsフレームワークがこれを発行することで、サードパーティ製アプリは選択の中身を知らないまま選択に対して働きかけられます。トークンでできるのはiOSに渡し返してブロックをかけることと、使用時間のしきい値を設定することだけです。しかもトークンにはスコープがあり、同じアプリでも別のアプリの中では別のトークンになります。サービスをまたいで個人をひもづける用途には使えません。

VPNプロファイルのインストールを求めるアプリブロッカーがあるのはなぜですか?

たいていはWebサイトをブロックしているか、WindowsやAndroidのようにAppleのスクリーンタイム関連フレームワークが存在しない環境も対象にしているからです。ブラウザのリクエストを止めるには、通信をフィルタ経由で流すしかありません。手法としては正当ですが、端末内のブロックよりはるかに大きな信頼の譲り渡しです。そのフィルタを運用している側は、あなたがアクセスしたドメインを見られる可能性があります。構成プロファイルや管理プロファイルのインストールを求める一般向けアプリにも同じことが言えます。あれは会社所有の端末のための技術です。

そのアプリが本当にプライバシーに配慮しているか、どう見分ければいいですか?

何を要求しているかと、何を表示しているかを見てください。スクリーンタイムの認証だけを求め、VPNも構成プロファイルもアクセシビリティの権限も求めないアプリは、学べることが構造的に限られています。ブロックを使うだけでアカウント登録が必要かどうかも確認してください。そしてApp Storeのプライバシー表示で、ユーザーにひもづくデータとして何が挙がっているかを読むこと。iPhoneでアプリごとの正確な分数のグラフが出るなら、そのデータはOSが守っていない場所で扱われている可能性が高い、と疑ってかまいません。