安全なAndroid OS環境を子供世代に。アプリ、サイトを適切にペアレンタルコントロールする方法。

今や老若男女問わずスマートフォン（スマフォ）は生活の必需品になりつつあります。しかしながら、いきなり子供世代にスマフォを無防備に渡すことは、80歳のペーパードライバー祖父にフェラーリをプレゼントするようなものに違いありません。
私はかねてよりiOSもAndroid OSもアプリ開発等携わってきた経緯があるものの、普段使いではiOSを比較的好み子供世代にも使い古しのiPhoneを主にあてがってきました。
この記事では対応が難しいLINEアプリへの対応方法も含めて（有料アプリが必要ですが……）ご紹介して参ります。

# 1.iOSのペアレンタルコントロール

iOSにはスクリーンタイムという標準のペアレンタルコントロール機能が付加されていて、主に次のような機能を使うことになると思います。
![IMG_583B97170C98-1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/83484c7c-29dd-c0b7-d8b5-ab87726a18b8.jpeg)

1. 休止時間➡1日の使用時間制限（一括も、曜日毎も可能）
1. App使用時間の制限➡アプリごとの使用時間制限（アプリごと、ジャンルごと）❗**最低時間1分からで、使用禁止に出来ない。0分を指定しても禁止の動作にはならない**
1. 休止時間やアプリ利用時間を過ぎた後に制限を延長する機能❗**15分、1時間、終日からのみ選択可能**
1. 通信/通話の制限➡電話発信できる相手の制限
1. 無制限に使えるアプリの指定➡休止時間を無視して使えるアプリの指定。例えば電話やマップなど。
1. コンテンツとプライバシーの制限➡以下のような色々な機能が収められている。
1. 利用時間の確認

##### コンテンツとプライバシーの制限

1. アプリのインストール、アンインストールとパスワード要求
1. 許可されたApp➡Apple標準アプリの一部について使用禁止指定（例えばメール、カメラ、Safariを使用禁止にするなど）
1. Webサイトの制限（成人向けサイト制限、ホワイトリスト）
1. パスワード変更、アカウント変更の制限

## 1-1. スクリーンタイムへの不満

一見、便利であらゆるニーズを満たしているかのように見えるiOSのペアレンタルコントロール機能ですが幾つか不満もあります。

1. 使わせたくないがアンインストールはしたくないなどのアプリを起動禁止や非表示には出来ない。❗これが結構致命的で、AdGuardなどのセキュリティー関連アプリをインストールしておいても勝手に起動してOFFに出来てしまう。
1. 使わせたくないアプリをまんべんなくは指定できない（1分は使えてしまうし、自分で更に1分延長も出来てしまう）
1. 管理者が延長を許可する場合に15分、1時間、終日からしか選択出来ない。特に30分が無いのは理解不能。無段階指定できても良いと思う。
1. Webサイトの制限機能が貧弱（特に成人向けサイト制限は緩くて当てにならない）
1. iOSのセキュリティーが厳しく、サードパーティー製のペアレンタルコントロールアプリなどがほとんど無く、また機能が乏しい。
1. 管理者もiOSでなくてはならない。Android OS端末から管理設定を行う事は出来ない。

# 2.Android OSのペアレンタルコントロール

Android OSのペアレンタルコントロールはFamilyLinkと呼ばれるもので、以前からタブレットなどには入れて管理をしていたので何となく機能は知っていました。いざ、スマフォとしてAndroid OSを子供にあてがう際にスクリーンタイム世代から見た使い勝手を丁寧に確認してみました。

1. 設定を管理➡アプリインストール制限、YouTube制限、ChromeのURL制限、Google検索制限
1. App使用時間の制限➡アプリごとの使用時間制限（アプリごとのみ。「ブロック」を指定すると非表示・機能停止が可能❗）
1. 1日の利用時間の上限➡一括も、曜日毎も可能
1. おやすみ時間➡休止時間（一括も、曜日毎も可能）
1. アプリの設定➡ユーザーの追加、削除、提供元不明のアプリ、開発者オプションの可否を指定
1. 利用時間の確認


