2007年4月30日月曜日

ドラマ「めぞん一刻」

「欲求が不満している」つながりで。(分かりにくいネタ振りですまん) 5/12の夜9時放送だそうで。配役について。
  • 伊東美咲は特に気にならない。演技は好きじゃないけど、まあいいんじゃないの?
  • 五代くんはもっと冴えない顔しててほしいところだ。
  • 岸辺一徳はかなりいい所をついてきた。あのねちっこさ!
  • 高橋由美子が朱美さん役を演じるようになったんだなあ。特にファンではなかったが思うところはある
  • 一の瀬さんは岸本加世子。どこまで下世話にできるか。
  • 沢村一樹。笑いがこみ上げる。ある意味ナイス。
  • 榮倉菜々はかわいいのでOK。
つーか、マンガの忠実なドラマ化では2時間に収まるわけないから、マンガやアニメのファンは「原作と違う!」とかブーたれないほうがいいと思った。

映画「バベル」を観てきた

連休中にMOVIX宇都宮で「バベル」を観た。
世界には生と死とコミュニケーション不全が満ちていることを思い出させる。考えさせられるいい映画だった。(きっとディパーテッドより断然こっちが好きだな、ディパーテッドもインファナルアフェアも観てないけど。)
義母は「各国の話がもっと有機的につながってくるのかと思っていた」と言っていたけど、「一発の銃弾が、モロッコ、メキシコ、日本を撃ち抜く」みたいな煽り宣伝が間違い。つなげることは主眼ではないようだから映画としてはまったく問題ないと思う。
イニャリトゥ監督のことは良く知らない(アモーレス・ペロス観てないし)けど、世界の見つめ方がすごいなと思った。モロッコパートでもメキシコパートでも心を強く揺さぶられた。日本パートだけ取り出してもすごい。なんと言うか「外国人から見た日本」みたいな切り取り方はまったくなかった。日本そのものだったと思う。(菊池凛子演じる女子高生は欲求が不満しているけど、コミュニケーション欲求なんだな。)

余談だが、あのペントハウスが佃のdankogai宅なんだね。さすがにいい所に住んでいらっしゃる。

Day 3: ReSharperサバイバルガイド、あるいは、僕のキーバインドを知りません か?

元記事

31日間ReSharper一周」の3日目にようこそ。(これ実は土曜日分なんだけど、僕は土曜日に外出するから、金曜の晩に投稿している。)


ReSharperは最高だ。だけどもし使うつもりなら――特にバージョン2.5.x(この時点での最新版)なら――まずこのサバイバルガイドを読んでおく必要がある。


というのも、Visual Studioにはキーボードショートカットがたくさんある。ReSharperはそれをかなり変えてしまう。だから、変わったのは何で、どう対処したらいいのかを知っておかないといけない。


ReSharper 2.0は有無を言わさずキーバインドを差し替えるだけだった。ReSharper 2.5はご丁寧にも、あるキーストロークを最初に使おうとした時に、個々のキーバインドを差し替えていいかどうか聞いてくる……んだけど、前に戻って回答を訂正する方法がない――これでは余計にたちが悪い。ReSharperで最高の機能を呼び出せなくなってしまうかもしれないからだ。


だから、ReSharperを使い始める前にキーバインドのサバイバルガイドが必要なんだ。以下に記す。


ReSharperのばか丁寧な機能を切り抜ける


実は、2点にだけ注意すればいい。1つはよく使うショートカットの変更で、これは少ししかないから下で説明する。もう1つは、ReSharperショートカットの衝突ダイアログだ。


上で書いたように、ReSharperは既存のショートカットを置き換えていいか、ばか丁寧に聞いてくる。問題はショートカットを最初に使おうとしたときに聞いてくることで、そういうときって言うのは実際に何かしようとしている最中なわけだから、くだらない質問に答えてる場合じゃない。しかもどういう答えをしたとしてもアンドゥができないし、置き換えてしまったキーの代わりにどのキーを使えばいいのかも教えてくれないもんだから、その後に待っているのはかなり最悪のユーザー体験だ。


(誤解しないでほしいんだけど、ReSharperは最高の道具だ。使い始めるときにはこのダイアログボックスを通過しないといけないってだけだ。)


僕の経験にそって言えば、ReSharperのショートカットは全部受け入れるのが吉だ。そうすれば、変更された新しいショートカットに慣れてもいいし、我慢ならないとこについては元に戻してもいい。しかもReSharperがもうアホなダイアログボックスを出して邪魔するのをやめさせる事になる。


てなわけで、ReSharperをインストールしたら、ソリューションを開いて、どこかの引数リストにカーソルを持ってきて、Ctrl+Shift+Spaceを押すといいと思う。そしたら"ReSharperショートカットの衝突"ダイアログがポップアップする。



設定は「ReSharperのショートカットを使う」のままで、「ReSharperショートカットの全部に適用する」のチェックボックスにチェックを入れて、OKを押す。


はいこれで困難を1つ乗り切った。ダイアログにはもう邪魔されない。


後は、変更されたキーストロークを学ぶだけでいい。


変更されたキーバインド パートI: よく使うキー


僕が調べたから君たちは調べなくていいよ。もっとも必要になるキーストロークは以下だ:



  • Ctrl+Shift+Spaceではもう引数情報を表示できない。代わりにCtrl+P(ReSharperの強化された引数情報)を使おう。そっちのほうがいい――特にSystem.Drawingにおけるオーバーロードの暗黒面に直面してるときは。

    • Ctrl+Shift+SpaceはCtrl+Spaceの亜種になってる。これについては今月中に後で説明する。Ctrl+Space一族を説明するときにね。


  • F12(定義に移動)とCtrl+F12(宣言に移動)(結局何が違うの?)はCtrl+Bに置き換わった。Ctrl+クリックを使うこともできる。

  • Shift+F12(すべての参照の検索)はAlt+F7(使用箇所の検索)になった。通常は、代替ショートカットは元のより良くなってるんだけど……明らかにこれは違う。正直言って、F7はどうなんだ?

    • F12とShift+F12でドキュメント中のエラーおよび警告を一つずつ前進・後退するようになった。


  • 一時マクロを記録するCtrl+Shift+Rと、それを再生するCtrl+Shift+Pはもう使えない。これは痛い。Ctrl+Alt+Shift+Rとかでいいから残しておいてほしかった。

    • Ctrl+Shift+Pは「パラメータ情報――前のシグネチャへ移動」だ。

    • Ctrl+Shift+Rは「リファクタする」で、このことが、マクロを記録するキーストロークがなくなったにもかかわらずそこまで動揺してない主な理由だ。マクロよりずっと使いでがある。ほんとだよ。



