Archive for 3月, 2008

28
2008

USのYahoo Widgetsから放置プレイを食らっています。
2月の終わりにwidgetを投稿しました。セキュリティ問題で公開停止を食らっていたのでそれを修正したのですが、一行に公開されません。過去の経験上、新規だろうが、バージョンアップだろうが数日で公開されていました。また問題があって公開できない時でも、ここ直してね。という返事がちゃんと来たものです。
ところが今回はなかなか投稿したwidgetが表示されませんし、修正依頼も来ません。
そこで2週間たってからクレームのメールを出しました。
返事はすぐに来て、「たくさんのwidgetsがあるので投稿順に順番にチェックしてます、まってくださいね。」という内容でした。
なんかtemplateくさい回答だったのですが、とりあえず黙って1週間待ちました。
3週間経ちました。まだ表示されません。順番待ちとはいえwidgetの公開に3週間かかるというのはサービスとして機能しているとは言い難いです。バグがあって直しても3週間待たされるとしたら滅多なことじゃバージョンアップできなくなります。
で、2度目のクレーム。今度はtemplateで返されないように注意して、「3週間経ちましたが、まだ公開されません。過去に投稿したときはいつも数日で公開されていました。たくさんwidgetのチェックがあって忙しいのは理解しています。しかしながら、今はチェックに3週間もかかるのでしょうか。私のwidgetに問題があるのであればお知らせください。」
すぐに回答が来て、「submitしたファイル名を教えてください。ファイル名でログを追ってみます」とのこと。すぐにこちらもファイル名を折り返す。またすぐに回答がきて「すぐに調べて回答します」と来ました。
が、それからさらに一週間が経とうとしていて、とうとう4週間。つまりほぼ一ヶ月放置プレイです。これは「token流メール送信奥義・返事が来ないので全く同じ内容のメールをそのまま送る」を応用してもう一回submitした方が良いのでしょうか・・・

27
2008

Adobe AIRアプリケーションを配布する場合に、.airという拡張子でパッケージングして配布します。.airファイルは中身はzipファイルで拡張子を.airにしたものです。
Adobe AIRをインストールすると .airファイルにAIR Application Installerが関連付き、.airファイルを実行すると、アプリがインストールされてなければインストールし、既にインストールされていれば置き換えるかどうか、古いバージョンが入っていればバージョンアップするかどうか、など良きにはからってくれ、起動してくれるようになります。
これによりwebには.airファイルを公開しとけばそれが自動解凍式インストーラーになるわけです。
しかし、IEでairファイルをダウンロードすると中身を勝手に判定して.zip拡張子でローカルに保存しようとするので AIR Application Installerに関連付かなくなりばつが悪いです。
Adobeによるとwebサーバに下記を追加せよと書いてあります。

AddType application/vnd.adobe.air-application-installer-package+zip .air

ですが、レンタルサーバなどで設定がいじれないケースは自分でHTTP headerをmimeを返したりしたくなります。
phpの場合は下記のようなスクリプトを.airファイルと同じところにおいて、ダウンロードのリンクはこのphpファイルにすればよいです。

<?php
$filename = "foo.air";
$mime = "application/vnd.adobe.air-application-installer-package+zip";
header("Content-Type: {$mime}");
header('Content-Disposition: attachment; filename="'.$filename.'"');
readfile($filename);
?>
24
2008

期待を集めているのか、集めていないのか全くよくわからない「WALKMAN.LOG」ですが、今のところまだアクセス制限はつけたまま、一部の限られた日としか使えない状態が続いており申し訳ない限りです。
正直なところ、制限がかかっていて世の中に見せびらかせないので、ますます再生履歴アップしたけど、だから何なの?という状態に陥っているわけなのですが、それではまずいということでブログパーツを作成して外に公開してみました。
kwLogにも貼り付けてありますが、ブログパーツにはアクセス制限をかけていないので誰でもみることはできます。
それ以外に変わったところといえば・・・ぽつぽつとした変更のみ。
mixi musicに対応しようかと思ったらどうも古いmixstationを使わないといけないらしいような情報を見つけてかなり面倒そうな感じでやる気が99%ダウンしています。元々mixi使ってないし・・・、なぜAPI公開しないのかわからないけれどmixi自体がある意味オープンなインターネットにおける閉じたclosedな世界という一見矛盾した世界をつくっているところなので世間のAPI公開の流れとは無縁なのかもしれません。そう考えると残り1%しかないやる気もますますダウンします。。。
PLAYLOGに対応しようかと思いましたが、SonicStageとかぶるし何なら二重投稿になりかねないしこちらもいまいち進めるべきと思えず・・・
ちょっとWALKMAN.LOGから離れて別のアプリを作ろうと思っています。

