HomePod

最新情報
  • Release 2では、音楽プレイヤーのディレクトリ(フォルダ)階層を利用した検索、再生をする機能が追加されるみたいです。
    というか自分がコード書きました。^-^;
  • 音楽の再生中にプレイリストに戻った場合、音楽の再生が止まります。 http://developer.gloolabs.com/のフォーラムで、これを中断しないようにするためのソースコードがあります。 じつは、これも自分が書いていたり。^-^; ただし、ソースコードなので、ディベロッパー登録して全ソースを入手する必要があります。
  • MP3のID3Tag Version 1.1の完全な国際化対応等を行うことを考えているようです。ただ、他人任せに近い…。というか、自分にまた…。

え〜、これ以上、エンドユーザーにただ働きさせないで(ぉ

最近は、買ってきたCDをMP3やOgg VorbisとかWMAに変更して、HDDに溜め込んでいる人は多いと思います。
ただ、この手のオーディオを聴くためにはPCを起動しておく必要があって面倒とか、PCとコンポ等は離れているので、
結局PCのスピーカで聴くしかないとか案外活用できません。
最近はiPod,iRiver,Gigabeat,HDDウォークマンとかのようなHDDプレイヤーも充実しており、
自宅外では活用できるし、自宅内でも活用できないかなぁと思っていたところにHomePodを見つけたので思わず買ってみました。
厳密には、HomePodもサーバーが必要なため、PCが必須となるのですが、曲の再生等はPCとは独立にできるようで、
自宅サーバーを立てている自分の場合はサーバーソフトを立ち上げっぱなしにしておけば、PCを意識しなくても良いのが利点です。

HomePod は Macsense社製の製品です(Macsenseのページ , HomePodのページ)
HomePodはU.S.内でしか発売していませんが、 PROVANTAGE.COMなどで注文することもできるようです。
アメリカ仕様ですが、電源は100-240Vですので、日本でそのまま使用することができます。
なお、無線対応なのに、電池で動作しないという完全に据え置き利用しか考慮されていない仕様です。


HomePodの仕組み


HomePodの仕組みは上図のような感じです。
PCにJavaをベースにして作られたサーバーソフトを起動して、 無線/有線を経由して、HomePod上にMP3を転送し、再生する。 一応、HomePod自体にもスピーカーが着いているので、単体で再生できます。 ただ、おまけレベルの音しかなりません。私は現地で購入したときに社員らしき人がデモをしていたのですが、 思い切り外部スピーカーでデモしてました。外部スピーカー自体は安物に見えましたが。^-^;
ということで、HomePodはスピーカー等に接続して利用するというのを前提として作られていると考えた方が良いでしょう。 なお、端子としてはステレオ端子と光デジタル端子の2種類があります。 私は、光デジタル端子経由でSharpの1bitコンポに接続しています。 192KbpsでエンコードされたMP3を再生した場合、それなりに再生されます。


HomePod Server Softwareに関して

HomePodの公式サポート環境はWindowsとMacです。 そのため、HomePodのCDにはそれぞれに対応したサーバーソフトが入っています。 ですが、一応Linuxで動作することも開発元のサイトには明記されていたりします。 Linuxで動かす場合は、サポート外(?)のExtraディレクトリに入っているJava版サーバーソフトウェアを利用します。
Linux用はJava版サーバーソフトを利用することで…というようなことが書いてあったりしますが、 Windows版もコア部分はJavaで記述されているようで、タスクバーに格納できるとか、 GUI周りをWin32 APIで作っているという程度の違いのようです。 Java版サーバーソフトはSwingで記述されています。
私はLinuxサーバー上にサーバーを立ち上げることを考えていたので、Java版の方を利用しています。

以下は、Java版サーバーソフト(filesystemlibrary.jar)の仕様に関して気がついたことを簡単にまとめてみました。

以下は、Linuxでサーバーを立ち上げる際の注意点というか、個人的なメモ。^-^;

J2SE 1.4.0等の古いVMや、ja_JP.eucJP/ja ロケールを利用した場合、ID3タグがうまく処理できないケースがあります。
以下の改造ID3v1Tagクラスでは正しく認識しているのに、 サーバーソフトのDB(もしくは、メモリ)への格納時点(あたりだと思う)でおかしくなっているのか、 HomePodにはID3タグが登録されていないファイルとしてファイル名のみが転送されるものがあります。
VMのバグかどうかは良くわかりませんが、原因は結構根の深い場所にありそうなので 深くは追求していません。
とりあえず、上記の組み合わせではそのような不具合は発生しなかったので、それで解決ということにしています。^-^;

不満と解決策?

HomePod はそれなりに使える(個人的には)ものではありますが、やはり不満があります。 HomePod 本体に関しては、


以上のことに関しては、修正の仕様がないというか、HomePod側のOSの修正が必要になると思われるので、 自分には手が出せません。とりあえず、あきらめるしかないという状況です。

次はJava版サーバーソフトに関する不満です。


とこんな感じでしょうか。 とりあえず、CUI版のサーバーソフト、ID3Tagの日本語対応に関しては、 それなりの手間のみで何とかできそうなので、サーバーソフトを改造を試みたところ、何とかなりました。^-^;
最初は、デコンパイラ君を使う方向でいろいろやっていたのですが、 埒があかないので、Developper登録しました。 で、ソースコードを直接変更しています。 gloolabsで公開しているコードの変更に関しては、 gloolabsのライセンスをちゃんと読んでいない(爆)のでとりあえず非公開の方向で。 ID3タグの読み込みに関してはsourceforgeから手に入れたコードを利用しているようです。このコードはGPLですので、改造したものをこのページで公開しています。

改造ポイントとしては次のような感じです。
( この改造は自分にとって都合よく動くことのみに注力しているため、 正しい国際化等は行っていません。f^-^;;;)

[ID3v1Tagの日本語対応]

lib/mp3.jarに格納されているhelliker.id3.ID3v1Tagに ID3v1Tagの解析用コードが含まれています。
このうち、ID3v1Tag.chopSubstring(string, int , int)で、 ID3タグの文字列の切り出しをやっています。
このメソッドはID3v1Tag.readTag()から呼び出されています。 このメソッドでは、ID3タグ部分のバイト配列(byte[])を取り出し、 Stringに変換し、ID3v1Tag.chopSubstring()に渡しています。 この時点で文字コード無視で、Stringに変換していますので、文字化けします。 しかも、chopSubstringはバイト数=文字数(ASCIIは一文字1byteなのでそのまま) として代入していますので、2byte文字の場合、後ろへずれてしまいます。
そこで、ID3v1Tag.chopSubstring(byte, int , int)と変更し、 バイト単位で文字列を切り出し、切り出したものを"JISAutoDetect"で String変換とすることで、ID3v1Tagで日本語に対応できます。

[ID3v2Frameの日本語対応]

lib/mp3.jarに格納されているhelliker.id3.ID3v2Frameに ID3v2Tagの読み込みが定義されています。
	ENC_TYPES
	    = new String[] { "ISO-8859-1", "UTF16", "UTF-16BE", "UTF-8" };
      

これを以下のように、JISAutoDetectを利用するように変更します。
	ENC_TYPES
	    = new String[] { "JISAutoDetect", "UTF16", "UTF-16BE", "UTF-8" };
      

これで、とりあえず、Linux環境で利用しても、SJISのID3v2Tagに対応できます。

[CUIでの起動]

com.gloolabs.apps.AudioLibrary.library.filesystem.MP3FileSystemLibrary が実行ファイルで、GUIの定義、アクション、サーバースレッド起動のすべてが定義されています。
ですので、これを書き換えるのが近道です。
基本的には、GUI用だと思われるコンポーネントをすべて削除し、Startボタンを押した場合に起動するようになっている部分を最初から実行するだけです。
gloolabsにdevelopper登録することで、コンソール版を入手可能ですが、 私のようにいろいろ変な改造をしている人には直接改造する方が都合が良いです。^-^;


files...

HomePodで利用しているライブラリとしてhttp://www.jukex.org/で公開されているjukexのID3タグの解析ライブラリを利用しているようです。
ですので、こちらを利用して、上記の改造を施したものを作成しました。 また、このパッケージはライセンスとしてGPLを採用しているようなので、 改造したライブラリと、パッケージを公開します。
当方で変更をしたものは、

の2つのみです。本来は改造した部分のみのソースコード公開でも良いかもしれませんが、面倒なので、jukex本体全体にしています。(^-^;
変更はソースコードのみで、その他のファイル(README含む)には一切手を加えていません。


まとめとデジカメ画像

ということで、簡単にまとめてみますと、 コンセプトはそれなりにいけてるけど、実装は追いついていないという感じです。 はっきり言って、日本語環境がまだまだなので、自己責任でなんとでもできる人以外にはあまりお勧めはできないかもしれません。
ただ、私の環境では、自分に都合が良いようにある程度改造が済んでいますので、それなりに使えると思っています。 とりあえず、CD入れ替えという面倒な作業なしにどんどん切り替えて曲が聴けますし、 操作用のPCが不要なので、それなりに活用しようと思っています。
購入を考えている人は頑張って、ソフトの改造をしてください。 というか、もっと使いやすいサーバーソフトどこかで開発してくれんかぁ。 glooというものをベースにしているらしいので、その気になれば、結構都合の良いシステムを作れるのではないかと思っています。 jodeがもっと完璧なコードをはいてくれるのなら、自分で作り直すという手もあるかもしれませんが。

以下、デジカメ画像です。クリックすると多少大きな画像を表示します。
HomePod

一応、日本語対応

しょぼいリモコン

こんな感じで使っています。


もどる