ページ

2009年10月22日木曜日

[VS2010][Silverlight] Visual Studio 2010 と Silverlight 3 SDK

Visual Studio 2010 and Silverlight 3 SDK より。
ええと、Silverlight 3 Tools for Visual Studio 2008 と Expression Blend 3 に含まれている Silverlight SDK は 3.0.40624。
今回の Visual Studio 2010 beta 2 に含まれている SDK は 3.0.40818。
で、3.0.40624 が入っているマシンに 3.0.40818 を入れることはできない。
もし、3.0.40624 が入ってるマシンに VS2010 を入れると Silverlight SDK のインストールに失敗する。けど、3.0.40624 を使って VS2010 で Silverlight の開発をすることはできる。

ということなので、Silverlight SDK をアンインストールしておいてから VS2010 を入れた方がいいみたいな感じです。
(あとから 3.0.40624 をアンインストールして 3.0.40818 を入れてもいいのかもしれませんが)

ちなみに 3.0.40818 の変更点は

  • .NET 3.5 との依存性を無くして .NET 4 しか入っていないときもビルドできるようにした。
  • xap 名に Unicode 以外の文字も使えるようにした。
  • リファクタリングとインテリセンスの向上。

とあります。


[Windows7] Windows 7 の 7

Windows 7 って何が 7 なの?ということで、

この CM だと Windows 1.0、Windows/286 2.x、3.0、98、XP、Vista、そして Windows 7 ってことらしいです。
あれ? 95 は? Me は? NT は? 2000 は?とかって無粋なことは聞かないようにw