パートII: 他に注意すべき変化


多くの人が毎日使うものではないけど、それでも重要だから注意すべきことがらは以下だ:



  • Ctrl+キーというプリフィックスのいくつか(Ctrl+B、Ctrl+D、Ctrl+E、Ctrl+F1、Ctrl+W)はもうプリフィックスではなく、独自の機能を持ったコマンドだ。たとえば、Ctrl+B、Ctrl+Cはブックマークの削除に使われていた。でも今はCtrl+Bは「宣言へ移動」だから、Ctrl+Bで始まる複数キーのコマンドはもう利用できない。Visual Studioにはこれらの多くに対してすでに代替キーストロークが用意されている(例えば、Ctrl+Bコマンドの多くは、Ctrl+Kで使うこともできる)し、ごく一部についてはReSharper独自の代替キーストロークが追加されている。

    • Ctrl+Bは、「宣言へ移動」だ。

    • Ctrl+Dは、「テキストの複製」だ。

    • Ctrl+Eは、「最近使用したファイルへ移動」だ。

    • Ctrl+F1は、「ヘルプ―操作方法」だ(以前はCtrl+F1、Hだった)。

    • Ctrl+Wは、「単語を選択/選択範囲の拡張」だ。


  • もしCtrl+Alt+Downを使ってMDIリストを表示していた(ドキュメント領域の右上で下矢印をクリックすることと同じ)としても、そのキーストロークはもう使えない。

    • Ctrl+Alt+UpおよびCtrl+Alt+Downは、「前の項目に移動」と「次の項目に移動」だ。


  • 検索コンボボックスに移動するCtrl+/ (使ってた人なんているのか?)はもうない。Ctrl+Dなら表示されるが、エディタウィンドウにフォーカスがないときだけしか使えない。

    • Ctrl+/は、「選択範囲をコメントアウト/コメント解除」だ。


  • F7 (「コードを表示」) と Shift+F7 (「デザイナを表示」) は、F7だけで両者を切り替えられるようになった。イェイ!

  • F6はもうソリューションのビルドじゃない。代わりにCtrl+Shift+Bを使うこと。

上記は簡略版リストだ。ReSharperをインストールすると変更される全キーバインドの完全版リストも作っておいた。このリストには変更・削除されたものしか載せていないので、新規に追加されたものは載っていない。だけどリストは長くなった。でももし前は動いていたのに今はおかしくなってしまったキーストロークがあるなら、完全版リストをチェックしてほしい。(注意。僕はCtrl+Shift+Tをテスト実行に割り当てていた。Visual Studioのデフォルトでは別のものに割り当てられていると思う。「単語の入れ替え」か何かそういう変なのに。)

2007年4月29日日曜日

2007年4月28日土曜日

チケット取れなかった


e+(イープラス)をご利用いただきまして、誠にありがとうございます。
猪股健太郎様の下記申込みについては、抽選の結果、チケットを
ご用意することができませんでした。

公演名   : 筋肉少女帯VSすかんち
会場名   : 渋谷C.C.Lemonホール

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
これからもe+をよろしくお願いします。

orz

Day 2: カラー・バーと緑の小箱

元記事

31日間ReSharper一周」の2日目にようこそ。


さて、1日目には灰色について話した。ReSharperをインストールして次に気付くのはカラーバーだ。



ソースファイルを編集しているときは、垂直スクロールバーの隣には常にカラーバーが出てくる。先端には小さな箱があり、緑だったり黄色だったり赤だったりする。ReSharperのドキュメントでは、これらを総称して「マーカーバー」と呼んでいる。


灰色を含んだコード行であれば、ReSharperが小さな黄色い目盛りマークを表示する。コンパイルエラーを含んだコード行であれば、ReSharperが赤い目盛りマークを表示する。こいつらの区切り間隔はバー全体に比例している(カラーバーはスクロールせず、その高さがソースファイル全体を表している)。だから、ソースファイルの行数が多いほど、目盛りマークの区切り間隔はより近くなるだろう。


先端に小さな箱があるのは、ファイル全体の状態がすぐわかるようにだ。ソースファイルに1つでもコンパイルエラー(カラーバーにおける赤の目盛り)があれば、箱は赤い。エラーは全くないけれど、ReSharperの警告(カラーバーにおける黄色い目盛り)があるなら、箱は黄色い。このゲームの目的は、箱を緑色にすることだ。



もちろん、これはきれいな色ってだけにとどまるものではない。ReSharperはコーディングの手助けのためのものなわけで、つまりそういうことだ。目盛りマークの上にマウスカーソルを乗せれば、問題点を説明するヒントを見ることができる。また、目盛りマークをクリックすれば、問題のコード行にカーソルを動かすことができる。


もっといいのは、F12を押せばファイル中の次の問題点に移動する(Shift+F12で前の問題点に戻る)。


この機能が唯一ダメなのは、ファイル単位だってことだ。プロジェクト(またはソリューション)全体が緑の箱かどうか簡単に確認する方法はない。そして、すぐにでもその機能が欲しいと思うことになる!


ヒント: ソリューションエクスプローラでは複数選択できる。だからまず、プロジェクトの最初のソースファイルをクリックし、次に、最後のをShiftクリックし、Enterを押す。こうすれば個別のタブつきで、すべてのファイルをエディタで開くことができる。そして、カラーボックスをチェックしながらファイルを(Ctrl+F4で)閉じていこう。緑色でないものに出くわしたら、さあ仕事の時間だ。

2007年4月27日金曜日

Day 1: 灰色と赤と波下線

元記事

31日間ReSharper一周」の1番目へようこそ。最初の数回では、開封直後に経験することの概要を説明する。インストール後に最初に気付くことだ。


最初の2日間は光りものについてだ。そして3日目は重要で、「ReSharperサバイバルガイド、あるいは、僕のキーバインドを知りませんか?」だ。その後は光りものに戻る。


さて、君は今まさにReSharperをインストールし終わって、Visual Studioでソリューションを開いたところだ。たぶん君が最初に気づくのは全部、灰色の所だろう。




ReSharperには赤と波線もあるけど、たぶんその時点ではそれらを見てないだろう。でもすごいぞ。コーディングを始めれば嫌でも見る。


最初に見るのは灰色だけど、まずは波線と赤について説明しよう。灰色は最後にする。そっちの方がすごいからだ。


