ページ

2007年3月28日水曜日

Visual Studio "Orcas" と Visual Studio Team System "Rosario"

Visual Studio Team System - Furure Releases

ロードマップが更新されたそうです。
これによると Orcas は Beta 1 が 2007年第2四半期、Beta 2 が 2007年半ば、RTM が TBA。TBA って何? "To Be Announced" で 「そのうちアナウンスされる」 ってこと?

さらに新たなコードネームが公開されました。その名も
Visual Studio Team System "Rosario"
です。
ロサリオってアルゼンチンの都市の名前みたいですが、オーカス島からずいぶん遠くにいっちゃいましたね(笑)
で、この Rosario ですが、上記の記事によると 「ビジネスの優先順位に従ってリソースを積極的にロードバランスするための複数プロジェクトのプロジェクト管理」 だとか 「プロジェクトの状態や進捗を確認するための統括的なメトリクスとダッシュボード」、「デベロッパとテスタがパグをすばやく確認し、コミュニケートし、優先順位をつけ、診断し、解決することができるようにするパワフルな新しい機能」 だとかそういったことが書かれています (他にもいろいろ書かれています)。これらからわかるように、おそらくは Team System の各機能を発展、進化させたものなんでしょう。だから、Visual Studio "Rosario" ではなく Visual Studio Team System "Rosario" なんですね。Orcas では .NET Framework も 3.5 になると言われていますが、これらから考えると Rosario では .NET Framework は変わらないのかな?

2007年3月22日木曜日

C# 3.0 の partial methods

C# 3.0 (Visual Studio "Orcas" / .NET Framework 3.5) には partial methods が追加されるそうなんですが、情報があまりないのでググってみました。(Orcas CTP のドキュメントに記載されているそうですけどね)

Anders Hejlsberg on the future of C#: Partial methods
C# 3.0 Partial Method Definitions

上記の内容からすると、、、

// 定義
partial void onNameChanged();

// 実装
partial void onNameChanged()
{
??? // 内容
}

そして、partial method の制約は

  • partial class の中だけで使用可。
  • partial method は partial キーワードをつける必要があり、戻り値は void でないといけない。
  • partial method は ref パラメータは使えるが out パラメータは使えない。
  • partial method は暗黙に private で、 それゆえ virtual にはできない。
  • partial method は extern にはできない。
  • partial method は static と unsafe はつけられる。
  • partial method は generic にできる。
  • partial method の delegate は作れない。

といったものがあるそうです。

で、partial method っていうのが何をするものかというと、「実装があったらその実装を呼び出すようにするし、なかったら何もしない」 と言う風にコンパイラが解釈してくれるものだそうです。

たとえば、Hoge.designer.cs に

??? partial class Hoge
??? {
??????? partial void onNameChanged();

??????? private void Func()
??????? {
??????????? onNameChanged();
??????? }
??? }

とあった場合に、Hoge.cs で

??? partial class Hoge
??? {
??????? partial void onNameChanged()
??????? {
??????????? // 何かする
??????? }
??? }

と書けば Func() が呼び出されたときに Hoge.cs の onNameChanged() が呼び出されるようになります。Hoge.cs に partial void onNameChanged() の実装がなければ Func() は何もしないメソッドになるわけです (Func() にある onNameChanged() の呼び出しが削除される)。
もちろんこれはコンパイル時に解釈されます。virtual のように実行時に解釈されるわけではありません。ですので、IL などにはなんら変更はなく、C# コンパイラが拡張されただけです。(だと理解してます)

上の例でも .designer.cs と書いたように、自動生成されるコードで便利なように追加された機能といっていいと思います。

www.windowsvista.si - WPF/E のサンプル

Microsoft MVP Global Summit に参加してきました。この話はあらためて書きたいと思いますが、そこで Scott Guthrie 氏 が紹介していた WPF/E を使ったサイト。

http://www.windowsvista.si/

画像が多用されているので最初はロードに時間がかかります。
英語でもないので何が書いてあるのかはよくわかりませんが、表示されたら左側のアイコンをクリックすればログインできます。
すると、ロード画面のあとデスクトップが表示されて、、、

やってみればどんなサンプルなのかはわかるでしょう(笑)
いちおう書いておくとリモートデスクトップとかではなく、単に WPF/E で 「それらしく」 作っているだけです、念のため。

しかし、
http://www.windowsvista.si/main.htm?show3d=1&content=home
とか、WPF/E は 3D をサポートしてないのにいったいなにをどうなっているのやらわけがわかりません(^^;