hiroの長い冒険日記

主にコンピュータ周辺の興味を持った内容を綴ります

Synology DS218+ Dockerとradikool6で radiko記録

当日記ではアフィリエイト広告を利用しています

車の移動中は、最近は子供の暇つぶし用にDVDを流す事が多い。それ以外の一人で移動する時には、圧倒時にラジオを聞いている。思い掛けない音楽が流れたり、パーソナリティの方の絶妙なトークに思わずニヤリとさせられる事もある。

その他にも、語学学習や子供の勉強の間の音楽等、家でもラジオを活用したいと考えていた。でも、今更ラジオを聞く為に色々買うのももったいない。Internet radioを活用できれば、更に常時稼働させているSynology DS218+を利用できればと思い調べてみた。

radikool6 とは?

blog.ez-design.net
ezdesign/radikool6 Docker Hub

Internet radioのうち、radiko のリアルタイム録音とタイムフリーmp3を取得できるソフトウェアである。旧版の radikool は Windows用だが最新版は Docker版となり、Dockerが使用できる環境であれば動作すると思われる。作者の方は raspberry pi をメインターゲットとしているようなので、それほどCPUパワーを使わないように思う。Synology DS218+なら十分だろう。

UIは Web ベースとなり、番組表の取得とリアルタイム録音/タイムフリーmp3の取得が可能である。検索やキーワード録音、定期録音には未対応だが、実装予定の項目には入っているので、今後に期待する。

2018年11月時点で超アルファ版との事なので、心して使ってみる。

Dockerとは?

www.docker.com
Docker - Wikipedia
knowledge.sakura.ad.jp
ハードウェアレベルの仮想化ではなく、ホストとなるOSの機能を有効活用することにより、アプリケーションソフトを動かすような感覚でサービスを動作させる事が出来るソフトである。

ちょっと乱暴に誤解を恐れずに表すと、「一つのソフトウェアの為のlinux環境」である。昔のUser Mode Linuxchrootの様なイメージで、且つもっと洗練された環境のようだ。

通常のソフトウェアだと、

  • アンインストールする際に様々なファイルが残る
  • 同時に使用するソフトウェアやハードウェア、OSとの相性、ライブラリのバージョンが悪影響して安定動作しない

等のトラブルを発生させる可能性がある。Dockerの場合には、

  • 「小さいlinux」環境内に必要なライブラリを収める事が出来る
  • ソフトウェア間通信で独立してコンテナが動作している時には古いコンテナと同時に新しいコンテナで動かして動作確認してから置き換える

という事が出来るようになる。Synology の toolchain も Docker の中で使用する事が推奨されていた。

Dockerの環境さえ準備できれば、Imageをダウンロードするだけで細かな設定不要で必要なソフトが起動できる。手元で作って動かして、高速なCPUや回線が必要になった段階でクラウドに移す、なんて事も簡単に出来る、らしい。

2016年7月には Windows10 Pro向けの Docker for Windows も発表された。Windows10 上で Docker のコンテナが動作する。Docker環境で linuxWindows 10 上で動作させるのも面白そう。

Synology は仮想化に関してはDocker推しで、DSMから Docker アプリを入れたら直ぐに使用できる状態になっている。今回、radikool6を動作させる為に初めて Docker を使ってみたが、GUI環境で簡単に起動させる事が出来た。

Docker & radikool6 インストール & 設定

  • Synology DS218+ DSM で Package Center から Docker をインストールする。
  • Docker を起動して、レジストリradiko で検索すると、radikool6 が表示される。

f:id:hiro20180901:20181124174829p:plain

  • 選択してダウンロード。説明を読んでおく。こちら。重要なのは次の3点。
  1. ポート番号は5000を使用…http://localhost:5000にアクセスと書いてあるが、Synology DSMも同じ番号なので、設定でずらすようにする。
  2. ディレクトリ構成…コンテナ内部でmp3を作成しても外から見えないので、Synology DS218+のフォルダをマウントさせる。
  3. ユーザー名とパスワード…Basic認証させるように、起動時の環境変数で指定する。
  • イメージに radikool6 が追加されるので、選択して「起動」を押すとウィザード形式でコンテナの起動条件を設定できる。後で「コンテナ」の「編集」でも同じ内容を設定できる。

