visual studio 2012 web 開発 ~ one asp.net から typescript まで ~

55
Visual Studio 2012 Web 開発 One ASP.NET から TypeScript まで 日本マイクロソフト株式会社 デベロッパー & プラットフォーム統括本部 エバンジェリスト 井上 ( いのうえ あきら ) http:// aka.ms/chack twitter.com/chack411

Upload: akira-inoue

Post on 15-Jan-2015

2.138 views

Category:

Technology


4 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

Visual Studio 2012 Web 開発

~ One ASP.NET から TypeScript まで ~

日本マイクロソフト株式会社

デベロッパー & プラットフォーム統括本部

エバンジェリスト

井上 章 (いのうえ あきら)

http://aka.ms/chack twitter.com/chack411

Page 2: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

セッションのゴールSession Takeaways

• Visual Studio 2012 の Web 開発新機能 を学ぶ

• Web 開発の最新情報 を知る

Page 3: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

アジェンダVisual Studio 2012 Web Developments

• Web 技術トレンドと ASP.NET

• マルチデバイス エクスペリエンス

• モダン Web アプリケーションとアーキテクチャの変化

• TypeScript

• サービス連携とクライアント実装

• Web 開発をサポートする Visual Studio 2012

• まとめ ~ Visual Studio 2012 Web 開発の今後 ~

Page 4: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

Web 技術トレンドと ASP.NET

Page 5: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

Productivity Future Vision近未来の IT, Cloud, Web ...

• 不可欠な Web 技術 (HTTP 1.1, HTML5, CSS3 ...)

• Web API の進化と普及 (REST, JSON ...)

• サーバー ロジック と クライアント UI の疎結合

• クライアント側実装の多様化

• HTML5, CSS3, ECMAScript 5

• マルチデバイス (PC, Tablet, Mobile …)

• レスポンシブ Web デザイン

Page 6: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

アプリ開発のための "Web 技術"マルチデバイス エクスペリエンスと Web 技術

• HTML5 / CSS3

• クロス プラットフォームにおける共通 UI マークアップ

• JavaScript

• 第一級のプログラミング言語としての進化と普及

• JavaScript ライブラリの普及やサーバー サイドへの応用

• Web API

• 進む HTTP サービス (REST API) の利用と開発ニーズ

• ネイティブ アプリ開発への応用

• Windows ストア アプリ開発 (WinRT, WinJS)

• PhoneGap, Titanium ...

Page 7: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

今、ASP.NET に何が起こっているのか?

Page 8: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

One ASP.NETASP.NET Web Stack

※ One ASP.NET - Making JSON Web APIs with ASP.NET MVC 4 Beta and ASP.NET Web API : www.hanselman.com

Page 9: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

• NuGet (ぬげっと / にゅーげっと)

– オープンソース ライブラリなどのパッケージ管理の仕組み(インストール、更新、配布)

– Visual Studio や WebMatrix などで標準採用

– NuGet ギャラリーを利用したパッケージの公開が可能

http://nuget.org/

Page 10: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

オープン ソースGit on CodePlex

• 対象ソース コード• ASP.NET MVC 4

• Web API

• Web Pages (Razor)

• 開発への貢献• Apache License 2.0 の元で公開

• Web または Git にて参照可能

• フィードバック、バグ修正、新機能提案のサブミット

• マイクロソフトのサポート• 製品としてサポートは継続

• 開発チームによる厳格なレビュー

http://aspnetwebstack.codeplex.com/

Page 11: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

ASP.NET Web フォームImprovements of ASP.NET Web Forms

• HTML5 対応プロジェクト テンプレート

• NuGet パッケージ マネージャー対応

• URL ルーティング

• モデル バインディング

• 強く型付けされたデータ コントロール

豊富なサーバー コントロール

イベント駆動型プログラミング

Page 12: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

ASP.NET MVC 4Improvements of ASP.NET MVC 4

• HTML5 対応プロジェクト テンプレート

• モバイル アプリケーション テンプレート

• Display Modes とビューの切り替え

• スクリプトの自動縮小化 & 結合処理

• Task, async, await による非同期アクション• Task-based Asynchronous Pattern (TAP)

HTML ベースの UI 開発

Model-View-Controller パターン

Page 13: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

マルチデバイスエクスペリエンス

Page 14: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

マルチデバイス エクスペリエンスDevices, Platforms, Browsers

• クロス デバイス

