本を読む

読書やコンピュータなどに関するメモ

「Visual Studio 2010 Ready Day」テクニカルセッションを聴いた

 4月13日、Visual Studio 2010のローンチイベント「Visual Studio 2010 Ready Day」に参加してきました。

 基調講演に続いて、各テクニカルセッションのメモです。技術者向けのイベントなので、やっぱりコードや工程を見せながらの説明がわかりやすいですね。

「"7" 時代の次世代 Windows 開発」荒井省三

VS2010 - 荒井氏セッション

 スキモノな開発者層に名の知れた荒井さんが、Windows 7の主にUIまわり(ただしSilverlightは除く)の開発について、Visual Studio 2010や.NET Framework 4での変更点を紹介しました。

 まず、Windows Formを使う場合。これは、従来と変わらないとのこと。変わった点として、追加されたChartコントロールがデモされました。

 続いて、WPFを使う場合。WPFも(MSのジンクスにいうような)3世代目を迎えた、という話から入りました。変更点としてまず、Windows Formのようにダブルクリックによるイベントハンドラの記述をサポートしたことが紹介されました。いままではXAMLの知識が必要だったのが敷居がさがった(でも知っておいたほうがいいけど)、と語られました。また、Visual Studio 2010からは、アニメーション以外はExpression Blend不要でVisual Studioだけで開発できることも紹介されました。

 デモでは、新しいコントロールとしてDate Pickerを紹介したあと、Windows Formでは難しいWPFの利点として、日付をブラックアウトするカスタマイズやベクターグラフィックスによるボタン、コードを書かずにデータグリッドを使う例などを紹介しました。また、WPFのデザイナーの新機能のコネタとして、WPFの膨大のプロパティを検索しながら選べるところも紹介されました。

 これらをふまえ、Windows FormとWPFの選択について、環境や表現力にあわせて選べばいいと言ったあと、「個人的にはWPFを押している。オーナードローなどは、できれば作らずに済ませたいので」と語りました。

 UIに続いて、ADO.NETのデータアクセス技術。DataSetは変更ないものの、Entity Frameworkを機能強化したことが紹介されました。Entity Frameworkは新たなデータモデルで、XMLで概念モデルを定義してLINQなどから呼び出せ、シリアライズしたときにXMLが大きくなるのを解消するそうです。短所はDataSetに比べるとオーバーヘッドは増えることで、長所は.NET Frameworkでの理解できるオブジェクトであればどこにでも持っていけることだと説明されました。なお、マネージプロバイダとして、Oracleプロバイダはサードパーティが充実してMicrosoft製品はあまり使われていないので廃止になったという話でした。

 続いて配布技術。インストーラープロジェクトはUACの扱いなどがあっていちから作り直されたこと、ノータッチデプロイメントは廃止されたことなどが紹介。また、ブラウザアプリケーションXBAPに完全信頼モードを追加して、ExcelやCOMを呼べるようにした(Silverlight4のブラウザ外アプリケーションと同じ)ことも説明されました。

 また配布技術では、.NET Framework 3.5SP1から導入されたクライアントプロファイルが4で機能強化され、WPFやVSTOのアプリも扱えるなども紹介。セキュリティ面では、Silverlightのようにレベル2のセキュリティ透過モデルが導入されて、完全信頼と部分信頼が分けられたことが語られました。

 .NET Frameworkの新機能としては、アプリケーションにあとからボタンなどの機能を追加したりできるプラグインアプリケーション機能がデモされました。ファイル名を変えるだけで画面が変わるもので、Managed Extensibility Frameworkと、それのベースとなる遅延バインディング、さらにそれのベースとなる動的言語ランタイム(DLR)などの組みあわせでできているという説明でした。

 ここまでの内容をふまえて、Windows 7の機能を使ったアプリの開発について説明とデモがなされました。まず、タスクバーとして、オーバーレイアイコンに、タスクバー上のプログレスバー、サムネイルクリップをXAMLからTaskbaItemInfoで設定。サムネイルツールバーをXAMLからTaskbaItemInfoのThumbButtonInfoで設定。ジャンプリストをXAMLからJumplistで設定できることを説明しました。

 続いてマルチタッチ。まず、5本指を検出できるところと、指の大きさも取れるところをデモしました。タッチ操作は、低レベルAPIでは、TouchDown、TouchMove、TouhUpイベントを検出します。ただし、高レベルAPIでは、パン、ズーミング、ローテーションのジェスチャーが取れるそうです。WPF独自のものとしては、タッチで操作した画面上のオブジェクトが壁で反射するところ(ManippulationStartingイベント、ManipulationDeltaイベント)なども紹介しました。

 リボンインターフェースについては、Ribbonコントロールライブラリをダウンロードして追加してみせました。スタイルシートで、Officeスタイルなどを指定できるそうです。また、Win32でも、RibbonコンパイラでWin32オブジェクトを生成して使えるという話も紹介されました。

 センサー&ロケーションについては、.NET FrameworkにロケーションAPIが追加された(ドライバは別途)ことを紹介。ロケーションセンサー+BingMapで現在地点を表示するところがデモされましたが、あいにく地下だったためかうまくいかなかったようです。

 最後にまとめとして、WPFは非常に作りやすくなったこと、Windows7アプリの機能はWPFならXAMLを書くだけで作れること、Windows Formは開発方法は変わっていないものの下回りが強化されていてWPFのデモと同じようなことができることが語られて終わりました。

