x-jukeboxのブログ記事

12

今年に入ってLyra(Lyra. Silverlight 2 MediaElementを操作するJavascriptライブラリ)というSilverlightのMediaElementをJavascriptでコントロールするライブラリを公開したのですが、ようやくそれをmRadioで使うようにしました。

http://x-jukebox.com/mradio

mRadioはMora.winのランキングの試聴曲をラジオのようにエンドレスで再生しまくるWebアプリです。Mora.winではWindows Media Streaming形式で試聴曲が公開されており従来のバージョンのmRadioではWindows Meida Player.ocxを使って再生していました。

ocx(ActiveX)はIEでしか使えないのでfirefoxでは非対応という制限がありましたが、今回の更新でLyraを経由してSilverlight 2で再生するようにしました。これでfirefoxでも再生できるようになりました!!!

これでmRadioは作業中音源でも使えるね。iPhoneで再生できるとうれしいなぁ。Silverlight対応してほしい。

11

LyraというOpenSourceをリリースします。
http://api.x-jukebox.com/lyra/

Silverlight2のMediaElementをJavascriptからコントロールするライブラリです。LyraはSilverlightアプリケーションとJavascriptのセットになっています。

.NET(WPF/E)のWindows.System.Controls.MediaElementのシンプルなラッパーです。



Javascriptの呼び出しでSilverlight側のMediaElementを操作できるのはもちろん、Silverlight側のイベントもJavascript側で処理できます。Silverlightがあることをあまり意識せずに使うことができます。

このライブラリを使ってWebアプリを作る場合、ユーザが使うブラウザにSilverlight2がインストールされている必要があります。

現状、javascriptから、.NET側のMedia.Elementコントロールの生成やビデオウインドウの管理などに懸念があるため、Media.Elementはシングルトンでしか使えません。またビデオウインドウにも対応していません。

作成のきっかけは、mRadioのfirefox対応でSilverlightアプリケーションを作ろうとしたときに、「SilverlightでUIつくるの(学習も含めて)面倒くささそうだなぁ。まてよ、Silverlightはメディアの再生だけつかってUIはそのままJavascriptのUIライブラリで作ったらよくね?」というところから来ています。

従来Windows Mediaのストリーミング再生をWebサイトで行う場合はWindows Media Player.ocxをページに貼り付けることが多いと思いますが、ocx(ActiveX)はIEでしか使えないためfirefoxなどのIE以外のブラウザでは非対応にせざるを得なかったと思います。

CrossBrowserでコンテンツを配信するには、YouTubeに代表されるようにFlashPlayerで再生できるコンテンツを用意することが多かったと思いますが、著作権保護の課題もあります。

著作権保護がらみで(しかたなく?)Windows Mediaで配信しているようなサイトではLyraを使うことでSilverlightの知識を要せずにサイトをfirefox対応するようなことができるんじゃないかと期待しています。

まずはpilot projectとしてmRadioのfirefox対応をLyraを使って実現するつもりです。

11

symfony 1.2.2がリリースされました。
http://www.symfony-project.org/blog/2009/01/08/symfony-1-2-2-doctrine-service-release

基本bugfix releaseです。自宅サーバに入れました。

05

自宅サーバのWebアプリで使っているPHPのフレームワークであるsymfonyのバージョンを1.2にあげました。

kwLabsのSandbox
x-jukebox.com
walkmanlog.com

などに影響があります。

下記を参考にやりました。
http://www.symfony-project.org/installation/1_2/upgrade

symfonyというか、Propelの1.2->1.3の変更でそこそこ影響をうけました。symfonyのModelをちゃんと使っていればPropelの変更などには影響をうけないんですが、複雑なSQLをModelでがんばるのが面倒で、中途半端にPropelを直接使っていたのでいくつか変更が必要でした。

PropelのUpdateにはこちらが参考になります。
http://propel.phpdb.org/trac/wiki/Users/Documentation/1.3/Upgrading

symfonyの変更でいうと、
Modelの日付型の属性を取得するときにformat=nullで指定してUnixTimeStampを取得するような感じにしていたのだけど、symfony 1.2ではformat=nullで日付型の属性を取得するとDateTimeオブジェクトが返ってくるようでした。素直にformat='U'でTimeStampをとるように変更。はまったのはそれくらい。

19

mRadioずーと動いてなかったのよね。

Silverlight2で書き直す予定だったのだけど、とりあえずExtJSで書き直しました。
http://x-jukebox.com/mradio



mRadioはmoraのランキングから視聴曲を勝手に連続再生するハッキングラジオです。視聴曲がWindows Media形式のためWindows Media PlayerをActiveX経由でたたいて再生しています。このためIEでしか使えません。

Silverlightを使えばWindows Mediaストリーミングが再生できるので、Firefoxでも使えるようになります。本当はUIもSilverlightで書きたかったけど面倒だから再生エンジンだけライブラリ化してJavascriptからたたけないかな?

17

aTunesの内部実装を書き直しました。JavaScript側はWALKMANLOGと同じフレームワークを使いました。これでOpenIDログインのところとかを共通に使い回す予定。

デザインも若干変わっています。(メニューの追加とか)
http://x-jukebox.com/atunes

