ページ

2009年11月25日水曜日

[XAML][Silverlight] XAML Toolkit と XAML Localization

.NET Framework 4 向けの XAML Toolkit の CTP が公開されています。
http://code.msdn.microsoft.com/XAML/
これは PDC の 「XAML Futures in Microsoft .NET Framework, Microsoft Silverlight and Tools」 というセッションで紹介されたもののようで、XAML FxCop (XAML の静的解析) とか XamlDom (XAML の DOM に簡単アクセスするクラスたち。LINQ 構文も使える) とかが含まれているみたいです。

で、セッションのビデオをちょこっと見てみたんですが、XAML 自体も拡張されるんですね。
http://blogs.msdn.com/llobo/archive/tags/XAML+2009+features/default.aspx
にいろいろありました。
Generic の型引数を指定したり とか、インスタンス生成メソッドを指定したり引数を与えたり とか、おもしろいなぁ。
ただ、どうやら XAML 2009 は .NET Framework 4 向けで、Silverlight 4 では対応しないみたいです。

あと、XAML Localization に 「おおっ」 っときました。(ビデオの 44分くらいから)
まだ 「x:Uid 方式なんてどうかな?」 とどうしようか考えてるような段階みたいですが、これはがんばって欲しい。
ちなみに、Silverlight 3 だと
Silverlight and localizing string data
こんな感じです。Localization のための特別な仕組みがあるわけではなく、文字列リソースの resx を作って、そいつを XAML にリソースとして取り込んで、 Text="{Binding Source={StaticResource LocStrings}, Path=WelcomeMessage}" なんて感じでバインドするという、何とも泥臭い方法です。


2009年11月18日水曜日

[.NET] Reactive Extensions for .NET が DevLabs でリリース

Finally, the long wait is over. Rx is available on DevLabs! より。
Reactive Extensions for .NET が DevLabs にて公開されたそうです。
どうやら今まで Reactive Framework とか呼ばれていたものが Reactive Extensions for .NET となったようです。
リリースノートはこちら → Release Notes (Build 1.0.2052. 11/17/2009, First Release)
DevLabs から

  • .NET Framework 3.5 SP1 版
  • .NET Framework 4 Beta 2 版
  • Silverlight 3 版

がそれぞれダウンロードできます。

Reactive Extensions API in depth: intro
Channel 9 で動画による解説が始まるようですが、今の時点では intro しかないみたいです。

What's different about the 3 versions of Rx? Part 1: Silverlight 3
Channel 9 で .NET 3.5 版、.NET 4 版、Silverlight 3 版の違いを開設する動画が始まるようですが、今の時点では Silverlight 3 版とかないみたいです。
で、この Silverlight 3 版の内容は、「Observable.Start(...).Subscribe(...) は自動的に UI スレッドで動くよ」 といったことみたいです。


2009年11月13日金曜日

[Silverlight] out-of-browser と initParams

なるほどぉ、と思ったのでメモ

Silverlight out-of-browser and initParams より。
HTML 側から Silverlight アプリに初期値を渡したいときに使える initParams ですが、あれは HTML 上に書いてあるものですから out-of-browser にすると無くなっちゃうんですね。(そりゃそうですが)
そこで上記の記事では、Application.Current.IsRunningOutOfBrowser を参照して

  • out-of-browser でないときは、initParams を取得しそれの内容を IsolatedStorage に保存しておく。
  • out-of-browser なときは、IsolatedStorage から initParams を読み込む。

としています。

なるほど、out-of-browser としてインストールするためには一度はブラウザで実行しているはずだからそのときに IsolatedStorage に保存しておけるってわけですね。
ただ、別のインストール手段が出てくるかもしれませんし、IsolatedStorage のファイルが無くなってる可能性も無いとは言えないので、ファイルが無かったときの考慮もちょっとはしておいた方がいいとは思いますが。(記事内のコードではそういった対処は何もしていないので、ファイルが無いと例外が出て死んじゃうと思う)


2009年11月11日水曜日

[Silverlight] Silverlight がインストールされていないときに出る画像

Silverlight がインストールされていない環境で Silverlight を使ったページを見ると、

InstallSilverlight_108181.png

こんな画像が表示されます。
これは 「方法: HTML を使用して Web ページに Silverlight を追加する」 や 「方法 : JavaScript を使用して Web ページに Silverlight を追加する」 にあるように <img src=”http://go.microsoft.com/fwlink/?LinkId=108181” .../>  としたときに表示される画像です。
ちなみに、ブラウザの言語 (たぶん HTTP ヘッダの Accept-Language あたり) によって適した言語の画像が返ってくるようになってます。

たまたま見かけたんですが、

ExperienceSilverlight_161376.png