![IMG_F7E888FC6765-1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/ce761207-0234-9851-074c-502e1fd0b55a.jpeg)
![IMG_4AD3AC523A1A-1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/8e9ea53c-c094-9527-e30d-e67c2775e104.jpeg)
![IMG_67A94998B71A-1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/84494858-99ce-ae30-b751-941d78a484b2.jpeg)
![IMG_4680B5A7D8E6-1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/c35e88aa-d1eb-3373-8a6a-ce6026015949.jpeg)

## 2-1. スクリーンタイムと比較してFamilyLinkの良いところ

1. 使わせたくないアプリを非表示、非稼働に指定できる。非表示（ブロック）にすると非稼働となり機能自体しなくなる点に注意。
1. 管理者はiOS用のFamilyLinkから管理も可能

## 2-2. FamilyLinkの不満点

1. アプリのインストール制限は出来ても、**アンインストール制限が出来ない**。そのため、セキュリティー関連アプリなどを入れても勝手にアンインストールされてしまう可能性がある。
1. **Google アプリを制限できない**。Google アプリで検索したり、お勧め記事などに表示される公序良俗に抵触するコンテンツを回避出来ない。
1. Webサイトの制限機能が貧弱（特に成人向けサイト制限は緩くて当てにならない）

# 3. FamilyLinkでカバーできない部分をカバーするサードパーティアプリと設定コンプリート

自分でアプリを作っても良いのですが、既に同じようなものがたくさんリリースされていますので今回は手っ取り早くそれらを使って「2-2. FamilyLinkの不満点」をカバーしていきます。

## 3-1. サードパーティー製アプリをインストール

最終的に、以下の3アプリをインストールすることにしました。これにより、ドメインフィルター、ネットワーク利用フィルターを掛けつつ、これらのアプリを設定変更やアンインストールから保護することが可能となります。

|アイコン|アプリ名|主な機能|
|:-----------|:------------|:------------|
|![index.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/faa11919-636b-88b2-085c-94a7df224eb3.png)|AdGuard|アプリ毎のネットワーク利用制限、アダルトサイトへのDNSレベルでの制限、広告ブロック機能（私は有料版を利用しています。あしからず……）|
|![app.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/86d9f480-7261-57b6-ed3d-c7be218c9e04.jpeg)|ノートン アプリブロック|アプリ毎に起動制限、アプリ利用履歴の参照制限|
|![1 129.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/65b8e6a7-ed76-4c3f-dcdf-bab2fb826a54.jpeg)|アプリブロック|同上＋アンインストール防止、設定画面起動防止（ノートン アプリロックだと期待動作しない）|

##### 各アプリのベンダー素性等について
- AdGuardは2009年にモスクワで発足した企業とサービスで、現在の拠点はキプロスのリマソールとされています。登記がされているだけかもしれませんが、あからさまな中国企業ではないので取り敢えず及第点とみなして利用しています。また、AdGuardについてはPlay Storeからインストールが出来ないのでベンダーサイトからパッケージをダウンロードして個別にインストールする必要があります。
- ノートンはシマンテック社のブランドですが2017年にシマンテック社は偽造SSL問題でGoogle社などともめています。こちらもグレーなブランドではありますが、無名なベンダーよりは安心感があるだろうということで採用しています。
- しかし、ノートンアプリロックだけではアンインストールの防止や、設定が面の起動防止が出来ないため（名前が似ていて紛らわしいですが）アプリブロックというものも採用しています。背に腹は代えられずといった所です。

## 3-2. AdGuardの設定

![index.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/faa11919-636b-88b2-085c-94a7df224eb3.png)
- フィルタ設定をアップデート。
- 一般設定から自動起動、フィルタの自動更新をONにします。
- DNSフィルタリングをONにして、DNSサーバーは「AdGuard DNS ファミリープロテクション」にします。これにより、セーフサーチ、アダルトコンテンツブロックが機能します。
- アプリの管理設定から、以下のアプリについて「モバイルデータ通信」「Wi-Fiデータ通信」をOFFにします。これにより、アプリの抑止は出来ないとしてもネットワークアクセスを封殺できるため、公序良俗に反するコンテンツなどを表示させないことが可能となります。

