Skip to content

Commit 925b716

Browse files
authored
Merge pull request #1536 from future-architect/feature
youtubeの視聴をご褒美に変えた話
2 parents 5a85c54 + c288a3a commit 925b716

7 files changed

Lines changed: 133 additions & 0 deletions
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
---
2+
title: "子育てDIY:YouTubeの視聴をご褒美に変えた話"
3+
date: 2025/06/23 00:00:00
4+
postid: a
5+
tag:
6+
- Squid
7+
- Network
8+
- DIY
9+
- 育児
10+
- 子ども
11+
category:
12+
- Infrastructure
13+
thumbnail: /images/20250623a/thumbnail.png
14+
author: ys_nishida
15+
lede: "子育てをする中で、意外にも本職の知識でDIYして役に立つことってありませんか?子どもの年齢や家庭でのデバイス・IT環境も千差万別ありますが、抽象化した悩みとしては2つに集約すると思います"
16+
---
17+
# はじめに
18+
19+
子育てをする中で、意外にも本職の知識でDIYして役に立つことってありませんか?子どもの年齢や家庭でのデバイス・IT環境も千差万別ありますが、抽象化した悩みとしては2つに集約すると思います。
20+
21+
1. 子どもが夢中になっている事を後押しするためにやる事
22+
2. 子どもが夢中になっている事を制限するためにやる事
23+
24+
私の話で言えば、1はマインクラフトのサーバ構築やマルチプレイ環境の構築が当てはまり、
25+
2は本記事の主題の通り、YouTube視聴に制限をかけてご褒美にした話です。
26+
27+
# 具体的な悩み事
28+
29+
* 男の子はとにかくゲーム/YouTubeが大好き!放っておくと無限にやってしまいます!
30+
* 私の家庭では、やること自体はもちろんいいんですが、生活や体調に支障をきたすレベルに過度に依存しないルールを設けています
31+
* Nintendo Switchはみまもりアプリで時間の上限が設定できるのでそれで問題ありませんでした
32+
* 問題はテレビ/DVD含めた映像媒体です。一度つけたら最後、そんなに見たいわけでもないのに宿題/夕ご飯/風呂/歯磨きなど、とにかく自分で進められない。親が促しても『今じゃない』とかいろいろ言い訳つけて、21時過ぎてあわてて寝る準備するなんて言う日も普通にありました
33+
* そこで、『それらの準備を終わらせたらYouTubeを見ても良い』『早ければ早いほど見える時間が増える』、というルールと、それを実現するITインフラを準備しました
34+
35+
# フローチャート
36+
37+
* まず、子どもがYouTubeを見ることが出来るフローチャートはこんな感じです
38+
* 基本的には、生活の上で最低限やるべきことをやった後で、ご褒美的な位置づけに変えました
39+
40+
<img src="/images/20250623a/flowchart.png" alt="flowchart.png" width="481" height="381" loading="lazy">
41+
42+
# 構成
43+
44+
* 構成に関しては、特に難しい要素はありません
45+
46+
<img src="/images/20250623a/diagram.drawio.png" alt="diagram.drawio.png" width="591" height="341" loading="lazy">
47+
48+
* Windows はいつの頃からか、pac ファイルはローカルを参照できなくなったので、github 上に pac を公開しています
49+
* 後は Proxy コンテナを `docker compose up` するかどうかで Youtube を見えるかどうかを制御しています
50+
51+
# Config 等
52+
53+
## 子どものPC側の設定など
54+
55+
* 子どものアカウント(標準ユーザ)にて、Pac ファイルの指定
56+
57+
<img src="/images/20250623a/2025-06-12_222922.png" alt="2025-06-12_222922.png" width="1020" height="724" loading="lazy">
58+
59+
* 管理者アカウントにて、プロキシの設定を変更出来ない設定
60+
* `gpedit.msc` でグループポリシーエディタを起動
61+
62+
<img src="/images/20250623a/2025-06-12_222625.png" alt="2025-06-12_222625.png" width="400" height="204" loading="lazy">
63+
64+
* `プロキシの変更が出来ない` というポリシーを有効にする
65+
66+
<img src="/images/20250623a/2025-03-09_201437.png" alt="2025-03-09_201437.png" width="1200" height="704" loading="lazy">
67+
68+
## github に上がっているPac
69+
70+
* Pacファイル
71+
72+
```js user.pac
73+
function FindProxyForURL(url, host)
74+
{
75+
// . が含まれない場合。つまりローカルドメイン
76+
if (isPlainHostName(host))
77+
return "DIRECT";
78+
79+
// ローカルIP宛の通信は direct
80+
if (isInNet(host, "192.168.0.0", "255.255.0.0"))
81+
return "DIRECT";
82+
83+
// ドメイン名に基づくproxyの設定 基本的には www.youtube.com を向ければ問題な
84+
85+
if (shExpMatch(host, "youtube.com"))
86+
return "PROXY 192.168.11.64:10080";
87+
else if (shExpMatch(host, "*.youtube.com"))
88+
return "PROXY 192.168.11.64:10080";
89+
else if (shExpMatch(host, "youtu.be"))
90+
return "PROXY 192.168.11.64:10080";
91+
else if (shExpMatch(host, "youtubekids.com"))
92+
return "PROXY 192.168.11.64:10080";
93+
else if (shExpMatch(host, "*.youtubekids.com"))
94+
return "PROXY 192.168.11.64:10080";
95+
else if (shExpMatch(host, "*.netflix.com"))
96+
return "PROXY 192.168.11.64:10080";
97+
98+
// どこにも合致しない場合は、諦めて direct 接続
99+
return "DIRECT";
100+
}
101+
```
102+
103+
## 親のPC側でやること
104+
105+
* docker compose でプロキシを起動
106+
107+
```yaml compose.yaml
108+
services:
109+
proxy:
110+
image: ubuntu/squid:latest
111+
# volumes: # マウントは特に要りませんでした、細かくホワイトリスト設定したい場合などは必要
112+
# - ./work:/work
113+
# - ./conf/squid.conf:/etc/squid/squid.conf
114+
ports:
115+
- "10080:3128"
116+
```
117+
118+
* 後は、子どもの準備が整ったら、`docker compose up` をすると `youtube.com` にアクセスが出来る様になります
119+
120+
# その他細かい話
121+
122+
* YouTubeは、動画のストリーミング自体は、別の FQDN から行われているらしく、全量は調べられていません。なので動画を見ている途中でコンテナを落としても動画は見えてしまいます。でも、次の動画は見えない挙動になります
123+
* 逆にこの仕様を逆手にとって、21:00にコンテナを落とすので、「その動画を最後まで見たら終わり」という整理にしています
124+
125+
# あとがき
126+
127+
* 話としては以上です。非常に簡単な仕組みなので、技術として難しい要素はないですね
128+
* 子どもアカウント側で、『Proxy の変更が出来ない』制御はいらないかもしれません。『Proxy を変更すると見える!』という事がわかるくらいの年齢なら、どっちかというと自制心を育てる何かの活動をすべきです
129+
* タブレットやスマホも同様にwifi設定する際に、PAC URL を指定できるので、同じ制御が可能です
130+
* 可能ですが、SIMを入れて外で使いたい場合は、PACを外すか、PAC内で判別させるか、もう一歩複雑な処理を入れる必要があります
131+
* Chrome Cast など経由ではなく、TVで直接 Youtube を見る場合は... ちょっとわかりません
132+
* Youtube のチャネルによって制御したいケースは、試していませんが、Proxyで中間CA局を立てて、中間サーバ証明書をhttpsリクエストのたびに発行する、という設定をすればおそらく細かい制御も出来るとは思いますが、httpsのどのリクエストパラメータにチャネル名が入っているのか?などは確認できていません
133+
* 嫁の反応は、基本的には自分のスマホが取り上げられなくなる事、PCのキー操作を覚える事などは肯定的です。ですが、マインクラフトのマシンガントーク実況のチャンネルの音量がとても大きく、そこは否定的です😂
555 KB
Loading
15 KB
Loading
61.2 KB
Loading
61.9 KB
Loading
33.3 KB
Loading
16.4 KB
Loading

0 commit comments

Comments
 (0)