■T3-302 Visual Studio 2008 概要
「Visual Studio 2008 概要」ということで、マイクロソフト近藤 和彦さんによる講演でした。 基調講演の後の午後最初のセッションとして、一番大きな会場であるAルームで行われたこともあり、注目されたセッションとなりました。
講演の冒頭では、製品開発時点における情報をもとにしており、製品出荷までに機能や仕様が変更となる可能性があることが説明されました。
(1).NET FrameworkとVisual Studioの歴史 2002年に「Visual Studio .NET 2002」が登場してから5年、.NETの進化と共に普及も急速に進んできた。 昨年はWindows Vistaや2007 Office Systemが登場し、プラットフォームが刷新された。しかし、開発環境であるVisual Studioは2005のままであり、新プラットフォームの機能を最大限に引き出すには至っていなかった。 来年の第一四半期で登場予定のVisual Studio 2008はこれらプラットフォームに完全に対応する。
(2)Visual Studio 2008の3つのポイント ・最新プラットフォーム(Windows Vista/2007 Office System/Windows Server 2008)の機能を最大限に引き出す。 ・開発生産性の向上として統合開発環境、開発言語、データアクセステクノロジーを強化。 ・アプリケーション ライフサイクル マネジメント(ALM)の強化。
(3)各機能での強化点や新機能について
■WPFアプリケーション開発の強化(Windows Presentation Foundation) 開発面ではデザイナの強化を挙げられており、分割ビューによりXAMLのコード部分とデザイン部分を同時に表示できるようになったのはありがたいと思いました。 また、現実として全てのアプリケーションをWPFに移行するのは不可能と思われるが、Windowsフォームとの相互連携が可能となっており、ユーザへのリッチなアプリケーションの提供が一部機能単位でできることになりそう。
■クライアントアプリケーションサービス WEBアプリケーションの特徴である「どのコンピュータからアクセスしても同じ設定で使用可能」をWindowsアプリケーションでも実現可能になる。認証やプロファイリング情報をWEBとWindowsアプリケーションで共有利用することができる。
■ローカルデータキャッシング ローカルでデータベースのデータをキャッシュすることでオフライン動作を可能とする。 クライアント側にはSQL Server Compact Edition3.5が、サーバー側には.NETマネージプロバイダ対応データベースが必要となる。 情報を検索する形の参照系のシステムであれば非常に有効であると感じた。しかし、情報の登録・更新を行うシステムに対しては、データ同期の面で注意しなければならないと思う。
■モバイルアプリケーション開発の強化 開発環境の強化ということで、以下へ対応 ・Windows Mobile SDK 5.0 ・Device Emulator 3.0 サーバーサイド連携の強化や、単体テスト機能による品質向上も強化された点とのこと。
■OFFICEアプリケーション開発の強化 Visual Studio 2008 Professional EditionにVSTO(Visual Studio Tools for Office System)が完全に統合される。 VSTOを利用してExcelやWordだけでなく、ProjectやVisio、PowerPointなど様々なOfficeアプリケーションをカスタマイズすることが可能となる。また、Officeリボンのカスタマイズをサポートし、新しくリボンの作成や既存リボンのカスタマイズが可能となる。 その他、Officeアプリケーションの配置の改善として、ClickOnceへ対応が行われた。これによりアプリケーションの配布が容易になると思われる。
■ASP.NET AJAX ASP.NET AJAXのコア機能であるASP.NET AJAX ExtentionsやASP.NET AJAX Control Toolkitが統合され、プロジェクトテンプレートやコントロールなど開発に必要なツールがサポートされる また、ASP.NET AJAXの強化点として、JavaScriptのインテリセンスとデバッグ対応は開発者としては非常にうれしい機能だと思う。
■WEBブラウザアプリケーション開発機能の強化 ・デザイン部分とソース部分の同時表示に対応し、リアルタイムに同期する。 ・CSSデザインの強化。 ・マスタページのネスト可能。 ・WEBサーバコントロールの追加。
■次世代WEBプラットフォームの実現 WCF(Windows Communication Foundation)およびWF(Windows Workflow Foundation)への対応が強化されており、WCFのテスト時にテストツールの自動起動などが挙げられていた。 また、ルール機能が強化されており、命名ルールを設定しておくことで制限をかけることができる。
■データアクセスの強化 統一的なプログラミングモデルとしてLINQ(言語統合クエリ : Language INtegrated Query)を提供。 SQL Server/XML/Objects/DataSetなどの様々なデータソースに対して統一アクセスが可能となる。 興味深い技術ではあるが、開発で実際に使われるかを考えると暫くは静観の様相が強いのではないか。やはり、SQLで蓄積されたノウハウや、パフォーマンスにおいて未知の部分があることを考えると、なかなか採用しづらい。 また、開発言語の強化も行われており、C#3.0やVB9.0のバージョンとなっている。
■アプリケーションライフサイクルマネジメントの強化 チームコラボレーションの強化と、テスト及び品質の確保を目的とした機能を提供。 ・複雑性の数値化(コードメトリクス)。 ・一度取得したパフォーマンスを基準値として指定し、比較を行う。 ・ソースのチェックイン時に自動ビルドを実行。 ・ソースコードの行単位で変更管理を実施。 ・フォルダ単位でファイル比較 ・AJAX アプリケーションのWeb テストが実施可能 ・.NET Frameworkの複数バージョンに対応
Visual Studio 2008はβ2版が既にリリースされており、誰でも評価することが可能となっている。 ダウンロードはhttp://www.microsoft.com/japan/msdn/vstudio/future/download.aspxから可能で、TeamSuite版で試用ができる。 最新の開発環境に触れるチャンスでもあるので、ぜひダウンロードして試用してみたい。
■Visual Studio 2008におけるVisual C#の新機能
Microsoft CorporationのC#テストチームに参加されている波村 大悟さんがスピーカーのセッションでした。 とにかくデモ!デモ!デモ!という感じで進んでいき、終了予定よりも20分以上も早く終わった のが印象的でした。このセッションの対象者は、ある程度C#3.0について知ってはいるけど実際にコードで書くと何がどう変わるの?コードから動作を見てみたいという人向けでした。 また、レポートとしてはセッションがデモを基にした説明が多かった為、解説された機能のまとめ とさせて頂きます。
(1)C#2.0からの改良点 C#が世の中に出て5年、「コードがきれいに書ける」「コーディングが楽しい」を目指して改良を行っている。(デモで各機能を紹介)
■自動実装プロパティ get/setの中身の省略ができるようになる。
public string CustomerID { get; set; }
とコードを記述するだけで、
private string __CustomerID; public string CustomerID { get { return this.__CustomerID; } set { this.__CustomerID = value; } } のコードに相当するものが自動的に生成される。
■オブジェクトイニシャライザ オブジェクトの初期化を以下の記述でできるようになる。
Customer cust1 = new Customer() { City = "Tokyo" , ContactName = "Moge Foo" , CustomerID = "Foo" };
これまでの以下のコードと同じ
Customer cust1 = new Customer(); cust1.City = "Tokyo"; cust1.ContactName = "Moge Foo"; cust1.CustomerID = "Foo";
■コレクション初期化子 コレクションの初期化を以下の記述でできるようになる。
Dictionary<string, int> dic = new Dictionary<string, int>() { {"hoge",1} , {"Foo",2} };
上記記述でコンパイラは以下のように解釈する。
string X = "hoge"; int Y = 1;
■ローカル変数の型推論 明確な型をしなくても、代入する値の型から変数の型を決定する。
var X = "hoge"; var Y = 5;
■クエリ式 SQL文のような問い合わせ構文が記述できる。 var query = from c in list where c.City == "London" select new { ContactName = c.ContactName , CustomerID = c.CustomerID };
■匿名型 匿名型(Anonymous Type)が作成できる。その場限りの使い捨てクラスのようなもの。 select new { ContactName = c.ContactName , CustomerID = c.CustomerID };
■ラムダ式 C#2.0で導入された匿名デリゲートよりも型推論の分コードを簡潔に書ける。 ラムダ式はデリゲートとは異なり、式のツリー構造を保持する。
■拡張メソッド 既存のクラスに変更を加えることなく新たにメソッドを追加できる。
■パーシャルメソッド partial class内限定でメソッドにpartialをつけることができる。 これによって宣言と定義を分けることができる。
■暗黙的に型指定された配列 配列初期化子で指定された要素から型が推測される。
(2)言語統合クエリ(LINQ) LINQでのデータアクセスはC#3.0 / VB9.0 その他の言語で可能。 LINQ to Objects / LINQ to DataSets / LINQ to XML などが用意されている。 また、LINQ to ActiveDirectoryなども計画されている。
セッションでは、LINQ to Objectsのデモを実施
(3)100%下位互換 LINQを実装しつつ100%下位互換を保つことが非常に難しかったとのこと。確かにLINQを導入しつつ、互換を保つのは大変だったと思う。言語仕様で追加ではなく変更があると、開発が終わって保守に入っているプロジェクトがプラットフォームを刷新したいと思った時に意外と大変な思いをすることになってしまう。 下位互換に関してはこれからも意識して保ち続けてもらいたい。
※C#3.0の言語概要は以下のURLからダウンロード可能となっている。 http://download.microsoft.com/download/B/6/C/B6C2DA74-08F9-4B18-BB10-CF6DB1A5CFE2/csharp_30_specification.doc
■ガジェットで VSUG しよう! ~<VSUG Watcher>ガジェットのご紹介~
Visual Studio User Groupのスタッフである井上 章氏によるストリートライブで、約15分という短い時間でしたが、コミュニティの紹介、ガジェットの紹介と技術説明からVisual Studioでの開発やデバッグに仕方まで、非常に内容は濃かったと思います。
1.まずはコミュニティの紹介。 Visual Studio User Group(VSUG:ブイサグ)とは、Visual Studioを取り巻く環境の向上を目指しているメーカー、スポンサー、ユーザーが集まるユーザーコミュニティと説明があり、VSUGの5カ条が紹介されました。 1. Give & Give 2. コードの下に平等 3. 少しずつでも形を残そう 4. 顔のみえるコミュニケーション 5. 「和・話・輪」3つの"わ"を大切に どなたでも参加可能で、http://vsug.jp/から登録可能とのことです。
2.次にいよいよVSUGガジェットの紹介。 VSUGガジェットとは、VSUGのニュース、フォーラム、スタッフ日記で更新されたコンテンツをちらっと確認できるガジェットツール。 (1)入手方法の説明。 Windows Vistaのガジェットの一覧を右クリックして、「ガジェットの追加」をクリックし、出てきたウィンドウの右下にある「オンラインで追加のガジェットを取得」を押下。表示されたページの一覧の「テクノロジー好き」を選択すると、現在(2007/8/24時点)は1つVSUG Watcherが登録されているので、ここから取得が可能。 http://vista.gallery.microsoft.com/vista/SideBar.aspx?mkt=ja-jp
(2)機能の紹介。 VSUG Watcherはサイドバーガジェットとして常駐し、ニュース、フォーラム、スタッフ日記の3つのカテゴリの最新情報を表示する。また、必要なカテゴリのみを表示することも可能で、例えばスタッフ日記を外すことなども可能。 そして、Windows Vistaを使用していない人の為に、VSUG Watcher for Googleも用意されているとのこと。
(3)開発者から見たサイドバーガジェット。 サイドバーガジェットの構成としてはHTML JavaScript CSS 画像コンテンツ ガジェットのAPIで、拡張子は「.gadget」となっている。しかし実際は、「cab」や「zip」形式で圧縮されているだけな為、拡張子を変更して解凍することが可能。
既にインストールしているガジェットは以下に保存されている。 標準ガジェット : C:\Program Files\Windows Sidebar\Gadgets ユーザが追加 : C:\Users\[ユーザ]\AppData\Local\Microsoft\Windows Sidebar これらに展開されているソースなどを簡単に見ることが可能。
サイドバーガジェットの開発としては、統合開発環境というものは現在のところ無い。 JavaScriptのアラート関数は無視されてしまう。GetElementbyIdを使用するにしてもUIのデザインを変えるのは面倒など、デバッグが非常にしにくい。 そこでVisual Studioの出番です。実はVisual Studioでデバッグを行うことが可能なのです。
準備としてインターネットオプションの設定が必要。 (1)Internet Explorer起動。 (2)[ツール]メニューの[インターネット オプション]を選択。 (3)[詳細設定]タブで、[ブラウズ]の[スクリプトのデバッグを使用しない]チェックボックスをオフにする。 その後、デバッグを行うJavaScriptに「debugger」ステートメントを埋め込み、実行することでその位置でVisual Studioへアタッチすることができ、JavaScriptのデバッグが可能となる。
今回のTech-Edではサイドバーガジェットに関するセッションは無く、取り上げているのはこのストリートライブだけでした。 内容にしても、コミュニティやガジェットの機能の紹介に止まらず、開発者としても収穫があったと思う内容で、とても面白かったと思います。
|