blog

DeNAのエンジニアが考えていることや、担当しているサービスについて情報発信しています

2023.10.05 技術記事

インフラエンジニア的スマートホーム活用法 [DeNA インフラ SRE]

by Tadayoshi MIURA

#sre #infrastructure #monitoring #troubleshooting

スマートリモコン、使っていますか?

こんにちは。IT基盤部ネットワークグループの三浦忠善(Tadayoshi, MIURA / t_miura)です。

住居内の様々な設備をネットワーク経由で監視・制御できるスマートホーム製品、皆さんは導入されていますか? スマートホーム製品の中でもSwitchBot HubやNature Remo等に代表されるスマートリモコンは、テレビやエアコン・シーリングライトなどの赤外線で制御出来る家電を、リモコンを探す手間や電池切れ等を心配することなくスマートフォンやスマートスピーカーから操作することができ、一度使い始めると手放せない便利アイテムです。

スマートリモコンアプリの一例

スマートリモコンアプリの一例

スマートリモコンが測定した温度や湿度・照度といった環境値と時刻・利用者の位置情報を組み合わせ、 外出時のエアコン・照明の切り忘れ防止や、帰宅直前の自動オンといった自動化も可能です。

アプリによる自動化の一例

アプリによる自動化の一例

今回の記事では、スマートリモコンを更に活用し、インフラエンジニアのQOLをより良くするライフハック事例を紹介します。

ネットワークグループの障害対応体制について

本題に入る前に、IT基盤部ネットワークグループでの障害検知・対応体勢について軽く触れたいと思います。

ネットワークグループでは多数の監視機構を組み合わせ、 障害事象の検知だけでなく、インターネット回線品質の継続的計測による回線不調の予兆検知や無線LANの電波環境状況のモニタリングなど、広範囲なデータの収集・分析・対応を行える体勢を構築しています。

勤務時間帯においては、注意が必要な事象が検知されると社用メールへの通知があり、重要度が高いものについては障害連絡用システムから各自が登録しているメールアドレスへも通知が送信され、Slack内の専用チャンネルへも投稿されます。

深夜早朝は重要度が高く直ちに対応が必要な種別の事象のみ、障害連絡用システムからのメールに加えてPagerDutyからの自動音声通話による障害通知が実施されます。

ネットワークグループの監視・通知機構概略図

ネットワークグループの監視・通知機構概略図

障害は突然やってくる。準備は機械に任せよう。

様々な監視機構や検知パラメータをチューニングし、得られた情報から予防的な事前対策を講じていても、障害というものはある日突然、前触れ無く起きてしまうのが残念ながら現実です。

深夜早朝で就寝している場合は障害通知によって起床し、部屋やデスクの照明を付けベッドからデスクへ移動してコンピューターの外部モニターやドックの電源を入れたりと、対応着手までに時間を要してしまうことが悩み事でした。

そこで「スマートホームを活用すれば障害対応着手に必要な部屋の準備を自動化でき、迅速に障害対応に取り組める!」と思いつき、検討と実装を開始しました。

自動化の検討と実装

自動化対象の選定

障害通知受信時に自動化したい作業のうち、優先度が最も高かったのは「部屋のシーリングライトを点灯させる」でした。

これは起床後から障害対応開始までに必要な行動数を減らし、スムーズに障害対応に着手できるようにすることに加えて、通知に気づけなかった場合も部屋を明るくすることより起床を促し、障害通知に気づく確率を高める目的も兼ねています。

また、夏期・冬期はエアコンを利用しており、起床中と就寝中で設定温度等が異なるため、照明の点灯と合わせて設定を切り替え、作業に適した快適な室内環境に自動で切り替えたいという要件も追加しました。

操作対象との連携方法

自分が利用しているスマートリモコンのNature Remo mini 2 Premiumは、 利用者が使用可能なAPI(https://developer.nature.global/)が公開されており、簡単にAPI経由での家電操作が可能となっています。
※スマートリモコン自体は個人所有ですが、利用目的が業務の円滑化のため短期間検証の扱いでAPIを利用させて頂きました。

APIによる制御対象家電(LEDシーリングライト)の情報表示例

APIによる制御対象家電(LEDシーリングライト)の情報表示例

アクセストークンを予め発行しておき、操作対象の家電IDと操作内容をトークンと合わせてAPIへPOSTすることにより、スマートリモコンアプリ上のボタン操作と同一の操作を実施出来ます。

連携機構の構成

上記のAPIを利用する場合、何らかの方法を使って会社の業務環境からAPIを呼び出す必要があり、「既存のあらゆる機構の運用・構成に影響を与えない」「業務環境内からの情報送出が極力少ない方法」といった要件を満たす必要があります。

幾つかの案を比較検討し、Gmailのフィルタ・ラベル機能とGoogle Apps Scriptを組み合わせたシンプルな構成に着地しました。

動作は以下のような流れとなっています:

  1. 即時対応が必要なメールは送信元・送信先アドレス及び件名のパターンが確定しているため、これらの条件を満たすメールに特別なラベルをGmailで付与
  2. 1分毎にトリガー動作するGoogle Apps Scriptが、上記ラベルのついたメールが存在するかを検索
  3. ラベルのついたメールが存在している場合はNature Remo APIで照明の動作状況を取得
  4. もし照明が消灯または常夜灯である場合は、照明を最大照度で点灯させるようAPIを呼び出し
  5. 夏期/冬期はそれぞれエアコンも起動または設定温度等を変更
  6. 当該メールからラベルを削除し、Google Apps Scriptの動作が終了

連携機構概略図

連携機構概略図

自動化の成果

1分毎の対象メール確認という実装上、連携動作開始まで最大2分の遅延が生じ得ますが、 PagerDutyによる通知先のエスカレーションが発生する5分以内には連携動作が開始するため、許容範囲としています。

更に、iPhoneのオートメーションを利用し、PagerDutyアプリを起動した場合は常に照明を点灯するバックアップ機構を用意しました。

iPhoneのオートメーションを利用した照明の自動点灯

iPhoneのオートメーションを利用した照明の自動点灯

外出時・帰省時などにも動作してしまう問題はありますが、 一時的に無効化したい場合もGoogle Apps Scriptとオートメーションのトリガーを無効にするだけでOKと、運用も簡単です。

肝心の実動作結果ですが、ネットワークグループ全体で継続的に実施している障害防止施策や機器のリプレース・ソフトウェア更新により、深夜早朝の障害対応頻度は日々減少しており、検証期間中に実際にこの自動化機構が動作したのは1度のみでした。 その1度だけとはいえ、手軽に構築した機構が問題無く動作した成果には満足しています。

おわりに

今回は、普及の進むスマートホーム製品であるスマートリモコンを活用してインフラエンジニアの障害対応を支援するというライフハック事例を紹介させて頂きました。

この取り組み以前に「自宅内にDeNA同様の監視機構を構築し、居住環境の監視・分析に基づく環境最適化と光熱費コスト削減に挑戦する」というプロジェクトも実施しており、 こちらも非常に便利なものになっていますので、是非とも別の記事で紹介できればと思います。

Prometheus/InfluxDB/Grafanaによるスマートホームダッシュボード

Prometheus/InfluxDB/Grafanaによるスマートホームダッシュボード

ここまでご覧頂きありがとうございました!

最後まで読んでいただき、ありがとうございます!
この記事をシェアしていただける方はこちらからお願いします。

recruit

DeNAでは、失敗を恐れず常に挑戦し続けるエンジニアを募集しています。