こんな画像を使ってる人もいました。
HTML を見てみると <img src=”http://go.microsoft.com/fwlink/?LinkId=161376” .../> とするとこの画像になるようです。(もちろん、こちらもブラウザの言語によって使われる言語が変わります)

これって他にもあるのかなぁ?


2009年11月9日月曜日

[Microsoft] Productivity Future Vision - Microsoft が思い描くちょっと未来のコンピューター

2009/11/05 に開催された Microsoft Developer Forum 2009 の Live Smooth Streaming による中継を見ていたときに、合間に流れていたビデオがいい感じだったのでどっかにないのかなぁと思っていたんですが、
http://www.officelabs.com/projects/productivityfuturevision/Pages/default.aspx
こちらにありました。
Silverlight のビューアーで見ることもできますし、WMV もあります。

というか、このビデオのタイトルが 「Productivity Future Vision」 だとわかれば、検索するとブログ記事だとか、YouTube だとか、Microsoft Showcase だとか、いろいろと見つかりますね。
つか、ReMIX とか TechED でも流れてたみたいなので結構前からあるのか。
私はそれらに参加してないので今回が初見でした。


[.NET] IDataObject を使ってドラッグ&ドロップとコピー&ペーストを実装

Creating something from nothing [Developer-friendly virtual file implementation for .NET!] より。
ネイティブコードでは IDataObject やら IDropSource やらといった COM インターフェースを使ってドラッグ&ドロップやコピー&ペーストを実装します。
WPF では System.Windows.DataObject が用意されていますが、これは存在するファイルしか扱えなかったり、DoDragDrop() メソッドが同期的だったりとネイティブコードでできることの一部の機能しか提供されていません。
この DataObject クラスは sealed なので拡張もできそうにありません。
System.Windows.IDataObject インターフェースは上記の DataObject クラスと同じメソッドしかないのでこれを使ってもどうにもなりそうにありません。

というわけで、System.Runtime.InteropServices.ComTypes.IDataObject インターフェースを実装するクラスを作ってフル機能のドラッグ&ドロップとコピー&ペーストを実装しよう、というのが上記の記事です。
こちらの IDataObject インターフェースは、まんま COM の IDataObject インターフェースです。(ネームスペースでわかるでしょうが)
こいつを実装しようとすると、FORMATETC だとか何だとかと 「ドラッグ&ドロップ程度のことが何でこんなにややこしいんだよ」 と思うくらい面倒だったりします。
記事中にあるリンクからサンプルプログラムをダウンロードできますが、ちょっと見てみたところ、IDataObject とそれに必要なものをだいたい一式実装しているようです。
もちろん、一つのクラスでドラッグ&ドロップとコピー&ペーストの両方に対応できるようになっています。(まぁ、もともとどちらも IDataObject を使うんですが)
Action<Stream> を渡しておいてドロップ時にファイルを生成したりといったこともできるようになっています。

ちなみに、サンプルプログラムは、左クリックでドラッグ&ドロップ、右クリックでクリップボードへのコピーになっています。

あと、
Creating something from nothing, asynchronously [Developer-friendly virtual file implementation for .NET improved!]
こちらの記事で、コンストラクタに Action を渡しておくとドラッグ&ドロップの開始時と終了時にその Action を呼び出してくれるという機能が追加されています。


2009年11月5日木曜日

[.NET] ASP Classic Compiler - VBScript を IL にコンパイルして実行するソースコード

中身はまだ見てないんですが、ちょっとおもしろそうだったので覚え書き。

http://www.codeplex.com/aspclassiccompiler

ASP (ASP.NET ではなく古いほうの ASP) で使われている VBScript を IL へとコンパイルして実行するソースコードだそうです。
VBScript のパーサは手作りで、IL の生成は Dynamic Language Runtime を使っているとあります。
ゴールには、実際に存在する主要な ASP ページを変更無しで ASP.NET 下で実行可能にする、とあるので単なるサンプルコードと言うよりはそれなりに本気なようです。
Silverlight でこのコンパイラを使うサンプルコードも含まれているそうです。

と、これを見ていてふと思い出したんですが、DLR には VBx という動的言語版 VisualBasic が乗っかるとかっていう話があったと思うんですが、あれってどうなったんでしょ?


2009年11月2日月曜日

[Microsoft] いろいろなチュートリアル動画(英語)

ちょっと覚え書き。

http://www.msdev.com/
microsoft.com ドメインじゃないけど Microsoft のサイトみたい。
”Search” でカテゴリを選ぶといろいろ見れる。
動画のものもあればドキュメントのものもある。

http://expression.microsoft.com/en-us/cc184875.aspx
Expression のチュートリアル動画など。