iPhoneのスクリーン距離で子どもの近視リスクを抑える(アプリ開発を諦めてOS標準にたどり着いた話)
2026-04-208分で読める
子どもにiPhoneやiPadを渡すと、画面を顔に近づけて見てしまう――多くの家庭で見る光景だと思います。近距離視聴と近視進行の関連は複数の疫学研究で示されていて、周囲の親からもよく相談される話題です。
「距離をカメラで監視して警告するアプリを作ればいいのでは?」と技術者なら考えますが、実はiOSの設計上これをサードパーティアプリで実現するのは事実上不可能です。そして、その結論に至ってから調べ直すと、iOS 17で追加された純正機能「スクリーン距離」にたどり着きました。
本記事では、アプリ開発を検討する過程で見えてきたiOSの制約と、なぜこの機能がAppleにしか作れないのか、そして実際の設定方法までまとめます。
問題:子どもと画面の距離
観察した行動
知り合いの子どもが動画やゲームに集中するとき、iPhoneを10〜15cmくらいまで顔に近づけて見ているという話を聞きました。指摘されるとそのときは離すものの、数分後にはまた戻ってしまう、という繰り返しだそうです。

医学的背景
調べてみると、子どもの近視進行については以下のような知見が広く共有されています。
- 推奨視距離は 30cm以上(Harmon distance: 肘から拳までの距離が目安)
- 近距離作業が長いと軸性近視の進行リスクが高まる
- スクリーンタイムの総量自体より、視距離と屋外活動時間の影響が大きい
Appleが「スクリーン距離」の閾値として採用している30cmも、この医学的推奨に整合しています。
アプリでの検知を検討する
技術的な構想
最初に考えたのは、インカメラで顔までの距離をリアルタイムに測って、近すぎたら警告を出すアプリです。iPhone X以降に搭載されているTrueDepthカメラは、IR(赤外線)ドットプロジェクタ・フラッドイルミネータ・IRカメラの組み合わせで顔の3D構造をミリ単位で取得できるため、距離の測定自体は技術的に容易です。

ARKitの ARFaceTrackingConfiguration を使えば、検出された顔アンカーの変換行列(simd_float4x4)の平行移動成分から、カメラ原点〜顔中心までの距離を取り出すのは数行のコードで書けます。
想定した実装
当初イメージしていた実装は以下のような流れでした。
- バックグラウンドでARKitを起動
- 顔までの距離を毎フレーム測定
- 30cm以内が一定時間続いたら通知を発行
- ユーザーに「離してください」と警告
技術的にはきれいに組めそうに見えます。問題はここからでした。
iOSの制約という壁
バックグラウンドでのカメラアクセス禁止
iOSのアプリが利用できるバックグラウンド実行モードは Info.plist の UIBackgroundModes キーで指定しますが、選択肢は以下に限定されます。
- audio(音声再生・録音)
- location(位置情報)
- voip
- external-accessory
- bluetooth-central / bluetooth-peripheral
- fetch(バックグラウンド更新)
- remote-notification
- processing(BGProcessingTask)
- nearby-interaction / push-to-talk 等
カメラアクセスはこの一覧に存在しません。iOSではアプリが前面にあり、かつ画面がアクティブな間しかカメラを使えない設計になっています。ホームボタンで別アプリに切り替えたり、画面がロックされた瞬間にカメラセッションは強制的に停止されます。

なぜこの制約があるのか
この設計はプライバシー保護の観点から一貫しています。もしバックグラウンドでカメラを起こせたら、悪意のあるアプリが裏で常時撮影することを防げません。ステータスバーの緑色インジケータ(カメラ使用中を示す)も、ユーザーが今見ているアプリだけが対象になるよう設計されています。
「子どもの視力のため」という善意の動機でも、この制約を回避する正規の手段はありません。脱獄(Jailbreak)すれば別ですが、App Storeで配布可能な通常のアプリでは実現不可能です。
前面表示でも現実的でない
「アプリを前面に出している間だけ監視する」という妥協案も考えましたが、これも現実的ではありません。
- 子どもが実際に使うのは動画アプリやゲームであって、監視アプリではない
- 監視アプリを前面に出している時点で、監視対象の動画を見られない
- 画面分割(Split View)はiPadの一部アプリでしか使えず、iPhoneでは基本的に不可
つまり、「他のアプリを使っている最中に、別のアプリが距離を監視する」というユースケースそのものが、iOSのアプリモデルと根本的に噛み合わないのです。
解決策:OS組み込みの「スクリーン距離」機能
ここで発想を切り替えました。サードパーティでは無理でも、OSベンダー自身なら制約の外側で実装できます。調べたところ、iOS 17以降で「スクリーン距離(Screen Distance)」という機能が追加されていました。
機能の概要
- iOS 17以降 / iPadOS 17以降で利用可能
- TrueDepthカメラ搭載機種が対象(iPhone X以降、Face ID搭載のiPad Pro以降)
- デバイスが顔から30cm以内に一定時間近づくと、全画面で警告を表示
- 警告は遠ざけるまで解除できない(スワイプ等では閉じられない)
- スクリーンタイムの一部として設定

