2009年9月30日水曜日

ヤクルト-阪神@神宮

 

CS出場がかかる3着争いの天王山、「一線必勝」、平日神宮3連戦。

ここんとこ、にわか燕ファンとしてチャンスがあればせっせと球場通いをしています。せっかくオフィスが近くなんで。

んでこの3戦も傘片手に応援してきました。

 

結果1勝2敗と痛恨の負け越しでしたが、ヨシノリ君の悪い癖がでた2戦目以外は、緊張感のある良い試合が多かったんじゃないでしょうか。でも悪いときの特徴である決定力のなさと、ケガ人続出なのは痛いところ。

 

しかしまあ、なんつーか阪神戦だと神宮は完全にアウェーの雰囲気ですね。

レフトスタンドは毎日こんな大賑わい。ちょうどブラゼル2ラン後で大盛り上がり。

20090930201309

対してライトはというと、空席もまばら。

20090930201326

今年のヤクルトスワローズ、結束力と投手力で乗り切ってくけなげな良いチームだと思うんですが、こう見ると人気ないですね。。まーそんなところにさらなる愛着を感じるんですが。

幸い残り試合数は多いので、まだまだチャンスはあるでしょう。また応援いくよー

 

 

ちなみにその前の横浜戦はというと、スタンドはこの惨状・・・泣

20090925185632

2009年9月15日火曜日

DataSvcUtil.exeがerror 7001を吐くとき (Windows7のみ)

 

ちょいはまったので備忘録。



Windows7でADO.NET DataService v1.5 CTP1/2を使用時、DataSvcUtilを手動で叩こうとすると、上のようなエラー7001が出てうまく動いてくれないことがあります。

これ、ADO.NET DataServiceのインストール時にSystem.Data.Service.Design.dllが正しく読めてないときに起こるようで、そういえばインストール時にエラーが出ていたような気が。

で、下のサイトにある解決策のとおり、dllのセキュリティ設定を変更して再度インストーラ起動>Repairとすることで解決しました。

解決策

ネタ元スレ


DataServiceUtilはv1.5以降のバインディングやINotifyPropertyChanged実装を利用するときは必要になります。Windows7固有の現象みたいなので、該当する場合は気をつけてください。

2009年7月10日金曜日

Silverlight3 RTW と Silverlight ToolKit 7月版

RTWでましたね。

Microsoftのサイトからダウンロード(Silverlight3 RTW 3.0.40624.0)になってます。

開発に必要なSDKやToolsはいまのところ英語版のみダウンロード可能になってます。 →ダウンロードリンク

それでも一応、日本語版VS2008の環境に入れてみましたが、まだデバッグまわりがちゃんと動かなかったです。そのへんは日本語版まちでしょうか。

RTWと同じタイミングでSilverlight ToolKitの最新版(2009 July Ver)もCodePlexに出ています。

注意点としては多くのコントロールが整理されてアセンブリが変わってます。Silverlight3betaで作っていたプロジェクトについては各XAMLのXMLNS属性を変更してあげる必要があります。 →変更点リスト

2009年7月1日水曜日

GPartedでWin7パーティションの容量を増やそうとして・・・

 

今日はこれで結構はまりました。

もともとVista のノートをパーティション削ってWindows 7 RC を入れて使っていたのを、すっかりWindows7しか使ってないのと空き容量が1GBを切ったのを期に、再度Vista側からのディスクの切り崩しにトライ。

GPartedでパーティションを調整して、再起動して、ブートローダーが壊れるのでWin7のCDからスタートアップの修復を行う、と。ここまでは想定内。

でもその後ログインまではいくものの、いつまで待ってもデスクトップが表示されない状態に遭遇。。。

症状的にプロファイルが読めない系のトラブルかと思い、セーフモードのコマンドプロンプトから新しくユーザーを追加してみてもだめ。

んーなんだろうとひとしきり悩んで試行錯誤を繰り返し、そろそろあきらめて再インストールをしようかという時に原因が思いつきました。。

 

Win7インストール時にわざわざインストール先のドライブレターを「S」に変更していたんですよね。。。セブンなんで。

 

たぶんGPartedで切り直した後の再起動時に、以前のSドライブのオフセットでパーティションが読めないため、Dドライブの設定が自動的に作成されて適用されていたようです。

 

結果的にはこれがビンゴで、レジストリを書き換えることで解決。