最初の数日間はReSharperの概要でしかないから、何度も「後で説明する」って言うと思う。今のところは、最初に見るものの様子を伝えようとしているんで、徹底的なガイドブックではない。ディープなとこは後で。


赤と波線: リアルタイムなコンパイルエラー


コンパイルできないコードがあれば、ReSharperは赤、または波下線でそれを示す。


「はいはい、スゴススゴス」って思うかな。「波線はVisual Studioにもあるぞヴォケ。」まあね。でも、Visual Studioはコンパイル後にしか波線を出さない。ReSharperはリアルタイムで、つまり文字を打つだけでコンパイルエラーを指摘する。この魔法は完全にバックグラウンドで動く。


エラーメッセージを見るには、マウスを赤または波下線の上に動かせばいい(ツールチップが表示される)。それか、カーソルキーを使ってカーソルを赤または波下線のところに置く(エラーは、ステータスバーに表示される)。



赤と波下線の違い: 赤は識別子――クラス名、メソッド名、変数名など――が見つからないときだけだ。その他全部のコンパイルエラーは波下線で示される。識別子だけ表示法が違うのは、ReSharperにはそれらを修正する専用の機能があるからだ。


赤については後の記事で扱う。すばらしい十徳ナイフであるAlt+Enterについての記事だ。


灰色: 死にコードを見つける


2、3年前、僕らのコードベースには一度も使われなかった関数がいっぱいあった。でも、「いつか使うかもしれない」ので削除できずにいた。まるっと使われなかった部分もあった。コメントアウトしたコードもあったが、何年もコメントアウトされたままで、消すのが怖かった。


僕らはもうYAGNI原則ヲ抱擁シテいる――未使用のコードを見つけたら有無を言わさず削除するという意味で。僕らがReSharperの「灰色」機能(ドキュメントには「警告」と書いてあるけど)が好きな理由だ。


ReSharperは必要でないコードを見つけ、灰色で表示する。



実際には不要な名前空間の"using"。使わない変数。使わない引数。未使用のプライベートメソッド、プロパティ、フィールド。不要な限定子("this"とか"Some.Namespace"とか)。書き換えたあと一度も読み出されない変数。継承元を呼ぶだけのオーバーライド。すべてが灰色になり、たぶん安全に削除できる。しかもね、繰り返すけど、リアルタイムに表示されるんだ。


もちろんルールは設定可能だ。会社のコーディング規約で「this」を使わないといけないのなら、ReSharperのその警告を無効にできる。オプション設定はReSharperメニュー > Options > Highlighting にある。


また、ReSharperには、警告部分を修正するのを助けるツールがある。修正機能の大部分は2ストロークキーで、片方はEnterだ。もう一度言うけど、今月中に後で扱う。その時はソリューションエクスプローラーでのCtrl+Alt+F、Alt+Enter、そしてコンテキストメニューを取り上げる。


この機能をさらに進めて、使わないものを全部明示してほしいと思う人もいるかもしれない――たとえpublicであったとしても、ソリューションのどこからも使われていないのであれば灰色にしてほしいと。(もちろん、それは全員のための機能ではないだろう。ライブラリ開発者はそんな機能はいらないだろうし。僕らは商用アプリケーションを開発するんで、とても気に入るかも。)悲しいかな、自動的にこれをする方法はない。哀れみたまえ。(近い機能ならある。安全な削除だ。その通り、今月中に後で扱う。)


色つきコーディングには驚くほど速く慣れてしまう。今となっては、僕らがDelphiで開発していて、引数が使われてないのに気付いたときは、ふざけるだろうね。「あ、灰色だ。じゃあ早速Alt+Enterをたたいて……」

Day 0: 基礎とインストール

元記事

「31日間ReSharper一周」にどっぷり進む前に言っとくけど、僕は退屈だけど書かなきゃならないことを書いている。1日目まで飛ばして構わない(ReSharperをインストールするのなら、ざっと目を通すぐらいはしたいかもしれないけど)。


IDEとバージョン


ReSharperの最新版はVisual Studio 2005でしか動かない。Visual Studio 2003で動く旧バージョンがまだ手に入るけど、超すごい機能を全部持ってるわけではない。


これを書いている時点では、ReSharperの最新版(つい1週間前に出た)は2.5.1だった。2.5にあった小さいバグがいくつか修正されたので、書くネタが予定より少なくなってしまった。いくつかの困った点をどう回避するかに関して話すつもりだったから。逆に、2.5では動いたんだけど2.5.1ではぶっ壊れていることがらもちょっとある(もうフィードバックしてある)。


インストールに関して知るべきこと


警告: ReSharperを初めてインストールするときに、Visual Studio Hotfixをインストールするように言われるが、これには「永久の眠りか!」ってぐらい時間がかかる。仕事PCにインストールしたのは結構前だから、どれくらいかかったのか覚えてない。でも最近家のノートPCにインストールした時には(冗談抜きで)4時間以上かかった。そりゃあ僕の家のノートPCは850MHzでメモリは256MBにすぎない。でもそうは言っても4時間だぜ。推して知るべし。


(もちろん、ReSharperにはインストール時間分の価値はある。でも退社する15分前にインストールを始めたいかもしれない。そんな時には「すべてYes」をクリックして家に帰ることができる。翌朝にはReSharperのインストール準備が完了しているだろう。)


ヘルプをインストールする(もしくは、しない)


ReSharperのインストールウィザードは、ヘルプをインストールするか尋ねてくる。MSDNヘルプ全体のインデックスを再構築しなければならないから時間がかかるよと言われる。


冗談抜きで長くかかるぞ。たぶんインストールには30分かそこらかかる(しかも、パワフルな仕事用PCでの計測だ。CPUは3GHzでメモリは2GB積んであった)。


でも……理解できない。ReSharperのダイアログはどれにもヘルプボタンがないし、F1キーにも反応しない。Visual Studio からヘルプを起動してみても、ReSharperのヘルプトピックはまったく見つからなかった。いったい何のヘルプをインストールしてんの?!


だから、少なくともReSharper2.5.1に関して、ヘルプをインストールするためのチェックボックスにチェックしないことを勧める。意味があるとは思えないから。


公式サイトにあるもの



サポートはかなり反応がいい。これらの記事を書いていたときに僕は何度か、「うーん、ReSharperであれとかこれとかができたならもっとすごいのに……」と書きたくなった。でもそのたび僕は筆を置いて公式サイトに行き、バグレポートや機能向上の要求を送った。反応は本当にいい――いつもはだいたい数時間以内に返事がある。もし「その件についてはリストに追加しておきます」という返事であっても、レスポンスが素早いのは良いことだ。


