ci7lus weblog

不定期日報

macOS / Linux 用 Mirakurun クライアント MirakTest をリリースしました

macOS / LinuxMirakurun クライアント、MirakTest をリリースしました。TVTest に倣って「映像視聴確認用アプリ」なんてそれっぽい説明文をつけていますが、日常利用を想定したクライアントです。

github.com

基本的な利用に必要なのは Mirakurun の URL の設定のみで、接続すればサービスを選択して視聴でき、音量、字幕、音声チャンネルの調節など基本的な操作が可能です。

Image from Gyazo

id:slashnephy がつくった SlashNephy/saya を利用した実況コメントを流す機能もついています。前に EPGStationサードパーティクライアントとして elaina というのを作ったぐらいに私的には実況を重視しているので、上にコメントを流せる機能が半分開発の目的だったりしますが、もちろん saya の URL を設定しなくても使えますし、将来的に本体からコードを切り離したいと思っています。

Image from Gyazo

github.com

技術について

使った技術としては TypeScript + React + Electron という感じで、私が最近好む技術で固めてしまった感じです。当初は Swift で作ることも考えたのですが、早く使いたい、手っ取り早く完成させたいという思いが強く出てしまい、なおかつこの組み合わせで要件が満たせることがわかった(わかってしまった)ので、使ったことのない言語の進出には至りませんでした。Swift は少し触っただけでかなり衝撃を受けましたし、知り合いが激推ししている(id:rinsuki)のでいずれ触ってみたいです。
また macOS で動く Mirakurun クライアントのくくりでいうと、類似のアプリとして Swift 実装の Meruru があります。

castaneai.hatenablog.com

Electron は CORS を考えずに Web の技術でデスクトップアプリが作れるけれど、Chrome を起動しているので重い、バンドルがめちゃめちゃデカくなる、みたいな感じだと思っていましたが、実は node と web の中間みたいなネイティブライブラリのバインディングができる!ということを search-future/miyou.tv を調べているときに知り、libVLC を Electron に持ってこれる WebChimera.js を使ってクライアントアプリを作るに至った次第です。
実際作ってみると、Chrome をもうひとつ起動するよりは軽い気がするが(多分気のせい)、mac 向け app はだいたい 280MB とかなり大きなアプリになってしまいました。そんなにイメージは間違っていなかったみたいです。

また search-future/miyou.tv は mpv.js を利用されていますが、これに関しては Chrome の非推奨な API (NPAPI) を利用されているということで、 採用は見送りました。miyou.tv 関連エントリをみるにかつては WebChimera.js を利用されていた形跡があるので、何か理由があって mpv.js に移られたのだと思っており、このアプリにおいてもそこらへんが心配です。

謝辞

慣れない Electron での実装においては、めちゃめちゃ search-future/miyou.tv を参考にさせていただきました。README でも謝辞に載せさせていただきましたが、ここでも重ねてお礼申し上げます。

github.com

また Mirakurun や Chinachu などによって日本の DTV ツールの開発を大いに発展させてこられた録画研究会さんにも強く感謝します。 Mirakurun がなければ MirakTest の開発は当然あり得ませんでした。ありがとうございます。

github.com

最後に

まだまだ開発し始めたばかりで不具合や改善点等たくさんあると思いますが、気軽に Issue/PR ください。よろしくお願いします。
最近は個人記事を全部 Scrapbox で書いているのでブログにまとめて文章を書くというのは本当に久しぶりの感覚でしたが、なんとか書き切れてよかったです。