17
2008

さて、Cocoa TouchやAndoridもやらないといけないんですが、そろそろSilverlightやAIRでアプリを作ろうと思い、ちょこちょこ調べていました。
まずはmRadioをSilverlight(1.0)対応しようと思い、いろいろやりました。
・外部のasxファイルは再生できるか。
SilverlightにはMediaElementというコントロールがあり、SourceにURLを指定します。ドキュメントを見る限りはcrossdomainでも大丈夫なようにです。しかし、asxファイルを食わしてもNETWORK_ERRORになってしまいました。asxをパースして中のrefを直接指定したところ再生できました。面倒ですができないこともないです。
・xamlを動的に作って読み込めるか。
外部のRSSを読み込んで表示する場合など、xamlを動的に作成したいことがあります。silverlightObject.content.CreateFromXamlというメソッドに食わせると文字列がxamlのオブジェクトになるようです。あとはこれを、表示したいコンテナ.children.addでいけるようです。
こんな感じ。

handleLoad: function(plugIn, userContext, rootElement)  {
var container = plugIn.content.findName("library");
var xamlFragment = '<TextBlock Text="Hello, World!" />';
var textBlock = plugIn.content.createFromXaml(xamlFragment, false);
container.children.addtextBlock
},

・外部にあるxamlを動的にダウンロードして表示できるか。
silvelightObjectからDownloaderというコントローラを生成して外部のファイルをダウンロードできます。こんな感じ。

handleLoad: function(plugIn, userContext, rootElement)  {
this.plugIn = plugin;
var downloader = this.plugIn.createObject("Downloader");
downloader.addEventListener("Completed", Silverlight.createDelegate(this, this.xamldataLoadComplete));
downloader.open("GET", "foo.xaml");
downloader.send();
},
xamldataLoadComplete: function (sender, eventArgs) {
var libraryXml = this.plugIn.content.createFromXaml(sender.ResponseText);
var container = this.plugIn.content.findName("library");
container.children.add(libraryXml);
},

ダウンロード完了イベントのxamldataLoadCompleteの中でダウンロードしたファイルがテキストファイルであればsender.ResponseTextでデータが取得できるので、それをcreateFromXamlでXamlを作ってコンテナにAdd。
Downloaderにzipを食わせて中のファイルをファイル名指定で取り出したりもできるよう。
・Xamlからのイベント処理
これも簡単。Xaml側でJavaScriptのglobal関数を指定するだけ。
これくらいわかればあとは書くだけといきたいところだったのですが・・・ListViewみたいなものを作ろうと思い挫折しました。いろいろなサンプルをみてもほとんどコントロールが絶対値で座標指定がしてあります。。。
ドキュメントを見てもListViewという文字もOrientationも、Gridも見つかりません。。。
ググってたら
http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-2-using-layout-management.aspxを見つけたのですが・・・
Silverlight 2です。
・・・なんかね。Silverlight 1.0であんまりがんばる必要はないのかな。。。と思いました。

17
2008

その日の思いつきでつくったmRadioでしたが、使い勝手があまり良くなかったと思うのでちゃんとラジオっぽくしてみました。
変更点は

  • Play/Pauseボタン追加
  • Next(Skip)ボタン追加
  • 再生時間表示
  • チャンネル選択(MoraWinAll,MoraWin邦楽,MoraWin洋楽の3種類)
  • 音量設定

SliderはYUI Libraryを使用。正直IE6でしか確認していません。
ラジオの周波数は、邦楽+洋楽、邦楽、洋楽の3つとなっています。

12
2008

創造的作業にはフレックス勤務が必要であります。
朝決められた時間に来て、決められた時間に帰る。そんなサラリーマン生活で良いものが作れるなら喜んで従いましょう。しかし残念ながらクリエータにとって時間の制約というのは締め切りを除いて生産性に寄与しないと思います。
今の会社はベンチャーで緩いのでほぼフレックス同然で働いています。成果は出しているので誰にも文句は言われません。(「言わせない」が正しい)。
ソニーにいたときはちゃんとフレックス勤務(コアタイムもなし、15分どこかにいれば出社したことになる。15分はタイムカードが15分刻みだからだと思う)になっていたのですが、実際のところ10:00より遅く出社したことも、22:00よりも早く帰ったことはないです(働き過ぎ!)。それでも意味もなく(必要もなく)9:30に出社せよと言われるのと、メールがたくさん来るし、会議はぼこぼこ設定されてるし、早くいかないとアメリカ人は帰っちゃうし、というので自ら9:30に出社するのでは精神的に全然違います。
こう思うのは周りに縛られたくないと思う僕ならではの考えなんでしょうか??でもまじめにフレックスのない会社では働かないよ。それぐらい優先度が高い事象ですよ。