この前なんか、1、2か月前なんだけど、もらった返事は「その機能を追加しました。今週後半に出すアップデートに含まれています。」だった。たぶん僕が言う前から既に追加されてたんだとは思うが、それでも、ある会社がバグレポートと機能要求に関してそのぐらいの対応をしようとするなんて、かなり凄いこと(そして、めったにないこと)だ。

31日間ReSharper一周

移動しました

2007年4月26日木曜日

"Tower Of Power"のコピバン、GWにライブ

同僚がやってるコピバンがライブやる。




バンド名
Power Of Tower

日時
5/6(日)14:30開場、15:00開演

場所
新中野 LiveCafe弁天

料金
チャージ¥1,000 Drink¥500



ファンクバンド"Tower Of Power"のコピーバンドです。同僚はキーボーディスト。体調を崩して休職してましたが、5月から完全復帰とのこと。めでたい。
"Tower Of Power"を知らない人のために、YouTubeに上がっていた動画を紹介。

  • Soul Vaccination(YouTube) Soul Vaccination

  • What Is Hip(YouTube) What Is Hip

  • Soul with a capital S(YouTube) Soul with a capital S

2007年4月25日水曜日

ASP.NET AJAXで他ドメインのWebサービスを呼び出す part1

AJAXは便利なんですが、XMLHttpRequestのセキュリティ制限により、他ドメインの呼び出しはできません。これを回避する技は(JSONPなど)いくつかありますが、ASP.NET AJAXにはそれらを簡単に扱う道具は用意されていません。というか、ASP.NET AJAX Futuresには、IFrameを利用して他ドメインを呼び出すためのライブラリが含まれていたのですが、現在のFutures CTPからは除かれています。セキュリティのためにも、その手の機構には慎重になるべきですね。


ということで、ASP.NET AJAXで他ドメインを呼び出すのであれば、自ドメイン上に置いたXML Webサービスを通して呼び出すしかありません。呼び出したいのが他ドメインのXML Webサービス(要するにSOAP)であれば、あまりコードを書くこともなく実現できますが、REST APIとかXML-RPCだったらどうでしょうか。


……と思っていたら、ASP.NET AJAX Futuresに便利なものがありました。それが、asbxファイルです。



asbxファイルは、他ドメインのサービスへの橋渡し(bridge)をするクラスを作り出します。しかも、GETメソッドを使うREST APIであれば結構簡単に書けます。


サンプルを書く前に注意。Web.configは、Futures CTPを扱えるようにしておいてください。ふつうにインストールをすると、asbxファイルを扱うための設定が間違っているので、<system.web>要素の中の以下の部分を修正してください。



<compilation>
<buildProviders>
<-- アスタリスクは不要
<add extension="*.asbx" type="Microsoft.Web.Preview.Services.BridgeBuildProvider"/>
-->
<add extension=".asbx" type="Microsoft.Web.Preview.Services.BridgeBuildProvider"/>
</buildProviders>
<compilation>


さて、Web.configの設定が終わったところで、サンプルとして呼び出すのは……( AWS を使うことが多いんですが登録が必要なので今回はやめて )……Livedoorのお天気Webサービスにしましょう。


まずは仕様を確認しましょう。呼び出しURLは http://weather.livedoor.com/forecast/webservice/rest/v1 です。パラメータは2つ、cityとdayです。これらをURLクエリパラメータとして付加し、HTTP GETで取得します。さてこれをasbxで書いてみましょう。ファイル名はとりあえず、lwws.asbxとでもしましょうか。





<?xml version="1.0" encoding="utf-8" ?>
<bridge namespace="MyNamespace" className="MyClass">
<proxy type="Microsoft.Web.Preview.Services.BridgeRestProxy"
serviceUrl="http://weather.livedoor.com/forecast/webservice/rest/v1" />
<method name="getWeather">
<input>
<parameter name="city" />
<parameter name="day" />
</input>
</method>
</bridge>


これだけでも動かせます!



asbxファイルをこのように書くとどうなるかというと……次のXML Webサービスみたいなものができたのと同様に扱えます。



namespace MyNamespace
{
[WebService]
[ScriptService]
public class MyClass : System.Web.Services.WebService
{
[WebMethod]
public string getWeather(object args)
{
// Livedoorお天気Webサービスを呼び出すコード
}
}
}



よって、ScriptManagerのServicesプロパティでlwws.asbxを指定してやれば、JavaScriptからは、



MyNamespace.MyClass.getWeather(args, succeeded);

といったスクリプトで呼び出すことができます(注:succeededは呼び出し成功時のコールバック関数)。




さてここで疑問が2つ浮かびます。そうです。「引数は?」「戻り値は?」という疑問です。


まずは引数から。JavaScriptではこんな感じで書きます。



var args = new Object();
args.city = 63; // 東京地方を指定。サービス仕様を確認のこと。
args.day = 'tomorrow'; // 明日の予報を指定。サービス仕様を確認のこと。
MyNamespace.MyClass.getWeather(args, succeeded);

あるいはこう書いてもOKです。



var args = { city: 63, day: 'tomorrow' }
MyNamespace.MyClass.getWeather(args, succeeded);

詳細は省略しますが、すべてのオブジェクトは連想配列であると知っていれば、結果が同じであることは分かるでしょう。




次は戻り値です。ここは少し長くなりますよ。


上で書いたXML Webサービスのメソッドシグネチャを見返してください。戻り値はstringになっていますね。そうです。お天気Webサービスの結果として得られるXMLがそのまま文字列として返されます。長くなるので、http://weather.livedoor.com/forecast/webservice/rest/v1?city=63&day=tomorrow で実物を見てください。



もちろん、この文字列をもとにDOMオブジェクトを作って、必要な部分を操作することもできますが、面倒ですよね。面倒だといってください。そんな人のために、結果をサーバ側で変換して、扱いやすい形式にすることができます。


Futures CTPには、Microsoft.Web.Preview.Services.IBridgeResponseTransformerインタフェースと、それを実装するクラスが4種類含まれています。今回はそれらの実装クラスの中から、 Microsoft.Web.Preview.Services.XPathBridgeTransformer クラスを説明しましょう。


XPathBridgeTransformerクラスの使い方ですが、これもasbxファイルに記述します。たとえばこんな感じ。