• PC, スマートフォン, タブレット ...

• クロス プラットフォーム

• iOS, Android, Windows ...

• クロス ブラウザー

• Web 標準と HTML5 / CSS3

• 実装レベル差異への対応

Page 15: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

レスポンシブ Web デザインMobile Web Experience

• CSS3 メディア クエリによるスタイルとレイアウト変更

• デザイン中心のマルチデバイス対応手法

• 共通した HTML マークアップによる UI エクスペリエンスの提供

Page 16: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

jQuery Mobileスマートフォン対応 UI ライブラリ

• ASP.NET MVC モバイル アプリケーション テンプレート

Page 17: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

モバイル デバイス判別とビューの切り替えモバイル デバイスへの対応

• ASP.NET MVC 4 Display Modes によるモバイル デバイスの判別

• モバイル向けビュー (*.mobile.*) へ自動切り替え

Page 18: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

マルチデバイス対応手法の選択Design and Mobile Experience

• レスポンシブ Web

• デザイン重視

• デスクトップとスマートフォンで共通した Web サイトの提供

• jQuery Mobile

• タッチ操作重視

• スマートフォンに特化した Web サイトの提供

• デバイス判別とビューの切り替え

• デバイス毎に最適化した Web サイトの提供

Page 19: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

モダン Web アプリケーションとアーキテクチャの変化

Page 20: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

モダン Web アプリ エクスペリエンスSingle Page Application Architecture

クライアント サーバー

ASP.NET

RESTJSONXML

HTML

View Model

HTTPView

Async

Web API

Page 21: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

Project Silk (シルク)

Client-Side Web Development for Modern Browsers

モダン ブラウザのためのクライアント サイド Web 開発ガイダンス

http://silk.codeplex.com/

Project Liike (リーケ)

Building Modern Mobile Web Apps

モダン モバイル ブラウザのためのクライアント サイド Web 開発ガイダンス

http://msdn.microsoft.com/en-us/library/hh994907

Project Silk and Liike

Page 22: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

シングル ページ アプリケーションSingle Page Application (SPA)

• 特徴• 単一ページ構成のクライアント中心実装

• 優れた Web UX とマルチデバイス対応

• JavaScript, Web API や HTML5 を活用

SPA

Page 23: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

シングル ページ アプリケーション構成Single Page Application (SPA)

/Home/IndexHTML, CSS

サーバー

Web UIHTML/CSS/JS

MVC 4

Data ServicesJSON/XML

Web API

Entity Framework

クライアント

knockout.js

jQuery*.js

Todo List

Todo Item

/Home/Index

/api/todolist

/api/todo

Page 24: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

"JavaScript is the Assembly Language of the Web"

by Scott Hanselman.

Page 25: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

JavaScript (ECMAScript 3) の課題点などProblems of JavaScript

• 大規模開発になるほどコードが複雑に

• デバッグ・テスト工数の増加

• プロトタイプベース OO 言語

• 変数スコープのへの理解

• 静的な型指定が不要

• ...

Page 26: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

TypeScriptAny browser. Any host. Any OS. Open Source.

Page 27: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

TypeScriptAny browser. Any host. Any OS. Open Source.

• JavaScript (ECMAScript 5) のスーパーセットとなる新しいプログラミング言語 (現在は 0.8.3 Preview)

• TypeScript コードは JavaScript コードへコンパイル

• コンパイラも TypeScript で書かれている (tsc.ts → tsc.js)

• 静的型付け、クラス、モジュールをサポート

• ECMAScript 6 (草案) をベース

• コンパイラー及び開発環境

• Visual Studio 2012 プラグインhttp://go.Microsoft.com/fwlink/?LinkID=266563

• Node.js Package Manager (npm)

• WebMatrix 2

class Point {x: number;y: number;constructor(x: number, y: number) {

this.x = x;this.y = y;

}dist() {

return Math.sqrt(this.x * this.x + this.y * this.y );

}static origin = new Point(0, 0);

}

Page 28: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

TypeScript : 2 つの入り口Official Web Sites

www.typescriptlang.org typescript.codeplex.com

クイックスタートサンプル

ソースコードドキュメント

Page 29: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

TypeScript : Playgroundブラウザベースで手軽に体験

Page 30: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

動的型付けから静的型付けへTypeScript Type System

• 静的型付けシステムの導入

• JavaScript のあいまいさを排除

• 安全性・可読性・生産性の向上

