Visual Studio 2008 概要
多様なアプリケーション開発の支援
Windows アプリケーション開発
モバイル アプリケーション開発
Office アプリケーション開発
Web アプリケーション開発
アプリケーション ライフサイクル マネジメント
の強化
まとめ
最新プラットフォームの能力を最大限に活用した
優れたユーザー体験を持つアプリケーションを、
迅速かつ高品質に構築するための機能を提供します
アプリケーション
ライフサイクル
マネジメントの強化
開発生産性のさらなる向上
最新プラットフォーム/
テクノロジの活用
Windows Vista,
the 2007 Office system,
Windows Server 2008,
SQL Server 2008 の
パワーを最大限引き出す
多様なアプリケーション
構築を支援
統合開発環境の強化
開発言語の強化
(C#, Visual Basic)
データアクセス テクノロ
ジの強化
チーム コラボレーション
の強化
テストの強化および品質
の確保
日本語ベータ版をご評価ください!
www.microsoft.com/japan/msdn/vstudio/future
.NET Framework 3.5
.NET Framework 3.5
ASP.NET AJAX
ASP.NET AJAX
LINQ
LINQ
etc
etc
…
…
.NET Framework 3.0
.NET Framework 3.0
Windows Presentation Foundation (WPF)
Windows Presentation Foundation (WPF)
Windows Workflow Foundation (WF)
Windows Workflow Foundation (WF)
Windows Communication Foundation (WCF)
Windows Communication Foundation (WCF)
Windows CardSpace
Windows CardSpace
.NET Framework 2.0
.NET Framework 2.0
基本クラス
基本クラス
ライブラリ
ライブラリ
ASP.NET
ASP.NET
ADO.NET
ADO.NET
Windows Form
Windows Form
幅広いプラットフォームに対応
.NET Framework 2.0
.NET Framework 3.0
.NET Framework 3.5
バージョンの違いを認識
コンパイラ
インテリセンス
ツールボックス
アセンブリ参照
など
ボタンが選択できない プロジェクト作成時に ドロップダウンで選択プラットフォームのパワーを最大限活用した
アプリケーションの実現
Web アプリケーション
Windows アプリケーション
モバイル アプリケーション
バックエンド システム
Office アプリケーション
ビジネス
パートナー
利用者がなにかの体験を
「楽しく」「面白く」「心地よく」
行える点を “提供価値”として考えるコンセプト
Windows XP
Windows Vista
ユーザーエクスペリエンスがもたらすもの
Visual Studio で WPF アプリケーションを開発
リッチな WPF デザイナ
分割ビュー
ドキュメント アウトライン
デザインのサポート
Windows フォームとの相互連携
既存の Windows フォームに新たなユーザー体験を
WPF ユーザーコントロールのデザイン機能
Expression Blend との組み合わせで
よりリッチなユーザー体験を実現
より高度なユーザー体験を実現するには Expression Blend を活用
アニメーション、etc.
処理の記述はもちろん、基本レイアウトなどに Visual Studio を
WPF WPF デザイナにより、デザイナにより、WPF WPFアプリケーションのアプリケーションの ユーザーインターフェイスをデザイン ユーザーインターフェイスをデザイン XAML XAML ナビゲーションによるナビゲーションによる 特定要素の選択 特定要素の選択 ドキュメント ドキュメントアウトラインにより、アウトラインにより、 特定要素の操作が容易に 特定要素の操作が容易に((タグの選択タグの選択 や、 や、Z Z オーダーの操作などオーダーの操作など)) 他のアプリケーションと同様、 他のアプリケーションと同様、 ドラッグ ドラッグ&&ドロップによりドロップにより コントロールを配置 コントロールを配置 コントロールの操作を支援 コントロールの操作を支援 ( (サイズ表示、スナップ線、などサイズ表示、スナップ線、など)) 分割ビューにより、デザインと 分割ビューにより、デザインと XAML XAML コードのいずれか一つ/両方コードのいずれか一つ/両方 を表示することが可能 を表示することが可能
WPF WPF ユーザーユーザーコントロールコントロールライブラリライブラリ を をWindows Windowsフォーム上に配置フォーム上に配置 デザイナ上で実際の デザイナ上で実際のUI UIが表示されるが表示される 作成した 作成したWPF WPFユーザーユーザーコントロールコントロールライブラリがツールボックス上にライブラリがツールボックス上に 自動的に表示され、ドラッグ
自動的に表示され、ドラッグ& & ドロップでドロップでWindowsWindows フォームに配置可能フォームに配置可能
※ WPF コントロール
System.Windows.Controls.TextBox text1 =
(System.Windows.Controls.TextBox) userControl1.FindName (“textBox1”);
text1.Text = “Windows フォームから WPF コントロール上のテキストを操作”;
Dim text1 As System.Windows.Controls.TextBox = _
userControl1.FindName (“textBox1”)
text1.Text = “Windows フォームから WPF コントロール上のテキストを操作”
VB
VB
C#
C#
ユーザーが求めるもの
• 使いがって
• カッコよさ
• 安心感
• 処理スピード
• どこでも使える
…
システム全体が
ユーザーエクスペリエンスをもたらす
ユーザーインターフェイス = ユーザーエクスペリエンス?
Windows アプリケーションに Web アプリケーションと
共通のサービスを提供
ASP.NET ベースのサービス提供
(認証、ロール、プロファイリング)
Web サービス経由でサービス連携
プロジェクト プロパティの設定
ネットワーク
Web アプリケーション
Web サービス
Windows アプリケーション
プロジェクト プロパティの [サービス] プロジェクト プロパティの [設定] // 読み込み textBox1.Text = Properties.Settings.Default.FavColor; // 書き込み Properties.Settings.Default.FavColor = textBox1.Text Properties.Settings.Default.Save(); ‘ 読み込み textBox1.Text = My.Settings.FavColor ‘ 書き込み My.Settings.FavColor = textBox1.Text My.Settings.Save()
VB
VB
C#
C#
<Profile> <Properties><add name = “FavColor” type=“string” /> <system.web.extensions> <scripting> <webServices> <profileService enabled=“true” readAccessProperties = “FavColor” writeAccessProperties = “FavColor”
Web.config
Web.config
サーバー側
クライアント側
クライアント クライアントアプリケーションアプリケーション サービスの利用を宣言 サービスの利用を宣言 [Web [Web 設定の読み込み設定の読み込み] ] により自により自 動的にプロファイル項目を設定 動的にプロファイル項目を設定 に追加 に追加((例例: FavColor): FavColor)ローカルでデータをキャッシュすることにより、オフライ
ン機能をアプリケーションに付加
2 つのデータ同期形式
① クライアント・サーバー形式
② Web サービス経由によるデータ同期
データの同期
クライアント : SQL Server Compact Edition 3.5
サーバー : .NET マネージプロバイダ対応データベース
クライアント側 クライアント側 同期プロバイダ 同期プロバイダ サーバー側 サーバー側 同期プロバイダ 同期プロバイダ SQL Server Compact Edition 3.5 データベースサービス
サーバー側 サーバー側 同期プロバイダ 同期プロバイダ[新しい項目の追加] で
[ローカル データベース キャッシュ] を選択
データ同期の構成をウィザードベースで設定
LocalDataCache1SyncAgent syncAgent = new LocalDataCache1SyncAgent(); syncAgent.Synchronize();
Dim syncAgent As LocalDataCache1SyncAgent = New LocalDataCache1SyncAgent() syncAgent.Synchronize()
VB
VB
C#
.NET Compact Framework 3.5 への対応による
サーバー連携機能の強化と、開発環境の強化
開発環境の強化
Windows Mobile SDK 5.0 への対応
Device Emulator 3.0
セキュリティや証明書の設定など詳細に
サーバーサイド連携の強化
WCF 連携
LINQ (Object, XML, DataSet)
モバイル アプリケーションの
品質向上
モバイル アプリケーション向け
単体テストの実現
the 2007 Office system 機能の最大限活用
数多くの Office 製品をターゲット
Excel, Word, Outlook, InfoPath, PowerPoint, Project, Visio
Office 2003 もサポート
優れたユーザー体験をもつ Office ソリューション実現
リボン、作業ウィンドウ
SharePoint ターゲットのアプリケーション開発
ワークフロー ソリューションの開発機能
Web パーツ開発の強化
配置の改善
ClickOnce 配置の実現による配置とセキュリティの強化
サーバーサイド /クライアント サイドにおける
2007 Office system の機能を最大限活用した
.NET アプリケーション構築が可能
ドキュメント レベル (Excel 2007)
リボンの
開発
次世代 Web アプリケーションの実現
AJAX スタイルの
リッチな Web アプリケーションの構築
ASP .NET AJAX への対応
強化された Web ページのデザイン ツール
Web テストの強化による品質向上
次世代 Web プラットフォームの構築
サービス・プロセスの強化
ASP.NET
ASP.NET
Web
Web
アプリケーション
アプリケーション
ASP.NET
ASP.NET
ASP.NET AJAX
ASP.NET AJAX
ASP.NET AJAX Extensions
Microsoft AJAX Library
ASP.NET
AJAX
Control Toolkit
ASP.NET
AJAX Futures
ASP.NET Web アプリケーション ClientCentric AJAX Web アプリケーション Server Centric AJAXAJAX Web Web アプリケーション
アプリケーション
“よりリッチな標準機能”
ServerCentric
AJAX
AJAX Web
Web アプリケーション
アプリケーション
その他
その他
Web
Web
アプリケーション
アプリケーション
その他
その他
ASP.NET AJAX Extensions
Î Visual Studio 2008 対応
ASP.NET AJAX のコア ライブラリ
ASP.NET の開発スタイルで AJAX アプリケーションを実現
AJAX のためのコア機能と Web コントロールを提供
ASP.NET AJAX Control Toolkit
ASP.NET 2.0 AJAX Extensions を拡張し、利便性の高い
拡張コントロールを提供
実際にお試しください!
Î
http://ajax.asp.net/ajaxtoolkit/
ASP.NET AJAX Futures (CTP)
ASP.NET AJAX の開発中の新機能を提供 (Silverlight 連携など)
(Microsoft AJAX Library)
AJAX 機能のコアとなる JavaScript ライブラリ
実際には ASP.NET に依存していない
ASP.NET AJAX のコア機能への対応
ASP.NET AJAX Extensions の統合
Visual Studio 対応
プロジェクト テンプレート、ツールボックス など
AJAX アプリケーション開発の支援強化
インテリセンスの強化
型リファレンス、DOM 対応、パラメータ ツール チップなど
独自の JavaScript に対するインテリセンス対応
スクリプトのデバッグ機能
ブレークポイントの設定
変数・式に対するウォッチ機能
デザイナ機能の強化
分割ビュー
デザインとソースを同時に表示し、
リアルタイムに同期
CSS デザイン機能の強化
マスタページのネストが可能に
新たな Web サーバーコントロール
<asp:DataPager>
ページング機能を提供
<asp:ListView>
編集機能付きのリスト表示
<asp:LinqDataSource>
LINQ データをデータソースに
REST スタイルの
Web サービス
マッシュアップ
ライトウェイト
SOAP ベースの
Web サービス
企業間連携
標準準拠
信頼性の確保
Windows Communication Foundation
によるサービスの実現
Web サービス標準のさらなる準拠
WS-AtomicTransaction 1.1
WS-ReliableMessaging 1.1
WS-SecureConversation
WS-Coordination 1.1
WCF サービス開発のツール強化
ウィザード、プロパティ、ウィンドウの強化
WCF サービス ホスト/ Web テスト クライアント
テスト用モジュールの作成が不要で、開発がスムーズに
WCF と WF のシームレスな統合
ワークフローから WCF サービスの呼び出しが可能
(SendActivity, ReceiveActivity の追加)
WCF
WCF 連携用の新たなアクティビティ連携用の新たなアクティビティ WCF
REST (Representational State Transfer)
Web のアーキテクチャ スタイル
HTTP プロトコルに依存
Verb (GET、POST、PUT、DELETE) を忠実に
使用
リソースの表現 (識別) = URI
URI = URL/URN
ステートレス
スケーラビリティの確保
サービス リポジトリ = ハイパーリンク
GET
GET
View it
Do
it
その他
その他
POST
POST
PUT
PUT
DELETE
DELETE
その他
その他
置換
部分更新
削除
ロールバック
追加
新規作成
呼び出し
抽出・読み出し
副作用がない
等冪性が期待できる
“何か”を実行
副作用がある
等冪性は期待できない
[ServiceContract]
public interface IPersonSerivce {
[OperationContract]
[WebGet(UriTemplate="Persons/{alias}",
RequestFormat=WebMessageFormat.Json,
ResponseFormat=WebMessageFormat.Json)]
Person GetPerson(String alias);
[OperationContract]
[WebInvoke(Method="POST“, RequestFormat=WebMessageFormat.Xml)]
void AddPerson(Person person);
}
[DataContract]
public class Person { ... }
バインディング & ビヘイビア
<bindings>
<webHttpBinding>
<binding name="myWebHttpBinding" />
</webHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="myEndpointBehavior">
<enableWebScript />
<!-- <webHttp /> -->
</behavior>
</endpointBehaviors>
</behaviors>
JavaScript
JavaScript
VB.NET
VB.NET
Public Class Person
Public Name As String
Public Age As Integer
End Class
var
p =
{
“Name”
:
“Mikio”
,
“Age”
: 32 };
{ “Name” : “Mikio”, “Age” : 32 }
Dim p As New Person
p.Name =
“Mikio”
p.Age = 32
JSON
表記
JSON
フォーマッタ
JSONJSON→→.NET.NETObjectObject .NET
.NETObjectObject→→JSONJSON
JavaScript におけるオブジェクト表記のための
フォーマット
AJAX Web アプリケーションにおけるメッセージ
軽量かつ JavaScript との信頼性が高い
標準化されている (IETF の RFC)
http://www.ietf.org/rfc/rfc4627.txt
事実上スタンダードとなっている
更新情報の配信フォーマット
ニュースサイトや Blog でお馴染み
フォーマット:
RSS 1.0 (Rich Site Summary)
http://web.resource.org/rss/1.0/
RSS 2.0 (Really Simple Syndication)
http://www.rssboard.org/rss-specification
Atom 1.0
コントラクト
[ServiceKnownType(typeof(Atom10FeedFormatter))]
[ServiceKnownType(typeof(Rss20FeedFormatter))]
[ServiceContract]
public interface IPictureSyndication {
[OperationContract]
[WebGet(UriTemplate="Images/{format}")]
SyndicationFeedFormatter<SyndicationFeed>
GetImage(String format);
}
上記は RSS2.0 と Atom 1.0 の両方に対応したフィード サービスの例
直接 Rss20FeedFormatter や Atom10FeedFormatter を返すサービスも作成可能
サービス実装クラス
public class PictureSyndication : IPictureSyndication {
public SyndicationFeedFormatter<SyndicationFeed>
GetImage(string format) {
var feed = new SyndicationFeed( ... );
...
if (format == "rss" ) {
return new RSS20FeedFormatter(feed);
}
else {
return new Atom10FeedFormatter(feed);
}
}
}
フィード データ生成コード
var feed = new SyndicationFeed(
"My Picture¥’s Feed”, "これは私の旅の思い出です",
new Uri("http://blogs.example.org/mikion"));
feed.Authors.Add(new SyndicationPerson("mikion@example.org"));
feed.Categories.Add(new SyndicationCategory("Picture");
feed.Description = new TextSyndicationContent("My pictures.");
var item = new SyndicationItem(
"Pike Place Market", "Pike Place Market でパシャリ",
new Uri("http://blogs.example.org/mikion/Pictures/1"),
DateTime.Now);
バインディング & ビヘイビア
<bindings>
<webHttpBinding>
<binding name="myWebHttpBinding" />
</webHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="myEndpointBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
エンドポイント
<services>
<service name="PictureSyndication">
<endpoint contract="IPictureSyndication"
binding="webHttpBinding"
bindingConfiguration="myWebHttpBinding"
behaviorConfiguration="myEndpoingbehavior"
/>
</service>
<services>
サービス ホスト
.svc ファイル (IIS ホスト時)
もしくは
ホスト アプリケーション コード (独自ホスト時)
<%@ServiceHost Service="PictureSyndication"
Factory="System.ServiceModel.Web.WebServiceHostFactory"
%>
var host = new WebServiceHost(typeof(PictureSyndication));
// ServiceHost クラスを使用する場合は WebHttpBehavior が必要
host.Open();
...
データ アクセスに関する
統一的な設計・プログラミング モデルの実現
LINQ (統合言語クエリ :
L
anguage
IN
tegrated
Q
uery)
開発言語の強化
C# 3.0 / VB 9.0
データセット デザイナ強化
TableAdapter と型付きデータセットを異なる
プロジェクトに配置
データ アクセス機能の強化により、一貫性のある開発
スタイルで、さまざまなデータをスムーズに扱うことが可能
統合言語クエリ (LINQ : Language-Integrated Query)
様々なデータソースへのアクセスに対し、統一的なプログラミング
モデルを提供
LINQ to SQL
LINQ to XML
LINQ to Objects
LINQ to DataSet
…など
.NET 言語に統合されたデータクエリ
例: var resut =
from x in company.products
select x;
複雑なデータ操作がより簡潔に
異なるデータ ソースに統一的な
アクセス ロジック
開発ツールのサポート
インテリセンスの対応など
オブジェクト SQL Server XML データ LINQ to ObjectsC#
VB
その他
.NET 統合言語クエリ
LINQ to SQL LINQ to XMLLINQ
LINQ
対応データソース
対応データソース
・・・
O/R マップが作成 される [新しい項目の追加] で LINQ to SQL クラスを追加 LINQ to SQL LINQ to Object
var favAuthors =
from auths in pubs.authors
where auths.state == “CA”
select x;
VB
VB
Dim favAuthors = _
From auths In pubs.authors _
Where auths.state = “CA” _
Select x
C#
C#
List<Authors> authors = new List<Authors> { new Author { … }, new Author { … }, }; 通常の List <> オブジェクト直接的な影響
売り上げ低迷
保守費用の増大
損害補填
…
間接的な影響
企業全体のイメージ・
信頼の低下
チームの士気低下
…
品質の低下による…
いかに生産性を維持しながら、品質を保つか
プロジェクト
プロジェクト
ステークホルダー
ステークホルダー
アーキテクト アーキテクト リード リードデベロッパーデベロッパー デベロッパー デベロッパー テスターテスター DB DB ProPro 構成・変更管理 構成・変更管理 自動ビルド 自動ビルド プロジェクト管理 プロジェクト管理 プロジェクト プロジェクトサイトサイトパフォーマンスの比較
取得済みのパフォーマンスの基準
値をもとに、差分を数値化。
パフォーマンスを全体最適を実現
する。
コード メトリクス
ソースコードを分析し、コードの
複雑性を数値化。
開発者は複雑度の数値を確認する
ことでリファクタリングやテスト
の強化を行うべき箇所を把握する
ことが可能となる。
常時結合
ソースコードのチェックイン時に自動的に
ビルドを実施し、変更された機能がほかの
機能に影響を与えないことを確認。チーム
間の連携を強化するとともに、アプリケー
ションの品質向上にも貢献。
コードコメント
ソースコードの行単位で変更履歴
を取得。作業項目と連動し、どの
行の修正をいつ・誰が・なぜ実施
したかを記録、追跡でき、チーム
間の連携を強化する。
ファイルのフォルダ比較
ソース管理内のファイルの比較を行う際、
ファイル単位ではなく、フォルダ単位で比
較が可能。これにより構成管理担当者の負
荷を軽減
Web テストの強化
Web テスト レコーダがJavaScript の記
録と自動再生に対応、AJAX アプリケー
ションの Web テストが実施可能
データソース
ビジネス レイヤ
データ レイヤ
データベース
クライアント
Windows アプリケーション Office アプリケーション モバイル アプリケーション Web ブラウザ アプリケーション ワークフロー ユーザーインターフェイスの制御 ユーザープロセスの制御 ビジネス ロジック ビジネス データ ビジネス プロセスの サービス公開プレゼンテーション
レイヤ
外部サービス
データアクセス ロジック 外部サービス アクセス ロジック アプリケーション ライフサイクル マネジメン ト (設計 ~ 開 発 ~ テスト、 構成管理/プロジェクト管理) アプリケーション ライフサイクル マネジメン ト (設計 ~ 開 発 ~ テスト、 構成管理/プロジェクト管理) アプリケーション共通機能 (配置、認証、 etc.) アプリケーション共通機能 (配置、認証、 etc.) Windows CardSpace Windows Presentation Foundation Windows Communication Foundation Windows Communication Foundation Windows Workflow Foundation ASP.NET AJAX VSTO 2005 for 2007 Office Windows Workflow Foundation WPF アプリケー ション開発の強化 2007 Office system アプリケーション 開発の強化 Web アプリケーション 開発の強化 モバイル アプリケーション 開発の強化 サービス・ プロセスの強化 統合言語クエリ (LINQ) チームコラボ レーションの 強化 開発言語の強化 データアクセスの 強化 クライアント アプリケーション サービス ローカル データ キャッシング 配置の強化 (ClickOnce) 次世代 Web プラットフォーム の強化 Windows フォームとの 相互連携 SharePoint Server 2007 への対応 テストおよび 品質の確保 ASP.NET AJAX への対応Visual Studio 2008 および Expression を
ぜひ実際にお試しください
Visual Studio 2008 情報 および ベータ版の入手
www.microsoft.com/japan/msdn/vstudio/future
Expression 情報 および 評価版の入手
www.microsoft.com/japan/products/expression
注意)
Visual Studio 2008 と Expression Blend 1.0 を現状連携するには
http://blogs.msdn.com/expression/archive/2007/05/29/working-with-visual-studio-code-name-
orcas-and-expression-blend.aspx
© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.