Archive : 2008-05
本気でやるならMozillaアプリは避けてSilverlightアプリを作るべき
本気でやるならクロスプラットフォームは避けてMozillaアプリを作るべき-hogehoge
うーん、そうかな。自分もクロスブラウザスクリプティングの労に嫌気が差して、Firefoxの拡張制作に逃げ込んだ経験がある。でも逃げ込んだ先のMDCのドキュメント漁ってたら仕様変更・方針転換の痕跡がゴロゴロあって、サンプルコードとか読んでも、バージョン毎に処理分けしてたりと、クロスブラウザスクリプティングと大差ない面倒を抱え込まなきゃいけないことに気づいて萎えてしまった。
何で後方互換性という基本的なことさえ担保されないのか。
色々事情は有るのかもしれないけど、ブラウザがバージョンアップするたびに動作しなくなった拡張が死屍累々・・・、という状況を許容しているMozillaとは、とてもじゃないが付き合いきれないと自分は思った。やたらと乱発される仕様変更によって、非生産的な対応作業を、ユーザーと、拡張作者に強いるMozillaのやり方は賢いとは思えない
対照的なエピソードがMSにはある。Windowsリリース時の話だ。
スポルスキー氏は2004年にマイクロソフトの基本的な戦略について興味深いことを書いている。DOSからWindowsへ移行する時期に、バギーなアプリケーションをWindows上で走らせるためにアドホックな機能追加を行っていたと証言しているのだ(参考リンク)
その具体例に驚かされる。往年のヒットゲーム「SimCity」はメモリの扱いで致命的なバグがあった。開放したメモリを、開放した直後に再び使ってしまうというバグだ。これは1度に1つのアプリケーションしか動かないシングルタスクのDOSでは問題がないが、マルチタスク環境のWindowsでは重大な問題を引き起こす。開放したメモリは、すぐに別のアプリケーションによって利用されるからだ。このためSimCityはWindows上でクラッシュを繰り返したという。SimCityのバグの原因をディスアセンブルして突き止めたマイクロソフトは、SimCityの稼働を検知したらメモリアロケータを特殊なモードで走らせるという機能追加を行った。
これは特殊な話ではなく、Windowsを新バージョンにアップデートしたときに、あらゆるアプリーションが稼働するよう同社のテストチームは非常に多くの“回避策”をWindows上に仕込んでいったという。たとえアプリーション側に問題があったとしても、それはWindowsユーザーには関係ない。ユーザーは、Windowsをアップデートしたら自分のアプリケーションが動かなくなったと考える。問題のあるアプリケーション開発者全員に修正させることができない以上、Windows側で回避策を打つ、というアプローチだ。
どうだろう?今でもこのカルチャーがMSに受け継がれているかは知らない。IE8では原則に反してドラスティックな変更が入るかもしれないことがこの記事でも言われている。だから、IEを勧めたいのではない。だが、自分の知る限り、.netの世界ではライブラリの後方互換性が大きく破壊されることはこれまで起きていない。設計が良いのだろう。というわけで、Silverlightはどうだろう?Silverlightなら、プレーヤーのバージョンアップが入っても、まず間違いなく後方互換性は担保される。レンタリングするのはMS製のエンジンでしか有り得ないのでクロスエンジン互換性を気にすることもない。Silverlightなら、色々な人を悩ませてきた、色々な問題を解決してくれる…筈。
何アホ言ってたんだ自分・・・。猛省。
遂にiKnowの学習完了語数が500を達成。いやはやiKnowは素晴らしい。ものぐさな自分でも毎日続くのだから。
そしてコミットメント効果を強化するために、「iKnow進捗状況」という独立ページを設け、進捗状況の可視化デモを纏めてみた。
「TOEFL Standard 3」の量の多さに心が折れないよう、頑張っていきたい。
id:amachangさんによる紹介記事を読んで知ったXPathGraphを使って、自分のiKnowの学習中アイテム数と学習完了アイテム数を表示するグラフを描いてみた。木曜の1限が休講になって、ボケっとしているうちに思いついたので勢いで書いたのだが、グラフが描かれるまで待ってたのでエントリが遅くなってしまった。
さて、XPathGraphはURLで指定したデータソースに対して、1日1回XPath式を実行し、得られる数字をグラフにしてくれるというサービス。
iKnowの学習中アイテム数は、Flashで作成されたブログパーツが使用しているXMLファイルから取得できることはiKnowLastAccessTimeCheckerを書いた時に確認済。これを使えばすぐ終わるかなと考えていたのだが…、XPathGraphは困ったことに、XMLファイルを解さないらしい。XPathなのに。…XPathなのに。その訳を調べてみると、どうやらXPathGraphはXPathの処理系にHTML::TreeBuilder::XPathとかいうHTML処理用?の奴を使っているらしく、XMLでもHTMLとして処理しようとする為らしい。仕方ないのでYahoo pipesという米Yahoo!のサービスと組み合わせてみようとしたところ、今度はiKnowのXMLファイルにXML宣言が無いせいでパースエラー。/(^o^)\ナンテコッタイ
という訳で最終的にはpipeにあたるものをphpで自作。要はXMLからデータを取ってきて、HTML化すれば良いわけだから、iKnowLastAccessTimeCheckerの時と同じ要領。
<?php
function getScores($id){
$req = 'http://www.iknow.co.jp/assets/user/' . $id . '/iknow_badge.xml';
$iknow = @simplexml_load_file($req);
if($iknow===false){
echo('パースエラー');
exit();
}
$studying = $iknow->history->fragment->score[0];
$finished = $iknow->history->fragment->score[1];
return array("studying"=>$studying, "finished"=>$finished);
}
?>
<?php
$id = htmlspecialchars($_GET['id']);
?>
<!DOCTYPE html PUBLIC '-/W3C/DTD XHTML 1.0 Strict/EN'
'http:/www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html xmlns='http:/www.w3.org/1999/xhtml' xml:lang='ja' lang='ja'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
</head>
<body>
<p>
<?php
if(!empty($id) && (strpos($id,'/')===false)){
$scores= getScores($id);
echo('<ul>');
echo('<li class="studying">');
echo($scores["studying"]);
echo('</li>');
echo('<li class="finished">');
echo($scores["finished"]);
echo('</li>');
echo('</ul>');
}
?>
</p>
</body>
</html>
これをデポに設置したうえで、XPathGraphから以下のようにidをパラメータとして渡して呼び出し。
http://depot.sharplab.net/php/iknow/PipeToXPathGraph.php?id=shiroica
XPathの方はこれだけ。
//li[1]
さて、出来たグラフ。まだ二点分のデータしかない(5/17時点)けど、まぁ動作しているのが確認できる。
そして学習完了アイテム数。
これで進捗状況が一目で分かるようになった。さぁがんばれ自分。
もしこのsharplab.netというドメインを長く使っていくならば(一応そのつもりだが)、www.sharplab.netにBlogを設置するのは将来的な運用の幅を制限しかねないなぁということで、Blogをblog.sharplab.netに移転しました。RSSを登録されている方は張り替えをお願いします。
ワーイ、言ってやった、言っ てやった!このタイトルを使いたいが為だけに、バイトの行きしなに大さん橋まで行ってきた。写真は「クリッパー・パシフィック」、明日14日からの第六十二回世界一周の旅のためにPeace boatによってチャーターされた船。大さん橋ターミナルビルの脇を抜けて、船体が見えてきた時に「ピース・ボートの船ってこんなクリッパー・バウをしたスマートな船だったっけ?」という違和感を感じたのだが、それもその筈、家に帰って調べてみると、よくピース・ボートの広告で見慣れた「ザ・トパーズ」号は第六十回世界一周の旅をもって引退し、この「クリッパー・パシフィック」に代替わりしたのだとか。なるほど上空をカメラスタビライザーを載せたヘリが飛んでいた訳だ。
「クリッパー・パシフィック」の総トン数は22,954トンというので、21,903トンである客船三井の現「にっぽん丸」とほぼ同じと言えるようだ。自分は横浜市主催の横浜函館往復クルーズに中2の頃参加したことがあるが、その時の船が「にっぽん丸」で、ここ大さんのまさに同じ接岸位置だった。もう六年も前のことなので、船内のことは朧げにしか憶えていないのだけれど、沖合を航行中の夜中にライトを落としてみた夜空には想像を遙かに超えた星々が瞬いていたことは、未だ鮮明に記憶している。
さて反対側に接岸していたのは「ラプソディ・オブ・ザ・シーズ」。こちらはガチでNice boat.日本の客船では及びもつかない船容のこの船の総トン数は何と78,491トン!就航年は1997年で、モダンで優雅な外観が素敵。船内はこのようになっているらしいけれど、船内見学会もないので勿論外から眺めるだけ…。何時かこのような豪華客船に親を乗せてお返しをしたいなぁ・・・。
Visual Studio 2008を買ってしまった俺 m9(^Д^)プギャーな話。
MS、日本の学生にも開発ツールを無償提供- ITmedia News
この記事によるとMicrosoftは大学生・専門学校生を対象にVisual Studio 2008、Expression Studio、XNA Game Studio2.0、Windows Server 2003 Standard Editionを無償提供するDreamSpeakというプログラムを実施しているらしく、今回はそのプログラムが日本にも適用された、という話のよう。
Visual Studio 2008は既に買ってしまったし、XNA Game Studioは元々無償で提供されていた気もするが…まあいいか。Expression Studioがタダで手に入るとはまったく素晴らしい話。早速申し込むとしよう。Expression Studioはver2も既にbeta版公開の段階にきているが、そちらも正式版が公開された暁にはDreamSpreakプログラムを適用して貰いたいものだ。
NETiKA TECH の Silverlight と Flash のコンポーネントが凄い-ナオキにASP.NET(仮)という記事で紹介されていたのだが、NETiKA TECHがGOA WinFormsという素晴らしいFlashとSilverlightのコントロールライブラリを公開している。
自分はAjaxに対してはGUIにHTMLを用いることからくる表現力の制約の面から否定的である。しかしFlashやSilverlightなどのRIA技術が発展してきたことによって、ソフトウェアをサービスとして配布するというSaaSのスタイル自体はいよいよ本格化する環境が整ってきたなと感じる。