なぜOSにしか作れないのか
この機能がOS組み込みである必然性は、先ほどの制約の裏返しです。
- 常時監視が必要:どのアプリを使っていても動作する必要がある → アプリサンドボックスの外側で動く必要がある
- プライバシーとの両立:カメラ映像を一切保存せず、距離データだけを即座に破棄する実装をOSレベルで保証できる(Appleはスクリーン距離について、データは端末上で処理されApple側に送信されないと明示している)
- UIをオーバーレイする権限:フォアグラウンドアプリの上に全画面警告を出すには、システムUIの権限が必要
サードパーティアプリでは「全画面警告を出す権限」「どのアプリが動いていてもカメラを使う権限」「映像を使わず距離だけ取り出す保証」のどれも取れないので、構造的にAppleにしか実装できないわけです。
設定手順
実際の有効化は1分で終わります。
1. 「設定」→「スクリーンタイム」を開く
2. 「スクリーン距離」を選択
スクリーンタイム内の項目として並んでいます。スクリーンタイム自体を有効化していない場合は、先にそちらをオンにする必要があります。
3. 「スクリーン距離」をオンにする

これだけです。設定後、画面を30cm以内に近づけると自動で警告が出るようになります。
ファミリー共有での運用
子ども用のデバイスに親のApple IDからリモートで設定する場合は、ファミリー共有を経由します。親のiPhoneから「設定」→「スクリーンタイム」→子どものアカウントを選択 →「スクリーン距離」をオンに、という流れです。スクリーンタイム用パスコードを設定しておけば、子どもの手元で勝手にオフにされることも防げます。
気づき:知られていない機能の価値
なぜこの機能が埋もれているのか
この機能、リリースから時間が経っているのに認知度が低く感じます。理由を考えてみると、
- スクリーンタイムの2階層目に埋まっている(トップレベルの目立つ場所ではない)
- 「スクリーンタイム」は利用時間制限のイメージが強く、視距離の機能があるとは想起しにくい
- アップデート後に自動でオンにはならない(オプトイン設計)
- TrueDepth搭載機種限定のため、古い機種のユーザーは目にしない
機能の存在を知っているだけで解決する問題というのは、意外とあるものです。
エンジニアとしての学び
今回のようなケースで毎回考えさせられるのは、「プラットフォームの制約はバグではなく仕様」という点です。バックグラウンドカメラが使えないのは不便ですが、その制約があるからこそiOSは「裏で勝手にカメラが起動しない」というセキュリティ保証を提供できています。
自分で実装しようとして壁にぶつかったとき、その壁は往々にしてプラットフォームが守っている価値の裏返しです。サードパーティで実装不可能ということは、OS純正で用意されている可能性を考えるきっかけになります。今回はそれがドンピシャで存在した、という話でした。
チェックリスト
同じように子どもの視距離が気になっている方向けにまとめます。
前提条件
- iOS 17以降 / iPadOS 17以降にアップデートされている
- TrueDepthカメラ搭載機種(Face ID対応機)である
- スクリーンタイムが有効化されている
設定時の確認
- 「設定」→「スクリーンタイム」→「スクリーン距離」がオンになっているか
- 子ども用デバイスの場合はファミリー共有経由で設定しているか(本人に解除されないため)
- 実際に近づけたときに警告が出るか動作確認する
運用上の注意
- 警告が出ること自体を子どもに事前に説明しておく(いきなり画面が切り替わるので驚く)
- スクリーンタイム用パスコードを設定して、本人に機能をオフにされないようにする
- 30cmはあくまで下限の目安。読書姿勢や照明環境も合わせて見直す
「近距離視聴はよくない」と分かっていても、毎回口頭で注意するのは親にとっても子にとってもストレスになります。OS側が物理的に警告してくれるなら、その方が双方の摩擦が少ない解決策です。iPhone/iPadを子どもに渡している家庭で、まだ設定していない方の参考になれば幸いです。
今回の記事が役に立った、ほかにも記事が見たいという方は最新情報を公式Xで配信しているのでフォローお願いします!