f:id:hiro20180901:20181124175140p:plain
f:id:hiro20180901:20181124175204p:plain

  • 以下、「コンテナ」の「編集」画面の内容で説明する。
  • 「全般設定」タブで、チェックボックス上3つは入れない。一番下をチェックしてDSMデスクトップに置いておくと便利。

f:id:hiro20180901:20181124180459p:plain

  • 「ボリューム」タブで、説明にあった3つのフォルダを設定する。

f:id:hiro20180901:20181124180643p:plain

  • 「ポート」タブで、ローカルポートを5000以外の番号(50000~65000辺りで選ぶ)に設定し、コンテナのポートは指定通り5000にしておく。これで、DS218+の指定した番号に接続すると、コンテナ側のradikool6には5000で接続される。

f:id:hiro20180901:20181124180911p:plain

  • 「リンク」タブは追加不要、「環境」タブには3項目を追加する。

f:id:hiro20180901:20181124181003p:plain

  1. TZを追加して、Timezone を Asia/Tokyoにする。これをしないと radikool6内部が UTC になるので時間が来ても録音されない。
  2. radikool_id、radikool_password は適宜設定する。
  • 「適用」を押して反映させる。
  • 「コンテナ」から radikool6 を選択して、右側のスライダで起動する。

f:id:hiro20180901:20181124181935p:plain

  • ログを確認して正常に起動している事を確認する。
  • PC の Web Browser で Synology DS218+ IP Address の指定ポートに接続する(http://192.168.n.n:mmmmm)と、ベーシック認証後に番組表画面が表示される。未設定では選択できないが、左側のリストボックスで局を選択するようになっている。

f:id:hiro20180901:20181124183318p:plain

  • 「管理」の「放送局初期化」「radikoを初期化」でその地域に合わせた放送局が取得される。

f:id:hiro20180901:20181124183447p:plain

  • 「管理」の「番組表取得」で全局を選択の上で「再取得」すれば、番組表画面で選択できるようになる。

f:id:hiro20180901:20181124183503p:plain

Radikool6 使い方

  • 番組表から放送局と日付を選択すれば、番組表が表示される。時間を過ぎている番組は「ダウンロード」、これから先の番組は「単発予約」で録音できる。
  • 「単発予約」の場合には「タイムフリーで録音」チェックが入っていれば、番組終了後にダウンロードする。チェックを外せば実時間で録音される。

結果

  • 初めての Docker だったので、イメージを掴むまでに時間を要した。実際の設定の時間は2~3時間程だが、事前の調査・学習は2週間程かかった。
  • Docker の command line の事例はたくさん見つかるが、Synology DSM アプリの Docker の設定はあまりなく、command line option をどの様に設定するのか理解するのが大変だった。分かってしまえば納得。
  • Synology DS218+だと番組3つを実時間で同時に録音しても負荷20%位なので、他と重ならければ問題ないレベル。
  • 録音は m4a ファイルとなり、30MB/30分程度の容量となる。
  • 録音するフォルダを music 以下にしておけば、そのまま DS Audio で聞くことも出来る。繰り返し録音に対応したら、スマホに落としておいて後で聞くのも簡単に出来る。
  • 超Alpha版とはいえ、予約と記録がちゃんと出来た。繰り返しやキーワード録音があれば便利だけど、単発の録音に不自由はない。
  • 予約の記録が終了しても、リストから消えずに残っている。手動で消去する必要あり。超Alphaなのでしょうがない。

最初は別のソフトウェアで radiko 録音をやろうとしていて、必要なコマンドが入っていない → toolchain 入れないとダメか? → toolchain も Docker推奨? → なら Dockerを始めてみようか、との流れだったので、調べる事や試してみる事が多くあり、実現までに時間を要した。とはいえ、後で使えそうな知識が身についたので、結果として良かったと思う。どうしても toolchain を使う必要がある時や、Synology DSMにないサーバを立てたい時など、Synology DS218+の環境を壊さずに作業できるようになると考えている。

Docker

Docker

学生時代だったらオライリー本も買って読んでたけど、今は本業は別なので、こういう機会でもないと試す機会がない。これからも少しずつ様々な技術に触れられるように意識して生活しよう。