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

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

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

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

648日前に更新 aoki1210aoki1210 651日前に登録
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 | クリック数: 18 | コメント | | ソースサイト: d.hatena.ne.jp
タグ: C#, Reflection
1
CLIPS

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

649日前に更新 aoki1210aoki1210 652日前に登録
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 | クリック数: 10 | コメント | | ソースサイト: ufcpp.spaces.live.com
タグ: DSL, LightSwitch, ドメインモデル
1
CLIPS

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

651日前に更新 aoki1210aoki1210 653日前に登録
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 | クリック数: 6 | コメント | | ソースサイト: ufcpp.spaces.live.com
タグ: DSL, モデリング
1
CLIPS

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

654日前に更新 aoki1210aoki1210 655日前に登録
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 | クリック数: 7 | コメント | | ソースサイト: www.infoq.com
タグ: Azure, Enterprise
1
CLIPS

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

655日前に更新 aoki1210aoki1210 658日前に登録
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 | クリック数: 15 | コメント | | ソースサイト: d.hatena.ne.jp
タグ: Unity, WCF
1
CLIPS

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

655日前に更新 aoki1210aoki1210 658日前に登録
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へ帰れ

662日前に更新 adminadmin 665日前に登録
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: 不完全にしてかなり言葉足らずな比較プログラミング言語学

662日前に更新 aoki1210aoki1210 665日前に登録
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号 日本語版 公開

662日前に更新 aoki1210aoki1210 665日前に登録
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)

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

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

674日前に更新 aoki1210aoki1210 676日前に登録
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 | クリック数: 10 | コメント | | ソースサイト: www.publickey1.jp
タグ: Dryad
1
CLIPS

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

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

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

684日前に更新 aoki1210aoki1210 688日前に登録
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 | クリック数: 146 | コメント | | ソースサイト: d.hatena.ne.jp
タグ: MVVM, ViewModel
1
CLIPS

MSDN マガジン 6 月号公開

693日前に更新 aoki1210aoki1210 698日前に登録
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

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

694日前に更新 aoki1210aoki1210 696日前に登録
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 | クリック数: 43 | コメント | | ソースサイト: d.hatena.ne.jp
タグ: バージョン管理, ビルド
1
CLIPS

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

697日前に更新 aoki1210aoki1210 699日前に登録
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, 並列, 分散
1
CLIPS

M-V-VMパターン用動的プロキシ

698日前に更新 aoki1210aoki1210 704日前に登録
2010年06月23日 GMT 2010年06月17日 GMT
このようなものを作ったので公開。 ソースコード一式: DynamicMvvmHelper.zip ドキュメント: MvvmHelper.docx 簡単に言うと、ViewModel作るの、INotifyPropertyChangedの実装とかめんどくさいんで動的に勝手によろしくやってくれるDynamicObject実装。 階層的なデータに対しても利用可能。一応、DataAnnotationsによるデータ検証にも対応。 以下のようなタイプのアプリなら、ViewModel自作の必要性全くなくなります。常時Model側更新されちゃっててOK。Validationエラーはその場で例外... (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 10 | コメント | | ソースサイト: ufcpp.spaces.live.com
タグ: M-V-VM
1
CLIPS

Domaを参考に作るSQL中心の.NET用Daoフレームワーク

702日前に更新 aoki1210aoki1210 706日前に登録
2010年06月19日 GMT 2010年06月15日 GMT
Domaを作った経験をベースにしつつあんまりDomaの実装にとらわれない形で作っていこうと思います。(ただし、API的にはあんまり違いはないと思います。基本的にDaoを介して、検索系はSQLファイルにマッピングし、更新系はデフォルトで自動生成になります。) 名前はSomaにしました。とりあえず、codeplexに公開しています。 http://soma.codeplex.com/ コードはコミットしてあるけど、まだプロトタイプみたいなものです。ぜんぜんできていません。 Domaでは避けたAOPですが、aptに変わるものとしてPostSharpを使おうかなーと検討中です。PostSharpは、実行時ではなくコンパイル時にコードをエンハンスするライブラリです。で、その際にコードをバリデーションできるので、Domaのように規約から外れたコードをチェックしてコンパイルのフェーズでエラーにできます。軽く試した感じだととても簡単に使えました。ドキュメントが比較的豊富でいい感じです。 課題は、ライセンスかな。軽く見た感... (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 21 | コメント | | ソースサイト: d.hatena.ne.jp
タグ: Dao, OSS, PostSharp, Soma, フレームワーク
2
CLIPS

システム開発地図:第1回:エコな開発を | システム開発地図の表示にSilverlightのDeepZoomを使用

705日前に更新 aoki1210aoki1210 708日前に登録
2010年06月16日 GMT 2010年06月13日 GMT
業務システムの開発・保守において、発注側と受注側が互いの立場を超えた共通認識を持てないことは大きな障害となります。伝言ゲームによる間違いや認識のずれによる手戻りは、開発の遅延や経営的な損失を招きます。 本記事では、このような課題に対する指針となる「システム開発地図」をご紹介します。この地図を使って、業務分析から要件定義、設計・実装に至るまで、発注者と受注者が共通の認識を持ち、成果物のトレーサビリティーを確保してエコな開発を行うための考え方・視点を提案します。 エコじゃない開発 業務システムを再開発するときに、現行システムのドキュメントが存在しない、存在したとしてもメンテナンスされていないということがよくあります。システムの発注側は、現行システムとソースコードがあれば大丈夫だろうと思うかもしれませんが、「現行システム通りの仕様でやってくれ」などとベンダーに言って、要件定義や設計の確認を省略してしまうと、受け入れ時に仕様の解釈の相違などによるトラブルが... (詳細)
カテゴリー: アーキテクチャ/デザイン/OSS | クリック数: 8 | コメント | | ソースサイト: labo.mamezou.com
タグ: Silverlight, 業務システム