.NET Clips - アーキテクチャ/デザイン/OSSの注目エントリー
1
CLIPS

テストに関する話

2421日前に更新 aoki1210aoki1210 2424日前に登録
2010年09月09日 GMT 2010年09月06日 GMT
テストに関するツールとか、方法などを再度整理するためにちょこちょこ書いていこうかなと。まとまりのない話かもしれませんが。そこのところは適宜コメントでどうぞ。誤変換以外は次の日のエントリで反映する場合があります。 ツール支援 最近のVisual Studioの品質を上げるためのテスト機能とかすごいですが、実際に使うとなると、みんなというか、少なくともテストする人にはちゃんと教育しないといけないですよね。その工数を割くという以前に、「テストって最後で、受け入れて、仕様書通り確認だよね」みたいな風潮で、(ウォーターフォール型では特に)テストの時間が足りない。 そして教育もされていないから、ツールを使って効率的に行うという時間も用意されていない。テストエンジニアが専門でテストツールを用意するところも少ないんじゃない?特に業務アプリケーションでは難しいかなと。 オフショアとテスト 海外に限りませんが、自社以外で作って、リリースする場合、工業製品のような検品みたいな作業がありますよね。しかし、設計する人は必ずしもプログラミングの細かいと... (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 8 | コメント | | ソースサイト: d.hatena.ne.jp
タグ: Test, Visual Studio
1
CLIPS

カスタムコントロールのベストプラクティス Parts&Statesモデル

2428日前に更新 aoki1210aoki1210 2429日前に登録
2010年09月02日 GMT 2010年09月01日 GMT
カスタムコントロールを開発・ビルドして配布したあとで、外観をカスタマイズしたいとそのカスタムコントロールの利用者から要望を受けることがよくあります。Parts&Statesモデルはカスタムコントロール開発者のベストプラクティスで、カスタムコントロールの利用者が外観をExpression Blendでカスタマイズできるようにするためのものです。このモデルはWPFのカスタムコントロールにもSilverlightのテンプレートコントロールにも使えます。 詳しいコードは「外観をカスタマイズできるコントロールの作成」を参照してください。またTech-Ed 2010 ブレイクアウトセッション「T7-404 Windows Presentation Foundation 4 ~ ControlTemplate と Parts & States モデルによるカスタム コントロールの作り方 ~」のストリーミングが公開されたらご覧ください。ベストプラクティスControlTemplate を使ってデザインするコード... (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 19 | コメント | | ソースサイト: blogs.msdn.com
タグ: Silverlight, WPF
1
CLIPS

やっぱ実行時よりビルド時

2442日前に更新 aoki1210aoki1210 2445日前に登録
2010年08月19日 GMT 2010年08月16日 GMT
こないだ、動的コード生成がらみのネタで1ページ書いて公開したところ、「ビルド時で済むものは動的コード生成じゃなくてビルド時コード生成にして欲しい。」との至極まっとうなご意見をいただきまして。 最近、ViewModel の実装が面倒という問題に対して、DynamicObject を使った動的プロキシが流行ってるみたいだけど、ViewModel なんてビルド時コード生成で事足りる最たるもので、あんまり動的にやって欲しくないという。まあ、ごもっとも。 まあ、僕としても方向性としてはおおむねこの意見に割かし賛成だったり。具体的には: DynamicObject の実装が思いのほか簡単なので、「手抜き実装」としてはあり。 ちゃんとやるならやっぱり静的に(ViewModel 手書きするか、ビルド時コード生成するか)した方がいいと思う。 くらいに思っています。 dynamic は、ちゃんと使えば静的なコードの5~10倍程度のペナルティで済むという話に対しても、「過度に恐れる必要もないけども、そりゃ避けれるなら避けるよね」くらいの立ち位置。動的にやるのが避けられない状... (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 17 | コメント | | ソースサイト: ufcpp.spaces.live.com
タグ: Dynamic, コード生成
1
CLIPS

汎用言語の進化 (モデリング言語)

2443日前に更新 aoki1210aoki1210 2447日前に登録
2010年08月18日 GMT 2010年08月15日 GMT
概要 これまでにも説明したように、 DSL を作るのではなく、汎用言語自信を進化させるという選択肢もあります。 汎用プログラミング言語は年々「intentional」になっていると言います。 また、類する言葉も色々ありますが、これらの言葉の意味するところは、以下のような感じ(いずれも意味するところはほぼ同じ): * intentional(意図的な、計画的な): プログラマーが意図したことをそのまま意図通りに書ける。 * how から what へ: プログラムを「どうやって書くか」ではなく「何をしたいか」に注力できる。 * declative(宣言的な): 意図を宣言すればそれがそのまま動く。 汎用的なプログラミング言語にもまだまだ改良の余地があり、intentional な方向に向かって「モデル」が進化しています。 (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 4 | コメント | | ソースサイト: ufcpp.net
タグ: C#, DSL
2
CLIPS

静的リフレクションとは?

2449日前に更新 aoki1210aoki1210 2452日前に登録
2010年08月12日 GMT 2010年08月09日 GMT
静的リフレクション(Static Reflection)とは、やや新しい実装テクニックのひとつであり、型やメンバを指示する情報の内でコンパイラが識別可能なもののみを用いて型やメンバの情報にアクセスする方法である。通常は指示情報としてメンバアクセスを行うラムダ式が用いられるので、「ラムダ式を用いてメンバの型情報にアクセスする方法」と理解しておく方が実用的かもしれない。 リフレクションにおける静的・動的の区別をはっきりさせるために簡単な例から始めることにする。 interface X { string MyProperty { get; set; } } class Y : X { public string MyProperty { get; set; } } ・・・ X p = new Y(); Type t1 = p.GetType(); Type t2 = typeof(X); とある場合に、p.GetType()で得られる型情報は、実行時にpに具体的に何が代入されているかに依存しているという意味で動的である。 これに対しtypeo... (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 32 | コメント | | ソースサイト: d.hatena.ne.jp
タグ: C#, Reflection
1
CLIPS

DSL の行く先 (2) - 意外とそう遠くないかも

2450日前に更新 aoki1210aoki1210 2453日前に登録
2010年08月11日 GMT 2010年08月08日 GMT
Code-Enabled 昨日の記事の「非開発者向け」って言葉は言い過ぎかなぁとか思ってたら、以下のような記事が。 Myth Busting Visual Studio LightSwitch 「Code-Enabled な人」って表現がいいのか。Coder(コード書くこと自体がお仕事)じゃなくて、何らかの製品の設計を担うプロフェッショナルで、コード読んだりコピペしてくるくらいにはコーディングに精通してる人。それが LightSwitch の真の顧客だと。 でも、LightSwitch みたいなお手軽開発ツールはいろんな層の人の支援になるんじゃないかとも思ったり。Code-Enabled な人が動くアプリを直接自分で書けるようにCoder な人も簡単に設計フェイズを行えるようにアプリ利用者側もある程度読み書きできるように委託して作ってもらったものの良し悪しをある程度分かるように委託先と保守契約で喧嘩別れしたって、新たに保守の引き継ぎなりアプリのリプレースなり請け負ってくれる別業者見つかるまでの間くらいは自前でつないでいけるようにDSL 理想像 上... (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 12 | コメント | | ソースサイト: ufcpp.spaces.live.com
タグ: DSL, LightSwitch, ドメインモデル
1
CLIPS

ドメイン モデリングの行く先

2452日前に更新 aoki1210aoki1210 2454日前に登録
2010年08月09日 GMT 2010年08月07日 GMT
Another piece of Microsoft's Oslo modeling puzzle disappears Quadrant がお亡くなりになったそうです。という記事をきっかけに、思ったこととか人と話したことなど書いてみる。 非開発者向け 今、IT 使った何かを作るとき、問題領域(ドメイン: domain)に関する知識と、プログラミングに関する知識の2つに詳しくないと何もできないんですよね。問題領域っていうと、例えば、よく話にあがるのだと:大規模データ処理自然言語コーパスを元に、検索や機械翻訳の精度を上げたい顧客の購買行動を解析して、よりよりセールスをかけたい業務知識業務のフローを IT で補助・改善したいけど、そのためには業界の商習慣とかの知識が必要 とか。 2重にスキルを求めるのは負担が非常に大きいんで、出来れば問題領域の専門家が、プログラミングの知識なしで使えるようなツールが欲しいと。そういう話はもうかれこれ20年くらいは言われ続けていたり。DSL そういう、問題領域の専門家向けのツールとして、DSL(domain specific languag... (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 7 | コメント | | ソースサイト: ufcpp.spaces.live.com
タグ: DSL, モデリング
1
CLIPS

レイヤ化アーキテクチャで、.NET技術を使った.NETとAzureのサンプルショーケース-InfoQ

2455日前に更新 aoki1210aoki1210 2456日前に登録
2010年08月06日 GMT 2010年08月05日 GMT
マイクロソフトのコンサルタントであり、Microsoft pattern&practices Application Architecture Guideの寄稿者でもあるSerena Yeoh氏は、後にAzureに移植されたレイヤ化アーキテクチャデザインパターンのアーキテクチャ基盤として様々な.NET技術(WPF、WCF、WF、ASP.NET、EF)を使用した.NET 4.0向けのレイヤ化アーキテクチャサンプルを作成した。 コードサンプルの目的は、エンタープライズアプリケーションに対して、アーキテクチャの設計原則を適用し、.NETのコア技術を使用して健全なコードの促進とメンテナンスの容易化をどのように実現するかを示すことである。 .NETサンプルには、様々なレイヤ(プレゼンテーション、ビジネス、サービス、データ)を対象にした16アプリケーションが含まれている。モデルダイアグラムは、以下を参照して欲しい。 (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 8 | コメント | | ソースサイト: www.infoq.com
タグ: Azure, Enterprise
1
CLIPS

Unity あれこれ(9): UnityとWCF(その1)

2456日前に更新 aoki1210aoki1210 2459日前に登録
2010年08月05日 GMT 2010年08月02日 GMT
WCF(Windows Communication Foundation)とDIコンテナを組み合わせて使いたいというケースは結構多いらしく、CodePlexのDiscussionにおいても定期的に話題に上っている。 一口にWCFとUnityといっても両者の接点となりうる場所はさまざまである。大別すると、 a. WCF Serverにおいて、サービスコントラクトの実装をコンテナから取得する。 b. WCFClientにおいて、Proxyをコンテナから取得する。 の2種に分けて考えることができる。今回は、まず a.のケースについて取り上げたいと思う。(なお、本記事ではSelf hostingサーバーについてのみ考慮する。) WCF ServerとUnity app.configファイルでアドレスとバインディングの設定を行っている場合、WCFサービスを開設するには最小限次のように書けばよい。 var host = new ServiceHost(typeof(Service1)); host... (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 25 | コメント | | ソースサイト: d.hatena.ne.jp
タグ: Unity, WCF
1
CLIPS

CodeDomを使ったコードジェネレーター

2456日前に更新 aoki1210aoki1210 2459日前に登録
2010年08月05日 GMT 2010年08月02日 GMT
ビジネスロジックをもつクラスから、WCFのサービスコントラクトを生成する自作ツールを使っています。リフレクションを使ってメソッド情報を取得し、それを String.Format で整形して出力するというベタな方法で実装した簡単なものです。 でもこの方法だとジェネリックが絡んだときに上手く出力できません。奴らは Type.Name で名前を取得したら を [ ] にして返しやがります。しかも、[ の前にジェネリックパラメータの数とか付けちゃってくれます。Dictionary (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 7 | コメント | | ソースサイト: d.hatena.ne.jp
タグ: CodeDom, コード生成
1
CLIPS

KVSでは join がアレとか言う奴は一回RESTへ帰れ

2463日前に更新 adminadmin 2466日前に登録
2010年07月29日 GMT 2010年07月26日 GMT
煽りはタイトルだけ。 RowKey の設計レベルの話なんだが、 Table に受注(Order) と受注明細(OrderLine) を格納するとする。Order と OrderLine は親子関係なんで、DBに格納するって場合には Order テーブルと OrderLine テーブルに格納する事になり、これを 1対多結合のリレーションとして捕らえて join する事になる。これを単純に、そのまんまAzureTableに持っていくと Order の RowKey には受注IDが入り、OrderLineは受注IDで引ける必要があるから同様に受注ID+明細IDを入れる事になる。RowKey の編成の仕方は順序でとりやすいように前0埋めの固定長で 受注Id をn桁 明細Idを m桁とする。Table Order 00001 受注レコードTable OrderLine000010001 明細レコード000010002 明細レコード 000010003 明細レコードってな寸法。(例はn=5, m=4)これを from order in tableClient.... (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 28 | コメント | | ソースサイト: aka-kazuk.spaces.live.com
タグ: Azure, KVS
1
CLIPS

Re: 不完全にしてかなり言葉足らずな比較プログラミング言語学

2463日前に更新 aoki1210aoki1210 2466日前に登録
2010年07月29日 GMT 2010年07月26日 GMT
不完全にしてかなり言葉足らずな比較プログラミング言語学 - 西尾泰和のはてなダイアリー C#はこんな感じか? (追記)id:nagakura_eil:20100726:p1 ありがとう。 元記事はネタが増えてるな。 if(x = 0) Javaと一緒。x = 0はint、条件式はboolだから型エラーだよ派。 値渡し、参照渡し C#では参照型と値型があるが、どっちも値渡しがデフォルト(参照型は参照の値渡し、値型は値渡し)。 でも変数の参照を渡すこともできる(ref/outパラメータ)。 ついでに言えばポインター型もある(unsafeコンテキストで使える)。 値の範囲の定義 Javaと一緒。もちろん決まってます。配列 Javaと一緒。ファーストクラスのオブジェクト。範囲外へのアクセスは例外を投げる。関数へのポインタ リフレクションとはまた別に、メソッドもしくは匿名メソッドへのデリゲートという形で存在する。 変数に代入したり、メソッドの引数や戻り値に使うことも可能。 関数呼び出しの括弧 たとえ引数がなく... (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 1 | コメント | | ソースサイト: d.hatena.ne.jp
タグ: C#
1
CLIPS

アーキテクチャジャーナル 21号 日本語版 公開

2463日前に更新 aoki1210aoki1210 2466日前に登録
2010年07月29日 GMT 2010年07月26日 GMT
20号から 3 か月ぶりとなりましたが、アーキテクチャジャーナル21号の日本語版を公開しました。 今回のテーマは "サービス指向の現在、そして未来" です。  アーキテクチャ ジャーナル第 21 号 http://msdn.microsoft.com/ja-jp/architecture/ff817053.aspx 翻訳の都合上、どうしても日本語版は公開がおそくなってしまっていますが、英語版は、24号が最新号になっています。英語版でもいいから最新を!という方は、こちら.. (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 4 | コメント | | ソースサイト: blogs.msdn.com
タグ: MSDN, アーキテクチャ
1
CLIPS

[勉強会]セッション資料公開(PPLを使ってみました-Parallel Pattern Library)

2474日前に更新 aoki1210aoki1210 2476日前に登録
2010年07月19日 GMT 2010年07月16日 GMT
わんくま同盟東京勉強会#49のおいらのセッション資料と、デモプログラムソースです。 これ…全部を丁寧に紹介するとおそらく3時間以上かかりますw (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 7 | コメント | | ソースサイト: blogs.wankuma.com
タグ: C++, PPL, Visual Studio 2010, 並列化
1
CLIPS

マイクロソフトのHadoop対抗技術「Dryad」、いよいよ始動か? - Publickey

2475日前に更新 aoki1210aoki1210 2477日前に登録
2010年07月17日 GMT 2010年07月15日 GMT
大規模分散処理のフレームワークとしてグーグルが開発したMapReduce処理や、そのオープンソース実装であるHadoopが急成長し、ビジネスの分野での商業利用が立ち上がり始めていることは、Publickeyでも何度か記事で紹介してきました。Hadoopを表計算のように使える「InfoSphere BigInsights」、IBMが発表グーグルによるMapReduceサービス「BigQuery」が登場。SQLライクな命令で大規模データ操作Hadoopは企業のための新たな情報分析プラットフォームとなる、とCloudera グーグルがBigQueryの開始を発表し、IBMも大規模処理のエンジンとしてHadoopを採用、AmazonクラウドでもHadoop処理を行う「Amazon Elastic MapReduce」サービスを提供していることから分かるように、Hadoopはクラウドでの大規模データ処理において中心的な存在になると目されています。 しかしマイクロソフトはこれらMapReduce/Hadoopの動向と... (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 11 | コメント | | ソースサイト: www.publickey1.jp
タグ: Dryad
1
CLIPS

neue cc - IEnumerableのCastを抹殺するためのT4 Templateの使い方

2483日前に更新 aoki1210aoki1210 2485日前に登録
2010年07月10日 GMT 2010年07月07日 GMT
.NET Framework 1.0の負の遺産、HogeCollection。それらの大半はIEnumerable (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 12 | コメント | | ソースサイト: neue.cc
タグ: C#, T4 Template
1
CLIPS

MVVMパターンでViewModelを楽に作る方法

2485日前に更新 aoki1210aoki1210 2490日前に登録
2010年07月07日 GMT 2010年07月03日 GMT
MSDNマガジンの英語版の最新のを見てたら、こんな以下の記事を見つけた。 http://msdn.microsoft.com/ja-jp/magazine/ff798279(en-us).aspx まだ全部見てないけど、ここにViewModelを楽に作る方法が書いてあっておぉ~っと思ったので紹介します。 このテクニックが使えるプラットフォームは.NET Framework 4です。 ViewModelは、作るとViewとModelを切り離せるけど、Modelをラップするようなプロパティを大量に作らないといけません。 例えば、以下のようなModelがあったとして publicclass Person { publicstring FullName { get; set; } } 以下のようなViewModelを作ります。 // ViewModelBaseはINotifyPropertyChangedの実装をして... (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 162 | コメント | | ソースサイト: d.hatena.ne.jp
タグ: MVVM, ViewModel
1
CLIPS

MSDN マガジン 6 月号公開

2494日前に更新 aoki1210aoki1210 2499日前に登録
2010年06月29日 GMT 2010年06月23日 GMT
おまたせいたしました。本日、MSDN マガジン 6月号を公開しました! Windows Azure や ODATA、Silverlight まで 全 16 記事ありますので、がっつりお読みください。 「MSDN マガジンを知らない」という方のために補足しますと、MSDN マガジンは、最新の製品やテクノロジを開発者向けに解説した毎月月末に公開している Web 版技術情報誌で、クオリティの高いコンテンツとしてご好評をいただいております。公開日は、特に問題がなければだいたい月末 25 日ごろ、翻訳のやり直しやサーバーのメンテナンスがある場合など、たまに次の月にずれこんでしまうことがありますので、月末から月初と思っていただければと思います。 MSDN マガジンの公開時には、MSDN オンライン最新ニュースの RSS でも情報をお知らせしていますので、RSS をご購読いただけると便利かもしれません。(ちなみに、私は Twitter からはてぶまでなんでも RSS 派。リーダーは Outlook なので、メールのチェ... (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 9 | コメント | | ソースサイト: blogs.msdn.com
タグ: MSDN
1
CLIPS

アセンブリバージョンの管理

2496日前に更新 aoki1210aoki1210 2497日前に登録
2010年06月27日 GMT 2010年06月25日 GMT
Microsoftの定義と意味合いが若干異なるが、バージョン番号の書式は「Major.Minor.Build.Revision」なので、Buildはビルド回数、RevisionはSubversionのリビジョンとなるようにしたい...ということで色々調査。  自動インクリメントは Build Version Increment Add-In Visual Studio を、リビジョンの更新には、TortoiseSVNの第5章 SubWCRev プログラムを使うことにしたが、SubWCRevコマンドはテンプレートファイルからAssemblyInfo.csを上書きするため、Build Version Increment Add-Inがせっかくインクリメントしたビルド番号を消してしまうことになる。しかも、AssemblyInfoを修正する際も、テンプレートファイルの方を修正しなければならないので、Visual StudioのPropertiesエディタが意味をなさなくなったり、一々気を遣うことになる。  そんなわけで、ビルド前イベントでテンプ... (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 91 | コメント | | ソースサイト: d.hatena.ne.jp
タグ: バージョン管理, ビルド
1
CLIPS

Dryad プロジェクト ~ Microsoft Research 研究紹介シリーズ

2498日前に更新 aoki1210aoki1210 2500日前に登録
2010年06月25日 GMT 2010年06月22日 GMT
みなさん、こんにちは。 さて、今回の「Microsoft Research 研究紹介シリーズ」では(※1)、Dryad (ドライアド) プロジェクトを紹介します。 Dryad プロジェクトは、並列(Parallel)および分散(Distributed)プログラムを効率よく行うための “プログラミングモデル” の研究プロジェクトです。また、適用範囲としては、小規模なクラスター環境から、大規模データセンターまでを対象にしています。後程にも出てきますが、Dryad は特定の実行環境におけるソリューションではなく、並列・分散環境を使用した効率のよいプログラム実行を行うための、より一般的な概念・基盤である、と理解ください。 以下、Microsoft Research における Dryad プロジェクトのページより。 (以下、英語ページ、論文の翻訳を行っていますが、日本語でのわかりやすさを優先して、一部意訳をおこなっております。一方でより原文に近い情報を必要とされる方もいらっしゃると思いま... (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 8 | コメント | | ソースサイト: blogs.msdn.com
タグ: Dryad, Microsoft Research, 並列, 分散