トップ «前の日記(2005-10-21) 最新 次の日記(2005-10-23)» 編集

jFD開発したりしなかったり日誌

2004|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|
2005年
10月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

2005-10-22 [長年日記]

_ お袋来たる

お袋が上京してきて、整体をしていってくれた。

Oさんの噂話なんかをしつつ整体。

あと、酒を控えろと怒られた。

ごもっとも。

あれは脳への影響がでかいそうで、これしか資本が無いので少し控えようと思う。

_ それから、

てくてく歩いて、先日バイクを注文したレッドバロンへ。

月曜午前にやっと免許が入手できるのでその晩納車するつもりだが、

会社にヘルメットを持ってかないで済むように預かってもらうことになっていた。

いつもの店員さんが接客中なので他の店員さんに対応してもらって、

自分のバイクを眺めていた。

このお預け感がどうにも・・・

_ JMF

久しぶりにJava Media Frameworkを触っている。

jFD1でムービープレイヤーを実装して以来だけど、

あの頃に比べると自分の腕も上がっているのでAPIがよりよく

理解できるのだけど、やっぱこのAPI出来悪いわ。

なんか無駄に複雑な気がする。

たとえばPlayerの初期化なんだけど、Playerを生成して、realize()を呼ぶと

初期化できるんだけど、realize()は初期化処理が終わる前に

制御を戻すようになっている。

初期化が完了したかどうかを知るにはPlayerにControllerListenerを追加して、

controllerUpdateの中で判別しないといけない。

普通、ムービーなんかを表示するときは、

「初期化→描画コンポーネント取得」

という流れになるけど、何も考えずに

player.realize();
Component c = player.getVisualComponent();

_ みたいな感じにやると、

「プレーヤーがまだrealizeされてねーのにgetVisualComponent()呼ぶんじゃねーよ」

例外が発生する。

ネットワーク越しのストリームを開くこともあるので非同期処理なのは

わからんでもないが、それにしても使い勝手が悪い。

また、設計思想がアレで、PlayerがClockを継承してる時点で

どうかと思う。

これってhas-A関係じゃないのか?

委譲するべき部分を継承しているので継承が深すぎて、

主要インターフェイスの継承関係がこうなってる。

Processor─Player┬MediaHandler
         └Controller┬Clock
               └Duration

_ Processorは5個のインターフェイスを継承していて、

数えたら38個のpublicメソッドを持っていた。

これは酷い。

JMFは古いAPIなので、当時は今ほど正しいオブジェクト指向設計が理解されてなかったし、

仕方ないとは思うんだけどこれはなあ・・・

本日のツッコミ(全5件) [ツッコミを入れる]
_ keisuken (2005-10-24 18:57)

いづれにしてもコンテンツごとrealizeしなくちゃいけないので,ここは富豪的にManager.createRealizedPlayer(or Processor)とかいきなりやってます.最初の初期化以外はすぐ再生が始まるのでそんなに問題ないのではないかと.
アレがLG3D上で動いてるんですけど(無茶,VisualComponentとか使えないので,Rendererは自分で作ってますよ.バカですね.ってネタバレしていいのか....

_ keisuken (2005-10-24 19:02)

ああ,それとRubyistな人から,クラスに多くのメソッドを実装するのもいいのではないだろうか,という意見もありました.
無駄に階層を設けて分かりにくくなる・面倒になるよりマシという意味なのですが,JMFの場合はあまりよくない実装ですね.

_ Shunji (2005-10-24 23:48)

createRealizedPlayerしかないですね。
リスナー使って制御するのは面倒くさすぎて。
しかしアレをLG3Dに移すってのはさすがというか・・・

メソッドが多すぎるのは、JMFの場合クラスの全貌がわかりづらくて、どのメソッドを呼んだらいいのかわからないです。
多分クラスを修正するときも影響の範囲が広すぎて苦労しそうです。
期待してませんが、JMF3.0が出るとしたらAPIを1から直して欲しいですね。

_ yohei (2005-10-27 02:14)

コメントいれるのが遅くなったが、酒ばかり飲んではいかんぞ。ペプシをのめ、ペプシだ。

_ Shunji (2005-10-27 11:28)

太るわい。
ダイペプじゃ。

本日のリンク元
その他のリンク元
検索