Bill Gatesの基調講演の後、Jim Allchinが登場。ここからは完全にデベロッパー向けの講演。PDCなんだからアタリマエか。
Jimに紹介されて出てきたのはDon BoxとChris Anderson。ふたりの掛け合い漫才でWinFXプログラミングがスタートする*1
最初にChrisがDonにC#Windows Formのソースを書かせ(アセンブリとしてXMLファイルも)、次にDonがChrisにそれを拡張させるという進行だった。
Donはemacsを使用し、ChrisはなんかC#専用IDE(フリーツール?)を使用。
C#ソースコードでは


using System.MessageBus;
using System.MessageBus.Service;
なんていう名前空間を使用していた。
で、コンパイル時には「csc.exe」ではなく、「msbuild.exe」を使用し、

presentationcore.dll,windowsbass.dll,presentationfx.dll
などという引数が与えられている。
これはDonがC#とともにXMLで記述したファイル(アセンブリ?)の両方が一組でプロジェクトとして機能しているためだろう。要はMacのリソースフォーク部分をXMLで、データフォーク部分をC#で記述し、その2つで実行ファイルが生成される(Macだと先頭128バイトがリソースフォーク*2)からだ(ろう)。
Windowsコードビハインド」とかいっていたけど、まあ、そのとおりで、ビルドされたWindowsアプリケーションに対して、DonがさらにXMLファイル(*.xaml)に変更を加えリビルドを行なうと、アプリケーションのインターフェイスがどんどん変わってゆく。
このあたりがLonghornの、ユーザーインターフェイスAVALON)の面白いところか。
で、このWindowsアプリケーションをWebサービスに変更してゆくDEMOに繋がるのだけれど、その旨を紹介して舞台裏に引っ込もうとするJimをDonが「ぜひ、ソースの妙技をお見せください」なんてことを言って呼び止め、キーボードの前に座らせる。
立ち上げたエディタはGVIMで、思わず「Jim萌え」*3
で、いきなりWebサービスではなく、まずはローカルに保存された(すでに生成されているクラス)を呼び出すのだが、これはロジック部分をいじればいいだけだから、非常にカンタン。ボタンやラベルの配置、色やフォントの選択などは*.XAMLに記述する。
だからコードビハインドなんだけど。
数日前にVB.NETでボタンとテキストボックスをパネルに貼り込み、データグリッドをFillしただけの、ロジックが一切ないWindowsアプリケーションのスケルトンを記述したけど、あのインターフェイスにあたる部分がすべてXAMLに移行していると考えていい。つまりWindowsアプリケーションでさえ、ロジックとデザインを分離してしまったわけだ。
これ、おそらく非常に重要。
JimがGVIM上でパタパタやって、ファイルを読み込もうとしたら空白になって
「ねえ、もしかして(新規ファイルを)上書きしちゃった?」
「あー……、むー」
とか言いつつ、必要なファイルが表示されるとDonとChrisが大げさに「ふー」とか汗をぬぐうしぐさで笑いを取りつつ、JimのDEMOは終了。
で、ChrisがさらにWebアプリケーション向け(Webサービス)のロジック(名前空間とuidを指定。データの送受信向けに必要なソースを数行)を実装し、非常に簡便にWebアプリケーションへと変貌させて大拍手。
このやり取りはこちらから読むことができます。

*1:そういや、.NETなんて言葉、ほとんど聞かれなかったな。聞き取れなかっただけか?

*2:だったかな?

*3:もちろんサービスフレーズだ