「Silverlight 4 データ駆動アプリケーション開発概要」小高太郎

VS2010 - 小高氏セッション

 Silverlight 4について、「グラフィックなどではなく、データ処理にフォーカスして地味にやります」と前置きがあり、Silverlightを実アプリ開発に使うためのデータストレージまわりが解説されました。開発者のニーズに応えられる環境が強化されて、業務アプリに使えるようになった、というふれこみです。

 まず、Silverlightのデータアクセスの特徴は、データベースに直接接続できないことです。かわりに、SOAPやWCF Data Services(RESTベース)でWebサービスに非同期でアクセスします。データ共有のRESTfulプロトコル「OData」も紹介されました。

 SOAPとWCF Data Serviceの使い分けについては、フロントのCRUD処理にはWCF Data Service、コアのOLTP処理にはSOAP、というのがよいそうです。

 XAMLベースのデータバインドでは、Dependencyオブジェクトや、2つの項目にまたがるエラー検出(どちらか設定されていればOK、など)を扱うINotifyDataErrorInfo、StingFormat(入力データのフォーマットを変換する)などのバインディングプロパティなどが紹介されました。

 もう少し上の層の機能も紹介されました。リッチテキストや印刷、クリップボードなどが解説されましたが、クリップボードAPIで扱えるのはテキストのみという制限があるそうです。そのほか、コンボボックスで選んだ値に対応した値の表示をXAMLだけでとか、右クリックメニュー(従来はSilverlight自身のメニューだけ出ていた)なども紹介されました。

 Silverlightを使ってC/S開発のようなことをするWCF RIA Servicesも紹介されました。複数の層があると業務ロジックをどの層に持たせるかが問題になり、分散してしまうこともよくあります。WCF RIA Servicesでは、サーバーのロジックをクライアントへ射影する、つまり、サーバーのDomain Serviceを元にクライアントのDomain Contextを生成する、ということができるそうです。

 最後に、Silverlightは多数のプレゼンテーション層テクノロジーと多数のデータソースの選択肢をサポートしていると語って締めました。

「Visual Studio 2010 & .NET 4 時代の並列プログラミング」川西裕幸

VS2010 - 川西氏セッション

 先進的な技術者の間では何かと話題になっている並列プログラミングについて、Visual Studio 2010から標準でサポートしている機能を紹介しました。

 まず、「CPUが高速化するおかげでソフトはなにもしなくても高速化した時代があった」と皮肉まじりに語り、「今はマルチコア時代なので、並列化を意識しないソフトは速くならない」ということを説明しました。ある程度はコンパイラが助けてくれますが、オールマイティに並列化できるコンパイラはなく、人間が並列化を意識する必要があるそうです。

 そこで、Visual Studio 2010では、並列ライブラリー(実装パターン)、同時実行可能なデータ型、、同時実行ランタイム、並列ツール(デバッガやプロファイラ)をサポートしていることを、デモをまじえて紹介しました。

 デモしたプログラムは、一貫して二分木をたどるプログラム。まず素直な直列プログラムを実行してみせたあと、それを単純に左右をたどるごとにスレッドを生成するように変更、実行してもると返ってこなくなってしまうことから、スレッド生成は負荷やメモリがかかることを示しました。続いて、ThreadをVisual Studio 2010のタスク並行ライブラリー(TPL)のTaskに単純に置きかえて、直列プログラムより速くなるところを見せました。TPLはマネージ同時実行ランタイムのスレッドプールの上で動き、スレッド数が無闇に増えないようにしているそうです。

 続いて、やっかいな並列実行のデバッグ。スレッドやタスクとその持っている値をビジュアルに表示して、デッドロックも発見できるところをデモしました。

 Parallel.for関数に相当する関数を自作するところも見せました。Environment.ProcessorCount関数(コア数を得る)を見ながら処理を分けていましたが、スレッドの負荷が不均等なときに本物に負ける、というところを並列プロファイラで見せました。

 そのほか、PLINQや協調型データ構造(スレッドセーフなConcurrentStack<T>やBlockingCollection<T>など)も紹介。暗号化と圧縮をパイプライン化して同時処理するところなどをデモしました。

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/739-59252928

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad