Future Technology Days ~ Windows 7 セミナー (2)
こんにちは、naginoです。
仕事の山があった関係で、間を空けてしまいました。
「忙しい」を言い訳にするのは好きではないのですが、少々クリティカルな事案のためなかなか融通が利かないのが辛いところです。
さて、前回は基調講演の前半でしたので、今回は中盤以降を振り返ります。
● Windows 7 + Windows Server 2008 R2
Windows 7 の Edition は、現在以下を予定しているそうです。
・Ultimate (一般向け最上位)
・Enterprise (企業向け最上位・SA のみ)
・Professional
・Home Premium
・Starter (同時実行アプリが 3 つまでに制限
さて、前回も触れましたが、Windows 7 に対応するサーバー OS が Windows Server 2008 R2 になります。
この二つを組み合わせた際の最新機能がいくつか紹介されました。
なお、パートナー向けお披露目ということで、Enterprise に絞った紹介になっていました。
・DirectAccess
VPN 無しで外部からイントラネット内に接続する手段だそうです。
技術的には IPv6 ober IPSec + Active Directory によるセキュリティ確保とルーティングのようです。
GateWay 箇所には Windows Server 2008 R2 が必須ですが、その先の接続先は 2008 に限定されないそうです。
日本では RMS を導入しているならともかく、情報流出の観点から許可される企業は少なそうに思えるのですが、どうなのでしょうか。
現状 VPN を導入している企業ならともかく、VPN を導入していない場合はコストよりセキュリティなどが問題になっていると思うのですが・・・。
・BitLocker To Go
BitLocker の強化版です。
USB メモリなどの外部ストレージも暗号化できるようになりました。
Vista でシステムドライブを、Vista SP1 でシステムドライブ以外の内臓 HDD を暗号化できましたが、これでほぼすべてのストレージをカバーすることになります。
まじめに使えば、サードパーティー製の暗号化ソフトが不要になります。
暗号化キーはパスワードや証明書が選べるようですが、AD でキーを集中管理できそうな様子でした。
その点でサードパーティー製より運用しやすいのではないでしょうか。
・AppLocker
ソフトのインストールやファイルを開けるかどうかを AD で制御する仕組みだそうです。
ただ、条件指定が以下の3つだそうです。
> 発行元
> パス
> ファイルハッシュ
発行元やファイルハッシュは、ツールやバイナリエディタで変更できそうですし、パスに至ってはファイルをコピーすればそれまでですので、パッと見ではどこまで実効性を持つのかが疑問でした。
Winny 対策にもなるということでしたが、どうなのでしょうか。
あとは、Live Migration のデモが紹介されました。
ストリーミング再生している動画が、サーバをふぇールオーバークラスタリングマネージャー上でフェールオーバーさせても再生が止まらないというデモでした。
計画停止ではサービス停止無くいけるようです。
ただ、障害時の切り替わりについては言及がありませんでした。
障害発生から検地までのタイムラグがあるので、おそらく若干の停止はあるのではないかと思うのですが、どうなのでしょう。
また、Microsoft Optimization Pack for Software Assuarance の紹介が簡単にありました。
● Microsoft 社の支援策
支援策としては 3 プログラムが紹介されました。
・情報提供の拡充
MSDN や Technet での日本語情報、オンラインフォーラム、ブログ等コミュニティ情報の充実ということでしたが、これは Power to the Pro そのままですので、継続しますということのようです。
・技術サポート
イノベートオンによる対応アプリ開発サポートと、互換性検証ラボによる検証サポートが紹介されました。
互換性検証ラボは、用意した環境を持ち込むと、Microsoft の技術者が互換性を検証してくれるそうで、無料のサービスになるそうです。
ただ、申し込みが多いようですと抽選になるようです。
・ライセンスキャンペーン
これは 現在発売中の Vista と絡めた価格の優待ですね。
SA 値引きやメディアプレゼントなどいくつかの条件に応じて内容が変わります。
ざっと基調講演を振り返りましたが、一番最初のお披露目ということで、全体を浅く、またセールスポイントや見栄えのするところだけは言及するという構成でした。
ウィンドウマネージャなどの UI ばかりが注目されている節もありますが、セキュリティを最重視して使いにくいという評判になった Vista に対する、UAC などを残したままでの使い勝手向上という答えでもあり、セキュリティと使いやすさのバランスが良いところに落ち着いていそうです。
そういう意味で、セキュリティのみでは一般ユーザーのみならず企業相手でも売り物にならないという結果になった Vista を置き換える OS になりそうです。
ちなみに、基調講演のデモでは、ビルド番号 7000 の Windows 7 を使用していました。
Future Technology Days ~ Windows 7 セミナー (1)
こんにちは、naginoです。
月曜の早朝までの仕事に追われていますが、逃避で昨日のイベントのレポートです。
今回参加したのは、Microsoft のパートナー向けの無料セミナーですが、パートナー限定というわけでは無いようです。
メインテーマは現在 β 開発中の Windows 7 ですが、それとセットになる 同じく β の Windows Server 2008 R2 もテーマとなっていました。
というのも、Microsoft 社は以前からクライアント OS とサーバ OS の世代を揃えていて、組み合わせて使うと最大の効果が得られるような仕組みになっています。
もちろん前の Version の OS と組み合わせて使うこともできますが、すべての機能が利用できるわけではなくなってしまいますので、最大限活用したいのであれば Version をあわせることが必要になります。
さて、基調講演では大きく 3 つのポイントで話がされました。
● Windows 7 の企業向け機能
● Windows 7 + Windows Server 2008 R2
● Microsoft 社の支援策
順に見ていこうと思います。
● Windows 7 の企業向け機能
パートナー向けということもあってか、最初に Code Red / Nimda / Blaster の話が出ました。
セキュリティを最前面に押し出していたのは過去になりつつ印象があったので、Microsoft 社がこの 3 つについて言及するのは久々な気がします。
また、Windows 7 の開発については「まだしばらく開発を続ける」という表現をしていました。
すぐ RC ということではなさそうな印象でした。
ここでは Windows 7 の強化ポイントを 3 つあげていました。
1. 使いやすさ / UX
2. パフォーマンス
3. 信頼性・互換性
こうしてみると、技術面というよりはマーケティング的な分類・項目ですね。
1. 使いやすさ / UX としては色々とあげられていましたが、そのうちの仮想フォルダや統合検索などは WinFS の考えを引き継いでいるようなところを感じました。
仮想フォルダというのは、複数の物理フォルダを 1 つのライブラリとして扱い、その中のファイルすべてを月別の仮想のフォルダに分けて表示・扱ったりすることができる仕組みで、これにより物理パスとユーザーが意識するファイルへの到達パスとが異なることになります。
使いこなせば便利ですが、開発側からするともうどこにファイルがあるのかユーザーに聞いても分からないわけで、またひとつ抽象化が進むことになりそうです。
また、ネットワークフォルダも追加できるとのことで、そうすると帯域をどの程度使うのか、というのは気になりました。
あとは、エクスプローラ上で検索キーワードがハイライトされるなど、Window Manager の機能が強化されていました。
これは地味にうれしいですが、ウィンドウサイズを数値指定できないので、NotePC ユーザーのいる環境での Web アプリケーション開発などでは、相変わらずその手のツールが必要そうです。
(ちなみに私は「Pito!」を昔から使っていますが、最近更新されていないので新しいアプリケーションの一部と相性問題が出てしまうんですよね。)
2. パフォーマンスについては、Windows XP 時代からずっと同じようなことを言っているので、特に目新しくも無く、また余計なサービスを起動しないことでの高速化のため、多数のアプリを 1 台にインストールしてしまう会社の PC では結局多くのサービスが起動して遅くなってしまうであろうということは同じでした。
内部のアルゴリズムなども最適化しているそうですが、その点は未知数です。
ユーザーが体験するのはクリーンなデモ環境ではなく、様々なアプリをインストールした実際の使用環境ですのですが、Vista も β では早いといわれながら実際の使用環境では遅かったわけで、Windows 7 が同様なことにならないことを祈るばかりです。
ただ、画面描画の Direct 2D は間違いなく期待できそうです。
GDI / GDI+ に比べた際の高速化は劇的で、一方でオンボードの GPU の高性能化が著しいですので、企業でも Vista 登場時に比べればグラフィック周りの性能は向上していますので、十分効果がでるのではないでしょうか。
3. 信頼性・互換性では、トラブルシューティングプラットフォームと Application Compatibility Toolkit(ACT) が印象的でした。
トラブルシューティングプラットフォームは、コントロールパネルから Windows が独自に問題を分析して修正できるもので、Norton System Works の簡易版のイメージでしょうか。
# ワトソン博士が懐かしいです。
ただ、デモでは DHCP の有効無効を自動で切り替えします、というのを見せていましたが、そうすると企業で各 PC の設定がユーザーによって様々に変更されてしまい、とても管理どころか現状把握さえできなくなりそうです。
結局日本の企業では無効にして使われない、個人向け機能になってしまわないかが心配です。
あと、メモリリークのバグをわざと組み込んだ Media Player が、繰り返し実行すると Windows が問題を判別して実行できるようにしてしまうというデモもありました。
これも個人ユーザーにすると便利ですが、開発会社からするとテストを繰り返すと状況が再現しなくなる、あるいはサポートからすると症状の再現性が不定となってしまうので、意識しておかないとはまりそうです。
長くなりましたので、基調講演の残りは別記事にします。
WPF Toolkit の DataGrid でバインディングがうまくいかないパターン
こんにちは、naginoです。
すみません、後日調査のための記録です。
WPF Toolkit の DataGrid に DataTable をデータソースとしてバインディングしていたのですが、特定の列でデータが全て Null になってしまうという現象に半日潰しました。
どうも、列名に半角の「/」が入っているとデータのバインディングがうまくいかないようです。
たぶん英語圏では情報が出ているでしょうが、半日作業遅延している状態では調べている暇もなく・・・。
SQL Server の RAISERROR と ADO.NET で嵌る
こんにちは、naginoです。
今日は技術情報ではなく、単なる記録です。
後日関連情報をまとめて別記事に仕立て直すかもしれません。
●始まり
ADO.NET で SQL Server に複雑な更新処理を行っています。
処理結果に応じて分岐したいのですが、結果を SELECT で返すのは美しくないと思い、RAISERROR で返そうとしました。
結果は、起動させた Excel で新しいブックを作成し、そこに表示させます。
ただし、更新処理はループで繰り返し行い、また失敗しても重大なエラーではないため、エラーレベルは 1(警告) が妥当です。
なお、更新するかどうかの条件自体も複雑なため、一括更新ではなくあえてループで 1 件ずつ更新しています。
また、処理時間がそれぞれ長く、各更新処理は独立なため、カーソルは使いません。
作成しているプログラムは、別会社開発の既存システムに対するサポートツールで、サーバ側に変更を加えたくないため、ストアドプロシージャも使いません。
●RAISERROR を受け取る
プログラム側で RAISERROR を受け取るには SqlInfoMessageEventHandler が必要なため、実装します。
実装に当たっては MSDN のサンプルを参考にします。
http://msdn.microsoft.com/ja-jp/library/a0hee08w(VS.80).aspx
イベントハンドラの第 2 引数からエラーの内容を取得できるため、その内容を呼び出し元に返します。
●問題発生
・・・返し方が困りました。
イベントハンドラの 第 1 引数は SqlConnection クラスのため、実際に処理を実装している独自クラスの参照が得られず、インスタンス変数にたどり着けません。
サンプルでは static なメソッドですので、元のクラスに static な変数を用意してしまうのは手ですが、個々の更新処理は独立で並列実行が可能なため、将来のマルチスレッド化の可能性を考えると採用したくありません。
例外を throw するのは手ですが、独自クラスでの単なる try~catch では補足できませんでした。
これは内部的には別スレッドのせいかも知れないのですが、調べ切れていません。
(現在の目標は実装であって、仕組みの理解ではないため)
●妥協策
結局イベントハンドラを static ではなくして、インスタンス変数に放り込むことを検討しましたが、これは static なメソッドと変数のケースと変わらないので、結局 static で行くことにしました。
多くても 1000 回程度の処理のため、マルチスレッドにするほどではないかなという判断です。
●謎
ASP.NET では RAISERROR は使わず、おとなしく SELECT で結果を返したほうが賢いのでしょうかね。
SqlInfoMessageEventHandler 内でログファイルに書き出しまでするというのであれば問題なさそうなんですが、こういう画面表示として出力するケースは実装方法が分からないです。
何か良い解決方法、ありませんかね・・・?