再起動してログインして、ディスクが変わったのでWindowsの再認証の手続きが終わるとちゃんともとのデスクトップが表示されましたとさ・・・ 冷や汗かきました。

いちお解決の手順を書いておきます。

  1. セーフモード(コマンドプロンプト)でWin7を起動。
  2. デスクトップが表示されずに何もできない状態なので、CTRL-ALT-DELからタスクマネージャーを起動し、ファイル>新しいタスクの実行。
  3. regedit を管理者モードで実行。
  4. HKEY_LOCAL_MACHINE\System\MountedDevicesを開きドライブレターの一覧を確認。
  5. 以前のシステムのドライブレターの値が残っているるので、これを当たり障りないものにリネーム。
  6. 今ブートしている勝手に作られたドライブレターの値を、以前のドライブレターに変更する。今回のケースでは「\DosDevices\D:」という値を、「\DosDevices\S:」に戻してあげる。
  7. 再起動してログイン後、Windows再認証のダイアログに従う。

 

Windows のシステム ドライブまたはブート ドライブのドライブ文字の復元方法

2009年6月10日水曜日

.NET RIA Servicesのロードマップ

http://silverlight.net/forums/t/101160.aspx

 

MSフォーラムに投稿されてたのでメモ。

気にしていたADO.NET DataServicesのサポートはPDC2009 beta バージョンから、ということは今年の暮れでしょうか。

でも July 2009 CTP でもいろいろな機能強化や、Data Services とのインテグレーションを見越したライブラリ整備が行われるとのことでこちらを楽しみに。

RTWはまだもう少し先(来年初頭でVS2010& .NET4.0準拠)のようですが。

2009年5月22日金曜日

VS2010beta & CLR4.0

 

英語版の公開がはじまりましたね。とりあえず入れてみました。

startup

スタートアップ画面

project

新規プロジェクトテンプレート

Silverlight

Silverlightのデザイナー。プレビューだけではなくデザイン機能が付きました。プロパティシートもかなり進化。

SLProject

Silverlightプロジェクトプロパティ。Silverlightのバージョンも選択可能になってる。

 

ここまでの作業で1回VS2010がお亡くなりになりましたが(笑)、それをのぞけばそこそこ動く感じです。

2009年5月14日木曜日

EF4.0に向けて

ADO.NET Team blogが続々と更新されてるので要チェック。

Entity Framework(EF)4.0では、よりPOCOなエンティティモデル(=余計なインターフェースや親クラスをもたない、よりPlain Old なObject)や、モデルファースト(作ったモデルをもとにDBスキーマを生成)なんかが可能になるとのこと。それじゃEntityの代わりに変更追跡を担当するのは誰?みたいな話もこれからでてくるようです。

N-Tierでの利用などのアーキテクチャ見地のことについてもすこし言及があります。このへんになるとSilverlightではとくに.NET RIA Servicesとのカラミもあると思います。いまのところ.NET RIA ServicesはEFまたはLINQtoSQLをもとに独自のサービス/プロキシをつくりますが、5月のMSDNマガジンのRIA Servicesの記事にもいずれは両者が連携するとの記述があります。

Building A Data-Driven Expense App with Silverlight3より一部引用)

In future releases, .NET RIA Services will also work with ADO.NET Data Services.

なのでADO.NET DataServicesをベースとしてその上にRIA Servicesの機能性を展開するようなアーキテクチャガイドラインになるといいですね。Silverlight3が多くの開発者を取り込んでブレイクするためにはこのような「速成フレームワーク」の存在は欠かせない部分だと思います。

2009年5月11日月曜日

工人舎SC3にWin7RCを入れてみる

Win7RCが出てからというもの、空いてる端末やVMに手当たり次第インストールしている感じですが、この軽さなら行けるかな?と工人舎のUMPC、SC3にもインストールしてみました。

XPプリインストールバージョンだったので、せっかくのタブレット機能がOSレベルでサポートされていなくてちょっと寂しかったんですよね。

結論から言うと、全然軽くていい感じ。(ケータイ撮影なんで画質わるいですが)

20090511015436 

ちゃんと手書き入力やペンフリックなんかも機能してます。

Win7のインストールイメージをネットワークマウントして空いてるパーティションにインストールするだけで普通にDualBootできました。

その後Vista用ドライバーを工人舎のサポートページから入手して、次々に入れていく感じ。

