テストステ論

高テス協会会長が, テストステロンに関する情報をお届けします.

NHK英会話をダウンロードしてデキル同期に差をつけよう!

メイロマさんの本に, NHK英会話で英語勉強するの良いと書いてありました. 僕も, 久しぶりにビジネス英会話を勉強しよう!と思い立ちました. 本屋にいって本を買ってみましたが, ラジオの時間が遅い!!!11時20分から?ふざけんな. 会社員は毎日大変なんだから11時には寝てます. 午後9時くらいからの放送だったら良いなぁと思います. 土曜日に一斉放送がされるのですが, 毎日やるから良いのだと思います. 忙しい会社員のためか, その横にCDが置いてありました. その月の放送をCDにまとめて先行的に売ってしまい, 忙しい会社員はそれで勉強してくださいですか. 1500円という金額は別に良いでしょう, しかしCDなんか欲しくない. すぐゴミになってしまう. テキストの表紙を見てみると不思議な文字列 "らじる☆らじる" が.

らじる☆らじる is 何?

らじる☆らじるはNHKによるネットラジオです. FM, NHK1, NHK2の3番組がネットで視聴出来ます. これをダウンロードすれば, 会社員をしながらNHKラジオで勉強することが出来ます. 理想的なのは, 朝通勤時にラジオを聞く形です.

調べてみると, いくつか, スクリプトを書いてみたブログが発見出来ました.

早速やってみようと思って, 適当にダウンロードして使ってみました. しかし動かない!!!しかも, コードが気に食わない. よかろう, 車輪の再開発だ!!!

そして結果がこれ

https://github.com/akiradeveloper/radikorec

(注) ちなみに, radikorecとなっていますが, 名前詐欺です. どう見ても, らじこではなくらじるを利用しています. アップロードしたあとに気づきました. いずれ修正するかも知れませんが, radikorecという名前が気に入ってるので, このまま続けちゃうかも.

既存スクリプトを使ってみて使いにくいなぁと思ったのは, 以下のような点です. これらを解消すれば勝ちということにしました. もちろん, 勝ちました. たぶん, 現存するらじこレコーダとしてはもっとも高品質なプログラムだと思います.

  • テストをどうすればいいか分からない. 失敗していてもなぜ失敗したのか全く分からない.
  • rtmpdumpを使う場合, DebianでもFedoraでも, 自前ビルドしかないと思うが, だったらオプションでパスを指定出来るようになっているべきじゃないの?
  • 何でスクリプトをダウンロードしてちまちまやらなきゃならん. pipやgemで一発インストールしたい.
  • ソースコードがgithubで管理されていないので, コード修正しろが言いにくい.

らじこレコーダを作るに当たってストリーミングを保存する方法は二通りあります. 以下のような違いがあります.

  1. rtmpdumpを使う -> rtmpdumpビルド必要. 音質良い.
  2. mplayerを使う -> ffmpegのエンコーダとして利用するlameは標準aptリポジトリから手に入らない.

今回は, 1を採用しました. rtmpdumpのビルドだけで済むのであれば, それほど手間ではないと思いますし, きちんとインストール出来てなかった時には, rtmpdumpがちゃんと動いていないということがエラーではっきり分かりますから, この点も良いと思いました. また, 生成されるm4aは, iTunesにライブラリ出来ますから, iPodでビジネス英会話を聞くなどという何ともデキルスタイルが実現出来ることになります.

サンプルがあるので, プログラム自体は簡単に実装出来るのですが, 依存プログラムのインストールでいくらか嵌りました. その対処を列挙します.

  1. rtmpdumpのインストール: make SYS=posix; make installのあと, shared libraryが/usr/local/libに入ります. LD_LIBRARY_PATHに追加しましょう. ビルドしたバイナリが, aptから入れたrtmpdumpのshared libraryを参照すると動かないので, 消しました.
  2. ffmpegのインストール: ffmpegはaptから入るのですが, 自分の環境ではdependenciesを解決するためにgnomeを消すと脅されました. めんどくさいので消してffmpegを入れました. その後, gnomeを再インストールしても, 何の脅しもなかったので, 一体何だったのか状態です.

使い方

使い方は, --helpで分かります. 非常に丁寧に書いてあるので, 迷う人はいないと思います. 実行中に/tmp/radikorec.logにログをとり続けるので, これとコードを照らしあわせれば, どこで死んでいるのかという見当がつくかも知れません.

akira@Kamille> python radikorec --help                                                                                    ~/src/radikorec/bin
usage: radikorec [-h] [--duration DURATION] [--prefix PREFIX]
                 [--rtmpbin RTMPBIN] [--channel CHANNEL]
                 [--directory DIRECTORY] [--test] [--debug] [--dry-run]

A Simple Radiko Recorder

optional arguments:
  -h, --help            show this help message and exit
  --duration DURATION   time(min) to record. default(1)
  --prefix PREFIX       filename prefix. default(RADIKOREC)
  --rtmpbin RTMPBIN     The path for rtmpdump binary >= 2.4. default(rtmpdump)
  --channel CHANNEL     FM|NHK1|NHK2. default(FM)
  --directory DIRECTORY
                        output directory. default(/tmp)
  --test                set test parameters.
  --debug               print messages on console.
  --dry-run             don't actually execute

課題

  1. 原因は分かっていませんが, pip install radikorecに失敗します. PyPIには登録出来たのですが *1. これを解決します.
  2. radikorecという嘘つき名前になってしまっていますが, radikoも同様のインターフェイスの下に統合してしまうという未来はあると思います.
  3. サーバのエラーだとかを全く対処していないので, retryするような仕組みが必要かも知れません. 一般的な使い方としては, cronを使ってサーバ上で定期実行するというものでしょうから, 何の粘りもなくプロセスが死んでしまわれては朝起きて絶望します.
  4. Linuxサーバ上でダウンロードすることになるのですが, その録音ファイルに対してmacやあるいはiphoneから簡単にアクセス出来るといいです. また, webインターフェイスでアクセスしてストリーミングで聞けるようにするというのも良いと思います. そういう簡易サイトを自動生成するプログラムも作れたらいいなと思います.
  5. 英語をちゃんと勉強すること (もっとも重要).

以上です. 信頼出来ないソフトウェアは使わない主義なので, 自分で作ってみました. どうぞ使ってください. 英語意識を高めないとやばい.

*1:原因分かる人教えてください