<?xml version="1.0" encoding="utf-8" ?>
<bridge namespace="MyNamespace" className="MyClass">
<proxy type="Microsoft.Web.Preview.Services.BridgeRestProxy"
serviceUrl="http://weather.livedoor.com/forecast/webservice/rest/v1" />
<method name="getWeather">
<input>
<parameter name="city" />
<parameter name="day" />
</input>
<transforms>
<transform type="Microsoft.Web.Preview.Services.XPathBridgeTransformer">
<data>
<attribute name="selector" value="/lwws" />
<dictionary name="selectedNodes">
<item name="Area" value="location/@area" />
<item name="Prefecture" value="location/@pref" />
<item name="City" value="location/@city" />
<item name="DateTime" value="forecastdate" />
<item name="Forecast" value="telop" />
<item name="Description" value="description" />
<item name="MaxTemperature" value="temperature/max/celsius" />
<item name="MinTemperature" value="temperature/min/celsius" />
</dictionary>
</data>
</transform>
</transforms>
</method>
</bridge>



こんな風に書くと、JavaScriptでは戻り値にこんな風にアクセスできます。





function succeeded(result) {
var area = result[0].Area;
var pref = result[0].Prefecture;
var city = result[0].City;
var datetime = result[0].DateTime;
var forecast = result[0].Forecast;
var desc = result[0].Description;
var max = result[0].MaxTemperature;
var min = result[0].MinTemperature;
}



要は、戻り値がオブジェクト(連想配列)の1次元配列になります。




なぜこうなるのか?というと、XPathBridgeTransformerクラスは、XPathで指定された要素を抜き出してくれるからです。asbxファイルの記述を見ながら説明しましょう。




まず見るべきなのは<attribute>要素です。name="selector"はXPathBridgeTransformerクラスのためのおまじないです。注目すべきはvalue属性で、ここに1次元配列として抽出する要素を表現するXPathを書きます。ここでは"/lwws"を指定しているので、ルート要素である<lwws>を抜き出します。(なので配列の要素数は1です。)


続いて<dictionary>要素です。name="selectedNodes"もXPathBridgeTransformerクラスのためのおまじないです。その子要素である<item>要素で、連想配列に格納する値を指定します。たとえば最初の記述は<item name="Area" value="location/@area" />ですね。これで、ルートの<lwws>要素直下にある<location>要素のarea属性の値を抜き出し、Areaというキーで連想配列に追加します。以下も同様ですので説明は省略します。


というわけで、結果は連想配列の1次元配列となるわけです。ちなみに連想配列の値は文字列型となっています。数値型や日付型やブール型を期待すると痛い目にあいます。

2007年4月22日日曜日

週末の写真いくつか

ベランダでハーブを育てようとしている。
ハーブ

鹿浜のスタミナ苑に行った。
スタミナ苑
レバーがうまかった。
レバー
ミックスホルモンもうまかった。
ミックスホルモン
でもハラミは品切れだった。悔しいです!(ものすごい顔で)

木場の陳麻婆豆腐に行った。
前に来たときに一番辛いやつで死んだので、激辛と辛口の間ぐらいにしてもらった。
陳麻婆豆腐

船橋のIKEAに行った。
広いので疲れた。会社用の小物ばかりを買った。
IKEA

2007年4月21日土曜日

Web+DBでつきぬけろ!

見本誌いただきました。いつもありがとうございます。
vol38書影

連載「.NET開発天国」は尾島・猪股の連名でやっているんですが……今号は最後尾です。
ジャンプなら打ち切り間近だなこりゃ。

ここで次号予告!!次号はASP.NET AJAX登場!!非同期ポストバックでつきぬけろ!→[マタ]

2007年4月20日金曜日

もんたメソッドに効果音が欲しくて

MP3を用意してみましたよ。

教科書にも載った「もんたメソッド」。
なんと!今回は効果音つきです。


音のファイルはこちら。記憶だけで作ったんだけど、音違ってないですかね。明日テレビで確認してみます。(追記)確認したら違ってたので直しました。「♪朝ズバッ!」てな感じで。

たぶんWinのIEとFireFoxでは出ると思うんですが。音が出なければごめんなさい。もっとましなスクリプトに直してください。
(2013/5/21 追記)jsdo.itに置いてみました。

2007年4月19日木曜日

一二功夫

「イー・アル・カンフー」のテーマソングを、中国の伝統楽器(胡弓とか)で演奏したものが聞きたい。
生演奏がいいけど、難しいなら打ち込みでもいいや。

えーと、仕事してないときはこういうことばっかり考えています。

2007年4月18日水曜日

MCPD試験のメモ

