Archive for 10月 2010
PDC 10 がらみ
- PDC 10キーノート
- ほんと、PDC 10 公式サイトの動画配信はいい出来
- Windows Phone 7のデベロッパ登録者数が12,000人に
- 予想通り、会場にお越しの皆様全員に Windows Phone 7 の実機が配られたとか・・・
- うらやましい
- Microsoft Outlines Opportunity in the Cloud and on Devices at Professional Developers Conference 2010
- ハイライト
- Pixar アニメーション スタジオがレンダリングに Azure を利用
- Windows 7, IE 9, Windows Phone 7
- Internet Explorer 9 Platform Preview 6 (PP6) が公開されました
- β と違って、またレンダリングエンジンの部分だけの奴
- CSS の 2D Transform とかに対応したとか
WCF RIA Services 系統
- WCF RIA Services V1.0 SP1 Beta
- ComplexTypes in RIA Services
- これができなくて、最近、複合型を泣く泣く単純型に展開したというのにorz
- Improved binding support in EntitySet and EntityCollection
- DomainContext をそのままItemsSource にバインディングするだけでよくなった(今までは一段階、ラッパーを挟んでた)
- すごく楽
Azure 系統
- Server and Tools Business News(docx 形式)
- Azure を中心に、PDC 10 で発表されたサーバー サイド技術がらみの話一覧
- かなり大量
- Microsoft、Windows Azureで既存アプリを動かせる「VM Role」発表
大きいのは、
- Code Name “Dallas” → Data Marketplace
- VM Role 正式発表(今年の年末)
- TFS が Azure 上に提供される(2011年にCTP)
- Extra Small Instance(今年の年末)
- 0.05ドル/時
- AppFabric Composition Model(2011年にCTP)
Async C#/VB
ようやく、C#/VB にも非同期構文が入るようです。
http://msdn.microsoft.com/vstudio/async
- C#/VB に非同期用の構文が入ります
- async キーワードで非同期呼び出し開始、await キーワードで計算結果を拾えるっぽい
- 基本的には Task クラスに対する構文糖衣になる模様
- あと、VB にイテレーター ブロックが追加
- しかも、VB は匿名メソッド中でも Yield 書ける
- バージョンや時期に関しては一切触れられておらず
- これだけが C# 5.0 でもないってことかな?
- C# 5.0 ⊃ Async CTP な包含関係?
関連リンク:
- PDC 公式 動画ストリーミング: The Future of C# and Visual Basic
- Making Asynchronous Programming Easy
- Asynchrony in C# 5, Part One
- Channel 9: Anders Hejlsberg: Introducing Async – Simplifying asynchronous programming
- Channel 9: Mads Torgersen: Inside C# Async
- Channel 9: Stephen Toub: Task-Based Asynchrony with Async
Async CTP 以外の情報
Anders Hejlsberg の The Future of C# and Visual Basic では、大部分 Async CTP の話ですけども、最後にちょこっと Compiler as a Service の進捗状況のデモが。
- デモ失敗してたんで、やっぱりまだまだ安定しえない感じで、いつになる分からない状況
- Visual Studio との連携されてる
- 最近ずっと言ってる「DSL 作るなら IDE との連携まで考えないとダメ」ってのが、ちゃんと実現できそうな感じ
あと、この発表を見て、「Reactive Extensions (Rx)はどうなるの?」みたいな話も出てますね。とりあえず、今のところ、
- 単一の値を非同期にとってきて処理 → async
- 定常的にやってくる非同期イベントを処理しつづけたい → Rx
という認識でよいかと。こっちはこっちで、以下の動画参照
- PDC 公式 動画ストリーミング: LINQ, Take Two – Realizing the LINQ to Everything Dream
ちなみに、RX も今日、更新: Release Notes
Async CTP の大まかなイメージ
以下のような非同期メソッドを書いて、
static async void TestAsync() { for (int i = 0; i < 5; i++) { Console.WriteLine(i); await TaskEx.Delay(1000); Console.WriteLine("end test"); } }
Main メソッドで以下のように書くのと
TestAsync(); Thread.Sleep(5000); Console.WriteLine("Main 終了");
以下のようなイテレーター + 補助関数を書いて
static void Async(IEnumerable<object> coroutine) { var e = coroutine.GetEnumerator(); Action a = null; a = () => { lock(e) if (!e.MoveNext()) return; a.BeginInvoke(ar => { a(); }, null); }; a(); } static IEnumerable<object> Coroutine() { for (int i = 0; i < 5; i++) { Console.WriteLine(i); TaskEx.Delay(1000).Wait(); yield return null; } Console.WriteLine("end test"); yield return null; }
以下のように呼び出すのが
Async(Coroutine()); Thread.Sleep(5000); Console.WriteLine("Main 終了");
同じような動作をするイメージ。(あくまでイメージ。これだと例外に対処できてない。)
(あっ、あと、Task の Wait の位置おかしい。yield return の後で Wait しないと。< あとで直す)
- イテレーターと同じようなノリで結構頑張ってコード生成。
- await のところでいったん BeginAwait(); return; して処理を止めて、次の MoveNext(相当の呼び出し)のときに EndAwait(); してから再開。
- こういうアイディアでやってるって話、実は PDC の前日にブログ記事が上がってたり:
- そのイテレーター的なものを、何度も細切れに、MoveNext が false になるまで非同期呼び出し
- await できるためには、GetAwaiter メソッドを持っていて、その戻り値(awaiter)が BeginAwait と EndAwait を持ってないとダメ。
- GetAwaiter は拡張メソッドでも OK っぽい。
構文的には、最近では結構よくみる非同期構文なんですが、
- 極力フレームワーク(既存の Task クラス)に頼る
- 拡張メソッドも含めて、規約ベースの構文糖衣
- LINQ のクエリ式で、 from x in list where x > 0 select x が list.Where(x => x > 0) と解釈されて、Where はインスタンス メソッドでも拡張メソッドでもいいというのと同様
というように、コンパイラーへの負担を最小に抑えているのがポイント。おかげで、以下の通り、仕様書が Word 形式で10ページ(53KB)というコンパクトさ。
いろいろアップデートしたらしい、PDC 10 Japan、等々
- PDC に合わせてか、いくつかアップデートが
- Windows Phone Developer Tools October 2010 Update
- Announcing WCF Data Services Oct 2010 CTP1 for .NET4 & SL4
- WPF Ribbon (October Update Available)
- Announcing Sync Framework 4.0 October 2010 CTP
- PDC 10 Japan
- タイムテーブルが出てる
- 『Microsoft Expression Encoder』で作れるHD動画は何気に驚きの高画質
- ちなみに、C# 基礎文法最速マスターとか僕がTeX を使うのを辞めた 10 の理由とかは全部 Express Encoder 付属のキャプチャ ツールで撮影しています
- Visual Studio 2010 hotfixリンク集ちょっと更新
- 多い・・・
- The Story of Help in Visual Studio 2010
- SP1 ではヘルプ ビューアー改善するんだ
- 今のヘルプ、半端じゃなく不評ですもんねぇ
- ちなみに、僕は5年くらいオフラインのヘルプ開いてないかも
- オフラインで頼るのはヘルプじゃなくて IntelliSense。あとはネットで検索
- Windows Product Scout
- ハードウェア/ソフトウェア問わず、Win 7 関連の製品の紹介っぽい
- Silverlight 製のカタログ
live.xbox.comアップデート、365、等々
- Xbox.comもアップデート、ウェブからアバター編集
- 早速試してみたけど、結構ぬめぬめと、ブラウザー中で 3D がきれいに動いてる。
- ちなみに、Silverlight 製。
- まあ、3D ブラウザー中で 3D アバターとか、そこまで珍しくもないんですけども
- でも、xbox のやつは、スムージングもしてるし結構きれい。さすが Silverlight。
- 動画撮ってみた↓
- マイクロソフト、「Office 365」を発表
- twitter 上でみんなが「ひだまりスケッチ」とか言いまくるから、ひだまりのオープニング曲に合わせて「MS Office 3・6・5!」みたいなメロディが頭から離れない。
- Google Maps for Windows Phone 7 using the Bing Maps Control
- Bing Maps Control って、URL の差し替えで画像のダウンロード元を切り替えられるようで。
- Google Map を WP7 の SIlverlight から利用。
- C#たんと学ぶ/わりと硬派なソフトウェア開発講座 第1回「C#でできること」
- 制作委員会方式 キリッ
第60回codeseek勉強会・第2回日本C#ユーザー会勉強会 開催決定
ということで、開催日決まりました。
- 第60回codeseek勉強会・第2回日本C#ユーザー会勉強会
- テーマ「MVVM パターン(WPF/Silverlight)」
- 日時:2010年11月6日 (土曜日) 13:00-18:00
- 場所:マイクロソフト新宿オフィス(OST)5FセミナールームA&B
内容(敬称略、発表順):
スピーカー | タイトル | 概要 |
岩永 信之 (@ufcpp) | なぜMVVMなのか | MVVM パターン(に限らず、いわゆるビューとモデルの疎結合という考え方)などのアーキテクチャ パターンや、データ バインディング・値の変更通知・コマンドなどの仕組みがなぜ必要とされるのか、そもそもGUIアプリケーションに求められている機能要件のレベルから、その背景について説明していきます。 |
かるあ (@karuakun) |
MVVM を使ったアプリケーション開発 -基本編- |
MVVMってよく聞くけれど、実際どんなふうに実装すればいいんだろう。 |
尾上 雅則 (@ugaya40) | ViewModelからViewへのメッセージング手法 |
MVVMでの実装を行っていると、ダイアログはどうするのか、画面遷移はどうするのかといった問題にあたりがちです。 解決のために世界中で様々な実装が試みられてきました。様々な手法が編み出されましたが、すたれていった手法は何故すたれていったのか、今主流の手法は何か、何故それが今主流の手法なのか、今後標準的にどういった手法がとられていくのか、MVVMで問題にあたった際は何を基準に解決策を模索すれば良いのかについて説明します。 |
伊藤 達也 (@TatsuyaIto) | T4 によるアプリケーション開発 | T4 を使って MVVM パターンによる WPF アプリケーション開発を例に、コードの自動生成のコツとメリットについて考えてみたいと思います。 |
参加を希望される方は、codeseek の申し込み方法に合わせて、以下の内容で僕(連絡手段問いません。メールは ufcpp@live.jp)、または codeseek までご連絡ください。
- メールタイトル:C# ユーザー会(codeseek 共催)勉強会参加希望
- 名前(必須):
- メールアドレス(必須):
- 住所:
- ハンドル:
- 懇親会:参加する/未定/参加しない
いただいた情報はC# ユーザー会/codeseekの活動のためにしか使いません。
いただいた情報を会場にお知らせすることがあります。
登録なしでの参加はできません。
extensionmethod.net、Mono 2.8、等々
- http://www.extensionmethod.net/
- サイト名がストレートでいいなぁ。
- 拡張メソッドを色々集めてるサイト。
- Mono 2.8登場、.NET/C# 4.0対応とGlib依存排除
- .NET 4対応ということで、GC の性能も変わるのね。
- Entity Frameworkの開発チームが色々やっているみたい
- エンティティの色分けとか確かに欲しい。
- あと、プロパティの並べ替えも。
- これ、どうしてるんだろう。データベース的にはスキーマ変えるときは末尾にコラム追加とかやる気も。
- データベース上は末尾に追加で、Display(Order) とかで順序指定とかになってくれてるとすごくうれしい。
- オンラインマーケットプレイス Microsoft Pinpoint サービス開始
- 気が付いたら、Pinpoint、きっちり日本語化されてた。
- An Asynchronous Delegate Command for your WPF MVVM Apps – AsyncDelegateCommand
- 確かに、普通の DelegateCommand の中で BackgroundWorker 呼ぶくらいなら、最初からこういう作りの AsyncDelegateCommand 用意しとけばいい気が。
- 最近だと、Reactive Extensions との組み合わせで行けないかなぁとか思ったり。
- 実際、そんな感じのことやってる人要るみたいだけども: ReactiveXaml
- White Paper: Silverlight, WPF and Windows Phone 7 cross platform development
- 実際いくつかWPF, Silverlight, WP7 全部対応のアプリ書いてるけど、75%くらいは同じコード。
- 他も、同じ言語、同じモデルで書けるから楽よ。
数か月も経てば、過去の自分は赤の他人
コンソール アプリケーション作るのってむちゃくちゃ難しくない?
といっても、「僕の基準では」なんですけども。僕がアプリ作る上で絶対外せないと思ってる条件が、
作ってから3か月以上放置した後でも、ドキュメントもソースコードも全く読み返さずに自分で使えること
なんですよねぇ。そのせいで、コンソール アプリを書くなら・・・
- 使いやすくてかつ覚えやすいコマンドってどんなだろう
- オプションにするにしろ設定ファイルにするにしろ、それにエイリアスを付けるにしろ、
- 長いと打つのしんどいし、略称だと覚えにくいし、どう略したかで間違うし
- IntelliSense欲しい
- 文字列から色んな方への変換を適切にやらないと
- 標準でコンバーターとか検証属性欲しい
- 絵を使って2次元的に表示すれば一目でわかるようなものを、1次元的に入力してもらわないといけない
- 相当な工夫がないと、ドキュメントなしで使えるものにはならない 等々、相当ハードル高い。結局、スクリプトをダブルクリックしたら後は全自動みたいなタイプのもの以外は、コンソール アプリを書ける気がしないという。
WPF 慣れしてて、それで実際、素人さんにマニュアル一切なしでアプリを普通に使ってもらえてるという経験もあり、気が付けばコンソール アプリを書けない身に・・・
C# ユーザー会 第2回(テーマ: MVVM パターン)計画中
C# ユーザー会 第2回 勉強会に関して、期日も近づいてきたとこですし、そろそろ詳細詰め始めているところだったりします。
- 候補日
- 11月6日、11月13日(わんくまと被るので避けたい)、11月27日、10月30日
- 場所
- OST(マイクロソフト新宿オフィス)会議室、もしくは、新宿近辺の部屋借りれるお店
- 予算等
- OSTの会議室を借りれそうなら無料 + 懇親会まで参加されるなら懇親会費
- その他どこか借りる場合は店が決まり次第、公開します(おそらく、懇親会込みで3,000円~)
- MVVM パターンとは
- モデルを INotifyPropertyChenged とコマンドを前提としてラッピング
- View に状態を残さないよう、ViewModel 側に追いやる → テストの切り分け
- 必要ではあるけども、ViewModel 作るの、定型的な割にコード量が多く、大変
- 自動生成?
- T4? コードスニペット利用? DSL Tools?
- 動的プロキシ?
- 自動生成?
- ViewModel から View へのメッセージングはどうすべき?
- 用途: ナビゲーション、ダイアログボックスの表示、ウィンドウ閉じるなど
- 方法は?
テーマ概要:
WP7ローンチ、LightSpace、PRISM 4、等々
Windows Phone 7
ということで、米国でローンチ イベント開催(さっきキーノート スピーチ終わったところ)。
- プレス発表: http://www.microsoft.com/presspass/presskits/windowsphone/Default.aspx
- 公式サイト: http://www.microsoft.com/windowsphone/en-us/
さて、日本ではどうなりますかねぇ。諸事情合って公式発表一切ないわけですけども。なんか、ケータイ ショップの店員さんとかには「マイクロソフトは携帯電話撤退した」とか思われてるとかいないとか?出るのは出ますので!
ようやく、開発者向けの日本語サイトはできました。
他
- LightSpace
- デモ映像面白い
- Surface + AR
- PRISM 4のコードが完成
- コードの方は完成だとか(ドキュメント整備がまだ)
- MVVM パターンがらみのリファレンス実装とかが
- LightSwitchで業務アプリケーションを簡単に作ってみよう
- LightSwitch のクライアント側、定義ファイル的な XML を読み込んで、動的にコントロール配置してるみたいなんですよねぇ
- いつも、テンプレでできたソースを見ながら新技術を勉強してる身としては、これは結構困る・・・
- ということで、最近、少し LightSwitch を触った後に、結局 RIA Services に切り替えて中身をのぞいてたり
- 待望の WebMatrix Beta 2 リリースで Web 開発がもっと楽しく♪
- β1は何かインストールがうまくいかず結局触れてなかったけれども、今回ちゃんと入った
- Language Modeling 101
- Microsoft Web N-Gram service を Python からちょこっと使ってる例
- 最後の例では、”i can have”と”i can has”(スペルミス)が案外頻度差ないとかいうネタも
- Simulated Push Notifications on Windows Phone 7
- 模擬的な環境ないと困るよなぁ、確かに
今日小耳にはさんだ話
- 「ベンダーロックは避けたいから Java で」というけども、「弊社は JVM の全機能を自前実装していて、全ての責任を負えます」というとものすごく受けがいい
- ベンダーロックって何なんだっけ?
- ↑ 結局、国産信仰かもね。国内大手にならロックされたい
- Microsoft にはロックされたくないっていうけど、Oracle データベースはいいの?
- 世界一の金持ち(だった)企業に金払いたくないという出る杭打つ思想?