ページ

2007年11月28日水曜日

Silverlight 1.1 Tools Alpha for Visual Studio 2008

Silverlight 1.1 Tools Alpha for Visual Studio 2008 Available for Download より

VS2008 正式版用の Silverlight 1.1 Tools Alpha も出てます。

Silverlight 1.0 SDK アップデート (November 2007)

Silverlight 1.0 SDK がアップデートされています。
MicrosoftR Silverlight 1.0 Software Development Kit (November 2007)

入れる前にコントロールパネルの 「プログラムの追加と削除」 から 「Microsoft Silverlight 1.0 SDK」 と 「Microsoft Silverlight 1.0 SDK Visual Studio 2005 Template」 を削除しておく必要があるようです。

なにが変わったのかのちゃんとしたドキュメントは見つけられていませんが、http://silverlight.net/blogs/news/ には

Get the latest version of the Silverlight 1.0 SDK with clearer installation prompt language and a better performing version of Silverlight.js. Existing Silverlight applications will want to take advantage of the updates to Silverlight.js.

とあります。
どうやら Silverlight.js が変わっただけ?で、既存のアプリも Silverlight.js を差し替えてくれればいいことがあるよ、ということみたい。

2007年11月16日金曜日

VSUG Day 2007 Winter

12/8(土)に東京で、1/19(土)に大阪で VSUG Day 2007 Winter が開催されます。
VSUG にユーザ登録さえすればどなたでも参加できます。

http://vsug.jp/tabid/171/Default.aspx

わんくま同盟 大阪勉強会 #15

わんくま同盟さんは東京・大阪などで活発に勉強会を開催されていますが、このたび縁あって大阪勉強会でスピーカーをさせて頂くことになりました。

詳細は↓を参照してください。
わんくま同盟 大阪勉強会 #15

2007年11月13日火曜日

Windows history videos

CHICAGO とか NT 5.0 とかのレアものも含まれていて、見ていて思わずニヤニヤしちゃいました(笑)

2007年10月16日火曜日

VS2008 では WPF のイベントは手書きだって(しょぼーん)

渋木さん から教えてもらいました。

Add an events section to the properties window for WPF projects

上記は Connect にあった、Visual Studio 2008 へのフィードバックです。
今の VS2008 beta2 では WPF のイベントはプロパティウインドウでは管理できません。Windows.Forms ではプロパティウインドウに 「イベント」 タブがあってイベントハンドラを新しく作ったり、既存のメソッドをイベントハンドラとして関連付けたりすることができます。この機能が WPF のデザイナにはごっそりないわけです。

で、上記のフィードバックは 「この機能がないよ」 というものなんですが、それに対する Microsoft からのコメントが

Suggestion をありがとう。我々もイベントタブはプロダクトに追加すべき重要なものであると同意します。しかし、残念ながら Orcas のスケジュールに収まりません。この機能は将来のリリースの優先順位リストの上の方にあります。

なんてあります。

いやー、正直驚きました。てっきり 「beta2 だから」 まだ無いもんだとばっかり。。。まさか RTM にも無いとは。。。つか、Windows.Forms のデザイナより低機能になっちゃうってこと?と思っちゃうんですが。目玉の一つであるはずの WPF のデザイナがそんなんでいいんだろうか?

一応、書いておくと、WPF のデザイナにイベントを管理する機能がまったく無いというわけではありません。
まず、デフォルトのイベントハンドラはダブルクリックで追加したりコードへジャンプしたりできます。たとえばボタンを配置してそれをダブルクリックすると自動的に Click イベントのハンドラが追加され、そのコードにジャンプしてくれます。しかし、これができるのはボタンなら Click、テキストボックスなら TextChanged などといったデフォルトのイベントだけです。
また、XAML 上では 「MouseDown」 などと入力するとインテリセンスといっしょに 「<New Event Handler>」 といったものが表示れさて、これを選択すれば自動的にイベントハンドラのコードを追加してくれます。こちらはそのコントロールが持つすべてのイベントで使用できます。

2007年10月15日月曜日

beta2 から RTM になるときの LINQ to SQL の変更点

LINQ to SQL breaking changes from beta2 to RTM (compiled from my LINQ forum posts) より

