« インマゼール&アニマ・エテルナによる、ベートーヴェン交響曲全集 | トップページ | マイク・オールドフィールドでクラシック »

2008年5月11日 (日)

foobar2000 と Windows Vista サイドバー ガジェット (その2)

foobar2000Gadget 先日、Law James 氏による "Now Playing" という Vista 用のサイドバー・ガジェットをご紹介した。それをすこし自分用に改造させてもらって使っているという話もした。

それが――薄々そうなるような気はしていたのだが――いろいろと調整しているうちに面倒くさくなり、結局ぜんぶ自分で作りなおすことにした。いやもちろん、自分で作るほうがよほど面倒だという話もあるけれど、「いつでももとにもどせるように」と改修箇所に足跡を残したりしているうちに足跡だらけで煩雑になってきて、「もとにもどす機会」など絶対にこないと思うようになった。そして James 氏にはやや失礼ながら、もともとの構造上の混沌感も気になりはじめて、もはやもとにもどす気がないのであれば、まっさらのところから作りなおしたほうがいいという自暴自棄的な結論に至ったのだ。その成果が、左上に表示しているスナッショットだ。


おかげで、今年のゴールデン・ウィークはこのガジェットと CSS と JavaScript 漬けの日々になった。自宅にいるあいだは当然として、子供たちを連れて実家に帰ったときも、ずっとノートPCと向きあっていた。親からすれば、たまにしか帰ってこないのに「いったい、なにしに来たんや」という状況のはずなのだけれど、じつはこれはそうでもなくて、要するにぼくは車を運転してかわいい孫を連れて行きさえすればそれで役割は果たしたも同然なのだ。ただまあ、いい年こいて iPod を首からぶら下げてPCに向かって没入している姿は、かなり感じの悪いものだったにはちがいない。

ぼくは長らくソフトウェア開発をやってきたけれど、 Web まわりの開発技術にはまったく弱い。仕事ではバックエンドのデーモンやサービスの開発が多く、また個人的にやっていたフリーソフトやシェアウェアも、いわゆる Windows ネイティヴの GUI アプリばかり。言語はもっぱら溺愛する C++。もうそろそろレガシーの仲間入りだ。それに追い討ちをかけるように、この数年は自分で直接作業をするということがあまりなくなってきて、かわりに頼もしい (?) 若い連中が活躍してくれるようになった。 Web まわりの仕事は、ぼく自身は爪先立ちでようすをうかがうような気持ちで接してきた。

そんな状況なものだから、いまどきのひとたちなら常識の範疇ですませてしまうようなことが、いちいち調べながらになって、だいぶ時間がかかった。おまけにこの手のアプリケーションでは、なにかと画像素材が必要になる。これまでデジカメ写真の処理でしか使っていなかった Adobe Photoshop Elements 6 をひっぱりだしてきて、はじめて使う機能に悩みながら、そもそも持ちあわせていない絵心を叱咤激励し、素材を作るだけでもまる一日かかった。

でもおかげで、さまざまなことが勉強できた。 JavaScript は Java というよりまるで C言語+Variant スクリプトじゃねえかと思いつつ――そんなことも知らなかったのだ――連休が終わるころには、どうか自分でクラス (カスタムオブジェクト) を作れるようになり、そうなるとカプセル化もできるようになる。そうして日に日に構造もマシなものになっていった。

また、Vista ガジェットは、当然のごとく Windows Vista で動作する。ということは、ブラウザ環境として Internet Explorer 7 の環境を前提としていいということだ。これはありがたかった。ブラウザの互換性の問題に悩んでいたら、とても数日程度の休暇では仕上げられなかっただろう。

ガジェットの基本構造は、James 氏のものではなく、MSDN に掲載されていたDonavon West 氏の記事のものを参考にした。なんでもかんでもスクリプト側で処理して、HTML/CSS 側を徹底的に簡素にする氏のやり方は全面的には賛成しかねるものの、入門者としてはとても役に立った。

できあがったガジェットは、冒頭にあげた画像で見てのとおり、サイドバーにドッキングした状態でありながら、すこし外にはみ出している。お行儀の悪いガジェットである。いろいろ迷ったけれど、これくらいが「表示する情報量」と「土地代」のバランスがいいような気がしたからだ。このあたりの大きさは、設定で変えられるようにした。

foobar2000Gadget2ぼくが使わない機能は、ほとんど入れなかった。対応しているプレーヤーソフトは foobar2000 だけだし、歌詞の対応も amazon の商品ページへのリンクもない。トラック名はアルバムジャケットの上に表示して長い曲名でもわかりやすくして、再生位置やトラック情報は専用の表示場所を用意した。

ときどき、反応が鈍くなり、foobar2000 での再生が「詰まる」場合がある。たぶん foobar2000 の COM Automation Server プラグイン側で例外が発生しているのだろうと思うが、まだよくわからない。詰まっている数秒のあいだは、Windows の WerFault.exe が起動している。Sidebar.exe から見ると foobar2000.exe はアウトプロセスサーバということになり、Sidebar.exe からの COM Automation Server 経由でのアクセスと、 foobar2000 自身の動作とで、排他がうまくいっていないのかもしれない。曲の再生しはじめや、foobar2000 の終了時によく発生している気がするけれど、いずれにしてももうしばらくその辺は調べていく必要がありそうだ。

冒頭にあげた画像で、下についている小さいガジェットは、勢いでこの土日に作成した、プリアンプ MIMESIS 27ME の状態表示ガジェットだ。ボリューム位置や入力チャネルなどが表示されている。背景には、このアンプのアイコンであるローレット加工のボリュームの写真を加工して貼りこんであるが、見てのとおりじつはこのブログのタイトル用に撮影した写真とおなじものだ。

MIMESIS27 もともとはタスクトレーに常駐し、 RS-232C 経由で MIMESIS 27 を制御する Win32 版のツールを作って使っていたのだが、タスクトレーだけでは表示できる情報が小さすぎ、ポップアップを出せば邪魔になる。これもガジェットにしたことで快適になった。ガジェットから RS-232C の通信をさせるのは簡単にはできなさそうなので、このタスクトレー用のツールを介して通信を行っている。

ガジェットそのものはたいしたことはなかったけれど、タスクトレー用のツールに対して OLE オートメーションサーバの機能を加えるところが大変だった。どうも OLE はややこしい。スクリプティングの世界から見ると、とても簡単で便利なものなのだが。

追記: ここでご紹介したガジェットを公開しました。問題も対策ずみです。詳しくはここを参照ください。

 

|

« インマゼール&アニマ・エテルナによる、ベートーヴェン交響曲全集 | トップページ | マイク・オールドフィールドでクラシック »

オーディオ」カテゴリの記事

コンピュータ」カテゴリの記事

パソコン・インターネット」カテゴリの記事

音楽」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« インマゼール&アニマ・エテルナによる、ベートーヴェン交響曲全集 | トップページ | マイク・オールドフィールドでクラシック »