iPhoneのキーボードで「フルアクセスを許可」をオンにした瞬間、Appleの警告画面で半分の人がそっと閉じる理由

Aijie ShuFigurich 創業者 · UnimeType 開発者更新3分で読めます

iPhone 向けのサードパーティ製キーボードを開発していて一番胃が痛くなるのは、レイアウトのバグを直しているときではありません。友人が目の前でアプリを初めてインストールし、「設定 → 一般 → キーボード」を開いて**「フルアクセスを許可(Allow Full Access)」**のスイッチをオンにした瞬間を見守るときです。

スイッチに触れた途端、iOS は画面中央に「フルアクセスを許可すると、開発元にこれまで入力した内容や今後入力する内容(クレジットカード番号や住所などの個人情報を含む)の送信が許可されます」という強烈な警告ダイアログを表示します。

自分たちのテスト端末で初めてこのポップアップを見たときでさえ、思わず「うわっ」と声が出たほどです。実際、多くの人がその場で「許可しない」をタップし、スクリーンショットを撮って同じ質問を送ってきます。「なんでキーボードにこんな怖い権限が必要なの? これをオンにしたら、私が打った文字が1文字ずつ全部サーバーに送られるの?」と。

なぜ Apple はあんなに怖い一括警告を出すのか

あの警告ダイアログがなぜあのような書き方になっているのかを理解するには、iOS がキーボード拡張機能(Keyboard Extension)をどのようにサンドボックス隔離しているかを見る必要があります。

iPhone や iPad でサードパーティ製キーボードを追加した直後のデフォルト状態(フルアクセスがオフの状態)では、Apple はそのキーボードを「完全オフラインの隔離サンドボックス」の中に閉じ込めます。この状態では、キーボードは外部へのネットワーク通信が1バイトもできないだけでなく、同じ iPhone 内にある UnimeType 本体アプリのコンテナから言語設定やログイン状態を読み取ることすらできません。Apple はこの2段階の権限モデルを公式の Custom Keyboard 開発者ガイド(RequestsOpenAccess)で定義しています。

つまり、iOS には「完全にオフラインで隔離する」か「フルアクセスをオンにする」かの2択しか存在せず、「ユーザーがツールバーの変換ボタンを押したときだけ通信を許可する」といった中間レベルの OS 権限が用意されていないのです。そのため、本体アプリの設定を読み込んだり、ボタンを押したときに AI モデルを呼び出したりするキーボードはすべて「フルアクセス」を要求せざるを得ず、iOS はそのすべてに対してまったく同じ「最悪のケースを想定した警告文」を表示します。

言い換えれば、「フルアクセス」とは iOS がキーボード拡張機能に技術的に何を許可するかという上限であり、実際にいつテキストが端末の外へ送信されるかは、キーボード側の設計と実装によって決まります。

UnimeType が送信するもの、絶対に送信しないもの

私たちが iOS 版 UnimeType を設計したとき、「通常のタイピング」と「明示的な AI アクション」の間に絶対的な境界線を引きました。

フルアクセスがオンになっていても、テキストボックスの中で文字を打ったり、Backspace で消したり、カーソルを動かしたりする通常のキー入力はすべて iPhone 内でローカルに完結します。ただタイピングしているだけでバックグラウンド通信が発生することは一切ありません。

iOS の「フルアクセスを許可」設定スイッチと、UnimeType における端末内キー処理・明示的アクション境界の比較

ネットワークリクエストが発生するのは、あなたが文を打ち終えて——たとえば Slack で sakki staging de API no response kakunin shitakedo, timeout dake ashita mou ikkai miyou と打ったり、海外の同僚へのメッセージに Just take the Yamanote Line to ebisu eki West Exit と書いたりしたあと——AI 処理への同意を与えたうえで、キーボード上部の Convert(変換)、Polish(推敲)、Explain(解説)のいずれかのボタンを明示的にタップした瞬間だけです。

さらに、セキュリティとプライバシーを守るため、以下の保護を徹底しています(詳細な仕様はプライバシーと保護対象コンテンツ、設定手順はiPhone・iPad のセットアップガイドで公開しています):

  1. パスワード欄(セキュア入力フィールド)での自動停止:iOS がパスワード欄やクレジットカード入力欄と判定したフィールドでは、自動的にシステム標準キーボードへ切り替わるか AI アクションが無効化されます。
  2. 送信前の端末側シークレットマスキング:万が一、選択したテキストの中に API キーやトークン、パスワードらしき文字列が含まれていた場合、ネットワークへ出る前に端末側でマスク処理を行います。
  3. 本文ログの非保存とゼロデータ保持(zdr: true / store: false):UnimeType サービス経由のリクエストでは、アカウントデータベースにメッセージ本文を保存せず、上流のモデルプロバイダーに対しても学習・保存を行わない設定(zdr: true / store: false)でリクエストを送信します。

もしキーボードを開いて普通に文字を打ち、そのまま送信ボタンを押したなら、3つのアクションボタンには一度も触れていないため、UnimeType から外部へ送信されるテキストはゼロです。

この境界線がわかれば、「いつフルアクセスをオンにし、いつオフにしておくべきか」も明確になります。ネットワーク経由の変換・推敲・解説を使う予定がない場合や、会社のセキュリティ規定でサードパーティ製キーボードや外部 AI 処理が禁止されている社用 iPhone では、フルアクセスをオフにするか iOS 標準キーボードを使ってください。

そして、日々の日英混在チャットを快適にするためにフルアクセスをオンにする場合は、「変換したい数単語だけを選択してアクションを押す」「パスワードやリカバリーフレーズ、決済情報では絶対に AI アクションを押さない」という2つの習慣を守るだけで、安全かつ最小限の範囲で活用できます(私たちが AI キーボードを使わない場面についてはAIキーボードを使わない4つの作業もあわせてご覧ください)。