Slide 1

Slide 1 text

会議室不足にブチギレたので、 IoTでオフィスをハックした(仮) グリーホールディングス株式会社 情報システム部 エンジニア 菅原 優

Slide 2

Slide 2 text

菅原 優 グリーホールディングス株式会社 情報システム部 エンジニア 2021年にグリー株式会社(現:グリーホールディ ングス株式会社)新卒入社、2023年から情報シス テム部に参加。 既に技術的特異点に到達したのではと思いなが ら、社内のお問い合わせに答えるBot「イルカちゃ ん」をはじめとした、AIを用いた便利ツールの開 発に取り組んでいる。 好きなものは木。 2

Slide 3

Slide 3 text

AIの話はしません! が、興味のある方はブースへ… AIと無関係な家内制手工業の様子 3

Slide 4

Slide 4 text

目次・アジェンダ ● 動機と背景 ● なぜ既製品ではなく「百均タッパとESP32」なのか? ● バス係数を1にしないために ● 会議室利用状況リアルタイムダッシュボード ● コストの話 ● 知見とまとめ 4

Slide 5

Slide 5 text

動機: 会議室が足りない!! ● 唐突な出社回帰の流れに伴い、オフィスの会議室不足が問題になった ○ ● 空き会議室を求めて別フロアへ移動する必要が頻繁に発生 ○ ● エレベータ往復2分 x 3会議/日 x 出社人数1000人 = 100時間/日の無駄遣い! やむなくオフィス外の会議室を利用しているケースもあるという噂も ○ ● リモートワークの割合が相当高いことを想定して引っ越したオフィスのはずなのに… 完全に本末転倒だし、情報漏洩等のリスクも生じる 個人的な動機 ○ ○ スマートホーム的な自動化が好きなので会社にも取り入れたい AI疲れしたので低レイヤーなことに取り組みたい 5

Slide 6

Slide 6 text

背景: 本当の敵は誰か? ● ● ● 大会議室: 定員10名、約24個、予約管理あり 4人用ブース: 定員4名、約50個、予約管理あり 1人用ブース: 定員1名、約30個、予約管理なし ● ● 人数に比して会議室の数が足りないわけではない では何故会議室難民が生まれる? ○ ○ ● 10分ルールの形骸化 ■ 10分間会議室の利用がない場合はキャンセル扱いとする ■ …が、これを知っている人は多くないし、ちょっと気まずい 実際、予約されてるはずなのに誰も居ない会議室が多い(体感) ■ 体感ではなく、しっかり観測して定量化したい →利用状況を監視してルールを強制すればよいのでは😏 6

Slide 7

Slide 7 text

技術選定: どうやって監視する? ● 🤔 監視カメラ ○ ● 🤔 市販のスマート人感センサー ○ ○ ● ガラス越しに外の人間を誤検知してしまう 😀 ESP32 + 赤外線(PIR)センサー ○ ○ ○ ● 生存確認(Ping)ができない 数年に一度の電池交換が確実に発生する 🤔 ESP32 + ミリ波レーダー ○ ● プライバシーの問題、設置が大変 5分おきのPingで生存確認が可能 USB常時給電なので電池交換不要 赤外線はガラスを透過しない →バス係数の低下を覚悟してでも自作する価値がある と腹を括った ○ ※バス係数: 何人バスに轢かれたらそのプロジェクトは機能不全に陥るか? 7

Slide 8

Slide 8 text

アーキテクチャ ● こんな感じのシステムを作りました Google Cloud 8

Slide 9

Slide 9 text

バス係数を1にしないために 9

Slide 10

Slide 10 text