自分のためのメモ。 マイクロソフト認定プロフェッショナル デベロッパー(MCPD)となるために受験しなければならないMCP試験の内容をまとめてみました。 (複数ページを何度も見返すのが面倒だったため)
スキル詳細スキル70-55170-55270-55370-554
(a) 共通
システム型およびコレクションを使用するアプリケーションの開発.NET Framework 2.0 のシステム型を使用して .NET Framework アプリケーションでデータを管理する (System 名前空間を参照)。
コレクションを使用して .NET Framework アプリケーション内で関連するデータのグループを管理する (System.Collections 名前空間を参照)。
ジェネリック コレクションを使用して .NET Framework アプリケーションのパフォーマンスと型の安全性を向上させる (System.Collections.Generic 名前空間を参照)。
標準的な規約にコンポーネントが従うように .NET Framework インターフェイスを実装する (System 名前空間を参照)。
.NET Framework アプリケーションへの構成、診断、管理、およびインストール機能の組み込み.NET Framework アプリケーションに構成管理機能を組み込む (System.Configuration 名前空間を参照)。
System.Diagnostics 名前空間を使用して .NET Framework アプリケーションをデバッグおよびトレースする。
.NET Framework アプリケーションでのシリアル化および入出力機能の実装ランタイム シリアル化手法を使用してオブジェクトまたはオブジェクト グラフをシリアル化またはシリアル化解除する (System.Runtime.Serialization 名前空間を参照)。
System.Xml.Serialization 名前空間を使用して XML 形式へのオブジェクトのシリアル化を制御する。
ファイル システム関連のクラスを使用してファイルとフォルダにアクセスする (System.IO 名前空間を参照)。
.NET Framework アプリケーションでストリーム情報を圧縮または展開する (System.IO.Compression 名前空間を参照)。 分離ストレージを使用してアプリケーション データのセキュリティを向上させる (System.IO.IsolatedStorage 名前空間を参照)。
.NET Framework 2.0 のセキュリティ機能を使用した .NET Framework アプリケーションのセキュリティの向上System.Security.AccessControl のクラスを使用してアクセス制御を実装する。
System.Security.Authentication のクラスを使用してカスタム認証スキームを実装する (System.Security.Authentication 名前空間を参照)。
System.Security.Cryptography のクラスを使用してデータの暗号化、復号化、ハッシュ演算を行う (System.Security.Cryptography 名前空間を参照)。
System.Security.Permission のクラスを使用してリソースに対するアクセス許可を制御する (System.Security.Permission 名前空間を参照)。
System.Security.Policy のクラスを使用してコード特権を制御する (System.Security.Policy 名前空間を参照)。
System.Security.Principal のクラスを使用して ID 情報のアクセスと変更を行う (System.Security.Principal 名前空間を参照)。
.NET Framework アプリケーションでの相互運用機能、リフレクション、およびメール機能の実装.NET Framework アプリケーションから配信するために SMTP (Simple Mail Transfer Protocol) サーバーに電子メールを送信する (System.Net.Mail 名前空間を参照)。
.NET Framework アプリケーションでのグローバリゼーション、描画、およびテキスト操作機能の実装System.Drawing 名前空間を使用して .NET Framework アプリケーションのユーザー インターフェイスを強化する。
(b) Web アプリケーションのテクノロジ
Web アプリケーションの作成およびプログラミングWeb サーバー コントロールを追加および設定する。
Web アプリケーションを設定する。
Web アプリケーションをプログラミングする。
ADO.NET、XML、およびデータ連結コントロールを使用した Web アプリケーション内のデータの統合データ連結コントロールを実装する。
データベースの接続とトランザクションを管理する。
接続された環境でデータを作成、削除、編集する。
カスタム Web コントロールの作成複合 Web アプリケーション コントロールを作成する。
アプリケーションのトレース、設定、配置Web コピー ツールを使用して Web アプリケーションをターゲット サーバーにコピーする。
Web 公開ツールを使用して Web アプリケーションをプリコンパイルする。
Web アプリケーションの最適化とトラブルシューティングを行う。
Web アプリケーションのカスタマイズおよびパーソナライズマスタ ページを使用して一貫性のあるページ デザインを実装する。
テーマとユーザー プロファイルを使用して Web ページをカスタマイズする。
Web アプリケーションで Web パーツを実装する。
認証および承認の実装フォーム認証を使用してユーザーのアイデンティティを確認する。
承認を使用して認証済みユーザーの権限を設定する。
ログイン コントロールを使用して Web アプリケーションに対するアクセスを制御する。
ASP.NET モバイル Web アプリケーションの作成モバイル Web アプリケーション プロジェクトを作成する。
デバイス固有のレンダリングを使用して各種のデバイスにコントロールを表示する。
アダプティブ レンダリングを使用して Web サーバー コントロールの外観を変更する。
モバイル Web コントロールを使用してデバイスにコンテンツを表示する。
(c) Windows アプリケーションのテクノロジ
標準コントロールによる Windows フォーム アプリケーションの UI の作成Windows フォーム上のコントロール レイアウトを管理する。
Windows フォーム コントロールの追加と設定を行う。
メニューの作成および設定
Windows フォーム アプリケーション内のデータの統合データ連結コントロールを実装する。
接続およびトランザクションの管理
XmlReader クラスおよび XmlWriter クラスを使用して XML の読み取り、書き込み、および検証を行う。
ユーザビリティの強化ユーザー アシスタンスのコントロールおよびコンポーネントを作成、設定、カスタマイズする。
非同期プログラミング テクニックの実装によるユーザー エクスペリエンスの向上BackgroundWorker コンポーネントを使用してバックグラウンド処理を管理する。
アプリケーションの設定および配置ClickOnce テクノロジを使用して、Windows フォーム アプリケーションのインストールを設定する。
(d) 分散 アプリケーションのテクノロジ
Web サービス アプリケーションの設定とカスタマイズSOAP メッセージを設定する。
リモート処理アプリケーションの作成、設定、配置サーバー アプリケーションを作成および設定する。
リモート オブジェクトにアクセスするクライアント アプリケーションを作成する。
リモート型を作成およびシリアル化する。
Web Services Enhancements (WSE) 3.0 の実装クライアント アプリケーションとサーバー アプリケーションで WSE を有効にする。
デジタル署名を SOAP メッセージに追加する。 既存の SOAP メッセージの署名を確認する。
SOAP メッセージを暗号化および復号化する。
Web サービス アプリケーションのポリシーを実装する。
Web サービス アプリケーションでフィルタを実装する。
WSE SOAP メッセージングを実装する。
WSE ルーターを使用して SOAP メッセージをルーティングする。
セキュリティ資格情報を追加および確認する。
サービス コンポーネントの作成およびアクセスとメッセージ キューの使用サービス コンポーネントの作成、設定、アクセスを行う。
メッセージ キューの権限を作成、削除、設定する。
メッセージ キューにメッセージを送信する。 メッセージ キューからメッセージを削除する。
メッセージを受信する。
(e) 応用
アプリケーションの構想と設計アプリケーション設計のコンセプトが技術的に実現可能であるか評価する。
ビジネス上の要件を満たすためにアプリケーションの技術仕様を評価する。
データベース設計を評価する。
アプリケーションの論理設計を評価する。
アプリケーションの物理設計を評価する (プロジェクト構造の設計、ファイル数、アセンブリ数、これらのリソースのサーバー上の場所など)。
概念の実証 (POC) のプロトタイプを作成する。
ユーザー インターフェイスの設計と開発視覚的インターフェイスについて適切なレイアウトを選択する。
UI 全体に共通するレイアウトの実装方法を評価する。
設計仕様に基づいて適切なコントロールを選択する。
UI 階層における適切なデータ検証方法を選択する。
適切なユーザー アシスタンスおよびアプリケーション ステータス フィードバック手法を選択する。
コンポーネントの設計と開発コンポーネントに必要な特性を決定する。
コンポーネントの高レベル設計を行う。
コンポーネントのパブリック API を開発する。
コンポーネントの機能を作成する。
例外処理メカニズムを作成する。
コンポーネントのデータ アクセスおよびデータ処理機能を作成する。
プロファイリングの要件を含むコンポーネントを作成する。
Web サービスとメッセージ キューを使用して分散アプリケーションにマルチメディア データを提供するための適切なメカニズムを選択する。
アプリケーション フレームワークの設計と開発再利用可能なソフトウェア コンポーネントを使用する。
適切な例外処理メカニズムを選択する。
アプリケーション設計ロジックに対して適切な実装アプローチを選択する。
アプリケーションに対して適切なイベント ログ記録方法を決定する。
アプリケーション設定アーキテクチャを評価する。
アプリケーションの特定の特性や側面を監視する。
アプリケーションのテストと安定化コード レビューを実行する。
テスト方法を評価する。
単体テストを設計する。
統合テストを実行する。
バグを解決する。
アプリケーションの配置とサポートパフォーマンス分析方法に基づいてアプリケーションのパフォーマンスを評価する。
アプリケーション監視時に受信したデータを分析する。
配置計画を評価する。
実稼働構成環境を検証する (負荷分散、Web ファーム、Web ガーデンなど)。
アプリケーション フロー ロジック図を作成する。

