今回はセッション以外の参加が中心になってしまいましたが、セッションも面白いものがありました。
■Customer Voice : Enterprise Library の解説
VBユーザより、C#ユーザが圧倒的に多かったのはショック・・・。
・ConfigurationAB
キャッシュもうまく制御してくれるようで、結構使えるのではないでしょうか。
・DataAccessAB
LoadDataSetはどうやらストアドプロシージャ用、という扱いだったようです。でも動的SQLでも普通に使えるんですよね。パラメタ定義の仕方は抽象化されていないので、現状は実質的にはSQLServer用、という注意がありました。
また、接続情報の暗号化の紹介もありましたが、構成ファイル全体が暗号化されるというのは微妙なような気も。でも、使えるのは使えるでしょうね。
・CachingAB
ASP.NETの場合はHTTPキャッシュのほうが適切との注意。
・LoggingAB
カスタムログフォーマッタという考え方はよいですね。
■SOA におけるビジネスモデリング手法
「どのように提供するか(プロセス)は変わるが、何を提供するか(ケーパビリティ)は変わらない」「DSLは、UMLだとステレオタイプになってしまうような汎用性にこだわらない」
■Web サービスの潮流 – Web サービス アーキテクチャと SOA アプローチ –
Webサービスの基本機能として
A.情報を提供
B.ワークフローを提供
C.組み合わせ・集約表示を提供
SOAというのは、契約に基づくサービスの提供を実現すると言うのが基本的な考え方なんですね。
■Visual Studio Tools for Office (VSTO) による Office アプリケーション作成体験(Hands-on Lab)
意外と面白かったです。ドキュメントとDLLを別に配布することになるというのは知りませんでしたが、やや微妙ですね。Office アプリケーションで提供するアプリは軽量であってほしいような気がするので、そのファイルだけで完結し、メンテナンスもそれだけでできてほしいような気がするわけです。
その他資料は色々もらってきたので、順次読んでいこうと思います。
それにしても、パーティ・宴会、楽しかった・・・!!
Tech・Ed参戦!
明日2日午後、明後日日参戦です。
2日は、午後からですが、EntLibにひたります。(enterpriselibrary.jpにも、何らかの形で協力させていただきたいと思っていますので、みっちり勉強!)
3日は、MCPと宴会が楽しみです。MCPは準備できていませんが・・・。
お会いできる方々、どうぞよろしくお願いします!
MCP
Tech・EdのMCP、キャンセル待ちの甲斐あり、予約できました。
ちょっと覚書
試験番号・試験科目: 070-300 – Analyzing Requirements and Defining Microsoft .NET Solution
受験日: Wednesday, August 03, 2005
試験開始時間:
11:00
試験所要時間: 145 分
5F 会場センター
しかし、こいつの勉強大変なんですよね~。本読み直さないと。
ガンバロウ!!
MCSD .NET Solution Architectures Exam Cram 2 (Exam 70-300)
Thomas Moore Don Pavoni Eric Rockenbach Randy Cornish
by G-Tools
地震の影響
昨日の地震で、あまり被害はなかったのですが、ちょっとだけ積んであった本が崩れてました。
すると、あまり見えてなかった本が現れたりして、「あ、そういえばこんな本読んだな」とちょっと面白い感覚がありました。
「Rubyを256倍使うための本 極道編」か・・・なぜか懐かしい感じ
Enterprise Library ファーストインプレッション
patterns & practices Enterprise Libraryや、最近の@ITの市川さんの記事に大いに影響を受けて、Enterprise Libraryをずっと触ってみたかったのですが、やっとちょっとだけ見てみる時間ができました。
バージョンは、1.1(June 2005)です。
で、まずは@ITでも最初に取り上げられている、Data Access Application Block(DAAB)から見てみたわけですが、こういうのはやはり自分でラッパーは用意すべきなのでしょうね。
私のイメージでは、Datasetの取得は
ds = db.GetDS(tbl,sql)
てな感じでやりたいのですが、DAABはそこまで提供はしてくれていません。しかも、おそらく一番手軽なDataset取得メソッドであるExecuteDataSetメソッドは、その中のテーブル名が”Table”という固定文字で書かれているので、取得したあと使う側はそれを認識していないといけないわけです。
なので、ラッパーとして
Public Const TBLName As String = “Table”
Public Function GetDS(ByRef sql As String) As DataSet
Dim db As Database = DatabaseFactory.CreateDatabase()
Dim dbCommandWrapper As DBCommandWrapper = db.GetSqlStringCommandWrapper(sql)
Return db.ExecuteDataSet(dbCommandWrapper)
End Function
みたいな感じのものがあるとよいなと思ったわけです。この場合は使う側は
ds = xx.GetDS(sql)
ds.Tables(xx.TBLName).DefaultView.Sort = xxx
みたいな感じになります。
しかし、もう少し探してみると、
public virtual void LoadDataSet(DBCommandWrapper command, DataSet dataSet, string tableName)
なんてものが用意されていました。これを使うと、ラッパーの中身は
Dim ds As New DataSet
関心の分離
明日は出張なので、飛行機で寝られることを前提に、MD3以来整理したいと思っていた、関心の分離について書き出しておこうと思います。
@ITでMS萩原さんがサブジェクト指向という観点の記事を書いています。
http://www.atmarkit.co.jp/fdotnet/softfactory/softfactory04/softfactory04_03.html
サブジェクト指向とは、各ステークホルダーの主観(サブジェクト)を基準として、クラスとクラスが持つメソッドを分離管理しようとする考え方です。
なぜ分離するかというと、オブジェクトという単位では、散乱ともつれ合いが発生するからです。
このイメージは上記記事の絵を見ると分かりやすいですが、レベルを落として言うならば、ひとつのクラスをみんなで触らざるを得なくなることが、プロジェクトに困難をもたらすということへの問題意識です。
では、クラスとメソッドの分離管理とは、どういうことかというと、ちょっと分かりやすい言い方としてはエンティティとデータの分離ということですし、さらに単純化して言ってしまうと、不変の部分と変化する部分の分離ということになると思います。
ちょっと具体的な話を書きますと、現在私は、仕事上では、一定のベースとなるシステムを前提に、それを各お客様に合わせたカスタマイズをしてシステムを構築するという仕事をしています。うちのように、一定量のSI案件は入ってくるが、パッケージをバンバン売れるほどの力はない、という組織にとってはひとつのよいやり方だとは思います。一から作るわけではなく、かといってガチガチのパッケージに手を入れるわけでもなく、というバランスです。
で、そういう仕事をやっていると、だんだんお客様によって変わらない部分と、お客様のビジネスに合わせて変えるべき部分とが見えてきます。ここで、作りがうまくないと、毎回同じクラスを触っていることになります。この問題に対するひとつの答えは継承・ポリモフィズムということになると思いますが、別の答えがアスペクト指向ではないかと思います。
MD3でも、萩原さん近いことをおっしゃっていたと思いますが、現在アスペクト指向がロギング等の非機能要件のためにのみ使われているかの状況は、もったいないと思います。もちろん、それは便利だとは思うのですが、本当はそれよりもやりたいことは、業務上の関心の組み込みではないかと思うわけです。
上で、ベースシステムと書きましたが、これはちょっとベタなやり方です。本当は、それを洗練させて業務フレームワークになるとよいと思っています。
さらに、フレームワークという視点ではなく、言語という視点も出てきそうです。
例えばこちらの記事ですが、DSLという概念が出てきています。
http://www.atmarkit.co.jp/ad/ms/modeling/modeling03.html
DSL Toolsも登場します。
http://naka.wankuma.com/site/column/dotnet/00013.htm
MD3で野村さんのお話が面白いと思ったのですが、水平切り口でのドメイン特化言語というのは既に存在しており、例えばSQL、例えばフォームデザイナ、ということでなるほどという感じでした。これを垂直切り口で業務言語を作れるか、というところがこれから面白いところかなと思っています。
ちょっと拡散してきたので、そろそろ寝ようと思います(笑)。
次は 達人プログラマー
というわけで次は、課題図書(笑)、「達人プログラマー―ソフトウェア開発に不可欠な基礎知識 」を読み始めています。
これまでVSSオンリーでCVSは使ったことがなかったので、微妙な言葉使いの違いとか、理解しておきたいと思います。
達人プログラマー―ソフトウェア開発に不可欠な基礎知識 デビッド・トーマス アンドリュー・ハント マイク・クラーク 長瀬 嘉秀
アスキー 2005-03
売り上げランキング : 3,995 Amazonで詳しく見るby G-Tools <p> <a href="http://www.amazon.co.jp/exec/obidos/ASIN/4891004568/konnokiyotaka-22/ref=nosim/" target="_blank"><img src="https://i0.wp.com/images.amazon.com/images/P/4891004568.09.SCTHUMBZZZ.jpg" border="0" alt="コードコンプリート―完全なプログラミングを目指して (下)" data-recalc-dims="1" /></a> <a href="http://www.amazon.co.jp/exec/obidos/ASIN/489100455X/konnokiyotaka-22/ref=nosim/" target="_blank"><img src="https://i0.wp.com/images.amazon.com/images/P/489100455X.09.SCTHUMBZZZ.jpg" border="0" alt="コードコンプリート―完全なプログラミングを目指して (上)" data-recalc-dims="1" /></a> <a href="http://www.amazon.co.jp/exec/obidos/ASIN/4798105538/konnokiyotaka-22/ref=nosim/" target="_blank"><img src="https://i1.wp.com/images.amazon.com/images/P/4798105538.09.SCTHUMBZZZ.jpg" border="0" alt="エンタープライズ アプリケーションアーキテクチャパターン" data-recalc-dims="1" /></a> <a href="http://www.amazon.co.jp/exec/obidos/ASIN/4798108715/konnokiyotaka-22/ref=nosim/" target="_blank"><img src="https://i2.wp.com/images.amazon.com/images/P/4798108715.09.SCTHUMBZZZ.jpg" border="0" alt="ソフトウェア開発の持つべき文化" data-recalc-dims="1" /></a> <a href="http://www.amazon.co.jp/exec/obidos/ASIN/4798106631/konnokiyotaka-22/ref=nosim/" target="_blank"><img src="https://i1.wp.com/images.amazon.com/images/P/4798106631.09.SCTHUMBZZZ.jpg" border="0" alt="Eclipseモデリングフレームワーク" data-recalc-dims="1" /></a> </p>
対訳 五輪書 読了
対訳・五輪書 宮本 武蔵
講談社インターナショナル 2001-07
売り上げランキング : 72,136 おすすめ平均 五輪書を日本語と英訳で味読出来るユニークな本
宮本武蔵の心 Amazonで詳しく見るby G-Tools <p> ずいぶん時間かかりましたが、読み終わりました。<br /> 一言で言うならば、臨機応変、適材適所、ということですね。<br /> それは大切です。でも、これって結構疲れるんですよね。<br /> 周りのことに多少目をつぶって、計画通りやるほうが楽ですよね。色々なことを考えて、周囲のトラブルにも気を配って、臨機応変に対応しようとすると、毎日が大変です。<br /> でも、リスク管理というのも結局は臨機応変ということなんだろうな、と考えています。そこで、あまり無理をせず、適材適所をキープできるようになれば、それが最高だなと思います。<br /> ちなみに、戦闘方法は、私にはあまり関係ないですが、もし五輪書から戦闘方法を学ぼうと思う人がいたら、これよりもドラゴンボールのほうがよいのではないでしょうか。言ってることは一緒ですよね?言い過ぎ?? </p>
[VS2005]情報リンク
どっとねっとふぁん Blog さん経由、いけてる情報へのリンク。
TechEd 2005 – Visual Studio 2005 Team System Presentations
Introduction to the Club Web Site Starter Kit
ASP.NET に熟練する: カスタム エンティティ クラスの概要
Visual Studio .NETにdiff支援機能を追加する
ちょっと前に、CodeZineに「Visual Studio .NETにdiff支援機能を追加する」という記事がありました。
http://codezine.jp/a/article.aspx?aid=77
やってみましたが、いい感じです。
自分でマクロを作るというのもやったことないですが、マクロをツールバーに登録するということもやったことなく、やり方が分からなかったのでメモ。
[表示]→[ツールバー]→[ユーザー設定…]から「新規作成」ボタンで適当に「MyMacro」みたいな名前でツールバーを登録すると、小窓が表示されますので、そこに「コマンド」タブから「分類」で「マクロ」を選ぶと右に出てくるので、右の内容を先ほどのMyMacro小窓にドロップですね。
ところで、Sampleの中にも色々登録されているんですね。知りませんでした。使ってみます。