注意点としては、Vista用のタッチスクリーンドライバーを入れないとコントロールパネルの「ペンとタブレット」が使えないなど、OSレベルでタブレットを認識してくれません。

このドライバーがなぜか工人舎のJPサイトには見あたらないのですが、UKのサイトでゲットできました。

しかしSC3、値段の割にかなり楽しめる端末です。筆圧検知のないタブレットなので手書き入力はそれなりですが、タッチデバイスとして十分使えるモバイルPCだと思いますよー

 

#もちろん、Silverlightアプリもちゃんと使えてます。

20090511015100

2009年4月15日水曜日

ADO.NET DataServices v1.5 CTPの行カウント機能を実験

 

ダウンロードしたけど試せていなかったv1.5CTP1のrow count機能を触ってみました。

 

以前のバージョンではそもそもCountが未実装だったので、たとえば「キー値を渡した存在チェック」みたいな一般的な処理を行う際にも回りくどいことをする必要がありました。

んで今回のこの機能追加ですが、2種類の方法で行数取得が可能となっています。 (詳しくはここ

 

  1. Count オプション(pseudo selector)
  2. InlineCount オプション(query option)

 

まず最初のCountですが、これは完全に結果セットの行数を単純にスカラー値として返すクエリ。

 

たとえば、以下のように返してくれます。

 

  • MyService.svc/Products/$count

20

  • MyService.svc/Products/$count/?$filter=CategoryId eq 3

6

 

対してInlineCountはというと、クエリ結果のフォーマット内に結果行数の情報を格納して返す形となります。

 

例としては、

  • MyService.svc/Products?$filter=CategoryId eq 2&$inlinecount=allpages

 

などと投げると、レスポンスの中に

<m2:count xmlns:m2="4</m2:count">4http://schemas.microsoft.com/ado/2008/11/dataservices/metadata">4</m2:count>

といった感じで m2:count タグが挿入されるのがわかります。

でも、クライアントからコードで取得するときは、

var query =
     from p in ctx.Products
     where p.CategoryId == categoryId
     select p;
int cnt = query.Count();


と単純に書いても動いたので、明示的にInlineCountの指定をしなくてもとりあえず大丈夫なのかもしれません。



(以前はquery.Count()の部分でNotSupportExceptionだったと思います)。



ただし、



var query =
     from p in ctx.Products
     where p.Id == id	//Id は主キー
     select p;
int cnt = query.Count();  // NotSupportedException!!


のように、主キーで問い合わせを行うパターンではCountでNotSupportedExceptionが出てました。




  • MyService.svc/Products(7)



のような問い合わせ形式には現状対応していないみたいんでしょうか。



 



とりあえずは以下のように逃げられますがね。まあこれはあくまでワークアラウンドということで。



DataServiceQuery<Product> query =
     (from p in ctx.Products
      where p.Id == id
      select p) as DataServiceQuery<Product>;
var ps = query.Execute();
int cnt = ps.Count();


と、ここまで書き連ねておいてなんですが、これによるとv1.5の DataServiceContext.IgnoreResourceNotFoundException プロパティを使えば、いちいちRowCountなんぞとらなくても、FirstOrDefaultで存在チェックできそうですね。。。



もっと早く気づけば良かったw 疲れたんでこの検証はまた後日。

2009年4月13日月曜日

.NET RIA Services Overviewを読んで

 

Microsoft .NET RIA Services Overview ~ Mix09 Preview

 

Mix09のタイミングで公開開始されたPDFを一通り読んでみたので、忘れないようにメモ。

 

  • N-Tierアーキテクチャでのレイヤ間モデル・ビジネスロジック共有のためのフレームワーク&ガイドラインといったところで、とくにSilverlightにフォーカスしたもの。
  • EntityFrameworkまたはLINQtoSQLをサポートし、サーバーサイドでのモデルとビジネスロジック実装をクライアント側からも共有できるように、Proxyの自動生成を行う。
  • サーバー側実装はDomainServiceクラス(EF/LTSの選択によって継承元が異なる)に行う。
  • DomainServiceを参照するクライアントプロジェクトではビルド時に自動的にProxyクラスが生成される。また、Entityだけではなく、BLもProxyに反映される。
  • クライアント側ではDomainContextクラスを使用する。DomainContextではEntityの状態管理、変更トラックなどを行う。
  • クライアント側でもサーバー側と同じNameSpace、クラス名でモデルへアクセスできる。またINotifyPropertyChangeも自動的に実装される。
  • サーバー側のCRUD処理については、DomainContextにも同様のメンバが用意される。ただし更新系についてはあくまでContext内の状態変更を行うだけなので、サブミットされるまでは実際に更新されない。
  • クエリ系メソッドはクライアント側ではご丁寧に名前が変更される(Get,Fetch,RetrieveなどからLoadに)。サーバー問い合わせが非同期で行われているんだよ!との注意喚起を促すため。
  • 全般に規約が重視されているので、ファイル名やメンバ名などに注文がつく(属性によって回避可)。開発者の労力削減とチーム開発での可読性を向上する狙い。
  • カスタムのビジネスロジックも共有可能。その場合CustomやServiceOperationなどの属性を付加する。
  • EntityのバリデーションはSystem.ComponentModel.DataAnnotationsに含まれる属性でマーク可能。もしお手製が必要なら共有クラスにValidatorを追加する。

 

なんて感じでかなりパワフルなプロキシを作ってくれるという代物です。

自動生成のプロキシに依存する部分が大きいだけに、ここがスキ・キライが分かれるところかもしれません。

でもBLの共有も含めてひとくくりにレイヤの壁を取っ払いたいときには、現実的で手っ取り早いアーキテクチャではないでしょうか。

規約ベースなところも好感で、小規模・短納期のプロジェクトでは主流になっておかしくないと思います。

 

また、最後のほうに Silverlight用の DomainDataSource の説明があって、RIA ServicesおよびDataGridと連携して、

  • データの自動ロード
  • コントロールへのパラメーター割り当て
  • ソート
  • グループ化
  • フィルタリング
  • ページング
  • エディット

 

などがXAMLで記述できるとのこと。

Validatorによる検証も含めて、DomainドリブンなUIがSilverlight上でもサクッと実現できるのは非常にいい感じです。

あとはADO.NET DataServicesとの棲み分けが気になるところですね。

まだ日本語環境対応版の気配がないんで、仮想環境に英語版VSをインストールして試してみようかと思います。

2009年3月9日月曜日

PRISM2にSilverlightが

PRISMがVersion2になって、ガイダンスの対象としてSilverlightが追加されていました。

 

PRISM2 (download)

http://www.microsoft.com/downloads/details.aspx?FamilyID=fa07e1ce-ca3f-4b9b-a21b-e3fa10d013dd&DisplayLang=en

infoqの記事

http://www.infoq.com/jp/news/2009/03/PRISM-2-Silverlight

原文

http://www.infoq.com/news/2009/02/PRISM-2-Silverlight

 

ヘルプを読んでいるところですがWPFとSilverlightとの違いをどう凌ぐかについてもかなり言及してあって面白い。

WPF的なMVVMをSilverlightで実現するのに欠かせないCommandパターンについてもPRISM的なアプローチが説明されてるので、サンプルを含めてちゃんと読んでみようと思います。

 

ちなみにその他のCommandパターン実装例

nikhilk.net

http://www.nikhilk.net/Silverlight-ViewModel-Pattern.aspx

Code Plex の Silverlight Extensions

http://www.codeplex.com/SLExtensions

2009年3月6日金曜日

Pro ADO.NET Data Services

今週は北陸金沢まで片道4時間の出張がありました。

こんなときこそ、買いだめしておいた本をちゃんと読めるというものです。

今回は、

Pro ADO.NET Data Services   ~ Working with RESTful Data

 

いまのところADO.NET Data ServicesについてはMSDN以外にほとんど日本語リソースがないので、すごく読みたかったんですよね。実際届いてからたびたびリファレンス的につまみ読みしていたんですが、今回はちゃんと頭から。といっても洋書読みはちょっと気を抜くと内容が頭に残らないので、内容を噛みしめながら3章まで。ここまで読めばひととおり基本が押さえられますね。

私は技術者とはいっても、一般的なプロジェクト開発の現場からは離れてもうすぐ1年になるので、いま現場でどのようにADO.NET Data Servicesが評価されているのかはすごく興味があるんです。予想としてはLINQtoSQLやEFが少しずつ使われ始めたのかな?というイメージなんですが。以前私が絡んだプロジェクト(.NET)では小規模ではこなれたTyped DataSetをシンプルに使ったり、大規模だと手作りのPONO(いまはPOCOとよぶのが主流かな?)ベースフレームワークを構築したりと十人並みに苦労していた気がします。仕事を離れたところではRailsのActiveRecordやdb4oをいじってみたりしてたりね。このADO.NET Data Servicesもとくに低予算の小規模プロジェクトなんかでRails使うイメージでサクッと使えるデータ基盤になれば良いなと思うのですが。とくにSilverlightとの相性の良さ(以前問題も挙げたけど)で今後使われるケースが増えると思うし。今後個人的にはData層の第一候補としていろいろ試してみようと思います。

4章以降はレガシーシステムからの移行や、AJAX・Silverlightからの利用についての言及になってるのでこのへんはさらっと読んでおこうかなと。

2009年1月29日木曜日

Tech Days 2日目の感想

MSさんのTechDaysに行ってきました。仕事の都合で2日目のみの参加でしたが。

今回はご時世もあってエコの徹底がテーマみたいで。コーヒーのタンブラー支給やリサイクルの徹底、麻っぽいバッグはとても好感。

毎年TechEdでもらってた一目で業界人とわかるタフなバッグ(まぁデカい荷物運ぶときは重宝しますが)よりはいいんじゃないですかね~。

あとスライドの印刷物が会場でもらえない件はどうなんでしょうね。自分はあまり現場で手元の資料に目を落とさないようにしたいのでさほど気にならなかったですが、有料イベントとしては人によっては不満なのかもと思ったり。

以下、印象に残った点を。

C#4.0

Interop関連がかなり改善された感じ。引数の省略ができるようになって、COM連係なんかが断然書きやすくなったのは大きな前進ですね。むかしこの件で上司を説得しきれずに、VB.NETで泣く泣くプロジェクトはじめたことを思い出しました。

あとはdynamic型ですか。C#もバージョンを重ねるごとに動的言語化していきますね~。いろんなことを手軽に書けるツールになってきて便利な気がしますが、玉石混淆メンバのプロジェクトをしきるマネージャさんにとっては悩みの種が一つ増えた感じも。object, var, dynamic, このへんを新人にちゃんと理解させてから前に進むのって、結構骨が折れる気がしますが(.Net2.0シバリのお触れを出すって後ろ向きな手もあるけど)。

 

Windows7 / Ribbon

Windows7になってOffice 2007 Ribbon に加えてWindows Scenic Ribbonが使えるようになるとのことですが、当面Win32ベースでってのは従来通りとのこと。当面はパワフルPGにこの部分を任せるか、3rd Partyコンポーネントを活用するって図式はかわらんようです(実はちょっと安心w)。Ribbon専用のマークアップをコンパイルしてリソース化する下りはちょっと意外。UI系はなんでもXAML統合するのかと思ってただけに。

 

Data Services

ADO.NET DataServiceの近々のアップデートとしてはBLOBのレイジーロードやマイクロフレームワーク対応とのこと。SQL Data Services や、SyncFrameworkベースのオフライン同期(こっちはまだCTP次期も未定とのことですが)あたりも含めて、今後が超楽しみな分野。オフライン同期はどのプロジェクトでも俎上にのってくる話題だし。

そしてWin,WPF,Silverlight,Web,Moblieと、各種プラットフォームを網羅したデモは圧巻のひとこと。とても勉強になりました。

 

...

結論としては、真冬のパシフィコも新鮮でいいかなと。肝心のAzureがメンテ明けで安定しなかった点は残念でしたが。各所でスピーカーの方々のご苦労が伝わってきました。あとWindows7β早く試さなきゃー(環境そろえなきゃ-)(銭が・・・)

2009年1月12日月曜日

Amazonから届いた・・・

注文してた Silverlight2 Recipes がとどきました。

 

Silverlight2のレシピ集。この手の本はいまんとこ英語版を注文しないとって感じですが、今年の年末くらいにはたくさん日本語版が出てるといいなぁ。

いま2/3くらい目を通したところですが、インストールやBlendの使い方からコントロールのカスタマイズやサービス連携といった実用的なところまで幅広くカバーしてる印象。

Q/A方式なので情報が探しやすい&わかりやすいのでSilverlight2開発のときは横に置いておくと重宝しそうです。あと、これからSilverlightプロジェクトをはじめるって立場の人にも、一通りSilverlightにおける方法論を確認するためにも有用だと思う。