• 型付けするか否かは自由

• 動的型付けの利点も生かせる

• any 型: すべての型の基本

• プリミティブ (基本) 型

• number, string, bool, null, undefined

• オブジェクト型

• class, module, interface

• void 型: 戻り値なしの関数で使用

interface I { }class C { }module M { }{ s: string; }number[]() => bool

Page 31: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

静的型付け記述例 (プリミティブ型)TypeScript Type System Example

// Anyvar x: any; // 明示的var y; // y: any と同じvar z: { a; b; }; // z: { a: any; b: any; } と同じ

function f(x) { // f(x: any): void と同じconsole.log(x);

}

// Numbervar x: number; // 明示的var y = 0; // y: number と同じvar z = 123.456; // z: number = 123.456 と同じ

// Booleanvar b: bool; // 明示的var yes = true; // yes: bool = true と同じvar no = false; // no: bool = false と同じ

// Stringvar s: string; // 明示的var empty = “”; // empty: string = “” と同じvar abc = ‘abc’; // abc: string = “abc” と同じ

// Nullvar n: number = null; // 基本型は Null 設定可var x = null; // x: any = null と同じ

// Undefinedvar n: number; // n: number = undefined と同じvar x = undefined; // x: any = undefined と同じ

Page 32: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

クラスとモジュールTypeScript Classes and Modules

• モジュール化の利点

• 疎結合化と相互影響の低減、再利用性の向上

• デバッグ、テスト、メンテナンスの容易性

• 大規模開発への対応

• ECMAScript 6 (草案) ベースの実装

• Class, Module, Arrow Function 構文

• オブジェクト指向プログラミングの導入

• ポピュラーなモジュールシステムもサポート (External Modules)

• CommonJS / AMD modules

interface I { }class C { }module M { }{ s: string; }number[]() => bool

Page 33: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

Interface, Class, Module 記述例TypeScript Interface, Classes and Modules Example

// Interfaceinterface Mover {move(): void;getStatus(): { speed: number; };

}

interface Shaker {shake(): void;getStatus(): { frequency: number; };

}

interface MoverShaker extends Mover, Shaker {getStatus(): { speed: number;

frequency: number; };}

interface Person {FullName: string;Age: number;

}function greeter(person: Person) {}

// Module (Internal)module Sayings {export class Greeter {...

}}var greeter = new Sayings.Greeter("world");

// Classclass Greeter {greeting: string;constructor (message: string) {this.greeting = message;

}greet() {return "Hello, " + this.greeting;

}}

var greeter = new Greeter(“world”);greeter.greet();

Page 34: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

"No one writes JavaScript anymore.They write jQuery."

Page 35: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

型定義ファイル: *.d.tsTyping for Libraries

• 各種ライブラリの変数, オブジェクト, API の定義ファイル

• *.d.ts として環境毎に定義される

• 現在用意されている主な定義ファイル (TypeScript Source Code より)

• lib.d.ts – ECMAScript APIs, DOM APIs ...

• jquery.d.ts – jQuery

• jqueryui.d.ts – jQuery UI

• winjs.d.ts – WinJS

• winrt.d.ts – WinRT

• node.d.ts – node.js

• 下記、定義ファイル リポジトリ でも多数公開されているhttps://github.com/borisyankov/DefinitelyTyped

• その他、NuGet ギャラリーからも入手可能

Page 36: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

TypeScript で jQuery を使うTyping for the jQuery

• TypeScript ソースコードなどから jquery.d.ts を入手

• typings¥jquery.d.ts または samples¥jquery¥jquery.d.ts

• *.ts ファイルに jquery.d.ts 参照を追加

• インテリセンス (コード補完) も有効 (Visual Studio 2012)

/// <reference path="jquery.d.ts" />...

Page 37: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

TypeScript ロードマップCompiler and Language Improvements

• 0.9.x

• Generics

• Improve compiler performance

• Improvements to type system to help model a larger variety of JS libraries

• Align with ECMAScript 6

• Usability improvements to VS plugin

• 1.x

• Async/Await, Mixins, Protected access

• ES6-compatible codegen

Page 38: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

サービス連携とクライアント サイド実装

Page 39: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

ASP.NET Web APINew Framework for HTTP Services

• URL ルーティング

• モデル バインディング

• スキャフォールディング(w/ Entity Framework)

• OData クエリパラメータ(Microsoft.AspNet.WebApi.Odata)

