Google Chrome用拡張機能radiko player

お知らせ

Flash Player Adobe Flash Player は最新版をご利用下さい。

Ver.1.0以降、既存ユーザ含め、初回起動時に設定が必須になりました。ご利用地域をオプション設定にて、ご指定下さい。

Ver.1.2以降、現在放送中の曲情報を取得するために、各局サーバに接続する動作を追加いたしました。従って、本拡張機能アップデート後、本拡張機能が無効になることがありますが、Google Chrome拡張機能管理画面で再度「有効にする」を選択いただくと、使用できるようになります。

背景

radiko.jp(ラジコ) | ラジオがインターネット(アプリやパソコン)で無料で聴けるを開くのが面倒、局の選択と再生/停止が出来ればラジオとして十分、という「Small is beautiful」(Unix philosophy - Wikipedia)の考えを、出来るだけ反映させた拡張機能にしています。

どうせすぐ閉じるポップアップなのだから、大した情報は載せなくても良いだろう、軽いの万歳(現在の総ファイルサイズ: 約52KB(ver.0.9.6) -> 60KB(ver. 1.0))というスタンスです(radiko.jpのオフィシャルプレイヤを再発明しないようというブレーキでもあります)。

radiko.jpサーバとの通信が最小限となるよう、ChromeのBackground Pageのメモリを消費し過ぎないよう、色々とデザインを凝らしています。

Ver. 1.0で、現在放送中/次放送の番組を掲載したタイムテーブルを表示する機能を実装しました。これは、Twitterでの MBSラジオ on Twitter: "ザッピング状態の中、どうリスナーをキャッチするか?ピンチでもあり、チャンスでもあります。 RT @laclefyoshi: 僕は今までダイヤルをぐりぐり回すラジカセでラジオを聞いていたので局をころころ変えることはなかったけど radiko.jpでは頻繁に変えている #radiko" の言葉に触発されたところが大きいです。この「ピンチでありチャンスでもあ」る状況が今後どちらに転んだとしても、本拡張機能でもその状況を表現したいと考え、急いで実装しました。デフォルトでタイムテーブルを表示しないのは、ポップアップを開く度にradiko.jpのサーバと通信する(番組情報を取得する)のは無駄(停止するためにポップアップを開いたなら番組情報は不要だろう、radiko.jpサーバの負担を軽くしよう、等)だと判断したためです。

radiko.jpへのリンクはradiko.jpを利用させてもらっているのだからリンクが無いのは失礼だろうという配慮から、radiko.jp公式タイムテーブルへのリンクはタイムテーブルが大きいからタブで開いて見た方が見易いだろうという判断から、ポップアップに載せています。

「tab」というradiko.jpオフィシャルプレイヤをタブで起動するリンクは、実は、ポップアップ内でオフィシャルプレイヤを起動するためのボタンにしようと思っていたのですが、それが難しいという判断から、現在の形(オフィシャルプレイヤをタブで開く)となっています。

現状で実装が難しい機能

オフィシャルプレイヤをポップアップに表示することについて

オフィシャルプレイヤをポップアップで表示しない理由を3段落くらいで書いておきます。

現在、本拡張機能がバックグラウンドでの再生を実現しているのは、Overview - Google Chromeの「Background Pages」でradiko.jpのオフィシャルプレイヤを起動するという手段を取っているためです。これはつまり、タブには表示しないけれど、Chromeの背景ではずっと(Chrome起動中)オフィシャルプレイヤを動かしている状態です(実際は、本拡張機能の演奏停止中は背景のオフィシャルプレイヤを消すという設計にしてますが)。

一方、ポップアップにオフィシャルプレイヤを表示するということは、背景ではなく、前面でオフィシャルプレイヤを動かすことになります。Chromeのポップアップはフォーカスが他に移動すると閉じる設計になっています。つまり、オフィシャルプレイヤがポップアップにある場合、ポップアップが閉じられると、オフィシャルプレイヤも閉じる/終了してしまうということになり、本拡張機能の目玉であるバックグラウンドでの再生機能が失われます。:

ポップアップが閉じたイベントをキャッチして、オフィシャルプレイヤをバックグラウンドに転送する(オフィシャルプレイヤが前面から背景に移ることで再生状態が維持される)手段はないかと、documentを漁りましたが、どうも難しそうです(タブを閉じたというイベントはキャッチ出来るのだが、ポップアップについて似たAPIが見当たらない)。というわけで、現在のように、オフィシャルプレイヤを開きたいならタブで、本拡張機能は停止するから、後はご自由に、という形になっています。

ふう。

音量調整について

音を扱うものとして、音量調整機能を(ポップアップに)付けたいところではありますが、radiko.jpのオフィシャルプレイヤが外部制御(つまりJavaScriptFlashを操作すること)に今のところ対応していないため、実装していません。

これについての現状での対策は、radiko.jpのオフィシャルプレイヤを1度起動し、音量を調整すれば、本拡張機能でも音量が反映されるという手段があります(調整した音量はChrome終了/再起動後も維持されます)。

radiko.jp自体が今のところ実験段階です。実用段階になり、APIが公開されることがあれば、これらの事情も解決するかもしれません。

