伝統的なアプリケーション開発技術と比較して、リッチ・インターネット・アプリケーション (RIAs) の最も重要な側面はメディア・リッチ・コンテンツを簡単に扱えるということである。Playr ActionScript 3 というミュージック・ライブラリ(リンク)はFlash、Flex、そしてAIRをベースにしたアプリケーションでミュージック・コンテンツを簡単に取り込むのに役立つライブラリの例である。InfoQではPlayrの開発者であるRonny Welter氏に詳しい話について聞いてみた。
Welter氏は、ベルギー在住の若いFlash開発者で、FlashFocus.nl(リンク)の議長を務めている。Welter氏は納期が迫った数多くのプロジェクトからいかにしてPlayrが誕生したのかについて以下のように表現した。
私はあるプロジェクトに携わっていたのですが、そのプロジェクトでは異なるプレイリストを扱える音楽プレーヤーが必要でした。こういう場合はFlashだ!と思いました。そこで即座にWebで調べたのですが、私が本当に必要とする機能を備えたライブラリは見つかりませんでした。とても急いでいたので、必要なものを自作しました。その後、作成したクラスをリリースしました。それはバグ・レポートと機能の追加要求を得るためでした。当初は'MusicPlayer'と呼ばれていました。ActionScript 3 に対応した最初のバージョンをリリースした際に、私がPlayrと名付けました。
Playrを使うと、Flash/Flexでどのような音楽プレーヤーでも容易に作ることができるようになります。簡単に、直感的に、そして素早くです。Playrは一つのトラックからフル機能を備えた音楽プレーヤーまであるとあらゆる要望に対処することが出来るのです。
Welter氏によると、Playrはモデル・ビュー・コントローラ (MVC) 風に設計されておりビューを作成した後、要望に合わせてモデルとコントローラを追加することが出来るとのことである。Walter氏によると、
ユーザがハンドラを任意のコントロールに簡単に関連付けられるように登録系の関数を追加しました。しかし、ユーザがもしイベント・リスナを使って全てを自分でフックしたいと思ったら、全力で頑張ってください。ほとんど全てのものにイベントを用意しています。これによって誰でも目的を達成出来るはずです。
Playrの開発中に直面した問題についてWelter氏は以下のように語った。
Playrは全てを簡単にするために作成しました。従って、柔軟性が高く、かつ簡単に使えるライブラリを構築するという点が最も困難でした。全てをシンプルに保ち、自分が望むようにPlayrを絞り込むことは時に頭痛のタネでした。トラックの時間に関する部分はまだしっくりきていない部分の一つです。今のところ、この数値をXMLを使って(秒単位で)指定しない限りうまく動かない機能があります。ID3タグはトラックのロード済み部分の長さしか返してくれないのです。例えば、240秒のトラックがあるとして調度半分までがロードされているとすると、ActionScriptはその楽曲の長さとして120秒を返します。言い換えると、トラックのバッファされている部分の長さを返すということです。ありとあらゆることを試してみましたが、今のところ正確な値を取得することが出来ていませんので、正確に取得できるようになるまでは我慢してXMLを使います。
将来の計画についてWelter氏は以下のように語りました。
Playrについて多くのアイディアを持っています。クロス・フェーディング、Last.fmのAPIとの統合、音のディストーションや音響効果などの新機能を考えています。今のところ、PlayrDiscovrと呼ばれるPHP実装があります。PlayrDiscovrはプレイリストを自動生成して時間を節約できます。PlayrDiscovrの最新バージョンはWard Werbrouck氏によって書かれました。ASP、Ruby、ColdFusion、そしてPythonでPlayrDiscovrを実装してくれる人を探しています。
音の視覚化機能を追加するためのVisualizrクラスに取り掛かっています。これはPlayrに限定されるものではありませんが、Playrと同じように簡単に使えるものでなければなりません。
Playrを使っている音楽関連プロジェクトを以下に挙げておく。
http://playr.nocreativity.com/look/singletrack/
http://playr.nocreativity.com/look/fullblown/
http://tarasnovak.com/blog/2009/01/15/flex-music-player-v2/
http://guusdegraeve.be/schoolwork/transformers/