2007年4月15日日曜日

いわしのムニエル&キャベツのスープ

美味くできた。

いわしのムニエル


いわしが2尾で90円だったので。

  • いわしを指で開く

    • 洗ってうろこを取る

    • 頭を落とす

    • 腹びれを取って腹を開き、わたを取る

    • よく洗う

    • 片側の身と骨の間をこそぐようにして切り開く

    • 同様にもう片側もこそぎ、背骨をはずす

    • 尾の部分は折るなり切るなりする

    • 背びれも適当に取る


  • 塩こしょうを適当に

  • 小麦粉をまんべんなくまぶす。好みで小麦粉に粉チーズを混ぜておく

  • フライパンにバターを溶かし、皮の方を強火で焼く

  • ひっくり返して白ワインを振り、アルコールが飛んだらふたをして弱火にする

  • 火が通ったら取り出す

  • レモン汁と醤油をフライパンに入れて煮立て、ソースにする


前に買ったカルピス醗酵バター(業務用、無塩)をどんどん料理に使っている。バターを減らしてヘルシーにするなら、普通に油で焼いて最後にバターで風味付けすること。
今回は醤油味にしたが、ハーブとかガーリックオイルとかバルサミコとかでイタリアンな感じにしても美味い。

キャベツのスープ


キャベツが安かったので。

  • にんにくと玉ねぎは薄切りにし、弱火か中火でじっくり炒める

  • ソーセージは好みの大きさに切って投入

  • にんじんはみじん切り、セロリはすじを取って縦に切ってから横に細かく切り、投入

  • ハーブソルトみたいなの(クレイジーソルトとか)で適当に味付け

  • スープはコンソメとかマギーブイヨンとかそんなので可(スープストックを作っておくほどの気合いはなし)

  • 炒めた具材を入れて煮る

  • キャベツは芯を取り、適当に切って投入

  • もちろん芯も食べる。薄く小さく切って投入

  • こしょうを適量振って完成


野菜の甘みが出てればよし。今回は生ソーセージだったので豪華。

2007年4月12日木曜日

開発者向けIE拡張4種のまとめ

IE拡張4種です。4種類とも知っている人は少ないのでは?

(1) ieHTTPHeaders


ieHTTPHeaders
リクエストとレスポンスのHTTPヘッダを記録して表示するだけ。シンプルです。
ieHTTPHeaders

(2) Internet Explorer Developer Toolbar Beta 3


IE Developer Toolbar写真はβ2です、ごめんなさい。
DOM構造を解析してツリー表示するとか、指定した要素に枠線を表示してくれるとか。CSSにこだわりたい時に。
Internet Explorer Developer Toolbar Beta 3

(3) Fiddler


Fiddler 1
Fiddler 2
リクエストとレスポンスのログをとります。他の機能は上のスクリーンショットを見ればなんとなく分かると思いますが、それだけではなくて、JScript.NET (.NET版JavaScript) のコードを書けば、動作をカスタマイズできます。
Fiddler (要 .NET Framework 1.1)

(4) Web Development Helper


Web Development Helper 1
Web Development Helper 2
かなりの高機能です。リクエストとレスポンスのログをとることもできますし、JavaScriptコンソール上でJavaScriptを実行することもできます。それと、スクリーンショットには表示されていませんが、DOM階層のツリー表示もできますし、PNG形式の画面キャプチャをとることもできます。ついでに言うと、ASP.NETに特化した機能もいくつかあります(ViewState表示とか、ATLAS対応とか)。
Web Development Helper (要 .NET Framework 2.0)

Web承認ワークフロー用スターターキット

ASP.NETとWindows Workflow Foundationを用いたスターターキットが公開されました。
スターターキットはVisual Studio 2005のプロジェクトになっています。利用するには、Visual Studio 2005に加えて、.NET Framework 3.0、Windows Workflow Foundation用の VS2005拡張、そして SQL Server 2005 Express以降が必要です。
業務モデルは小規模な会社の承認業務で、作成、承認、確認の3つのロールが組み込まれているそうですよ。

2007年4月11日水曜日

愛は花のように (Ole!)

サザンオールスターズの曲。日本生命のCMソングに使われた。スペイン語の歌詞。Goo歌詞などで見ることができる。

歌詞の日本語訳はアルバムの歌詞カードに入っていたと思う。権利とかいろいろあるからアレだが、歌詞のニュアンス(察してくれ)を英語にするとこんな感じ。

To live for a great love
I will send my heart
'cause this world passes in a hurry
and there are always wars, hates and pains

To live for a great love
If you are not here, I am nothing
And when I feel that you kiss me
I can't live without your love

With the rhythm of this song
My heart is vibrating
And you and I live in this happy time
and I will never forget it

To live for a great love
I want to feel the sensation
'cause I have you here by my side
I will love you with this crazy passion

With the rhythm of this song
My heart is vibrating
'cause you are the only star
that shines on the way I dreamed of

Olé Olé Olé My love

MSDNオフライン、ASP.NET AJAX、赤間さん

聞いてきました。「JavaScript が苦手なあなたに贈る ASP.NET AJAX フレームワーク入門」
調べていた内容や結論と一致する感じでした。ただ、自分が見落としてた点もあり、とても参考になりました。
しかし、いつもながら赤間さんはすごいなあ。流れるような4時間で時間もほぼぴったり。どれぐらい練習したんでしょうか。4時間のリハなんて何度も繰り返したくはないなあ、自分なら。

以下、参加者の反応(随時更新)

P&P Enterprise Library 3.0 リリース

されてましたね。
patterns & practices Developer Center - Enterprise Library