1. Google アプリ

- 保護を有効にします（トップ画面の「保護は有効です。」を確認）

## 3-3. ノートンアプリロックの設定

![app.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/86d9f480-7261-57b6-ed3d-c7be218c9e04.jpeg)
- 権限の設定が随所に挟まれますが対応しつつ以下のアプリを制限対象にします。

1. Google Playストア
1. 設定（指定してもPixel 5aでは効かなかった）
1. AdGuard（指定しないと、勝手に起動して保護を無効に出来てしまう）
1. アプリロック
1. Google アプリ
1. 保護者による使用制限

- 最後に、設定から「最近使用したアプリのリストをロックする」がユーザビリティー上耐えられるという判断であればONにします。履歴から起動するとたまにロックを回避出来てしまう気がするので一応入れています。

## 3-4. アプリブロックの設定

![1 129.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/65b8e6a7-ed76-4c3f-dcdf-bab2fb826a54.jpeg)
ノートンアプリロックに似ていますし実際使っているAndroid API（パーミション）は同じだと思われますが、動作が異なるのとアンインストール防止や設定画面起動の無効化が動作するので入れています。

- アプリ実行ロックに以下のアプリを指定します。

1. パッケージインストーラ（アンインストールを抑止できる）
1. Google Playストア
1. 設定（Pixel 5aでは期待通り機能した）
1. AdGuard
1. ノートンアプリロック
1. Google アプリ
1. 保護者による使用制限

更に、それぞれの設定について通知ロックを入れておくと余計な通知も目にしなくて済みます。また、Fake機能を入れておくと起動させようとしたときにシステムエラーに見せかけることが可能です。

## 3-5. FamilyLinkの設定

##### 1. 設定を管理

- [x] Google Play➡承認を必要とする相手見：全てのコンテンツ（インストールには必ず承認が必要）
- [x] YouTube➡制限付きモード（後ほどYouTube自体を潰すものの念のため）
- [x] Google Chrome➡承認済みのサイトのみ許可する（後述のフィルタリングを信用するのであれば「全てのサイトを許可」でも可）
- [x] Google 検索➡セーフサーチ
- [x] 位置情報➡お子さまの位置情報の確認をON（管理者のGoogle Mapで位置の確認が可能）
- [x] サードパーティー製アプリの管理➡ログインする度に許可を確認をON
- [x] プライバシー設定➡ファミリーリンクのアプリのアクティビティをON 

##### 2. アプリの設定

以下のアプリは**常時利用可能**とします。それ以外は自由に設定をします。

1. AdGuard
1. アプリロック
1. ノートンアプリロック

##### 3. デバイスの詳細設定

1. 全ての権限を**OFF**にします。
1. 位置情報の設定を**ON**にします。

## 3-6. Android端末のその他設定

ホーム画面を長押しして、左にスライドしたときに表示されるGoogle アプリのおすすめコンテンツ表示をOFFにします。この設定は勝手にONにすることが出来てしまいますが、前段のAdGuardにより全てのネットワーク通信が封殺されているためコンテンツ表示事態は免れます。

# 4.手強いLINE。諸悪の根源！？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/dfe10d5f-5cbb-d881-6b6e-0a0a5c314d32.png)
LINEは本来ある程度の年齢になってから使うものだと思うのですが、最近では利用者が若年層化しています。小中学生にやむを得ずLINEアカウントを作らせてあげる状況もあるかと思います。
ところがこのLINEというアプリ、友だちとメッセージをやり取りできるばかりではなくてアプリ内WebViewが実装されており色々と忌むべき状況を生み出すのです。

## 4-1. 完全ザル状態のバックドア状態

