ホーム » 技術 » 事務PCをSwitchBotでリブートする

事務PCをSwitchBotでリブートする

さくらインターネットでは、仕事で使うPCはすべて会社から支給される。このときいろいろな選択肢がある。

  • いわゆる「事務PC」。DellのNLXファクタWindowsマシンか、ノートPCか、MacBook的なもの(よく知らない)などの4種類ぐらいから選べる。ラインアップされたスペックで十分な場合、納期が非常に早くて便利。
  • 指定買い。プログラマなどで、CPUやメモリなどにこだわりがある場合、事務PCで間に合わない、カスタマイズしたい場合にこちらを選べる。当然ながら納期が長くなるが、自由度は増す。
  • 自分で買って清算する。なんなら部品から買い集めて作り上げてもよい(が、内部監査とISMSがあるのであまり無茶はできない)。

というわけで社内では比較的野放図にさまざまなマシンが動いている。ちなみに機器は3年間リースが強く推奨されており、3年で買い替えになるため、愛着があっても手放さざるを得ないことになる。古いマシンを使っていると情シスから連絡が来て、買い替えないイイワケをひねり出さないといけなくなるのだ。

さて、自分は長いこと事務PCで満足していた。自分は製品ラインのコードは書かないし、書くとしても開発環境は全部リモートの上で、手元ではターミナルしか使わない。Teratermが動けばハッピーなので、メモリが4GBでも十分なのだ。なのでOfficeがギリギリ動く程度のDellマシンで長いこと仕事をしていた。

18か月ほど前、ヨコタンとVTuberを目指すという企画とか、Oculus GOやらRiftやらで仮想会議を実験し始めたときに、所持していたマシンでは性能が全く足りないということになってしまった。そこで実験用としてそれなりのマシンを用意した。それがDellのAlienwareだった。あちこち持ち歩く前提でノート型にしたが、あんまり拘りがなかったので、適当に買ったというのが実情だ。

さて昨年、上述の事務PCの3年リースが切れるというタイミングがやってきて、情シスから「次のPCどうします?」という問い合わせが来た。普段だったらやれやれ引っ越しか、と黙って手続きを進めるところだが、ふと実験用のAlienwareがあるんだから事務PCを無駄に1台頼むこともないな、思い立った。CPUパワーもメモリも相当に高いんだし、経費削減にコーケンすっかということで「今回は実験PCをプライマリPCに昇格するのでパスします」と連絡した。そしてAlienwareに事務ソフトをあれこれとインストールし、無事に移行は終わった。

ところがAlienwareを事務PCにしてみると、いろいろ不具合が目立ってくるようになった。実験マシンのうちは、不要なときは電源OFFにして片づけていたものを、事務PCとなると24時間/365日付けっぱなし運用になる。データセンター勤めの人間の悪いところは、マシンは電源を落とさなくても平気だと錯覚してしまうことだ。特にCLOUD NATIVEな現代ではそうだ。実際の物理マシンは電源付けっぱなしには対応しておらず、特にノートPCは無理ということが多い。Alienwareはホトホト24時間運転に弱く、なんだかひっきりなしにドライバのアップデートがあり、そのたびに再起動し、そのたびにストールして起動できなくなるのだった。感覚的には1か月のうちに0.7回ぐらいの割合で動かなくなり、強制リブートしている。ただこれは単なる事務PCなので、ストールしたら電源ボタンを長押しして復旧させればよく、本当に壊れてしまったら買い替えればよいというだけのものだ。まあブツクサいいながらも我慢できる範囲の話だった。

しかし、今度は社会情勢が出社を許さなくなってしまった。もともとAlienwareを24時間運転にしているのは、自宅からちょいと事務所に置いているファイルをのぞき見するとか、開発環境にアクセスするのに踏み台にしたいときにRDPするためのものだったが、今度はテレワークのときにひっきりなしにアクセスの必要がでてきた。踏み台は移行したものの、事務所のネットワーク・ファイルサーバ・情報共有はそれほど近代化されておらず、事務PCにRDPしていないとできない業務というのが結構存在する。なので事務PCがダウンするとニッチもサッチもいかないということが発生してしまう。以前のような、たまたま自宅勤務の時に誰かにSlackで「ちょっと僕のPCリブートしてくんない?」と頼めるような牧歌的な時代だったらよかったが、今は事務所に誰もいない。かといってすべての業務フローを今すぐにオフロードすることもできない。となると、Alienwareをリモートでリブートする方法を編み出した方が早そうだ。