RESTful サービス構築のためのフレームワーク

MVC 4 プロジェクト テンプレートの一部として提供

Page 40: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

ASP.NET SignalRAsync library for .NET

• クライアント - サーバー間の永続的コネクション

• トランスポートの自動ネゴシエーション

• WebSocket, Server-Sent Events, Forever Frames, Long Polling

• サーバーからクライアントへのプッシュや RPC 通信

• 1 サーバーあたり数千の接続を非同期で処理

リアルタイム・非同期・双方向通信ライブラリ

NuGet パッケージとして提供

Page 41: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

Demo: SignalR ShootR

ShootRhttp://signalrshootr.cloudapp.net/

Page 42: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

センサー クラウド with ASP.NETセンサー デバイス必須のクラウド コンピューティング時代へ

• クラウド コンピューティング

• サーバー サイドでの利用からクライアント サイドでの利用へ

• センサーが生み出すデータの活用とクラウド連携

• GPS 位置情報, ジャイロ, 温度, 湿度 ...

• クラウド連携による無限の可能性

• 通信インフラの進化と普及

• 高速ネットワーク

• 常時オンライン

Productivity Future Vision

http://www.microsoft.com/office/vision/

Page 43: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

バーチャル WMM w/ Kinect on CloudKinect with ASP.NET SignalR and Windows Azure

Cloud ServicesASP.NETSignalR

Azure Service Bus(or Redis)

.NET ConsoleApplication

HTTP HTTP

HTML5 WebApplication

http://wmm.cloudapp.net/

Page 44: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

Web 開発をサポートするVisual Studio 2012

Page 45: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

コーディング支援機能Improvements of Editors

• インテリセンス・コード スニペットの強化

• HTML5 / CSS3 スキーマ対応

• 開始タグと終了タグの同期リネーム

• CSS カラー ピッカー

• ベンダー プレフィックスとメディア クエリー

• ECMAScript 5 / HTML5 APIs サポート

• アウトライン表示

Page 46: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

さらに進化した Web 開発 IDEImprovements of Web Development

• Page Inspector (ページ インスペクター)

• HTML, CSS の確認と検査

• サーバー サイド コード連動

• ページのプレビュー

• 画像のサムネイル表示

• デバッグ用ブラウザーの切り替え機能

Page 47: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

Web アプリのデバッグImprovements of Debugging Tools

• JavaScript コンソール

• JavaScript エラーの確認

• 入力プロンプトによるスクリプト実行

• DOM Explorer

• 対話形式の HTML, CSS の表示と操作

• IIS Express

• 開発向けに最適化された軽量 Web サーバー

• これまでの ASP.NET 開発サーバーに代わり既定で使用される

Page 48: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

Web アプリのテストImprovements of Testing Tools

• JavaScript の単体テスト

• Jasmine / QUnit をテスト エクスプローラーに統合可能

• 拡張機能: Chutzpah※ test adapter for Visual Studio 2012

• Web パフォーマンスとロード テストのプロジェクト

• 容易なパフォーマンスとストレス テストの実施

• 同時アクセス ユーザー数や使用ブラウザーなどをシミュレート

※ フツパ

Page 49: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

Web アプリの発行Web Publishing Improvements

• 発行時の Web.config の変換とプレビュー機能

• 変換前と変換後の Web.config を IDE で比較可能に

• 容易になった Windows Azure への発行

• Windows Azure Web サイト, クラウド サービス

• SQL データベースへのマイグレーション

• TFS (Team Foundation Service) の利用

• TFS を利用したプロジェクト管理とソーシャル開発

• Windows Azure への発行と継続的インテグレーション

Page 50: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

Visual Studio 2012 Web 開発の今後

Page 51: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

Web アプリ開発のトレンドこれからの Web アプリケーションで考えなければならないこと

• マルチデバイス対応

• Web アプリか? ネイティブ アプリか?

• HTTP 通信ペイロード削減

• レスポンシブ Web デザイン

• デザイン・開発ツールの選択

• モダン Web アプリケーション

• Single Page Application (SPA) アーキテクチャ

• AJAX 処理における SEO 対策やブラウザ履歴管理やオフライン実行への対応

• HTTP REST サービス (Web API)

• リアルタイム コミュニケーション

Page 52: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

One ASP.NETASP.NET Web Stack

Page 53: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Page 54: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Page 55: Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~

© 2013 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.