機能的には、お気に入りアーティストの編集(削除)ができるようになりました。今までは追加ができても削除できませんでした。削除するAPIは用意していたのですがその機能を使うUIが追いつきませんでした。ログインとかこのあたりではlightWindowを使ってお茶を濁していたのですが新しいフレームワークのWindowで書き直し削除もできるようになりました。

あとは内部的にPEARのService_YouTubeで旧YouTube APIを使っていたところをGoogle Data APIのクライアントライブラリを用いてGoogle Data API版のYouTube APIを使うようにしました。動画の検索が早くなるといいなぁ。

14

自宅サーバのsymfonyのバージョンを10/4にリリースされた1.1.4にアップデートしました。なんか(x-jukeboxとかWALKMAN.LOGとか)動かなくなってたらごめんなさい。

「symfonyで開発日記」が全然1.1系のバージョンアップの記事を書いてくれないので、購読をやめて普通に本家のブログを追っかけることにした。(というか最初からそれで良かったのでは・・・)

マイルストーンだと今月に1.2が出るっぽいんだけど、どうなんだろう。チケットまだ半分以上残ってるだけど。

17

仕事より趣味のプログラミングの方で疲労する件について。

昨日の明け方にaTunesを更新しました。
http://x-jukebox.com/atunes

まず大きな対応としてOpenID。OpenID技術セミナーを聞いて日も浅い内にOpenID対応しました。ユーザ認証を外部のサービスに任せるというのはだいぶ前から考えていました。個人でつくるwebサイトだとユーザ登録作業って面倒なんですよね。内輪のサービスなら適当でもいいですが、真面目にやるとメールでの本人確認とか、sslでパスワードの入力画面などは暗号化するとかは個人の自宅サーバではかなり面倒な作業。

そういうわけでaTunesはユーザ登録に対応していなかったのですが、最近のOpenIDの流行具合に触発されてユーザ認証に対応しました!

いまんところ


  • mixi

  • Yahoo! JAPAN

  • はてな


のアカウントでログインできます。

もちろん上記サービスに限らず任意のOpenIDでログインできるはずなんですが、テストとかしてる余裕がなかったので今のところ上記サービスに限定しています。

さて今回のupdateのrelease note的なもの

1) OpenIDでのユーザ認証に対応

前述の通り。

2) お気に入りアーティストの管理

ユーザ認証ができるようになったので、お気に入りアーティストを保存できるようにしました。少しは日常的に使えるようになったか?

3) feedの配信

意外と目玉機能かもしれない?アーティストの新着動画をfeedにして配信することにしました。YouTubeのH.264のmp4をenclosureにつけてpodcast配信しています。なのでiTunesに登録すれば動画がそのままダウンロードできる!

4) "."(dot)問題の修正

(俺的には)通称アリス九號.問題。

"アリス九號."、"Mr.Children"などアーティスト名に"."(dot)を含む場合にエラーが発生していました。フレームワークのrouting系の問題で、forumにいろいろ解決方法が載っていたのでそれに従いました。

5) 2ページ目以降の動画再生できない問題の修正

なんで気がつかなかったのだろう。。。

31

aTunesがようやく使い物になるplayerになりました。
http://x-jukebox.com/atunes

具体的には連続再生に対応しました。playerにYouTubeのflashを貼り付けていただけなので1動画の再生が終わるとそのまま放置。1曲再生で終わるplayerでは作業用なんかには使えないわけで・・・でもeventとれないから仕方ないじゃん。。。と思っていました。

javascriptでハンドリングできないか調べようとしたらあっさり見つかりました。
http://code.google.com/intl/ja/apis/youtube/js_api_reference.html#Events

別にhackとかなんでもなく普通にJavascript APIが公開されていました。これを使ってplayerの再生が終了したら次の動画のplayerをajaxでとってきてreplaceするというコードを書きました。内部でリスト管理するようにしたのでバグとかがあるかもしれません。

連続再生できると今度は音楽ビデオじゃないものはスキップする機能が欲しくなりました。自前のdbにMusicVideoのフラグを用意しようかと思ったりしています。

27

自宅サーバのsymfonyを1.0から1.1に更新しました。

x-jukebox(atunes/mradio)
walkmanlog
のプロジェクトも更新しました。

普通はバージョンをあげるメリットを見極めてあげるもんなのですが、勉強がてらつくってるWebサービスなのでなるだけ新しいものを使おうかと思った次第です。なんとなく軽くなんないかなーという淡い期待はあります。

1.0と1.1の互換性のない部分の更新のためプロジェクトのアップデートに数分かかったのですが、symfony(PHPの1ライブラリ)のアップデートでapacheを止めるわけにもいかないので一旦メンテナンス画面にした上で更新しました。

symfonyプロジェクトのwebフォルダの下に
maintenance.htaccess
maintenance.html
の二つを用意。

maintenance.htaccessはこんなん。

Options +FollowSymLinks +ExecCGI

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)$ maintenance.html [QSA,L]
</IfModule>

maintenance.htmlはメンテナンスです。を表示するただのhtml。

でsymfonyプロジェクトのwebディレクトリで下記コマンドを実行し、.htaccessを置き換え

mv .htaccess symfony.htaccess; mv maintenance.htaccess .htaccess

アップデートが終わったら

mv .htaccess maintenance.htaccess; mv symfony.htaccess .htaccess; cd ..; symfony cc;

で元に戻す。

1   2