SwitchBotで電源ボタンを押してみる

こういう時に便利なのが、IoTスイッチ的なものだ。ググると出てくるのがSwitchBotだ。SwitchBotは家電のコントロールを想定したものだが、もちろんPCのボタンも押せる…はずだ。自分は自宅から事務所のPCを操作したいので、2つのパーツ — SwitchBotとミニハブを手に入れた。

Alienwareの電源ボタンは気取った形と場所にある。キーボードの上部、ど真ん中だ。

電源ボタン

写真に映っているシート状のものは防塵カバーで、両面テープでSwitchBotを固定するために切り抜いた後だ。ここにSwitchBotを設置・固定するのだが、クリアランスを含めてもあまり余裕がない。SwitchBotのマニュアルによれば1cmの接着面を確保するようにと指示があるが、実質的に0.7cmぐらいしかない。

設置したところ
クリアランス。これは上に付けすぎで、2mmほど下げないといけない

設置位置は非常に重要だ。というのもSwitchBotの「指」は非常に小さく、ボタンのスイートスポット(押されて反応する部分)は狭いため、押すべき場所を正確に押さないとスイッチが反応しないのだ。ボタンの中心(どこ?)を押せるように位置を決め、実際にボタンが反応するかどうかをテストして確かめることを強くお勧めする。さもないと自宅からボタンを押しても、結果が返ってこないということが起こり得る。

ミニハブは設定項目がほとんどない。Bluetoothで設定することが前提であるため、手元に装置があることが必要だ。そのうえでWifiでネットワークに繋いで、DHCPでIPアドレスを割り当てる。後はクラウドサービス経由でアクセスできるので、NATの背後でも大丈夫だ。次にミニハブにSwitchBotを探させる。近くに置いておけば自動的にペアリングしてくれる。

アプリ画面。ミニハブ(左)とSwitchBot(右)が見える

Bluetooth経由だと、SwitchBotの動作を細かく設定できる。たとえばボタンの押下時間を変更できる。今回はハングしたPCを電源長押しでシャットダウンしたいので、10秒ぐらいに設定する。

ボタンの設定画面

SwitchBotはマニュアル、Webページ共に説明が分かりづらく、動作については想像の域を出ないが、おそらくこんな感じだと思う。

SwitchBotの動作想像図

SwitchBotはミニハブを通じてクラウドサービスに繋がる。スマホアプリはBluetoothでない場合クラウド経由でコマンドを送るが、ミニハブはこれをpollingしているようで、割に素早くキャッチしてスイッチを作動させる。見たところラグは2秒以内といったところだ。ただ、ミニハブは常にpollingしている訳でもないようで、アプリは時々ミニハブやSwitchBotを見失うことがある(気まぐれに発生するため条件がよく分からない)。スマホアプリはきちんとステータス(失敗とか成功とか)を返すので、一応それを信じるしかない。

できればミニハブがどんなパケットを吐いているのか調べてみたいが、事務所LANをのぞき見できないのでそういう調査もやっていない。自宅ならじっくり調べられるのだが、あんまりそういう趣味もないので、誰か別の人に任せたい。

実のところ、スマホアプリの作りが簡単すぎて、うっかり電源ボタンを押してしまわないかと心配なほどだ。そのためにボタンには個別にパスワードが設定できるが、そもそもこのパスワードがどういうエンコードで、どこでデコードしているのかがよく分からない。この辺もじっくり解析したら面白いかもしれない。

実は本当の試験はできていない

まだ導入してから間がないせいもあって、本当の試験はまだできていない。設置してから現時点までの間に、ビルの法定点検で停電があり、無線LANが断になるという事象が発生した。これによりミニハブに対するリーチャビリティもなくなってしまったが、電源復旧後にきちんと戻ってきたのでこれは良かった。しかしこの後、PCの電源を入れようとしたがクリアランスが足らず、SwitchBotの指が蓋に引っかかるという事象が発生して失敗した。その後、クリアランス問題と、スイートスポット問題を解決し、少なくとも電源ボタンを押してきちんと反応するところまでは確認が取れている。

本当に対処したい問題は、マシンがハングしたときに長押しでPCをシャットダウンさせることと、そのあともう一度PCを起動することだ。これが果たしてSwitchBotだけでできるかどうかだが、本当にハングしないと試験できない。さて次にハングするのはいつだろうか。ちょっと待ち遠しい。