まぁ、真面目な話、
@IT: 「Windows OSのバージョンを判別するには?【Vista対応】[2.0のみ、C#、VB]
にあるように API 的には Vista がバージョン 6 で、その次だから 7 なんですけどね。

Windows 7 とは直接関係ないみたいですが、こんなのもありました。
BBC NEWS: 「In Pictures: Windows into history
Windows 1.0、2.0、3.0、3.1、95、98、Me、XP、Vista、7 のスクリーンキャプチャが見れます。

2009/10/22 18:00 追記
安藤さんからコメントをもらって気付きました。
http://msdn.microsoft.com/ja-jp/windows/dd882526.aspx
なんかにあるように Windows 7 の内部バージョンは 6.1 です。
(RC を元に記述とあるけど RTM でも変わってないよね?)
内部バージョンが 6 である Vista の次の OS だから Windows 7 という名前になったのかもしれないけど、Windows 7 の内部バージョンは 6.1、ということみたいですからご注意を。


[C#] C# 4.0 の Indexed Properties

Indexed Properties in C# 4.0 より。
ええと、何やら C# 4.0 では

// before
excel.get_Range("A1").set_Value(Type.Missing, "ID");

// after
excel.Range["A1"].Value = "ID";

と書くことができるそうです。
Visual Studio 2010 beta 2 で対応しているとのこと。

ん?こんな機能あったっけ?
と思ったんですが、上記記事に 「C# 4.0 language specificationC# Future page にもまだ公開されてない。なぜなら、ごく最近デザインチェンジがあって実装されたから」 とかあります。

記事によると、Indexed Properties は、get_X()、set_X() を X[] として呼び出せるようにするシンタックスシュガーで、C# コンパイラが get_ もしくは set_ の呼び出しに置き換えるそうです。
また、パラメータはすべてオプショナルとのこと。そしてパラメータ無しの場合は [] 自体を省略できるし、[] を書いても合法だそうです。(省略できるってのはすごいな)

IDE のインテリセンスやパラメータヘルプなども対応済みとのこと。ただし、Quick Info はまだ get_ set_ 形式のものを表示するそうです。

うーん、まぁ、確かに get_ set_ はすっきり書けるようにはなりますが...
ところで、私は最初の例がそもそも理解できてません。
Value = “ID” は Value[] = “ID” と同じで、なので set_Value(“ID”) になるってのはわかります。
けど、何でそれが set_Value(Type.Missing, “ID”) と同じ意味になるんだろ?
C# 4.0 の Optional Arguments が使われてるとしても、あれは C++ と同じでパラメータの最後からしか省略できないはずですし。
Named Arguments が使われてるわけじゃないですし。
まさか型から引数の位置を推測するなんてことができるようになるわけじゃないですよね?
これって、単にサンプルの書き間違いで Type.Missing が余計だったってこと?
# Visual Studio 2010 beta 2 を入れてないので試せない orz


2009年10月21日水曜日

[Silverlight] Silverlight Toolkit October 2009 リリース

Visual Studio 2010 beta 2 のリリースにあわせて Silverlight Toolkit October 2009 がリリースされています。

変更点 の最初には VS2010 beta 2 をサポートとあるので、これが一番の変更点なのかな?
「VS2010 のすばらしいデザイン・タイム・エクスペリエンスを提供するためにすべてのコントロールがアップデートした」 そうです。
Silverlight (and WPF) Data Visualization classes unsealed [Silverlight Toolkit October 2009 release now available!]」 には VS2010 のデザイナがいいもんで Blend を使うのをやめちゃったデベロッパーもいる、なんてことが書いてありますねw

VS2010 対応以外にもチャートとドラッグ&ドロップ対応が大きいみたいです。
チャートのことはよくわからないので置いておいて、ドラッグ&ドロップについて。
Tim Heuer さんの 「Silverlight Toolkit adds DragDrop targets!」 にコード例なんかがあります。実際に動くサンプルは こちら
たとえば、ListBox だと、単に ListBoxDragDropTarget で囲んでやればドラッグ&ドロップできるようになるみたいですね。
今実装されているのは

  • ListBoxDragDropTarget
  • TreeViewDragDropTarget
  • DataGridDragDropTarget
  • DataPointSeriesDragDropTarget

とのこと。
(DataPointSeriesDragDropTarget って何かと思ったら、チャートをドラッグ&ドロップターゲットにするものみたいですね)


2009年10月20日火曜日

[Silverlight] Silverlight Streaming by Windows Live 終了のお知らせ

私は使ったことないんですが、http://silverlight.live.com/ の Silverlight Streaming by Windows Live が終了するそうです。
詳しいことは
Important News for Users of the Microsoft® Silverlight(TM) Streaming by Windows Live(TM) Beta October 2009
にあります。
どうやら Silverlight Streaming by Windows Live はそのうち終了で、2009年末にローンチ予定の Windows Azure ベースのものに移行するということみたいです。ただし、Silverlight Streaming を直接置き換えるわけじゃないし、Azure はコストも必要になるなどいろいろと違うとかなんとか。

あと、Silverlight Streaming by Windows Live にあるコンテンツは各自ダウンロードしておいてくれということでその手順が載っています。


[VS2010] Visual Studio 2010 beta 2 リリース / 正式版は 2010年3月22日

あいかわらず Visual Studio 2010 をさわったことないんですが...

Microsoft のプレスリリース: Visual Studio 2010 and .NET Framework 4 Deliver Beta 2 in Final Stretch to March 22 Launch
Visual Studio 2010 beta 2 が本日 10/19 にリリース。
正式版は 2010/03/22 にローンチだそうです。

■ beta 2 で変わったところ
Somasegar’s Weblog: Announcing Visual Studio 2010 and .NET FX 4 Beta 2 より。
いろいろと VS2010 の追加点が書かれているのでざっとあげてみると、

  • beta 2 には SharePoint 2010 用のツールが統合されてる。
  • Windows 7 アプリケーション開発をサポートするランタイムとツールも含まれている。
  • 新しい Windows Azure ツールテンプレートで Windows Azure アプリの開発を始めるのが簡単になる。
  • Silverlight 3 データバインディングのサポートが向上したのでコードを書くのに専念できるようになる。(プレスリリースの方にはドラッグ&ドロップでデータバインドできるようになる、とある)
  • VS2010 のすべてのバージョンに Team Foundation Server が含まれる。
  • ソースコントロールやバグトラッキング、自動ビルドなどを小さなチームでも使える。
  • TFS Basic はシンプルでスリム。サーバやクライアント PC にインストールできる。

とかなんとか。

■ VS2010 のラインナップ
VS2010 は

  • Express
  • Professional
  • Premium
  • Ultimate

というラインナップになる模様。
詳細は http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx#compare など。

■ Go Live ライセンス
“Going live” with Visual Studio 2010 Beta 2」 によると、beta 2 からは go live ラインセンスなんですね。

■ F#
F# Beta 2」 によると、VS2010 beta 2 に含まれている F# は beta 2 だそうです。
あと、VS2008 用の F# CTP もアップデートしたそうです。

■ ロゴマーク
↓のロゴマークですが、

visualcsharp_2.png.jpg

VS2010 Beta2, and two loops too」 によると 「メビウスの輪じゃないよ」 とのことです。
(どうでもいい情報かもしれませんがw)


2009年10月16日金曜日

[Windows7][WPF] キャプションバーの無いウインドウでエアロシェイク

Implementing Aero Shake in a WindoStyle None WPF Window より。
Windows 7 でキャプションバーをふるふるするとそれ以外のウインドウが最小化してくれるエアロシェイク、あれってキャプションバーが無い時どうすんの?という話。

記事では WPF で WindowStyle=”None” としてキャプションバーが無いウインドウを作っています。
で、単に MouseLeftButtonDown イベントで DragMove() メソッドを呼び出してやればいいそうです。
すっごい簡単。
けど、こんなの知らないとわかんないな(笑)
ちなみに、この場合、キャプションバーをドラッグしてるのとほとんど同じ動作をするようです。なので、エアロシェイクに対応するだけでなく、ウインドウを移動できるようにもなっちゃいます。

ちょっと試してみましたが、もちろん Window だけではなく、たとえば TextBlock の MouseLeftButtonDown イベントで DragMove() を呼び出してやっても同じように動きました。

# Windows.Form のときは WM_NCHITTEST で HTCAPTION を返してやるとかかな?


2009年10月14日水曜日

[WindowsCE][Silverlight] Windows Embedded CE 6.0 R3 の Silverlight for Windows Embedded って Silverlight なの?

前に書いた 「[WindowsCE][Silverlight] Windows Embedded CE 6.0 R3 が RTM。そしてこいつには Silverlight が入ってる」 で Windows Enbedded に Silverlight for Windows Embedded なるものが入っていると紹介しましたが...
その記事でも 「MonoTouch みたいにネイティブコードにコンパイルしてから動かすということは無いんじゃないかと思ってるんですがどうなんでしょ」 とか書いたんですが...

InfoQ: 「Windows Embedded CE向けSilverlightは本当のSilverlightではない

ネイティブコードにコンパイルどころか、初めからネイティブな C++ しかサポートされないそうです。
また、Silverlight for Windows Embedded は完全に新しい API セットだそうです。
えーと、これのどこが Silverlight ?

Silverlight for Embedded tutorial
こちらに Silverlight for Windows Embedded のコード作成例が紹介されています。
最初に簡単な XAML を Expression Blend 2 で作成。
Blend は C# と VB にしか対応していないのでソースコードを作成しちゃダメとのこと。イベントハンドラなんかが作成されないようにオプションの Visual Studio との統合をオフにしちゃえだそうです。
続いて Platform Builder で Win32 アプリケーションプロジェクトを作成して、プロジェクトにリソースを追加、リソースにカスタムリソースとしてさっき作った XAML ファイルをインポート、という手順で XAML ファイルをとりこんでいます。
あとはコードを書けば OK。
記事に載っているコード例を見ればわかりますが、IXRApplication やら IXRVisualHost やら IXRFrameworkElement やらといったバリバリの COM の世界です。イベントハンドラの戻り値も HRESULT だし。デリゲートもメンバ関数ポインタを渡して作るんですね。(デリゲートも COM なので、使い終わった後に Release() してやらないといけないのがなんとも)

うーん、確かにインターフェースは似せてあるようなので、COM バージョンの Silverlight だと言われればそんなような気もしますが...
けど、それって Silverlight なの?
少なくとも 「C# や VB で Silverlight アプリを作れます」 と言う人が C++ や COM の知識無しに Silverlight for Windows Embedded に手を出すと大変な目にあいそう。
CE 上のアプリをネイティブ C++ で書いていたような人にとっては 「COM ベースの UI フレームワークが増えただけ」 と言う感じなのかな?


2009年10月2日金曜日

[MSMVP] Microsoft MVP を受賞できませんでした

すでに Twitter でつぶやいてるし、だいたいの人はご存じだと思うんだけど、一応書いときます。
# ちなみに私の Twitter アカウント http://twitter.com/ShinichiAoyagi

2002年 10月から今まで続けて Microsoft MVP を受賞してきましたが、残念ながら今回は受賞できませんでした。
まぁ、ここ一年はオンライン・オフラインともにほとんどコミュニティ的な活動はありませんでしたからね。
自分でも 「今回は無理だろうなぁ」 と思ってたんですが、やっぱり無理でした。

とはいえ、私自身は今までと変わらずやっていくつもりですのでこれからもよろしくお願いします。