1. メッセージに書き込まれたURLがクリッカブルになって、タップするとアプリ内WebViewからどんなサイトでも表示できてしまう。FamilyLinkで制限できるURLリストはChromeにしか有効ではないため、ブラウジングに対するURL制限はもはやザル状態です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/b029c459-62d0-8778-27f4-954402f30778.png)
⬆これはひどい。URLを書き込めばどこへでもアクセス出来てしまう！

1. 更にニュースやらVOOMと呼ばれるショート動画コンテンツなどがツールバーから選べて、中にはどう考えても子供に見せたくないようなコンテンツも含まれています。

これを打開する方法として有効なのは、AdGuardのコンテンツブロックに対するユーザールールの登録です。次のようなロジックにてカバーすることが可能となります。

## 4-2. 対応方法
### 4-2-1. AdGuard＞アプリの管理

1. URL制限しなくても良いアプリはAdGuardの「広告ブロック」をOFFにします。これにより、全てのURLにアクセス可能となります。例えば英文翻訳ツールのDeepLなどを制限なく遣わせる場合などにこのような設定を施します。

|制限不要なアプリは広告ブロックOFF、LINEはもちろんON|
|:-----------|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/2c94ef07-59d7-7947-2ac9-a16c86ef9eef.png)|

1. また、アプリ内WebViewなどの悪質なバックドアが実装されていないと分かっているアプリもOFFにするのが運用上簡単です。時間制限を掛けて遊ばせてあげても良いかなというゲームなど、例えばSlither.ioなどが該当します。
1. URL制限をしたいアプリのみ「広告ブロック」をONにします。

### 4-2-2. ユーザールール

ユーザールールでがっつりフィルターを掛けて、一部の例外だけを登録していきます。LINEのトーク、通話、ビデオ通話だけを許可してアプリ内WebViewなどによるウェブサイト表示を制限するには次のようにユーザールール設定を投入します。

||*^
@@||vos.line-scdn.net^
@@||gd2.line.naver.jp^
@@||gw.line.naver.jp^
└─ アップロード画像
@@||stickershop.line-scdn.net^
└─ 購入した？スタンプ
@@||shop.line-scdn.net^
└─ 新しいスタンプのダウンロード

何処へのアクセスが通っていて、何処へのアクセスがフィルターされたのかはAdGuardのフィルタリングログで確認出来るので、他にも必要なドメインやURLが出てきたら適宜登録すれば良いでしょう。
||で始まる登録は「禁止」を示しています。^は文末を示すデリミタとなっています。*はワイルドカードなので最初の「||*^」は全てのドメイン、URLを禁止する記述です。
その中で、3つのLINEドメインだけを許可しています。@@で始まる登録は「許可」「例外」を示しています。

|最低限必要なドメイン意外は全てフィルター対象に|
|:-----------|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/c9085ce2-ea17-585b-fdf3-ecffdfb5addc.png)|

記述ルールの詳細については[ How to create your own ad filters ](https://kb.adguard.com/ja/general/how-to-create-your-own-ad-filters#wildcard-for-tld)にて確認出来ます。

## 4-3. 対処後の動作

|WebView実装者なら一度は見る画面|
|:-----------|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/ebffc949-6edc-61ca-0393-92fd8c6bb4fe.png)|
⬆こんな感じや、⬇こんな感じで……

|悲しむクマ次郎（そんな名前？）|
|:-----------|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/681ec496-5323-16e1-7a1e-c666fa9f0630.png)|
⬆ちゃんとアプリ内WebViewからのアクセスがすべからく制限されるようになりました。

トーク、音声通話、ビデオ通話は可能です。

# 5.ニュースサイトだけは閲覧できるようにしたい

子供が成長すると、あるサイトだけ見られるようにして欲しいといった要望が上がってきます。
例えば学校の授業で使っているMicrosoft TeamsやNHKニュースのサイトだけ見たいと言った具合です。
このような場合にはフィルターを緩和する必要があり、ブロックフィルターを緩和するかホワイトリストを増やすといった方法が考えられます。

