Electronとpuppeteerを用いてRadikoをMP3化するソフトを製作しました

radiko-7e63e.firebaseapp.com

 

Electronpuppeteerを用いてRadikoをMP3化するソフトを製作しました。タイムフリーの番組表から番組を選ぶ⇒MP3ダウンロードが可能です。

製作中はノリノリで製作していたんですが、既にRadikoolELの開発が進んでいたんですね。そのことに全く気がつかず、ただの劣化版をリリースするに至りました。

 

成果物は全く無用なものに終わってしまいましたが、今回の経験で得た知見を以下に記しましたので、どなたかの参考になれば幸いです。

 

Electron内部でpuppeteerを使うとアプリの容量がとっても大きくなる

1 Electronは容量がばかでかい

Ask HN: Do you think Electron is good for building Desktop Apps? | Hacker News

Electronでリリース用にビルドしてみると、意外と容量が大きくなってしまうことに気づきます。実際、hellow worldするだけのアプリケーションで優に100MBを超えてしまいます。これは、Electronがchromiumをベースしていることに由来します。

これを避ける為の開発も行われていますが、まだ実際のリリースに採用することは推奨されていません。

GitHub - pojala/electrino: Desktop runtime for apps built on web technologies, using the system's own web browser engine

 

2 puppeteer

puppeteerはchromiumをベースにしているため、いくつかの点でpuppeteerと異なります。例えば、デフォルトでFLASHが同梱されていない・ライセンス上の問題でHLSがサポートされていない・extentionが使えない等です。

これらの点を解消には、chrome launcher等でユーザが既にダウンロードしているchromeを探すか、地味にchromiumの設定をいじっていくのが妥当かと思います。

github.com

github.com

 

また、puppeteerにはchromiumが同梱されていますから、chromium自体の容量も大きいことも気になります。puppeteer同梱のchromiumをelectron内部で使う場合、いよいよ容量が大変なことになってきます。

 

そんな訳で、Electron内でpuppetterを使うことはベストプラクティスなのかどうか、設計時にちゃんと調べることが、今の時点では必要かと思います。