初めてのAdvent Calendarです。ちなみにQiita 投稿2回目でデビューしたてです。
さて本題。
作業効率化がテーマですが、効率化を実現する方法の一つとして、自分の作業自体の効率を上げる以外に、環境を改善して自分が集中できる時間を増やすという方法もあると考えました。
私の場合、コロナ禍の緊急事態宣言期間中、小さい子供たちが家にいる中でいかに自分が仕事に集中する時間を作るかというのが本当に頭の痛い悩みでした。
こちらが仕事している間、静かにしてもらう方法の一つにパソコンやタブレットを使ってYoutubeを見せまくるなどありますが、お互いの生活リズムをきちんと作っていくためにもメリハリをつけてタブレットを使ってもらいたいと考えています。
まだ自分で自分の行動を律するのが難しい年齢 (自分もできてるとは言い難いですが・・・)なので強制的な手段としてペアレンタルコントロール機能をもつアプリを利用して、一定時間タブレットを使用するとタブレットを停止する機能を有効にしています。
件名のことをしようと思ったきっかけ
先日、Google さんが風邪をひきました。
おかげでペアレンタルコントロールを行っていたアプリ Family Link
がGoogleのサーバに接続できず、一切の制御ができなくなり困りました。寝る前だけ閲覧を許可してるアプリがあるのですがそれが起動できなくて子どもが大騒ぎ(発狂)。
考えた解決方法
Google 先生が風邪をひくことはたまにあるのでバックアップ手段を用意しようと考えました。
そうだ、通信の制御が簡単にできる Soracom の IoT SIM を使って、通信を制御することによって簡易的なペアレンタルコントロールを実現しようと思いました。
やりたいこと
- 一定の通信量が発生したら通信を自動的に止める
-
1日あたり一定時間の通信が発生したら通信を自動的に止める- 設定できるルールに時間をトリガーとするものが見当たらなかったのでいったん諦めました
- AWS Lambda と組み合わせれば簡単にできそうですが今回はスキップ
Soracom SIM ではできないこと
以下はできないので、これはGoogleさんにお願いします。
- タブレットのアプリごとの細かなコントロール
- 例えば、Youtube アプリは20分のみ、将棋アプリは1時間利用可能とかの制御
前提
以下のものが事前に必要になります。
-
Soracom IoT SIM
- SORACOM IoT ストアで購入しました。日本カバレッジで良いのでplan-D を選択しました。
-
SIMが利用できるタブレット
- iPad とか, Android Tab とかなんでも
- ウチにあるのはAndroid のこれだと思う
- iPad とか, Android Tab とかなんでも
準備
- 用意したSIM をタブレットで使えるようにしておきます。
- SORACOM IoT SIM を有効化するのに
SORACOM の利用を始める
を見ながら行いました
- SORACOM IoT SIM を有効化するのに
対応
ソラコム ユーザコンソール上で簡単にできました。
手動でする場合
一定量使ったら通知が欲しい場合は以下の設定を行えばできます。
ポチポチするだけで簡単にできました。ちょっとびっくり。
自動で実行する場合
-
イベント作成
を押してイベント編集画面に行きます。 -
イベント名は適当につけます。
-
監視対象を
サブスクライバ
として、IMSIの番号を入力します
5. IMSI はSIM管理
>詳細
から分かります。- 余談ですが、ここで選択候補が自動で出てくると嬉しいですが今は出ません
- 監視対象にSIM ID を選んだ場合とかも同様な候補補間の形があると嬉しい
-
ルールに
サブスクライバの日次通信量が一定を超えたら実行
を選択して、量をセットします -
アクションに
SIMの状態を休止中にする
を選択し、実行するタイミングをすぐに実行
にします -
アクション追加
を押下して、アクションにSIMの状態を使用中にする
、実行するタイミングを翌日開始時
にします
あとはタブレット上でネットサーフィンなどをして、通信が止まることおよび翌日に通信が再開するを確認すれば設定完了です。
今回は試しに1MiB に設定してテストしてみました(整数値しか指定できません)。
※詳細は省きますが、Soracom SIMを挿入したラズパイ上でコマンドラインで試した結果を記載しています。
(おまけ)テスト方法
イベントハンドラーが正しく設定できているのか確認するために簡単なテストをします。
-
既に書いた方法で、日次通信量を 1 Mib に設定。また、オフセットを使って10分後に再開するようにしています。
- 余談ですが、時間設定ができるなら、50分ごとに休止して10分後に再開という設定で1時間ごとに休憩時間を入れるというのが強制的にできそうです。(現状lambda などで実現するしかないかも)
-
1mb のファイルをダウンロード
-
こちら
1mb-test
のサイトのデータを利用しました
$ curl -L -s https://datahub.io/datahq/1mb-test/datapackage.json | grep path $ curl -L https://datahub.io/datahq/1mb-test/r/0.csv > hoge.csv # ここのURLは適宜変更
-
こちら
-
しばらく待つ (通信量のカウントが反映されるまでに最大5分くらいある模様)
-
ping 打っても到達しません
-
$ ping yahoo.co.jp
ping : unknown host yahoo.co.jp
イベントハンドラーの設定がうまく動いていることを確認できました。
今後の対応
-
自分のアプリやサービスとSoracom APIを組み合わせる時間がなかったので今回はだいぶ省きましたが、例えば子供が夕食食べ終えて、IoTボタンを押したら通信を再開するようなガジェットとの組み合わせができるとより柔軟性が増しそうです。
- この辺の LTM-M Buttonとか良さそう。
-
VPG (Virtual Private Gateway) を利用して接続先を限定許可または拒否する
今年の夏に、VPG Type-E が発表され、これがなかなか安い料金で手軽に利用できるようになりました。これを設定して、アウトバウンドルーティングフィルターを設定することで実現できます。実際、手元で設定して動かしてたのですが、スペースの都合上省略しました。(あとペアレンタルコントロール目的では設定が冗長すぎるかなと思い、記事化は見送りました)
とはいえ、SIM 経由の通信は自宅のWi-Fi経由の場合と比べると、通信量に応じたコストがかかるのであくまで一時的な代替手段です。
外出先&Googleが落ちてる時とかに利用するかもですが、とても低い確率かなと思います。
そもそも今回取り上げたSIMは、IoT SIM という名の通り、もっとIoTデバイスに利用した方がワクワクすることできますね。
ペアレンタルコントロール代替案
-
ペアレンタルコントロールのアプリはいろいろあるんですが無料で使い勝手がまぁまぁ良いというのでGoogleアプリを使っていました。他のアプリを使えばGoogleさんが寝込んでも大丈夫かもしれません。
-
Nintendo switch つなげたテレビの場合、スマートプラグを使って、電源を切るという方法も可能です。これはSIM は使いません。
小さい子供と言葉だけで規則正しい生活を継続していくことが難しかったので、こうやって仕組みによって敷居を作っていくとストレスも減り、楽になりました。