|緩和対象|緩和方法|使い勝手|
|:-----------|:------------|:------------:|
|Family Link|ドメインを指定可能。パス名を含む指定すら出来ない|❌|
|AdGuard|細かくコンテンツまで含めたフィルタリングが可能|△|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/86328cb0-81c9-8c69-af24-61a93530d3bb.png)

## 5-1.AdGuardでNHKニュースの閲覧を緩和する

NHKニュースのURLは「www3.nhk.or.jp/news」を許可することで対応出来ます。
> @@||www3.nhk.or.jp/news^

## 5-2.AdGuardでのコンテンツを指定してのフィルター

ニュースを見ていくと、勿論大人向けに作られているニュースサイトですので中には子供に見せたくない（見せる必要も無い）ニュースが結構あります。NHKニュースの場合はゴシップ的なものや極度にショッキングなニュースは無いと思いますが、特定の文言を含んだ見出しを表示させないことが可能です。

見出しはdlタグ、liタグで表現されている（ことが多い）ようですので、これをフィルターしていきます。
> ##li:contains("エッチ")
> ##dl:contains("エッチ")

こんな感じで1文言につき2つのタグ別フィルター定義を投入します。
見てお分かりの通りjQueryに慣れている人であれば、直ぐにセレクターの書式と酷似しているので対応が可能と思います。その他にも利用できる書式が多数あるので、詳細はAdGuardの[ How to create your own ad filters ](https://kb.adguard.com/ja/general/how-to-create-your-own-ad-filters#wildcard-for-tld)をご参照下さい。

## 5-3.❗注意事項❗

### 5-3-1. フィルターの精度

気をつけたいのは、例えば上記のコンテンツフィルター定義では「エッチラオッチラ」を含む見出しもフィルターされてしまいます。そこまで厳密に仕分けることは技術的に困難なので諦めましょう。

### 5-3-2. コンテンツフィルター不可

また、察しの良い方は気がついているかと思いますが、NHKニュースサイトへの制限を緩和したことにより、LINEに張られたリンクからもアプリ内WebViewを通してNHKニュースサイトにアクセス出来るようになります。所が、このアプリ内WebViewに対してコンテンツによるフィルターは効きません。
AdGuardがアプリ毎に異なるフィルターリストを適用できるようになれば、ChromeにだけNHKニュースサイトへのアクセスを緩和することが出来るようになるので、この問題は解消されるはずなのですが……記事作成の時点では対応されていません。

# まとめ

以上でAndroidスマフォを子供に渡して安心して使って貰えるペアレンタルコントロールの設定は完了です。
こうして見てくるとスクリーンタイムもFamilyLinkもまだ基本的なニーズに応えられるまでには成熟していないように思います。少なくとも以下のような機能は全てを備えていることが必須だと思います。

|機能|iOS|Android OS|対応代替方法|
|:-----------|:------------:|:------------:|:------------|
|アプリインストール制限|○|○|-|
|アプリアンインストール制限|○|❌|アプリロックで対応|
|アプリ起動禁止、表示禁止|❌一部のみ|△機能も停止してしまう|Androidはアプリロックで対応、iOSは対応不能|
|高度なアダルトサイト制限|❌|❌|AdGuardのDNSフィルタリングで対応|
|Google アプリの制限|-|❌|AdGuardのネットワーク制限で対応|
|柔軟な利用時間制限|○|○|iOSの延長30分枠は欲しい|
|位置情報の確認|△利用者に通知が入る|○|-|
|利用状況の確認|○|○|-|
|アプリ毎に無制限利用許可|○|❌|Androidではお休み時間設定が絶対|

子供に持たせるならどちらの方が安全安心か……と問われたら、アプリロックが期待動作している限りはAndroid OSでしょう。何しろ、どんなセキュリティアプリを入れておいても1分間は使えてしまうため、AdGuardなどのアプリを勝手にOFFに出来てしまうiOSは致命的に使いづらいです。
ルーター側でフィルターを掛けたとしても、Wi−Fiをオフにしてしまえばキャリア網を使ってやりたい放題なので打つ手無しといったところです。