壊れたメガネ

ホッチキスの達人の意識の高いブログ。

Java で MP3 プレイヤーを作ってみた感想

この間 MP3プレイヤー を作って何となく公開してみました。
コードとか、war ファイルもあるのでよかったら見て下さい。


何で今更 MP3 プレイヤーなの?
僕は家では一台のデスクトップPCをサーバーとして常に動かしていて、主に次のような用途で利用しています。

  • ファイルサーバー
  • WEB サーバー
  • 開発プラットフォーム

用途はたったこれだけなのでうまい使い方ないかな~と少し考えました。
そこで、作業用BGM流せたらいいよな~と思いつきました。
でも、サーバーマシンの VLC プレイヤーのためにキーボードやモニタ触るのやだなと思いました。
じゃ、音楽再生するそういう WEB インターフェースを備えたサーバーを作ろうと考えました。
そういう感じで、一応、出来ました。


初めて Java で WEB アプリケーションを作ってみた感想
初めて Java で WEB アプリケーション作りました。面白かったです。
サーバーサイドの処理ははっきり言って終わっていると自覚しています。
初めて Java WEB アプリケーション作るってことで、掌田津耶乃先生の著書、Eclipse 3.6ではじめるJavaプログラミング入門―Eclipse 3.6 Helios対応を参考にしました。Eclipse って本ですが、実際の開発は NetBeans を使って行いました。

JSP を使わなかった理由
JSP は使っていません。が、ほんの一時、ほんの一部だけ使っていました。
なぜ使うのをやめたかと言うと、実行に JDK が必要になってくるからです。
JDKが必要になってくるのは、 JSP はいったんパースされ、それに対応するサーブレットが生成され、さらに Java バイトコードにコンパイルされるかららしいです。上で挙げた参考書にそう書いてあった気がします。

Java で MP3 ファイルの再生
Java で MP3 ファイルを再生する為のライブラリはいくつかあるのですが、JavaでMP3を再生する で紹介されていたJLayerというライブラリを使用しました。
UI と プレイヤーの持つメソッドとの対応をとるために JLayer の Player クラスのラッパーを書きました。このラッパークラスで再生キューを操作するのですが、マルチスレッドで一つのキューを扱うのに苦労しました。僕が書いたコードではうまくキューを扱えている気がしません。。

Apache Commons FileUpload が便利すぎた
プレイリストにリモートマシンから音楽を追加する為にファイルアップロードの処理を書きましたが、 Apache Commons FileUpload が便利すぎてビビりました。。上で挙げた参考書では、 POST データのパースからアップロードされたファイルの保存まで全て自前で書けるように分りやすい解説がありましたが、実際にアプリケーションを作る際に一から書けるものじゃないです。

Apache Commons IO も便利すぎた
あと、やはり Apache Commons IO の FileUtils も Utils というだけあって便利でした。ファイルのコピーとか、ディレクトリの再帰的な削除とかフツーにコード書けば十数行くらいの処理が、何も考えずにほんの2,3行で済むのはやっぱり魅力的でした。Util を名乗っていいのはこの位からなのかとなんとなく思いました。


n3musicbox をこれからどうするか
ここまで作ってみて、ストリーミングができたらいいな~と猛烈に思うようになりました。当初はそれほどでもなかったんですが。
音楽の再生タイムラインがないのも気持ち悪いと思っています。あのスライダーみたいなコントロールのことです。
音量調整が出来ないのもいまいちです。
普通に AJAX で作りましたが、流行の WebSocket で書き直したいとも考えています。
まぁいろいろです。余裕がある限りしばらくは作り続けようと考えています。