バス係数を1にしない工夫 (ハードウェア編) ● オリジナルの基板はあえて作らない ○ ○ ● 手近な材料で作る ○ ○ ○ ● ジャンパー線でESP32とモジュールを接続するだけでヨシとする 長期的な強度はやや懸念になるが、はんだ付け不要にしたかった ESP32、人感センサモジュール、百均タッパは誰でも買える ジャンパー線の接続くらいなら、エンジニアならできるはず ケースは3Dプリントしてみたかったが、専門知識と道具が求められるので回避 面倒事は極力ソフトウェア側で引き受けるようにする ○ ○ ○ PCに繋いで一度書き込めば、以降はノータッチで済むようにする 書き込んだファームウェアの更新、新規デバイスの自動追加等 ソフトウェアの領域なら、どんな問題もAIがなんとかしてくれるはず 10

Slide 11

Slide 11 text

バス係数を1にしない工夫 (キッティング編) ● 大量キッティングの自動化 ○ ○ ● ポート・チップ種別を自動認識し、ビルド済みバイナリを30秒で焼くスクリプトを用意 デバイスを組み立ててUSBを挿すだけで誰でも量産可能にした 新規デバイスのFirestoreへの登録まで自動で行う ○ あとはダッシュボード上で設定すればOK 11

Slide 12

Slide 12 text

バス係数を1にしない工夫 (運用編) ● 一度設置したらもう触りたくない! ● Ping相乗り型OTAアップデート ○ ○ ● デュアル・パーティション構成 ○ ○ ● 5分ごとの生存確認Pingで 最新バージョン照合 差分検知時のみ新ファームを取得する 稼働中の領域を壊さず 待機スロットへ安全に書き込み 起動検証(疎通確認)に失敗した場合は 自動ロールバック →万が一アプデをミスっても文鎮化しない体制が整った 12

Slide 13

Slide 13 text

利用状況のリアルタイムな可視化 ● 部屋に行かなくても自席から「今どこが空いているか」が一目瞭然に 13

Slide 14

Slide 14 text

空予約の自動解放について (WIP) ● 当初の野望: 形骸化した「10分ルール」をシステムが自動執行したい ○ ● 検証環境では完璧に動作したが… ○ ○ ● 予約開始から10分間無人ならGoogleカレンダーAPIでリソースを解放する 偽陽性による誤解放&クレームの危険 まだ全ての会議室で動作検証ができていない 強制解放まで行かなくとも、ダッシュボードがあればよいのでは? ○ ○ 空いている部屋を見つけて使うだけなら、利用状況の可視化だけで十分 まずは強制解放無しでダッシュボードを公開する予定 14

Slide 15

Slide 15 text

現時点での結果 15

Slide 16

Slide 16 text

現時点での結果 ● 超低コストで会議室利用状況の監視を実現 ○ ● 初期投資 1デバイスあたり: ■ ESP32 1300円 ■ PIRモジュール 240円 ■ ケース 37円 ■ 人件費 プライスレス ○ 月あたり: ■ GoogleカレンダーAPI ■ Cloud Run ■ App Engine 0円 0円 約1200円 設置済みデバイス: 53台 ○ 社員の皆様からの期待度は高そう。組み立てが大変だが全室導入目指して頑張ります 16

Slide 17

Slide 17 text

知見とまとめ ● UIの力は偉大 ○ ○ ● AI時代だからこそ、肉体・物理世界・低レイヤー技術が重要 ○ ○ ○ ● 元々は、私物のモジュールを持ち込んで勝手に置いてみたところから始まった カッコいいダッシュボードを作ったところ、上長達のテンションがあがり 全社導入を目指そうという話になった(気がする) AIは並の人間よりよっぽど賢い! しかし現実世界の知識がなければ、AIに適切なコンテキストを与えられない ミートプロキシにならないためにも、物理世界に近い領域を知っておこう 社員・ご来客の皆様へ: ○ ○ 会議室に怪しいデバイスがあっても気にしないでください ■ 録音・録画機能は一切ありません もし落下や故障していたら情シスまでお知らせください 17

Slide 18

Slide 18 text

ご清聴ありがとうございました 18

Slide 19

Slide 19 text

No content