ExternalInterfaceを持ち、かつ、rtmp://から直接データを引っ張ってくるクライアント.swfを自作すれば外部制御が可能であることを知りました。検討してみたいところですが、radiko.jpの方から何か言われそうで怖いです。ついでに、セキュリティ的にも弱いデザインになるので、しない方向で。現状は、radiko.jpのオフィシャルプレイヤを通して使っているという安心感があります。

利用にあたってちょっとしたテクニック

出来るだけキーボードで操作したい派のテクニック

(Ver. 1.1.2から)ポップアップにフォーカスがある時、下矢印キー押下でタイムテーブル表示

番組情報の詳細

番組情報に詳細データが含まれていた場合、タイムテーブル内の番組タイトルにマウスを乗せるとツールチップに表示します。

Background Pageに含まれるメソッド
boolean isPlaying()
再生中(true) or 停止中(false)を返す。
stopPlayer()
拡張機能の音声を停止する。
setChannel(string)
局を指定し("TBS"、"ABC"など3文字のstation_id文字列を引数にし)、本拡張機能で再生する。
string getChannel()
再生中の局("TBS"、"ABC"など3文字のstation_id文字列)を返す。
string getRegion()
radiko.jp利用地域を文字列 "JP13"(Tokyo)または"JP27"(Osaka) で返す(ユーザのオプション設定による)。

改版履歴

2010-03-17 Ver. 0.1
radiko.jpのオフィシャルプレイヤ(Flash製)をそのままポップアップに表示させる
2010-03-18 Ver. 0.5
バックグラウンド再生を実現、インタフェースをコンパクトに
2010-03-18 Ver. 0.7
再生/停止ボタンに画像を使用、バッジに再生中の局を表示させる
ボタン画像は http://deviantdark.deviantart.com/art/hydroxygen-iconset-100826865 を使用しています
2010-03-19 Ver. 0.8
radiko.jp/番組表へのリンクを追加
2010-03-20 Ver. 0.9
radiko.jpオフィシャルプレイヤをタブで開くリンクを追加
2010-03-21 Ver. 1.0
現在放送中/次放送の番組掲載タイムテーブルを表示出来るようにした
番組情報取得地域判別のため、オプション設定が必須に
2010-03-22 Ver. 1.1
タイムテーブル内の局名をクリックで再生可能にした
2010-03-24 Ver. 1.1.1
タイムテーブルの装飾 / 番組タイトルツールチップ
を改行に置換
2010-03-24 Ver. 1.1.2
ポップアップにフォーカスがある時、下矢印キー押下でタイムテーブルを表示
2010-03-25 Ver. 1.1.3
タイムテーブル内に番組公式Webサイトへのリンクを追加
(放送中の曲、リクエスト用メールアドレスチェックなどのために)
2010-03-26 Ver. 1.1.4
番組タイトルツールチップ
(ニッポン放送のみ)を改行に置換
2010-03-28 Ver. 1.1.5
番組情報取得地域の自動判別に対応(オプション未設定環境のみ)
(オプション未設定の場合は判別のため動作が遅くなります)
2010-03-30 Ver. 1.2(~ 1.2.9修正)
InterFM/TOKYO FM/J-WAVEの放送中の曲を表示出来るようにした
オプション設定に放送中の曲をタイムテーブルに表示するか設定項目を追加
(曲表示不要と判断された場合OFFを推奨)
2010-04-04 Ver. 1.3
オプション設定にポップアップ表示時にタイムテーブルを開く設定項目を追加
(Onにするとタイムテーブルを常に開いた状態でポップアップを表示)
2010-04-09 Ver. 1.4(~ 1.4.3修正)
選択局の現在放送中の番組情報をDesktop Notificationsで表示させるボタン追加
オプション設定にDesktop Notificationsの許可設定項目を追加
2010-04-11 Ver. 1.4.4
再生/局切り替え時にDesktop Notificationsを表示させるようにした
[i]ボタンはポップアップ内に放送中番組情報を表示させる機能に固定
2010-04-12 Ver. 1.4.5
全FM局の放送中の曲を表示に対応
2010-04-13 Ver. 1.4.6(~1.4.9修正)
番組切り替わり時にもDesktop Notificationsを表示させるようにした
2010-09-13 Ver. 1.4.10(~1.4.11修正)
情報読み込み中にNow loadingマークを表示させるようにした
2010-10-23 Ver. 1.5.0(~1.5.1修正)
ポップアップ切り離し(独立ウィンドウ化)を可能にした
2011-03-18 Ver. 1.6.0(~1.6.3修正)
タイムテーブルの番組リストを(標準)現在放送中番組のみ - (マウスオーバ)次放送番組を追加表示の2段階表示に変更
ポップアップ切り離し機能を無くした
オプション画面、ポップアッププレイヤの微修正
2011-04-30 Ver. 1.6.4
復興支援プロジェクト局(4局)追加
2011-05-21 Ver. 1.6.5(~1.6.6修正)
復興支援プロジェクト局(3局)追加
2011-08-05 Ver. 1.7.0(~1.7.1修正)
radiko v2に対応に向けて、聴取地域手動設定を必須に
2011-09-01 Ver. 1.8.0
らじる★らじる(NHKラジオ第1、第2、FM)に対応 (~1.8.1 対応強化)