09
2008

Leopard入れたよ。なんでiPod Touchが認識しないんだよ。
・Leopard (iTunes) + iPod Video => 認識する
・Leopard (iTunes) + iPod Touch => 認識しない
・Windows XP (iTunes) + iPod Touch => 認識する
ジョブズよ一つだけ言わせてくれ。LeopardはXP以下だ!!少なくとも上記の局所的な領域では。
ひどいよジョブズ。君のiPhone SDKによるLeopard購入キャンペーンにまんまとのってあげたのにこの仕打ちは。。。
今、一生懸命復旧方法をググってるよ。

09
2008

ようやくXPのOSの再セットアップが終わりました。
最近は自作プログラムはVAIO Type Tでがりがり書いているのですが、HDDが心配になってきました。空き容量がどうこうではなく寿命の心配。
ソニーの僕がいた部署では会議や自宅作業のために生活PCという名でノートPCが支給され、好きなモデルを選べました。開発用途ではないので今で言うとType Tのような小型のモデルを選ぶ人がほとんどです。
そんな中、生活PCですら開発に使うと心に誓っていた僕はVAIO Zを選択しました。実際、二つのバージョンを平行開発しないといけないときがあり、ノートPCとデスクトップPCで環境を分けて開発していたりもしました。(これを良いわけにZにメモリ増強しまくったりもした)
生活PC用途としてメールやスケジュール。資料作成もこのVAIO Zを使っており、誰よりもノートPCを酷使した結果、3年間の使用で3,4回HDDを飛ばしました。HDDが一年持ったか持たないかで飛んでいた記憶があります。
データが救えなかった苦い思い出が糧となって、日々のバックアップのスクリプト化&スケジュール化をするようになった自分もいるのですが、壊れる以前に、HDDは一年で代えようと思っていました。
ところがぼーとしている内にえらいことになっていました

  • 換装候補として考えていたMK1011GAH、MK8009GAHはソケットが違うため使えないことが判明
  • 接続できるMK8007GAH、MK6006GAHは現在ほとんど生産されておらず値段が急騰中

もともと自分の使っているType TXは内蔵HDDが2.5インチではなく1.8インチなので選択肢があまりありません。(最近のオーダーメイドでは1.8か2.5か選べるようですが) MK1011GAHは100GBで2万円くらいなのに対して生産中止状態の80GBのMK8007GAHは3万円にまで急騰していました。
生産中止とか言われるとスペアでもう一個くらい買っておきたいところなのに、HDDだけで6万円の出費なんてありえない。。。そんなわけで60GBのMK6006GAHを2台買いました。こっちは1台13,000円程度でした。
実際のところ開発用途だからそんなにHDDの容量は使っていませんでした。XP/Vistaを両方インストールしていたので圧迫していたのですが、Vistaは重くて使い物にならず今年に入ってから一度も起動してません。XP:30GB/Vista:50GBでパーティション分けていたので(当時はVistaをメインにするつもりだった)XPだけで60GBなら余裕だと思っています。
これでVistaのライセンスが一個余るんでどうしようかなぁと考えてる次第。

02
2008

x-jukebox.comにて流行の視聴曲をランダム再生するmRadioをリリースしました。
http://x-jukebox.com/mradio
mradio_20080302.jpg
mora winの邦楽ランキングのxmlを使って視聴曲をランダム再生しています。視聴曲がWindows Media形式のため、Windows Media PlayerをActiveX Object経由で内部生成し再生しています。このためWindows + IEでしか使うことができません。。。。この制限事項を解決するためにSilverlightで作ってみようと考えています。
SongWidgetのようにアマゾンのレビューを表示するバージョンも作ったのですが、デザインがgdgdになったので最初のバージョンはシンプルにということで機能を削りました。
mRadioは帰りの電車に思いついてそのまま夜中に作成したのですが、これを可能にできたのはWidget用に作っていたWidget Abstract Layer+Bullseyeという自作汎用ライブラリ(Javascript)です。例えばWindows Media Playerを叩くところはSongWidgetと共通のソースコードを使っています。