++C++; // 未確認飛行 C ブログ

http://ufcpp.net/

Archive for 10月 2010

PDC 10 がらみ

leave a comment »

今朝書いた Async がらみの以外。

WCF RIA Services 系統

Azure 系統

大きいのは、

  • Code Name “Dallas” → Data Marketplace
  • VM Role 正式発表(今年の年末)
  • TFS が Azure 上に提供される(2011年にCTP)
  • Extra Small Instance(今年の年末)
    • 0.05ドル/時
  • AppFabric Composition Model(2011年にCTP)

Written by ufcpp

2010年10月29日 at 14:04

カテゴリー: .NET

Tagged with , , ,

Async C#/VB

with one comment

ようやく、C#/VB にも非同期構文が入るようです。

http://msdn.microsoft.com/vstudio/async

  • C#/VB に非同期用の構文が入ります
    • async キーワードで非同期呼び出し開始、await キーワードで計算結果を拾えるっぽい
    • 基本的には Task クラスに対する構文糖衣になる模様
  • あと、VB にイテレーター ブロックが追加
    • しかも、VB は匿名メソッド中でも Yield 書ける
  • バージョンや時期に関しては一切触れられておらず
    • これだけが C# 5.0 でもないってことかな?
    • C# 5.0 ⊃ Async CTP な包含関係?

関連リンク:

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

という認識でよいかと。こっちはこっちで、以下の動画参照

ちなみに、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)というコンパクトさ。

Written by ufcpp

2010年10月28日 at 19:42

カテゴリー: .NET, C#

Tagged with , ,

いろいろアップデートしたらしい、PDC 10 Japan、等々

leave a comment »

Written by ufcpp

2010年10月28日 at 07:16

カテゴリー: .NET

live.xbox.comアップデート、365、等々

leave a comment »

 

Written by ufcpp

2010年10月20日 at 13:20

カテゴリー: .NET

Tagged with , ,

第60回codeseek勉強会・第2回日本C#ユーザー会勉強会 開催決定

with 4 comments

ということで、開催日決まりました。

  • 第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ってよく聞くけれど、実際どんなふうに実装すればいいんだろう。
このセッションでは、何も無い状態からMVVMパターンを適用する例と、MVVM Light Toolkitを使った実装例をステップ&ステップで解説していきます。

尾上 雅則 (@ugaya40) ViewModelからViewへのメッセージング手法

MVVMでの実装を行っていると、ダイアログはどうするのか、画面遷移はどうするのかといった問題にあたりがちです。

解決のために世界中で様々な実装が試みられてきました。様々な手法が編み出されましたが、すたれていった手法は何故すたれていったのか、今主流の手法は何か、何故それが今主流の手法なのか、今後標準的にどういった手法がとられていくのか、MVVMで問題にあたった際は何を基準に解決策を模索すれば良いのかについて説明します。

伊藤 達也 (@TatsuyaIto) T4 によるアプリケーション開発 T4 を使って MVVM パターンによる WPF アプリケーション開発を例に、コードの自動生成のコツとメリットについて考えてみたいと思います。

 

参加を希望される方は、codeseek の申し込み方法に合わせて、以下の内容で僕(連絡手段問いません。メールは ufcpp@live.jp)、または codeseek までご連絡ください。

  • メールタイトル:C# ユーザー会(codeseek 共催)勉強会参加希望
  • 名前(必須):
  • メールアドレス(必須):
  • 住所:
  • ハンドル:
  • 懇親会:参加する/未定/参加しない

いただいた情報はC# ユーザー会/codeseekの活動のためにしか使いません。

いただいた情報を会場にお知らせすることがあります。

登録なしでの参加はできません。

Written by ufcpp

2010年10月19日 at 12:48

extensionmethod.net、Mono 2.8、等々

leave a comment »

Written by ufcpp

2010年10月17日 at 13:07

カテゴリー: .NET

Tagged with , , , ,

数か月も経てば、過去の自分は赤の他人

leave a comment »

コンソール アプリケーション作るのってむちゃくちゃ難しくない?

といっても、「僕の基準では」なんですけども。僕がアプリ作る上で絶対外せないと思ってる条件が、

作ってから3か月以上放置した後でも、ドキュメントもソースコードも全く読み返さずに自分で使えること

なんですよねぇ。そのせいで、コンソール アプリを書くなら・・・

  • 使いやすくてかつ覚えやすいコマンドってどんなだろう
    • オプションにするにしろ設定ファイルにするにしろ、それにエイリアスを付けるにしろ、
      • 長いと打つのしんどいし、略称だと覚えにくいし、どう略したかで間違うし
      • IntelliSense欲しい
    • 文字列から色んな方への変換を適切にやらないと
      • 標準でコンバーターとか検証属性欲しい
    • 絵を使って2次元的に表示すれば一目でわかるようなものを、1次元的に入力してもらわないといけない
      • 相当な工夫がないと、ドキュメントなしで使えるものにはならない 等々、相当ハードル高い。結局、スクリプトをダブルクリックしたら後は全自動みたいなタイプのもの以外は、コンソール アプリを書ける気がしないという。

WPF 慣れしてて、それで実際、素人さんにマニュアル一切なしでアプリを普通に使ってもらえてるという経験もあり、気が付けばコンソール アプリを書けない身に・・・

Written by ufcpp

2010年10月12日 at 16:55

C# ユーザー会 第2回(テーマ: MVVM パターン)計画中

leave a comment »

C# ユーザー会 第2回 勉強会に関して、期日も近づいてきたとこですし、そろそろ詳細詰め始めているところだったりします。

  • 候補日
    • 11月6日、11月13日(わんくまと被るので避けたい)、11月27日、10月30日
  • 場所
    • OST(マイクロソフト新宿オフィス)会議室、もしくは、新宿近辺の部屋借りれるお店
  • 予算等
    • OSTの会議室を借りれそうなら無料 + 懇親会まで参加されるなら懇親会費
    • その他どこか借りる場合は店が決まり次第、公開します(おそらく、懇親会込みで3,000円~)
  • テーマ概要:

  • MVVM パターンとは
    • モデルを INotifyPropertyChenged とコマンドを前提としてラッピング
    • View に状態を残さないよう、ViewModel 側に追いやる → テストの切り分け
  • 必要ではあるけども、ViewModel 作るの、定型的な割にコード量が多く、大変
    • 自動生成?
      • T4? コードスニペット利用? DSL Tools?
    • 動的プロキシ?
  • ViewModel から View へのメッセージングはどうすべき?
    • 用途: ナビゲーション、ダイアログボックスの表示、ウィンドウ閉じるなど
    • 方法は?

Written by ufcpp

2010年10月12日 at 08:39

WP7ローンチ、LightSpace、PRISM 4、等々

leave a comment »

Windows Phone 7

ということで、米国でローンチ イベント開催(さっきキーノート スピーチ終わったところ)。

さて、日本ではどうなりますかねぇ。諸事情合って公式発表一切ないわけですけども。なんか、ケータイ ショップの店員さんとかには「マイクロソフトは携帯電話撤退した」とか思われてるとかいないとか?出るのは出ますので!

ようやく、開発者向けの日本語サイトはできました。

Written by ufcpp

2010年10月11日 at 15:09

カテゴリー: .NET

Tagged with , ,

今日小耳にはさんだ話

leave a comment »

  • 「ベンダーロックは避けたいから Java で」というけども、「弊社は JVM の全機能を自前実装していて、全ての責任を負えます」というとものすごく受けがいい
    • ベンダーロックって何なんだっけ?
    • ↑ 結局、国産信仰かもね。国内大手にならロックされたい
  • Microsoft にはロックされたくないっていうけど、Oracle データベースはいいの?
    • 世界一の金持ち(だった)企業に金払いたくないという出る杭打つ思想?

Written by ufcpp

2010年10月9日 at 14:38