おれのにっき

何か問題でも

社会を生き抜くためには「ラブライブ! Dash Button」が必要だ

f:id:windyakin:20171225132223j:plain

これは ラブライブ! Advent Calendar 2017 25日目の記事です。

前回のラブライブ!

ネットサーフィンをしているとよくみかける Amazon Dash ButtonRaspberry Pi の組み合わせをやってみたくなった私は、Amazon Dash Button (PANTENE) と Raspberry Pi 3 Model B を買いました(これが1年ぐらい前)。買った当時はてきとーに Node.js をつかって「ボタンを押したらイベントが発動する」だけの実装をしたんですが、それで満足してしまったのともともと特に計画もないまま買ったものなのでそのまま部屋の片隅に放置されていました。

ところで私は家で酔っ払うと、しょっちゅう μ’s Live Collection を引っ張り出してきてはひとり鑑賞会を始める癖があります。μ'sのライブ演出は何度見ても見飽きない面白さがあると思います。

ある日、その日も飲み会帰りで酔っ払っていたため、ひとり鑑賞会をしていたのですが、そのときふと部屋の片隅に放置された RasPi が目に入ったわけです。

「ボタンひとつでライブ映像が見れる環境が欲しい!」

というわけで、Raspberry PiAmazon Dash Button を連携させて「ラブライブ! Dash Button」を作ることにしました。

ディスプレイ

f:id:windyakin:20160903141819j:plain

設計当初、モニタについては部屋に転がってる23インチのFHDモニタでも接続して使うかとか考えてましたが、元々のコンセプトから考えると、もっと気軽に見られる環境が欲しいと思いました。そもそも Dash Button を押されなければ何も映さないのですから、そのために23インチのモニタを置いておくのは少々邪魔すぎます。しかし幸いにも RasPi には3インチほどの本体と同程度の大きさのモニタから、7インチながらも解像度がFHD超えのモニタなど、実に様々なディスプレイ機器がネット上で簡単に手に入るので、今回はコンセプトにあったモニタを選ぶことにしました。今回写すのはアニメ映像なので解像度はそれなりに欲しかったのですが、ディスプレイスタンドなどの工作の手間や資金面などを考えて、スタンドを付けても手頃な価格で購入できる RasPi 公式の7インチディスプレイ (解像度は800x450)を購入しました。

https://jp.rs-online.com/web/p/products/899-7466/

流石に公式なだけあって組み立てや接続も簡単で、RasPi 本体もディスプレイの背面につけることができますし、電源管理についても Raspbian 上にあるファイルを書き換えるという至って原始的な方法で行うことができます。便利。

プログラムを組む

f:id:windyakin:20171225223111p:plain

さて、モニタ問題は解決したので、次に Dash Button で動画を再生するプログラムを書きます。Dash Button との連携は Node.js の node-dash-button というパッケージを使って連携させます。他の言語の Dash Button キャプチャ実装がどうなってるかわかりませんが、この node-dash-button はローカルネットワーク上をパケットキャプチャして、あらかじめ登録しておいた MACアドレス の通信があったらイベントを発火させるもので、何が面倒かというとパケットキャプチャで tcpdump を使うので管理者権限が必要なところです。

セキュリティ上の懸念はさておき、今回作成したプログラムは、あらかじめ指定のフォルダに動画を入れておき、 Dash Button を押したらその中からランダムにファイルを選択して再生するという内容です。当初の構想ではHLSを使ってストリーミングをするだとか色々野望があったのですが、一旦ミニマルなもので作れればいいかという結論にいたったので、こういった実装になりました。

ちなみに今回実装したプログラムの内容は GitHub 上に公開してあるので、興味があれば見てみてください。*1

デモ

というわけで今回完成したものを動かしたものが以下の動画です。

1回ボタンを押すと1本の動画が流れます。再生が終わると自動的にモニタの電源も切れますが、再生中に再度ボタンを押しても再生を止めることができるようになっています。

まとめ(結局何がしたかったのか)

最終的にはこいつを会社のデスクに設置したいと思っています。今のところ音がだだ漏れなので、何らかの対策(まだ何も考えてない)を講じる必要がありますが。やはり我々社会人は少なからずも社会の荒波にもまれながら生きているので*2、こういった安らぎを得るアイテムをデスクにおいておくことは生産性の向上にもつながるんじゃないでしょうか。

という無理やりタイトルにつなげるまとめをして、 ラブライブ! Advent Calendar 2017 の締めの記事とさせていただきます。

*1:特に深く言及はしませんが動画ファイルはご自身で用意してください

*2:決して今いる会社が殺伐としているわけではなくあくまで一般的な話です