概要はこんな感じだそうです。

  • New application blocks

    • Validation Application Block

    • Policy Injection Application Block


  • Improvements to existing application blocks

    • Data Access Application Block

    • Logging Application Block


  • .NET Framework 3.0 integration

    • Logging, Exception Handling and Validation Application Blocks


  • Configuration improvements

    • Visual Studio-integrated configuration tool

    • Environmental Overrides

    • Manageable Configuration Source


  • Automation

    • Application Block Software Factory

    • Strong Naming Guidance Package


2007年4月9日月曜日

CodeZineにおける.NET関連記事のまとめ (2007/4)

CodeZineにはサンプルプログラムが多数掲載されていますが、一覧が欲しかったのでまとめてみました。
カテゴリ分けはCodeZineでのそれとは異なっていますので注意してください。

2007年4月8日日曜日

ロマンティックあげるよ

あれ可笑しいな、涙が←マジ話


いや確かに世代的にストライクなんだが、そもそもこの曲すげえ好きなんだよな。あんまり言ったことはないけど。
しょこたんのカバーはあまりに原曲のままでひねりはないんだけど、なんというかまっすぐなんだな。てらいがないというか。そのまっすぐさに打たれた。

映像もよかった。ピルクルとかはどうでもよくて(笑ったけど)、ブルマのコスプレ。これコスプレしたいというだけでとらえてはだめだよね。なんていうか、私も冒険したいんだ、実際には空想するしかない、でも空想の中では私は主人公で、ドラゴンボールを探して冒険しているんだ、みたいなところがよく表現されていて、ちきしょう誰が監督しやがった、泣かせやがって許さねえ。

Amazonの商品説明がすごいことになってるなあ。

2007年4月7日土曜日

ググラビリティ

はてなダイアリーの検索リファラを公開。

http://www.google.co.jp/search?q=↓↓↓↑Y↑Y↑Y↑↑↑↓X↓X↓X←A→B←A→B+RB&sourceid=navclient-ff&ie=UTF-8&rlz=1B3GGGL_jaJP210JP210

これでなぜ俺のダイアリーにアクセスできたのかは不明。
君が調べたかったのは、XBOX 360の『ロストプラネット』の無敵コマンドかな?何にせよ、検索クエリを変えた方がいいんじゃないかな……?

2007年4月5日木曜日

C#で書かれたスタックベース関数型言語"Cat"

オレンジニュースより。

プロジェクト公式ページ

http://www.cat-language.com/

Google Code

http://code.google.com/p/cat-language/

作者はChristopher Diggins

http://cdiggins.com/category/cat/

作者はHeronという言語の開発者でもある

http://www.heron-language.com/

作者はC++ Cookbookの著者でもある

http://www.amazon.co.jp/exec/obidos/ASIN/4873113032/

プログラミングについてChrisが知っているすべて

http://www.oreillynet.com/onlamp/blog/2005/07/everything_i_know_about_progra.html

作者は以前"Why I don't use C#"というC#批判記事を公開していたが、いつの間にか消えている

http://www.heron-language.com/c-sharp-critique.html (リンク切れ)


とりいそぎ。

2007年4月4日水曜日

機械翻訳 on the Web

たつをのChangeLogで、機械翻訳についてふれている記事がありました。

あ、日英・英日機械翻訳は富士通のATLASがおすすめですよ!っと。


[を]Googleの統計的機械翻訳

私もこの前までは富士通ATLASがおすすめと思っていたんですが、ちょっと気になったので、Web上の機械翻訳サービスで比べてみました。
お題は、ポール・グレアムの「普通のやつらの上を行け」です。ちなみに川合史郎さんによって丁寧に日本語訳されています

Few would dispute, at least, that high level languages are more powerful than machine language. Most programmers today would agree that you do not, ordinarily, want to program in machine language. Instead, you should program in a high-level language, and have a compiler translate it into machine language for you. This idea is even built into the hardware now: since the 1980s, instruction sets have been designed for compilers rather than human programmers.


Beating the Averages

これを機械翻訳して比べてみたものが以下になります。なお、私の独断と偏見で、好みの文章が得られたものの順番にしています。

クロスランゲージ社のエンジン (Yahoo! Japan 翻訳, インフォシーク マルチ翻訳)

少なくとも、少数しか高水準言語が機械言語より強力であるということに異議を唱えません。大部分のプログラマーは、今日、あなたが、通常、機械言語でプログラムしたくないことに同意します。その代わりに、あなたは高級言語でプログラムしなければならなくて、コンパイラをあなたのためにそれを機械言語に翻訳してもらいます。この考えは、現在ハードウェアに組み入れられさえします:1980年代から、命令セットは人間のプログラマーよりむしろコンパイラのために設計されました。

富士通 BizLingo (エキサイト翻訳)

わずかしか、高級言語が機械語より強力であると少なくとも議論しないでしょう。 今日のほとんどのプログラマが、通常、あなたが機械語でプログラムを作りたくないのに同意するでしょう。 代わりに、あなたは、高位言語でプログラムを作って、コンパイラにあなたのためにそれを機械語に翻訳させるべきです。 ハードウェアは現在、この考えに組み込まれさえします: 1980年代以来、命令セットは人間のプログラマよりむしろコンパイラのために設計されています。

AMIKAI (livedoor翻訳, 翻訳:@nifty, So-net翻訳, フレッシュアイ翻訳?)

ほとんどは、少なくとも、高水準言語が機械語より強力であると議論しないでしょう。ほとんどの今日のプログラマは、あなたが通常、機械語でプログラムしたくないことによく合意しました。代わりに、高水準言語の中でプログラムするべきであり、コンパイラーにそれをあなたのための機械語に翻訳させるべきです。この考えは今ハードウェアにさらに組み込まれます: 1980年代以来、指示セットは人間のプログラマではなくコンパイラー用に設計されました。

Babelfish (Google翻訳β版, Altavista)

少数は高レベル言語が機械語より強力であること、少なくとも論じる。ほとんどのプログラマーによっては通常機械語でプログラムしたいと思うように今日ことが、同意する。その代り、高水準言語でプログラムするべきで編集者をあなたのための機械語にそれを翻訳してもらう。この考えはハードウェアに今造られる: 80 年代以来、命令セットは編集者よりもむしろ人間プログラマーのために設計されていた。


ということで、この文だけから独断で判断すれば、ATLASでも使われている富士通のエンジンより、クロスランゲージ社のものが好みでした。
クロスランゲージの翻訳ソフト、体験版があるといいんですけれど。