Mt Range Tech
記事一覧に戻る

iPhoneのスクリーン距離で子どもの近視リスクを抑える(アプリ開発を諦めてOS標準にたどり着いた話)

2026-04-208分で読める

thumbnail
目次

問題:子どもと画面の距離

観察した行動

医学的背景

アプリでの検知を検討する

技術的な構想

想定した実装

iOSの制約という壁

バックグラウンドでのカメラアクセス禁止

なぜこの制約があるのか

前面表示でも現実的でない

解決策:OS組み込みの「スクリーン距離」機能

機能の概要

なぜOSにしか作れないのか

設定手順

ファミリー共有での運用

気づき:知られていない機能の価値

なぜこの機能が埋もれているのか

エンジニアとしての学び

チェックリスト

前提条件

設定時の確認

運用上の注意

子どもにiPhoneやiPadを渡すと、画面を顔に近づけて見てしまう――多くの家庭で見る光景だと思います。近距離視聴と近視進行の関連は複数の疫学研究で示されていて、周囲の親からもよく相談される話題です。

「距離をカメラで監視して警告するアプリを作ればいいのでは?」と技術者なら考えますが、実はiOSの設計上これをサードパーティアプリで実現するのは事実上不可能です。そして、その結論に至ってから調べ直すと、iOS 17で追加された純正機能「スクリーン距離」にたどり着きました。

本記事では、アプリ開発を検討する過程で見えてきたiOSの制約と、なぜこの機能がAppleにしか作れないのか、そして実際の設定方法までまとめます。

問題:子どもと画面の距離

観察した行動

知り合いの子どもが動画やゲームに集中するとき、iPhoneを10〜15cmくらいまで顔に近づけて見ているという話を聞きました。指摘されるとそのときは離すものの、数分後にはまた戻ってしまう、という繰り返しだそうです。

子どもが画面を近距離で見ている様子

医学的背景

調べてみると、子どもの近視進行については以下のような知見が広く共有されています。

Appleが「スクリーン距離」の閾値として採用している30cmも、この医学的推奨に整合しています。

アプリでの検知を検討する

技術的な構想

最初に考えたのは、インカメラで顔までの距離をリアルタイムに測って、近すぎたら警告を出すアプリです。iPhone X以降に搭載されているTrueDepthカメラは、IR(赤外線)ドットプロジェクタ・フラッドイルミネータ・IRカメラの組み合わせで顔の3D構造をミリ単位で取得できるため、距離の測定自体は技術的に容易です。

TrueDepthカメラの構造

ARKitの ARFaceTrackingConfiguration を使えば、検出された顔アンカーの変換行列(simd_float4x4)の平行移動成分から、カメラ原点〜顔中心までの距離を取り出すのは数行のコードで書けます。

想定した実装

当初イメージしていた実装は以下のような流れでした。

技術的にはきれいに組めそうに見えます。問題はここからでした。

iOSの制約という壁

バックグラウンドでのカメラアクセス禁止

iOSのアプリが利用できるバックグラウンド実行モードは Info.plist の UIBackgroundModes キーで指定しますが、選択肢は以下に限定されます。

カメラアクセスはこの一覧に存在しません。iOSではアプリが前面にあり、かつ画面がアクティブな間しかカメラを使えない設計になっています。ホームボタンで別アプリに切り替えたり、画面がロックされた瞬間にカメラセッションは強制的に停止されます。

iOSアプリのバックグラウンド実行モデル

なぜこの制約があるのか

この設計はプライバシー保護の観点から一貫しています。もしバックグラウンドでカメラを起こせたら、悪意のあるアプリが裏で常時撮影することを防げません。ステータスバーの緑色インジケータ(カメラ使用中を示す)も、ユーザーが今見ているアプリだけが対象になるよう設計されています。

「子どもの視力のため」という善意の動機でも、この制約を回避する正規の手段はありません。脱獄(Jailbreak)すれば別ですが、App Storeで配布可能な通常のアプリでは実現不可能です。

前面表示でも現実的でない

「アプリを前面に出している間だけ監視する」という妥協案も考えましたが、これも現実的ではありません。

つまり、「他のアプリを使っている最中に、別のアプリが距離を監視する」というユースケースそのものが、iOSのアプリモデルと根本的に噛み合わないのです。

解決策:OS組み込みの「スクリーン距離」機能

ここで発想を切り替えました。サードパーティでは無理でも、OSベンダー自身なら制約の外側で実装できます。調べたところ、iOS 17以降で「スクリーン距離(Screen Distance)」という機能が追加されていました。

機能の概要

スクリーン距離の警告画面

なぜOSにしか作れないのか

この機能がOS組み込みである必然性は、先ほどの制約の裏返しです。

サードパーティアプリでは「全画面警告を出す権限」「どのアプリが動いていてもカメラを使う権限」「映像を使わず距離だけ取り出す保証」のどれも取れないので、構造的にAppleにしか実装できないわけです。

設定手順

実際の有効化は1分で終わります。

1. 「設定」→「スクリーンタイム」を開く

2. 「スクリーン距離」を選択

スクリーンタイム内の項目として並んでいます。スクリーンタイム自体を有効化していない場合は、先にそちらをオンにする必要があります。

3. 「スクリーン距離」をオンにする

スクリーン距離の設定手順(1→2→3)

これだけです。設定後、画面を30cm以内に近づけると自動で警告が出るようになります。

ファミリー共有での運用

子ども用のデバイスに親のApple IDからリモートで設定する場合は、ファミリー共有を経由します。親のiPhoneから「設定」→「スクリーンタイム」→子どものアカウントを選択 →「スクリーン距離」をオンに、という流れです。スクリーンタイム用パスコードを設定しておけば、子どもの手元で勝手にオフにされることも防げます。

気づき:知られていない機能の価値

なぜこの機能が埋もれているのか

この機能、リリースから時間が経っているのに認知度が低く感じます。理由を考えてみると、

機能の存在を知っているだけで解決する問題というのは、意外とあるものです。

エンジニアとしての学び

今回のようなケースで毎回考えさせられるのは、「プラットフォームの制約はバグではなく仕様」という点です。バックグラウンドカメラが使えないのは不便ですが、その制約があるからこそiOSは「裏で勝手にカメラが起動しない」というセキュリティ保証を提供できています。

自分で実装しようとして壁にぶつかったとき、その壁は往々にしてプラットフォームが守っている価値の裏返しです。サードパーティで実装不可能ということは、OS純正で用意されている可能性を考えるきっかけになります。今回はそれがドンピシャで存在した、という話でした。

チェックリスト

同じように子どもの視距離が気になっている方向けにまとめます。

前提条件

設定時の確認

運用上の注意


「近距離視聴はよくない」と分かっていても、毎回口頭で注意するのは親にとっても子にとってもストレスになります。OS側が物理的に警告してくれるなら、その方が双方の摩擦が少ない解決策です。iPhone/iPadを子どもに渡している家庭で、まだ設定していない方の参考になれば幸いです。

今回の記事が役に立った、ほかにも記事が見たいという方は最新情報を公式Xで配信しているのでフォローお願いします!