早くも LINQ to SQL の beta2→RTM 時の変更点が紹介されてました。
主に US の MSDN Forum へのリンクなんですが、LINQ to SQL Beta2 to RTM Key Changes なんておもしろいですね。RemoveAll() が RTM 版では DeleteAllOnSubmit() になるそうです。削除されるのはあくまで submit したときであるということをイヤと言うほど明示したメソッド名にしたわけですね(^^;

2007年10月9日火曜日

Microsoft MVP を再受賞

今回も Microsoft MVP を受賞することができました。
今までと同じく Visual Developer - Visual C# です。

2007年10月4日木曜日

.NET Framework のソースコード公開

すでにあちらこちらでニュースになっていますが、、、

Releasing the Source Code for the .NET Framework Libraries より

Visual Studio 2008、.NET Framework 3.5 のリリースに合わせて .NET Framework のライブラリの一部のソースコードが公開されるそうです。公開と言っても Ms-RL という参照のみが許諾され複製、変更などはできないライセンスとなるそうです。
VC++ では template ベースのライブラリである ATL、WTL は当然として、MFC やランタイムなんかもソースが付いてて、入れてさえおけばデバッガで中まで入っていくことができましたから、ちょうどそれとおんなじような感じですね。

とりあえず公開されるのは以下の部分。

  • Base Class Libraries (System, System.IO, System.Collections, System.Configuration, System.Threading, System.Net, System.Security, System.Runtime, System.Text, etc)
  • ASP.NET (System.Web)
  • Windows Forms (System.Windows.Forms)
  • ADO.NET (System.Data)
  • XML (System.Xml)
  • WPF (System.Windows)

その後、以下の部分なんかも含めてもっと公開。

  • WCF
  • Workflow
  • LINQ

これらのソースは 「コメントも含まれている」 そうです。

で、これらのソースはダウンロードしてスタンドアローンにインストールし、テキストエディタなんかで見ることもできますし、以下のように VS2008 で利用することもできるそうです。

VS2008 ではインターネット上にあるシンボル情報 (とソースコード) を利用する機能がサポートされ、デバッガでステップインすると必要に応じてソースコードを取得して .NET ライブラリの中まで入っていけるそうです。また、ステップインだけでなく、たとえばコールスタックをダブルクリックしたりとかでもライブラリのソースを表示することができるそうです。

ところで、冒頭の方に "Today I'm excited to announce that we'll be providing this with the .NET 3.5 and VS 2008 release later this year." なんてありますが、.NET 3.5 と VS2008 って今年後半にリリースされるの?

2007年10月3日水曜日

LINQ でレイトレース...ってバカだろ(いい意味で

Taking LINQ to Objects to Extremes: A fully LINQified RayTracer?より


1つの LINQ クエリー式でレイトレースしてるそうです。
レイトレースってもちろんあれですよ?ピクセルごとに光線の追跡をして 3D 表示するってやつ。


クエリー式のところだけでなく LINQRayTracer.cs も落とせるようになってますので、VS2005 beta2 VS2008 beta2 (※1) で Windows Forms なプロジェクトを作って、Program.cs と Form1.cs を削除して、この LINQRayTracer.cs を追加して実行してやればそのまま動きます。(LINQRayTracer.cs に Main() も含まれています)


まだ内容はよく見てませんし、見てもわかるかどうかはわかりませんが、すごいということはわかりましたwww


※1
10/03訂正 VS2005 beta2 ではなく、もちろん VS2008 beta2 です。

2007年10月2日火曜日

SWF to XAML コンバータ

SWF to XAML Converter より

The ConvertedHarmony という 2つの SWF から XAML へのコンバータが紹介されています。
(SWF は Flash のファイル形式です)

The Converted の方は有料の商品みたいです (trial バージョンあり)。Harmony の方は現在 beta 段階みたいですが、完成後どうなるのかはわかりませんでした。
どちらも WPF XAML と Silverlight XAML をサポートするようです。

The Converted のデモ を見ると結構ちゃんと変換できるもんなんですね。ちなみにこのデモページには XAML ファイルが直に置いてあるので XamlViewer が立ち上がって表示されることになります (いわゆるルーズ XAML)。

Silverlight Enterprise Deployment Guide (英語)

Silverlight が入っていない環境で Silverlight を使ったページを参照すると 「Get Silverlight」 といった画像が表示されてそれをクリックすれば簡単に Silverlight プラグインを入れることができます。(もちろん、そうならないようなページを作ることもできますが、Silverlight.js を使った標準的なページでは自動的にこうなります)

なので、通常は事前に Silverlight を入れておく必要とかはないんですが、エンタープライズな環境ではそうできない場合もあります。企業内の閉じた環境とか、閉じてはいなくても勝手にプラグインを入れられないようになっている環境なんかもあるでしょうし。
そんな場合に Silverlight をどうやって配布したらいいのかのガイドが Silverlight Enterprise Deployment Guide にまとめられています。
(ちゃんと読んだわけではないので内容については聞かないでくださいw)

2007年9月6日木曜日

Silverlight 1.0 SDK と 1.1 SDK Alpha September Refresh

http://silverlight.net/GetStarted/ から表題の 2つの SDK がダウンロードできますが、これらも RC のものから更新されています。

■ Silverlight 1.0 SDK
1.0 SDK は msi になってますので簡単にインストールできます (RC のときも msi でした)。
また、インストール中に Visual Studio 2005 用のテンプレートをインストールできるのも RC と同じです。
SDK の内容は若干フォルダ構成が変わっていますし、サイズも違いますので RC のころからは更新されているようです。

あと、Tools\Silverlight.js フォルダの下にローカライズ版の Silverlight.js ファイルが追加されています。
いったい何がローカライズされているのかと思ったら

    Silverlight.createObjectEx({
source: 'Scene.xaml',
parentElement: document.getElementById('SilverlightPlugInHost'),
id: 'SilverlightPlugIn',
properties: {
width: '400',
height: '400',
background:'#ffffff',
isWindowless: 'false',
version: '1.0',
inplaceInstallPrompt: true
},
events: {
onError: null,
onLoad: Silverlight.createDelegate(scene, scene.handleLoad)
},
context: null
});

というように inplaceInstallPrompt を true にしたときに表示されるメッセージがローカライズされているようです。
Silverlight.js を使うと Silverlight が入っていない環境でページを表示すると 「Get Microsoft Silverlight」 という Silverlight のセットアップへのリンクを含んだ GIF 画像を自動的に表示してくれます。inplaceInstallPrompt を false もしくは未設定の場合は GIF 画像だけですが、true を指定すると GIF 画像と共に


By clicking "Get Microsoft Silverlight" you accept the
Silverlight license agreement
Silverlight updates automatically, learn more

というメッセージが表示されます。
これがたとえば Silverlight.ja-jp.js では、

"Get Microsoft Silverlight" をクリックすると、Silverlight 使用許諾契約書
に同意したものと見なされます。
Silverlight は自動的に更新されます。詳細情報


と表示されるようになります。


とりあえず Silverlight.ja-jp.js を Silverlight.js にリネームして使ってみたらちゃんと動きました。
(Silverlight.ja-jp.js は utf-8 で書かれているので html に <meta http-equiv="Content-type" content="text/html; charset=UTF-8"/> を入れるなり、ASP.NET なら web.config で utf-8 を指定するなりする必要があります)
もちろん、本当ならブラウザの HTTP_ACCEPT_LANGUAGE を見るなりしてどの言語版の Silverlight.js を使用するのかを決定すべきだと思います。今のところ、そういう仕組みはなさそうなので必要なら自分で作りこむ必要がありそうです。


■ Silverlight 1.1 SDK Alpha September Refresh
前回の 1.1 SDK Alpha はかなり巨大でしたが、今回のはずいぶん小さくなっています。解凍してみるとサンプル (QuickStarts) がフォルダごとなくなっています。
ヘルプなんかも微妙にサイズが変わっていますが、どの程度内容が変わっているのかはわかりません。

Silverlight 1.0 リリースと Linux サポートのアナウンス

ScottGu's Blog 「Silverlight 1.0 Released and Silverlight for Linux Announced」 より


■ Silverlight 1.0
Silverlight 1.0 がリリースされたそうです。
まだちゃんとは見てませんが、1.0 RC とは大きな変更はないと思われます (よほどのことがない限り変更は無いと言われてましたし)。


今、http://silverlight.net/GetStarted/ から 1.0 をダウンロードしようとしたら RC のサイトに飛ばされちゃいました。まだ一部準備中?


■ Linux サポート
上記 ScottGu's Blog によると Linux 上の Silverlight 実装 (Moonlihgt) を提供している Novell と正式なパートナーシップを結んだそうです。これで Moonlight は 「Mono Project の人たちが勝手に作った」 というものではなく Microsoft 公認のものになったわけですね。Linux 用の Silverlight Media Codec は Microsoft が実装し、Novell の Moonlight は Silverlight 100% コンパチになるだろう、と書かれています。すばらしい。


■ Silverlight 1.1 アップデート
http://silverlight.net/GetStarted/ を見ると 1.1 の方も Alpha September Refresh になっています。
あれ?こっちもまだ古い方のダウンロードに飛ばされちゃう?


----


9/6 追記
さきほど http://silverlight.net/GetStarted/ を見てみたところ 1.0、1.1 Alpha Sept Refresh ともに新しいものがダウンロードできました。

2007年8月10日金曜日

Re: VB : "Is Nothing" vs "= Nothing" と Nullable Type の強化

Shizuku Blog さんの 「VB : "Is Nothing" vs "= Nothing" と Nullable Type の強化」 を読んでちょっとおもしろそうだったので試してみました。
VB9 の LINQ では "Is Nothing" と書いた場合と "= Nothing" と書いた場合とで同じように振舞う、とのことですが、何がどうなっているのでしょうか?


以下、Visual Studio 2008 beta 2 で試してます。

まずはもっともシンプルそうなコードで。

    Dim ary As Integer?() = {1, 2, Nothing}
    Dim query = From x In ary _
                Where x = Nothing _
                Select x
    Console.WriteLine(query.Count())

これを実行してみると、、、あれ?ちゃんと "0" と表示されます。IL を見ると Where x = 0 と書いたのと同じような感じに解釈されているみたいです。
もちろん、Where x Is Nothing と書いた場合は意図どおり "1" という結果が表示されます。
どうやらここまで単純な場合だと "Is Nothing" と書いてやらないとダメなようです。

では、もうちょっと複雑なコード

    Dim ary() = { _
                    New With {.Name = "a", .Age = New Integer?(20)}, _
                    New With {.Name = "b", .Age = New Integer?(Nothing)} _
                }
    Dim query = From x In ary _
                Where x.Age = Nothing _
                Select x
    Console.WriteLine(query.Count())

おぉ、確かに "1" という結果が表示されます。この場合は "= Nothing" と書いても "Is Nothing" と同じように評価されているようです。
IL を見てみると "= Nothing" 部分は比較するコードは生成されておらず、代わりに Microsoft.VisualBasic.CompilerServices.Operators::ConditionalCompareObjectEqual() メソッドを呼び出すようになっています。この ConditionalCompareObjectEqual() メソッドの中までは調べていませんが、きっと Nullable と Nothing (null) との比較のときは HasValue をチェックするようになっているんでしょう。"= Nothing" と書いても "Is Nothing" と書いてもコンパイラは ConditionalCompareObjectEqual() メソッドを呼び出すコードを生成しています。なので、どちらの書き方をしても当然結果は同じになるわけです。


では、なぜ ConditionalCompareObjectEqual() メソッドが呼び出されるようになるんでしょうか?
それはきっと型が特定できないために late binding しているからでしょう。
ary の型を指定していないので object になっています。そして、そこから取り出した x も object です。Where の条件式 "x.Age = Nothing" の部分はラムダ式として解釈されているわけですが、そのメソッドの型を見ると bool Lambda(object) となっています。引数の object が x ですね。x が object なので x.Age というアクセスもできません (object には Age プロパティなんて無い)。そのため Microsoft.VisualBasic.CompilerServices.NewLateBinding::LateGet() メソッドを呼び出して Age にアクセスしています。そして ConditionalCompareObjectEqual() メソッドを呼び出して null と同じかどうかを判定しているわけです。
もちろん、こんなことになるのは Option Strict が Off の場合だけです。そもそも Option Strict On の場合はあちこちがコンパイルエラーになってしまいます。


では Option Strict On でも通るコード、すなわち late binding しないコードではどうなるでしょうか?


    Public Class Person
        Public Name As String
        Public Age As Nullable(Of Integer)
    End Class
 
    Sub Main()
        Dim ary As Person() = { _
                        New Person With {.Name = "a", .Age = 20}, _
                        New Person With {.Name = "b", .Age = Nothing} _
                    }
        Dim query = From x In ary _
                    Where x.Age = Nothing _
                    Select x
        Console.WriteLine(query.Count())
    End Sub

まぁ、答えは明らかなんですが、当然意図したようには動きません。この場合はきちんと "Is Nothing" としてやる必要があります。
(あれ?query の型は?と思ったらちゃんと IEnumerable(Of Person) と表示される。。。ひょっとして VB の Dim って C# の var の役割も兼ねてるの?)

2007年8月2日木曜日

Silverlight 1.0 RC2 がリリース?

Silverlight RC2 On The Way - We're Getting CLose! より

先週末に Silverlight 1.0 RC1 がリリースされたばかりですが、早くも RC2 がリリースされるようです。
上記の記事には "in the next couple of hours" とあるんですが 「2時間のうちに」 ということだったらすでに RC2 がリリースされてるのかな?"The update is Sunday night's drop." とあるので 7/29(日) の夜にビルドしたもの?
ちなみに RC1 が build 20724 で RC2 が build 20730 だそうです。

ただ、RC2 と言っても、RC1 からの breaking change は 1つも無いし、Silverlight.js や他のコードなども変更する必要はない、とのことです。

と言うか、上記記事の最後の段落に 「はっきり言うと、セキュリティ的な問題を見つけたからこのアップデートを出すわけではなくて、update broadcast system の public test のため」 みたいなことが書かれています。あと Silverlight 1.0 をリリースするまでおよそ 1週間おきくらいにあと何回かする予定、みたいなことも。ということで、そういうことなんでしょう。

2007年8月1日水曜日

Silverlight 1.0 SDK RC1 と 1.1 SDK Alpha Refresh

http://silverlight.net/GetStarted/
こちらに SDK なども一通りまとめられていますが、これらを入れてみました。

■ Silverlight 1.0 SDK RC1
前回までは単なる ZIP でしたけど、今回はちゃんと MSI になってますね。
ダウンロードしてダブルクリックすれば簡単に入れられます。この SDK にはドキュメントと QuickStarts などが含まれています。

また、セットアップ時に Visual Studio 2005 用のテンプレートも入れてくれます。
これで、Visual Studio 2005 でプロジェクトの新規作成をすると 「Silverlihgt Javascript Application」 を選択できるようになります。
もちろん、1.0 ですから mini-CLR ではなく JavaScript ですし、VS2005 ですから XAML をデザインできるわけではありませんけど。

ちなみに、Silverlihgt.js の Silverlight.createObject() に指定するバージョンですが、beta までは "0.9" でしたが RC1 からは "1.0" となったようです。

■ Silverlight 1.1 SDK Alpha Refresh
こちらはまだ ZIP のままです。ただ 1.0 SDK RC1 が 20MByte 程度なのに対して 1.1 SDK は 200MByte くらいあります。なんでこんなにサイズが違うのかと思ったら QuickStarts などで使っている画像なんかがでかいみたいです(笑)
1.0 SDK と同じくドキュメントと QuickStarts がメインです。Tools フォルダの下に SilverlightControlsStarterKit が入っていますが、内容は前回の SDK とあまり変わっていないようです。

1.1 SDK Alpha Refresh とは別にダウンロードできる 「Microsoft Silverlight Tools Alpha Refresh for Visual Studio (July 2007)」 を入れると Visual Studio 2008 にテンプレートが追加されます。これを入れるとプロジェクトの新規作成に 「Silverlight Project」 と 「Silverlight Class Library」 が追加されるようです。

Silverlihgt.js の Silverlight.createObject() に指定するバージョンは、"0.95" から "1.1" に変わったようです。
1.1 SDK Alpha Refresh に入っている QuickStarts などのサンプルを見ていると一部 "0.95" のままになっているものがあるようです。当然 "0.95" のままだと動きませんので注意。

2007年7月31日火曜日

Silverlight Update とは

How Silverlight Update Works より

どうやら Silverlight ランタイムには自分自身を更新する機能が含まれているようです。

Silverlight Update は、

  1. セキュリティアップデート。24時間ごとにセキュリティアップデートがあるかどうかチェックする。
  2. 機能アップデート。30日ごとに機能アップデートがあるかどうかチェックする。たとえば、Silverlight RC は 30日ごとに 1.0 リリースをチェックするなど。

の 2種類があって、アップデートがあると自動的にバックグラウンドでダウンロードして、サイレントモードでインストールしてくれる。ロードされた DLL をアンロックする必要があるなどブラウザをリスタートする必要があるときでも、機能アップデートのときはプロンプトを表示したりしない (次回にブラウザを起動したときにアップデートされる)。ただし、セキュリティアップデートのときはプロンプトを表示して、ブラウザを再起動するように要求する。

というようなものだそうです。他にもいろいろと書いてありますので、興味のある人は上記記事を参照してみてください。

今まで Silverlight なところで右クリックすると 「About Silverlight」 といった感じのコンテキストメニューが出ていたと思います。これが RC からは 「Silverlight Configuration」 に変わっています。これの Update タブで自動的にアップデートするかどうかを設定できるようです。

この設定ダイアログについて
Michael's Blog: 「Silverlight Configuration Tool」
で紹介されていました。

c:\Program Files\Microsoft Silverlight\ フォルダの slup.exe がこのダイアログの本体だそうです。
また、Updates の設定によって変更されるレジストリ値も紹介されています。
# できれば slup.exe から slconfig.exe にでもリネームして IsolatedStrage なんかの設定とかもできるようにしてよ。みたいなことも書かれてますね。そりゃそうだな。

Silverlight 1.0 RC1 と 1.1 Alpha Refresh がリリース

すでに先週末のことですが、Silverlight 1.0 RC1 がリリースされました。
また、あわせて 1.1 Alpha も 1.0 RC1 にあわせたバージョン (1.1 Alpha Refresh と呼ばれています) がリリースされました。
ダウンロード先については↓がわかりやすそうです(英語ですが)
Tim Sneath: 「Silverlight 1.0 RC1 is Here!」
また、ここに beta リリースをアンインストールする必要は無い、単に RC1 のインストーラを実行すれば OK、とあります。あと、今までの beta と RC1 は互換性がないから多くのサンプルは動かないとあります。

もちろん、Silverlight を使ったページ、たとえば http://silverlight.net/quickstarts/ なんかを表示すると

Get Silverlight RC

なんていう画像が表示されて、これをクリックしてもダウンロードサイトにいけます。
(↑は単なる画像です。ダウンロードサイトへのリンクにはなっていません)
この画像経由で 1.0 beta、1.1 alpha が入っている環境に 1.0 RC1 を入れてみましたがちゃんと入りました。ただ、IE を再起動してやる必要はありました。これは 1.1 alpha とかのせいかもしれません。
さらにこの環境に 1.1 Alpha Refresh を入れてみました。マシンをリブートしてから入れないとうまく入りませんでしたが、ちゃんと動くようになりました。

2007年7月27日金曜日

Visual Studio 2008 beta 2 と .NET Framework 3.5 beta 2 がリリース

すでにあちこちで書かれてますが、予定通り Visual Studio 2008 beta 2 と .NET Framework 3.5 beta 2 がリリースされたみたいですね。

VS2008 のダウンロードは
http://msdn2.microsoft.com/en-us/vstudio/default.aspx
にまとまってるみたいです。
Standard、Professional、Team Suite の各エディションや Virtual PC イメージなんかもあるようです。
あと、どうやら MSDN Subscriber Downloads だけではなく、Download Center から誰でもダウンロードできるみたいですね。

Express Edtion もあるみたいです。
http://msdn2.microsoft.com/ja-jp/express/future/default.aspx
# しかし、この VS2008 Express Edtion のサイトはえらくかっこいいな

ところで、.NET Framework 3.5 の方はどこがどれくらい変わってるんでしょう?
Lester's WPF blog: 「3.5 released with many features!!!」 なんかみると WPF なんかは細々と変わっているみたいなんですが。

2007年7月25日水曜日

Visual Studio 2008 Beta 2 はもうすぐ?

BetaNews: 「Visual Studio 2008 Beta 2 Coming Thursday」

Visual Studio 2008 Beta 2 が今週の木曜日に出るとあります。
元記事として ScottGu's Blog: 「First Look at IronRuby」 が紹介されています。けど、この記事ってタイトルどおり IronRuby の紹介で (これはこれでおもしろいですが)、いったいこれのどこに VS2008 の話があるんだろうとすぐにはわかりませんでした。
で、よく見ると、この記事についた最初のコメントに 「VS2008 をめっちゃ待ってるんだけど、もうすぐ?」 みたいなことが書かれて、それに対して ScottGu 氏が 「今週後半に出るからもうちょっとだけ待ってね」 なんて答えてるんですね(^^
さらにもうちょっと下のコメントで 「beta 2 の機能は完璧?」 という質問があって、それに対して 「今週後半に出る VS2008 と .NET 3.5 beta 2 の機能はほとんど完璧。beta 2 のフィードバックに基づいていくつかの小さな機能の追加・変更はするだろうけど、機能の 99% はもうあるよ」 なんて感じのことを答えています。

# Silverlight もサポートしてくれるとうれしいけど、時期的に考えて無理だろうなぁ

2007年7月18日水曜日

Silverlight 1.0 RC がもうすぐらしい

Preparing for Silverlight 1.0 RC and Beyond より

Silverlight 1.0 RC が 2週間以内くらいに出てくるそうです。
基本的にいくつかのバグを直した安定バージョンということみたいですが、beta と RC との間ではいくつかの breaking change もあるそうです。
上記の記事から SDK の special preview がダウンロードできます。これには beta と RC との両方に対応した silverlight.js、beta と RC との間の変更点についてのドキュメント、などが含まれています。(こういったものが入っているだけで SDK 自体が入っているわけではありません)

# けど、私の興味はすっかり Silverlight 1.1 にいっちゃってるんですけどね

2007年7月11日水曜日

Silverlight 1.0 beta と 1.1 alpha の両方をインストールできる?

Silverlight 1.0 beta と 1.1 alpha が同時にリリースされたわけですが、これらをいっしょに入れることができるのか?が気になりました。


Silverlight Feb 2007 CTP まで
Silverlight コントロールを貼り付ける場合は、HTML 内で agHost.js を
<SCRIPT src="agHost.js" type="text/javascript"></SCRIPT>
しておいて、new agHost( ... ); としてました。(agHost.js は SDK に入っていました)


Silverlight 1.0 beta
agHost.js に代わり Silverlight.js が SDK と共に提供されるようになりました。
また、Sys.Silverlight.createObject( ... ) or createObjectEx( ... ) と namespace 風の関数名になりました(この namespace 風の手法は Microsoft AJAX Library と同じです)。createObject() には要求するバージョンを指定する引数がありますが、1.0 beta の場合は "0.9" と指定するそうです。


ついでに Silverlight の本体を調べてみると、IE アドオンは AgControl Class (ProgID は AgControl.AgControl) という名前で、本体は C:\Program Files\Microsoft Silverlight\npctrl.dll です。同じフォルダに agcore.dll というのもあり、どちらもバージョンは 0.8.5.0 でした。


Silverlight 1.1 alpha
1.1 alpha も 1.0 beta と同じく Silverlight.js を使用します。1.1 alpha SDK に入っている Silverlight.js を見てみると 1.0 SDK に入っているものと冒頭のコメント以外は同じでした。冒頭のコメントには 「このファイルは 1.0 beta と 1.1 alpha の両方にコンパチブルで、1.1 alpha を使うときは 0.95.0 と指定しろ」 とちゃんと書いてあります。ちなみに 1.0 beta の Silverlight.js も冒頭のコメントには書いてありませんが、コードの中では 0.95.x を判定していたりするのでもともと両方に対応していることになります。
というわけで、Sys.Silverlight.createObject() に "0.95.0" と指定すると 1.1 alpha になります。


で、どうやら 1.1 alpha の本体は 1.0 beta と同じく AgControl Class (ProgID は AgControl.AgControl) みたいです。ProgID も同じで、入ってる場所も 1.0 beta と同じく C:\Program Files\Microsoft Silverlight\ でした。すなわち 「1.1 alpha を入れると 1.0 beta が上書きされる」 ということになってるようです。ただ、npctrl.dll も agcore.dll もバージョンは 0.8.5.0 のままになっています。ファイルの内容が同じなのかどうかまでは調べてませんが、1.0 beta と互換性はあるんでしょう (Silverlight.js みたいに 1.0 beta のものも実は 1.1 alpha に対応しているのかも知れませんが)。


この C:\Program Files\Microsoft Silverlight\ を見てみるとなかなか興味深いです。
mscorlib.dll、System.dll、System.Silverlight.dll などなどが入っています。で、.NET Framework 2.0 SDK の ildasm で見てみるとちゃんと中身が見れました。
"mini-CLR" の本体は coreclr.dll なのかな?


まとめ
はっきりしたことは言えませんが、1.0 beta と 1.1 alpha の両方を入れられるか?と言うよりも、1.1 alpha を入れると 1.0 beta が上書きされるということみたいです。で、1.1 alpha が 1.0 beta と同じ機能をサポートしているということみたいです。

2007年5月8日火曜日

VSUG Day 2007 Summer

VSUG Day 2007 Summer
2007/6/1(金)
コクヨホール(東京・品川)
参加無料
http://vsug.jp/tabid/151/Default.aspx

私も Silverlight のセッションをさせていただくことになりました。
セッションスケジュールを見ると 「私なんかが混ざっていいのかしら?」 と思うような豪華スピーカー陣です(^^;
ご興味のある方はぜひご参加下さい!

2007年5月1日火曜日

Silverlight 1.1 alpha を入れるときにエラー発生

Silverlight 1.1 alpha を Windows XP SP2 にインストールするときにエラーが発生( Install failed )しました。"Get more information" のリンクをクリックすると Error 3010 だそうです。説明を読むと 「インストールは成功した。けど、リスタートが必要。インストールを完了するためにマシンをリスタートしてね」 と英文で書かれてました。うーん、こんなのを Install failed と表示するとは。。。びっくりするじゃないか(^^;
まっ、alpha なんだから文句は言えないですけどね。

ちなみにマシンを再起動せずに IE だけ立ち上げなおしてあげたらちゃんと動いているように見えました。(もちろん、その後ちゃんと再起動しましたが)

Silverlight 1.0 beta と 1.1 alpha

4/30~5/2 の日程で MIX07 がラスベガスで開催されていますが、そこで Silverlight (コードネーム "WPF/E") のいろいろが発表されたようです。

まず、Silverlight の新しいサイトが公開されています。
http://silverlight.net/

また、MSDN Silverlight Dev Center もあります。
http://msdn2.microsoft.com/en-us/silverlight/

これらを見るとわかるように同時に 1.0 beta と 1.1 alpha が公開されました。

Silverlight 1.0 beta
今まで Silverlight の最新版は Feb 2007 CTP でした (Feb 2007 CTP の公開されたときはまだ "WPF/E" という名前でしたが)。これの beta 版が今回リリースされた 1.0 beta です。CTP→1.0 beta の変更点は What's New in Silverlight (1.0 Beta and 1.1 Alpha)? にまとめられているようです。ざっと見たところ 「細かいところはいろいろと変わっている」 という感じでしょうか。

また、1.0 beta は "Go-Live" ライセンスとなったそうです。
あと、ダウンロードするときに 「以下のライセンスを読んで "I Accept" をクリックしろ」 と出てきます(今のところ英文です)。このライセンスに 「2007年 8月 1日まで有効」 とあります。ライセンス的に日付を切っているだけなのか、実際に時限装置が内蔵されているのかはわかりませんが、意外と短いです。少なくともそれまでには次の beta、もしくは、正式版がリリースされるってことなんだと思います。

Silverlight 1.1 alpha
発表的にはこちらの方がインパクトは大きいですが、Managed Code の実行をサポートした Silverlight の alpha 版です。
Silverlight 1.0 ではプログラムの部分は JavaScript で記述します。これが JavaScript だけではなく C#、Visual Basic などでも記述できるようになります。また、IronPython、IronRuby などでも記述できるようです。

私自身まだよくわかってませんが、フルバージョンの .NET Framework とはまったく異なったランタイムによって実行されるようです。"mini-CLR" といった書き方がされていることもあるようです。
さらに Dynamic Language Runtime (DLR) というダイナミックな言語 (Python とか Ruby とか) のためのランタイムもあわせて発表されました。DLR は CLR の上に乗っかるという位置づけになるようです。この DLR が Silverlight の "mini-CLR" にも含まれているので C#、Visual Basic だけでなく Python や Ruby も使えるようになるということみたいです。
Silverlight の "mini-CLR" の BCL (ベースクラスライブラリ) ですが、どの程度のクラスが用意されているのかよくわかりません。1.1 alpha SDK もダウンロードしてみたんですが、クラスリファレンスが見当たりません。Quick Start なんかを見てるみると XmlReader なんかを使ってたりもするんで、Web 上で使いそうなものはある程度は用意されているみたいなんですが。

2007年4月18日水曜日

Google Office

ZDNet.com : 「Google presentation app on the way」 より

今 Web 2.0 Expo というのをやってるそうですが、そこで Google CEO が Google Docs and Spreadsheets にプレゼンテーションアプリケーションを加えることをアナウンスしたそうです。

ちなみに Google Docs and Spreadsheets というのは http://docs.google.com/ のことですね。すでに Word (みたいなもの) と Excel (みたいなもの) がブラウザ上で動いてます。ちょっと試してみたことがある程度ですが、日本語も使えるようです。また、Google へのセーブだけでなく、.doc や .xls での保存もできますし、.pdf での保存もできます。
これに PowerPoint (みたいなもの) が加わるというわけですね。

すごいなぁ、Google。

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 をサポートしてないのにいったいなにをどうなっているのやらわけがわかりません(^^;

2007年2月6日火曜日

ドミノ軒

Windows Vista Web Showcase: デモ 1 (DOMINOKEN)

WPF を使ったデモです。「リアルタイム 3D レンダリング機能を活用した、ちょっと変わったインタラクティブ ミュージカル ムービー」 だそうです。

上記ページにも 「このデモは Windows Vista 上での実行を強く推奨しています」 とあります。けど、デモ自体は xbap だし、「.NET Framework 3.0 が入ってれば動くんじゃないの?」 と思えます。つか、XP SP2 + .NET Framework 3.0 の環境でも問題なく動いているように見えます。

ドミノ軒のことは
Microsoft.com ブログ: 「新しいインターフェースの新サイトとWPFデモ
で知りました。
こちらにも 「WPFというのは、Windows Vistaに標準搭載されている新しい表示のためのテクノロジー」 とあります。確かにそのとおりです。.NET Framework 3.0 が標準搭載されているのは今のところ Vista だけで、XP SP2 や Windows Server 2003 SP1 では別途ダウンロードしてセットアップしてやる必要があります。まだ Windows Update/Microsoft Update にも入っていませんし。

しかし、こんな紹介じゃ 「WPF は Vista だけの新機能」 と思われちゃうんじゃないだろうか?個人的には反対に 「WPF を始めとする .NET Framework 3.0 の機能は Vista じゃなくても OK だよ」 ということを前面に出して欲しいくらいなんだけどなぁ。まぁ、マーケティング的には 「Vista はすごい」 ということにしたいのはよくわかるんだけどね。