Archive for 4月 2011
Silverlight 5の3Dグラフィックス
MIX 11で色々情報が出たSilverlight 5、「こういう機能が増えるよ」というレベルの話は前々から出ていたものの、実際に触れるようになったのは今回が初めてなわけです。で、「実際触ってみて何ぼ」な機能として、3Dグラフィックスがあるわけで、やっぱりここが今一番注目されてそう。
Silverlight 5の3Dは、以下のようなものみたい:
- SilverlightのUI中にXnaのサーフェスを埋め込むためのDrawingSurfaceコントロールが入った
- DrawingSurfaceのDrawイベントを拾って、そのハンドラー内で描画
- Xnaみたいに固定フレームレートではない
- もし明示的にInvalidateしなければ、Drawイベントは発生しないみたい
- Drawイベントのハンドラー内で、e.InvalidateSurfaceメソッドを呼べば、頻繁な更新も可能
- Drawイベントのイベント引数がXnaのGraphicsDeviceを持っているので、こいつに対して描画命令を与える
- SetVertexBuffersとかDrawPrimitvesとか、かなり低レベルなAPIを直利用することに
てことで、そのままの利用は結構大変かも。
で、関連情報へのリンク:
- What’s new in Silverlight 5 beta? 3D graphics support!
- 公式ドキュメント付属のサンプルについて説明
- Silverlight 5 3D : Xna for the web?
- 概要説明。
- Silverlight 5 Takes 2D Silverlight Game Development to the Next Level
- 今まで、SilverSpriteっていって、(ソフトウェア エミュレーションで無理やり)XnaのSpliteBatchをSilverlightで動かしてる人がいて、それをちゃんとSilverlight 5に移植
- Silverlight 5には3Dグラフィックが入ったっていってもかなり基礎の部分しかライブラリがないので、SilverSpriteが提供するXnaクローン機能が便利
- Silverlight 5 BetaでXNAを使った3D描画テスト
- 日本語記事も。
非同期サンプル@ Silverlightを囲む会 in Tokyo
4月9日(土)の Silverlightを囲む会 in Tokyo のサンプルプログラムを公開しました。
スライド:
サンプル(Code Recipe にて公開):
MIX11 2日目
MIX11、2日目キーノート セッションは Windows Phone 7 を中心に、Silverlight やら Kinect やら。今日もとりあえずは、ツールのダウンロード リンクを。
- Microsoft Silverlight 5 Beta Tools for Visual Studio 2010 Service Pack 1
- Microsoft® Silverlight™ 5 SDK Beta
- 最初から日本語対応してるんだ。
- MSDN にも情報が出てた: Silverlight 5 Beta
- Kinect for Windows SDK beta
- これはまだ未リリース。今春、後半に出るとか。
- あと、WP7 Mango アップデートも、当然 SDK は秋と言わず、早めに出るみたい。
- 別途ブログ書いたけども、Async CTP も更新。VS 2010 SP1 対応&WP7 版追加。
Silverlight 5 はドキュメントも色々。
Async CTP Refresh
ということで、Async CTP が更新されました。
- Refreshing the Async CTP
- Visual Studio Asynchronous Programming
- Visual Studio Async CTP (SP1 Refresh)
今回のリフレッシュの大きな変更点は以下の通り。
- Windows Phone 7 に対応
- Visual Studio SP1 に対応
- ライセンスが as-is(ありのままで。自己責任で自由に使える)に
- 非同期の単体テストサンプル追加
- 英語版以外の Visual Studio にもインストール可能に
ちなみに、今回、ドキュメントは古いままだったりするので注意。
「(C# Spec) Asynchronous Functions.docx 」は古いまま(VB のも同様)。「(Framework) Task-based Asynchronous Pattern.docx」と「(Dataflow) Introduction to TPL Dataflow.docx」は更新されてる。
以下、細かい変更点。
Awaiter の変更
await の実装に使う Awaiter の規約が変わりました(パフォーマンス向上が目的らしい)。Awaiter の自前実装でもしていない限りは変更の影響受けないはず。
旧
bool BeginAwait(Action)
T EndAwait()
新
bool IsComplete
void OnComplete(Action)
T Current
これに伴い、内部実装も少し変更。
var task = AnotherTaskAsync();
var awaiter = task.GetAwaiter();
if (!awaiter.IsCompleted) // タスク未完の場合
{
state = State1; // 次に復帰するときのための状態の記録
awaiter.OnCompleted(a);
return; // いったん処理を切り上げる
}
case State1: // 継続時に続きから開始するためのラベル
var y = awaiter.GetResult(); // タスクの結果を受け取り
awaiter = null; // new: ガベコレ誘発用
IProgress
IProgress インターフェイスの名前空間が System.Threading から System に移動。
あと、System.Threading.EventProgress クラスは System.Progress クラスに変更。
SwitchTo 廃止
SynchronizationContext.SwitchTo と ThreadPool.SwitchTo が廃止されました。
素直に SynchronizationContext.SetSynchronizationContext するか、ConfigurableAwait を利用すべきとのこと。
追加
Socket クラスと Dns クラスに対する非同期メソッド追加。
TaskEx.FromResult (単なる値を Task でラップしてくれる)追加。
DataFlow
細かくは追っていないものの、System.Threading.Tasks.Dataflow.dll の方は結構色々と変更があるみたい。
例外処理
void な非同期メソッド中で起きた例外が、現在の SynchronizationContext に対して Post されるように。
他、いくつかバグフィックスがあったっぽい。
MIX11、IE 10、EF 4.1、等々
MIX11に合わせてやっぱり色々と出てきてる。
- Ineternet Explorer Test Drive から IE 10 のプレビュー版がダウンロード可能な状態に
- IE 9 出たばかりだというのに、すでに10!
- 初期の IE 9 プレビュー版同様、レンダリング部分のみ(IE 9 と共存可能、システムを汚さない)
- EF 4.1 Released
- MIX11基調講演でも、ASP.NET MVC 3 + EF 4.1 + SQL Server Compact 4の組み合わせ大プッシュ
- Orchard CMS も 1.1 に
- ASP.NET MVC 3 Tools Update
- Windows Azure News from MIX11
- 日本語でまとめ(仕事速えー): Windows Azure News from MIX11
- Windows Azure Accelerator for Umbraco
- ASP.NET ベースの CMS の Azure 対応
- Windows Thin PC Community Technology Preview (CTP)
- LightSwitch β2、日本語版も出てた
情報発信の理由
佐保さんのところの「新技術が採用されるための情報発信」に触発されて。
自分がブログ等で情報発信している理由。色々な理由があって、どれも嘘じゃないというか、どれもが相乗的に支え合っている感じ。
- 人に教えられて初めて一人前
- 人に教えるために調べるのは、何よりも勉強になる
- 公開されていないものは失われる
- 「良さを伝えられない」のと、「良くない」のは同じ
- 未来の自分は赤の他人と同じ
- 個人にできることなんてたかが知れている
- 情報は、発信している人のところにより一層集まる
- ビジネス
- ノブレス オブリージュ
人に教えられて初めて一人前
まず、自分の考え方の根底にあるのがこれ。「人に教えられる」っていうのは、どんな知識においても、「なんとなく使えてる」では思うようにならない領域。僕は知識欲で生きているような人間なんですが、とりあえずこの域に達しないと真の意味で知識を仕入れた気になれないんですよね。
そして、ウェブで何か記事を書くというのは、この「人に教える」という行為の一種だと思っています。
人に教えるために調べるのは、何よりも勉強になる
さてそこで、人にものを教えようとすると、よく分かっていないままなんとなくで使っている知識が意外なほどたくさん出てきます。
逆の発想をすると、何かを深く理解したい時には、「どうやれば人に教えられるか」を整理しながら調べると、非常に効率よく理解が進みます。
公開されていないものは失われる
個人的に、恒久的に残らないものにはあまり興味がわかないんですよね。一時的な流行りとか。
で、知識を自分だけが抱えてしまうと、それをいつロストするか怖くて仕方がない。忘れていくってのももちろんありますけども、不慮の事故等で自分がいなくなったときに何かが途絶えるってのがたまらなく嫌。
なので、仕入れた知識でまだ記事化してないものは、一刻も早く世に出したくてたまらなかったりも。
未来の自分は赤の他人と同じ
はい。人間は色々と忘れます。思った以上に忘れています。
「気になって調べたら昔書いた自分のブログが引っかかる」、そんな経験、皆さんもありますよね?(あたかも常識であるかのような口ぶり)
昔の自分への感謝の気持ちを忘れず、さらに色々なことを記事に残していきましょう。
「良さを伝えられない」のと、「良くない」のは同じ
公開しないと失われ、忘れられていくのは、良いと思う気持ちや情熱も同じだったり。
「良いものを作れば必ず理解される」なんてあるわけがなくて、良さを正しく伝えていかないと意味がない。
個人にできることなんてたかが知れている
自分が今あるスキルで何かを作るのと、自分の持つスキルを多くの人に伝えることで何かが作られるのと、個人的な嗜好としては後者の方が好みなんですよね。
良いものってのは、単に高いスキルがあればできるものじゃなくて、アイディア、時間、予算、人脈、等々、いろんなものがうまくかみ合った瞬間に生まれると思っています。個人というただ1点で条件がそろう確率はそう高くないですが、知識を広めた先の面上になら、いろんな可能性があるのかなと。
情報は、発信している人のところにより一層集まる
昔、hatena でほってんとりに入ってた言葉ですが、自分の肌感覚としても、この言葉は間違いないと思う。色々な情報を出しているからこそ、「あっ、こんな情報もありますよ」と教えていただけることが多々。
「知識欲で生きてるような人間」にとって、これがどれほど価値のあることか。
ビジネス
色々な気持ちがあって文章書いてるわけですが、ufcpp.net に広告を貼るようになってからモチベーションが上がったというのは、事実、ある。某アワードの受賞によっても上がっていますし、「ブログなどを見てご連絡いたしました」で始まる仕事を得てまた上がっています。
普段から結構よく出す言葉なんですが、僕は「聖人君子なんていない」と思っています。意図するところは、自分のことで手いっぱいの状態で、他人のことにまで手は回らないということです。
書いてる記事が実益に繋がったことでできた余裕ってのも結構大きいんですよね。その余裕がなければ手が回らなかっただろうことも、今では手が回るようになったと思います。
ノブレス オブリージュ
「貴族には義務あり」、「持てるものは、それを正しく行使する義務がある」的なものです。
何か気が付けば、ufcpp.net は個人サイトとしてはちょっとおかしいくらいの PV があり(しかも毎年増加中)、おこずかい程度の広告収入まで入っているわけです。それで得たものの分くらいは、何かに還元していきたかったり。
逆に、「世の中、出来る奴が、出来ることやればいい」とも思っています。
自分だって最初からこれだけ文章が書けたわけではないですが、手慣れてしまった今となっては、「書けるから書いてる」という側面も少なからずあります。