SlideShare a Scribd company logo
1 of 33
Download to read offline
TypeScript ファースト ステップ                         (Rev.2)
~ Any browser. Any host. Any OS. Open Source. ~


日本マイクロソフト株式会社
デベロッパー & プラットフォーム統括本部
エバンジェリスト
井上 章 (いのうえ あきら)
blogs.msdn.com/chack   twitter.com/chack411
セッションのゴール
Session Takeaways


  JavaScript と Web 技術のこれまで を振り返る

  TypeScript の全体像 を学ぶ
アプリ開発のための
    Web 技術
アプリケーション プラットフォームの変化
(Hardware + OS) ≒ (Browser + JavaScript)
アプリケーション プラットフォームの変化
(Hardware + OS) ≒ (Browser + JavaScript)
アプリケーション プラットフォームの変化
(Hardware + OS) ≒ (Browser + JavaScript)




     .hoge {
         color: red;
         background-color: #b6ff00;
         border-radius: 8px;
     }
アプリケーション プラットフォームの変化
(Hardware + OS) ≒ (Browser + JavaScript)



     Memory        Graphics                       Storage               Security
       Memory
    Management    Subsystems
                   Graphics
                                                 Storage
                                                   Cookies,          Security SSL,
                                                                      Sandbox,
                 Subsystems
     Management HTML, CSS, Canvas,
   Garbage Collection   Web GL, Audio, Video   IndexedDb, File API        CORS


       Threading
      Threading               Events
                              Events              Network
                                               Networking               APIs
                                                                      APIs
     Web Workers           DOM Events,         WebSockets, XHR,        GeoLocation,
                            Callbacks          Offline, Realtime         Sensors
"JavaScript is the
Assembly Language of the Web"
                    by Scott Hanselman.
JavaScript      (ECMAScript 3)   の課題点など
Problems of JavaScript

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

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

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

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

• 静的な型指定が不要

• ...
TypeScript
Any browser. Any host. Any OS. Open Source.
TypeScript
Any browser. Any host. Any OS. Open Source.
• JavaScript (ECMAScript 5) のスーパーセットとなる
 新しいプログラミング言語 (現在は 0.8.3 Preview)
 • TypeScript コードは JavaScript コードへコンパイル
 • コンパイラも TypeScript で書かれている (tsc.ts → tsc.js)

• 静的型付け、クラス、モジュールをサポート                             class Point {
                                                       x: number;
  • ECMAScript 6 (草案) をベース                             y: number;
                                                       constructor(x: number, y: number) {
                                                           this.x = x;
• コンパイラー及び開発環境                                         }
                                                           this.y = y;


  • Visual Studio 2012 プラグイン
                                                       dist() {
                                                           return Math.sqrt(
   http://go.Microsoft.com/fwlink/?LinkID=266563                this.x * this.x +
                                                                this.y * this.y );
 • Node.js Package Manager (npm)                       }
                                                       static origin = new Point(0, 0);
 • WebMatrix 2
                                                   }
TypeScript : 2 つの入り口
Official Web Sites

 www.typescriptlang.org   typescript.codeplex.com




     クイック スタート                 ソースコード
       サンプル                    ドキュメント
TypeScript : Playground
ブラウザベースで手軽に体験
TypeScript の開発環境 #1
Compiler and Development Tool

  • node.js パッケージ (npm)

    • node.js のインストール: http://nodejs.org/
    • TypeScript のインストール:


    • TypeScript のコンパイル:


    • TypeScript コンパイラの実体
     • … ¥npm¥node_modules¥typescript¥bin¥tsc.js
TypeScript の開発環境 #2
Compiler and Development Tool

  • WebMatrix 2 (http://www.microsoft.com/web/)
    • 拡張機能ギャラリーから “TypeScript Tools” をインストール
TypeScript の開発環境 #3
Compiler and Development Tool

  • TypeScript for Visual Studio 2012 (VS プラグイン)
    • http://go.microsoft.com/fwlink/?LinkID=266563
     ※ Visual Studio Express 2012 for Web でも利用可能

    • プロジェクト テンプレート
     • [新しいプロジェクト] – [TypeScript] – [HTML Application with TypeScript]




    • 新しい項目の追加
     • [新しい項目...] – [Visual C#] – [TypeScript File]



                                                       VS 拡張機能: Web Essentials 2012 で
                                                      プレビュー (分割ウィンドウ) が利用可能
TypeScript Type System
動的型付けから静的型付けへ
TypeScript Type System
• 静的型付けシステムの導入
  • JavaScript のあいまいさを排除
  • 安全性・可読性・生産性の向上                         interface I { }
                                           class C { }
  • 型付けするか否かは自由                            module M { }
   • 動的型付けの利点も生かせる                         { s: string; }
                                           number[]
                                           () => bool
• any 型: すべての型の基本
• プリミティブ (基本) 型
 • number, string, bool, null, undefined
• オブジェクト型
 • class, module, interface
• void 型: 戻り値なしの関数で使用
静的型付け記述例                                 (プリミティブ型)
TypeScript Type System Example

// Any                                              // Boolean
var x: any;         // 明示的                          var b: bool;       // 明示的
var y;              // y: any と同じ                   var yes = true;    // yes: bool = true と同じ
var z: { a; b; };   // z: { a: any; b: any; } と同じ   var no = false;    // no: bool = false と同じ

function f(x) {    // f(x: any): void と同じ
    console.log(x);                                 // Number
}                                                   var x: number;     // 明示的
                                                    var y = 0;         // y: number と同じ
                                                    var z = 123.456;   // z: number = 123.456 と同じ
// Null
var n: number = null;   // 基本型は Null 設定可
var x = null;           // x: any = null と同じ        // String
                                                    var s: string;     // 明示的
                                                    var empty = “”;    // empty: string = “” と同じ
// Undefined                                        var abc = ‘abc’;   // abc: string = “abc” と同じ
var n: number;     // n: number = undefined と同じ
var x = undefined; // x: any = undefined と同じ
TypeScript Classes, Modules
クラスとモジュール
TypeScript Classes and Modules
• モジュール化の利点                                interface I { }
  • 疎結合化と相互影響の低減、再利用性の向上                   class C { }
                                           module M { }
  • デバッグ、テスト、メンテナンスの容易性                    { s: string; }
  • 大規模開発への対応                              number[]
                                           () => bool
• ECMAScript 6 (草案) ベースの実装
  • Class, Module, Arrow Function 構文
  • オブジェクト指向プログラミングの導入

• ポピュラーなモジュールシステムもサポート                 (External Modules)
  • CommonJS / AMD modules
Interface, Class, Module 記述例
TypeScript Interface, Classes and Modules Example
// Interface                                    // Class
interface Mover {                               class Greeter {
  move(): void;                                   greeting: string;
  getStatus(): { speed: number; };                constructor (message: string) {
}                                                   this.greeting = message;
                                                  }
interface Shaker {                                greet() {
  shake(): void;                                    return "Hello, " + this.greeting;
  getStatus(): { frequency: number; };            }
}                                               }

interface MoverShaker extends Mover, Shaker {   var greeter = new Greeter(“world”);
  getStatus(): { speed: number;                 greeter.greet();
                 frequency: number; };
}
                                                // Module (Internal)
interface Person {                              module Sayings {
  FullName: string;                               export class Greeter {
  Age: number;                                      ...
}                                                 }
function greeter(person: Person) {              }
}                                               var greeter = new Sayings.Greeter("world");
TypeScript with jQuery
"No one writes JavaScript anymore.
They write jQuery."
型定義ファイル: *.d.ts
Typing 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 ギャラリーからも入手可能
TypeScript で jQuery を使う
Typing for the jQuery
• TypeScript ソースコードなどから jquery.d.ts を入手
 • typings¥jquery.d.ts または samples¥jquery¥jquery.d.ts

• *.ts ファイルに jquery.d.ts 参照を追加
  /// <reference path="jquery.d.ts" />
  ...
• インテリセンス (コード補完) も有効                 (Visual Studio 2012)
Roadmap & Summary
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
まとめ: TypeScript
Summary

Web アプリケーションをスケールさせるために ...

 • JavaScript 開発の必要性

 • JavaScript の OOP やモジュール化への対応

 • デバッグ・テスト工数の削減

 • C#, Java などの知識を生かした JavaScript 開発
まとめ: TypeScript
Summary

Web アプリケーションをスケールさせるために ...



               TypeScript
          Any browser. Any host. Any OS. Open Source.
関連リソース
Resources
•   Welcome to TypeScript
    •   http://www.typescriptlang.org/
•   TypeScript Home: CodePlex
    •   http://typescript.codeplex.com/
•   TypeScript Language Specification
    •   http://go.microsoft.com/fwlink/?LinkId=267121
•   Build 2012: Introducing TypeScript:
    A language for application-scale JavaScript development
    •   http://channel9.msdn.com/Events/Build/2012/3-012
•   日本 TypeScript ユーザー会
    •   https://groups.google.com/forum/#!forum/typescript-japan
•   Facebook: TypeScript グループ (wTypeScript)
    •   https://www.facebook.com/groups/wTypeScript/
Enjoy coding, Be happy with 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.

More Related Content

What's hot

Javaセキュアコーディングセミナー東京第1回 講義
Javaセキュアコーディングセミナー東京第1回 講義Javaセキュアコーディングセミナー東京第1回 講義
Javaセキュアコーディングセミナー東京第1回 講義JPCERT Coordination Center
 
LINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XMLLINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XMLShinichiAoyagi
 
T90 きっと怖くないmvvm & mvpvm
T90 きっと怖くないmvvm & mvpvmT90 きっと怖くないmvvm & mvpvm
T90 きっと怖くないmvvm & mvpvm伸男 伊藤
 
Sns suite presentation
Sns suite presentationSns suite presentation
Sns suite presentationJason Namkung
 
C++0x 言語の未来を語る
C++0x 言語の未来を語るC++0x 言語の未来を語る
C++0x 言語の未来を語るAkira Takahashi
 
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作るGoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作るMasahiro Wakame
 
非同期処理の基礎
非同期処理の基礎非同期処理の基礎
非同期処理の基礎信之 岩永
 
怪しいWindowsプログラミング
怪しいWindowsプログラミング怪しいWindowsプログラミング
怪しいWindowsプログラミングnagoya313
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in DartGoro Fuji
 
An Internal of LINQ to Objects
An Internal of LINQ to ObjectsAn Internal of LINQ to Objects
An Internal of LINQ to ObjectsYoshifumi Kawai
 
C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)信之 岩永
 
基礎からのCode Contracts
基礎からのCode Contracts基礎からのCode Contracts
基礎からのCode ContractsYoshifumi Kawai
 

What's hot (20)

Javaセキュアコーディングセミナー東京第1回 講義
Javaセキュアコーディングセミナー東京第1回 講義Javaセキュアコーディングセミナー東京第1回 講義
Javaセキュアコーディングセミナー東京第1回 講義
 
Objc lambda
Objc lambdaObjc lambda
Objc lambda
 
LINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XMLLINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XML
 
T90 きっと怖くないmvvm & mvpvm
T90 きっと怖くないmvvm & mvpvmT90 きっと怖くないmvvm & mvpvm
T90 きっと怖くないmvvm & mvpvm
 
Ajax 応用
Ajax 応用Ajax 応用
Ajax 応用
 
C++ マルチスレッド 入門
C++ マルチスレッド 入門C++ マルチスレッド 入門
C++ マルチスレッド 入門
 
Sns suite presentation
Sns suite presentationSns suite presentation
Sns suite presentation
 
C++0x 言語の未来を語る
C++0x 言語の未来を語るC++0x 言語の未来を語る
C++0x 言語の未来を語る
 
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作るGoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
 
Rpscala2011 0601
Rpscala2011 0601Rpscala2011 0601
Rpscala2011 0601
 
非同期処理の基礎
非同期処理の基礎非同期処理の基礎
非同期処理の基礎
 
怪しいWindowsプログラミング
怪しいWindowsプログラミング怪しいWindowsプログラミング
怪しいWindowsプログラミング
 
講座Java入門
講座Java入門講座Java入門
講座Java入門
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in Dart
 
An Internal of LINQ to Objects
An Internal of LINQ to ObjectsAn Internal of LINQ to Objects
An Internal of LINQ to Objects
 
覚醒!JavaScript
覚醒!JavaScript覚醒!JavaScript
覚醒!JavaScript
 
C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)
 
Unityで覚えるC#
Unityで覚えるC#Unityで覚えるC#
Unityで覚えるC#
 
基礎からのCode Contracts
基礎からのCode Contracts基礎からのCode Contracts
基礎からのCode Contracts
 
Cocos2d Shaders
Cocos2d ShadersCocos2d Shaders
Cocos2d Shaders
 

Similar to TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~

TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...Akira Inoue
 
TypeScript と Visual Studio Code
TypeScript と Visual Studio CodeTypeScript と Visual Studio Code
TypeScript と Visual Studio CodeAkira Inoue
 
TypeScriptへの入口
TypeScriptへの入口TypeScriptへの入口
TypeScriptへの入口Sunao Tomita
 
Visual Studio Codeで始めるTypeScript
Visual Studio Codeで始めるTypeScriptVisual Studio Codeで始めるTypeScript
Visual Studio Codeで始めるTypeScriptAkira Inoue
 
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめMikiya Okuno
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~normalian
 
復習も兼ねて!C#6.0-7.0
復習も兼ねて!C#6.0-7.0復習も兼ねて!C#6.0-7.0
復習も兼ねて!C#6.0-7.0Yuta Matsumura
 
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューTypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューAkira Inoue
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようAkira Shimosako
 
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話terurou
 
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめTypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめYu Nobuoka
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexprGenya Murakami
 
How to Make Own Framework built on OWIN
How to Make Own Framework built on OWINHow to Make Own Framework built on OWIN
How to Make Own Framework built on OWINYoshifumi Kawai
 
WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみたWASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみたMITSUNARI Shigeo
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSAyumi Goto
 

Similar to TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~ (20)

TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
 
TypeScript と Visual Studio Code
TypeScript と Visual Studio CodeTypeScript と Visual Studio Code
TypeScript と Visual Studio Code
 
TypeScriptへの入口
TypeScriptへの入口TypeScriptへの入口
TypeScriptへの入口
 
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャーNode.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
 
Visual Studio Codeで始めるTypeScript
Visual Studio Codeで始めるTypeScriptVisual Studio Codeで始めるTypeScript
Visual Studio Codeで始めるTypeScript
 
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめ
 
20010901
2001090120010901
20010901
 
実践 NestJS
実践 NestJS実践 NestJS
実践 NestJS
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
 
復習も兼ねて!C#6.0-7.0
復習も兼ねて!C#6.0-7.0復習も兼ねて!C#6.0-7.0
復習も兼ねて!C#6.0-7.0
 
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューTypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービュー
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
 
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話
 
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめTypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
 
HTML5&API総まくり
HTML5&API総まくりHTML5&API総まくり
HTML5&API総まくり
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
 
How to Make Own Framework built on OWIN
How to Make Own Framework built on OWINHow to Make Own Framework built on OWIN
How to Make Own Framework built on OWIN
 
WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみたWASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみた
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
 
20050903
2005090320050903
20050903
 

More from Akira Inoue

New Features in C# 10/11
New Features in C# 10/11New Features in C# 10/11
New Features in C# 10/11Akira Inoue
 
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデートデモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデートAkira Inoue
 
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要Akira Inoue
 
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデートAkira Inoue
 
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデート.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデートAkira Inoue
 
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!Akira Inoue
 
.NET の過去、現在、そして未来
.NET の過去、現在、そして未来.NET の過去、現在、そして未来
.NET の過去、現在、そして未来Akira Inoue
 
VS Code Live Share ~ 東京と大阪を繋いでみよう!
VS Code Live Share ~ 東京と大阪を繋いでみよう!VS Code Live Share ~ 東京と大阪を繋いでみよう!
VS Code Live Share ~ 東京と大阪を繋いでみよう!Akira Inoue
 
レガシー Web からの脱却 ~ 開発者が次に目指すべき Web アプリの姿とは?
レガシー Web からの脱却 ~ 開発者が次に目指すべき Web アプリの姿とは?レガシー Web からの脱却 ~ 開発者が次に目指すべき Web アプリの姿とは?
レガシー Web からの脱却 ~ 開発者が次に目指すべき Web アプリの姿とは?Akira Inoue
 
.NET の今と今後に思うこと (Tokyo Ver.)
.NET の今と今後に思うこと (Tokyo Ver.).NET の今と今後に思うこと (Tokyo Ver.)
.NET の今と今後に思うこと (Tokyo Ver.)Akira Inoue
 
.NET の今と今後に思うこと
.NET の今と今後に思うこと.NET の今と今後に思うこと
.NET の今と今後に思うことAkira Inoue
 
.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素Akira Inoue
 
VS Code & Flaskで作るCloud NativeアプリとDevOps
VS Code & Flaskで作るCloud NativeアプリとDevOpsVS Code & Flaskで作るCloud NativeアプリとDevOps
VS Code & Flaskで作るCloud NativeアプリとDevOpsAkira Inoue
 
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャAkira Inoue
 
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NETAkira Inoue
 
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイルVisual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイルAkira Inoue
 
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイルVisual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイルAkira Inoue
 
.NET の今 ~ 最新アップデートと 2019 年の展望
.NET の今 ~ 最新アップデートと 2019 年の展望.NET の今 ~ 最新アップデートと 2019 年の展望
.NET の今 ~ 最新アップデートと 2019 年の展望Akira Inoue
 
.NET today and tomorrow
.NET today and tomorrow.NET today and tomorrow
.NET today and tomorrowAkira Inoue
 
.NET の今とミライ (.NET Conf 2018 Japan Keynote)
.NET の今とミライ (.NET Conf 2018 Japan Keynote).NET の今とミライ (.NET Conf 2018 Japan Keynote)
.NET の今とミライ (.NET Conf 2018 Japan Keynote)Akira Inoue
 

More from Akira Inoue (20)

New Features in C# 10/11
New Features in C# 10/11New Features in C# 10/11
New Features in C# 10/11
 
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデートデモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
 
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
 
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート
 
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデート.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
 
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
 
.NET の過去、現在、そして未来
.NET の過去、現在、そして未来.NET の過去、現在、そして未来
.NET の過去、現在、そして未来
 
VS Code Live Share ~ 東京と大阪を繋いでみよう!
VS Code Live Share ~ 東京と大阪を繋いでみよう!VS Code Live Share ~ 東京と大阪を繋いでみよう!
VS Code Live Share ~ 東京と大阪を繋いでみよう!
 
レガシー Web からの脱却 ~ 開発者が次に目指すべき Web アプリの姿とは?
レガシー Web からの脱却 ~ 開発者が次に目指すべき Web アプリの姿とは?レガシー Web からの脱却 ~ 開発者が次に目指すべき Web アプリの姿とは?
レガシー Web からの脱却 ~ 開発者が次に目指すべき Web アプリの姿とは?
 
.NET の今と今後に思うこと (Tokyo Ver.)
.NET の今と今後に思うこと (Tokyo Ver.).NET の今と今後に思うこと (Tokyo Ver.)
.NET の今と今後に思うこと (Tokyo Ver.)
 
.NET の今と今後に思うこと
.NET の今と今後に思うこと.NET の今と今後に思うこと
.NET の今と今後に思うこと
 
.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素
 
VS Code & Flaskで作るCloud NativeアプリとDevOps
VS Code & Flaskで作るCloud NativeアプリとDevOpsVS Code & Flaskで作るCloud NativeアプリとDevOps
VS Code & Flaskで作るCloud NativeアプリとDevOps
 
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
 
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
 
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイルVisual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
 
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイルVisual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
 
.NET の今 ~ 最新アップデートと 2019 年の展望
.NET の今 ~ 最新アップデートと 2019 年の展望.NET の今 ~ 最新アップデートと 2019 年の展望
.NET の今 ~ 最新アップデートと 2019 年の展望
 
.NET today and tomorrow
.NET today and tomorrow.NET today and tomorrow
.NET today and tomorrow
 
.NET の今とミライ (.NET Conf 2018 Japan Keynote)
.NET の今とミライ (.NET Conf 2018 Japan Keynote).NET の今とミライ (.NET Conf 2018 Japan Keynote)
.NET の今とミライ (.NET Conf 2018 Japan Keynote)
 

Recently uploaded

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 

Recently uploaded (9)

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 

TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~

  • 1. TypeScript ファースト ステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~ 日本マイクロソフト株式会社 デベロッパー & プラットフォーム統括本部 エバンジェリスト 井上 章 (いのうえ あきら) blogs.msdn.com/chack twitter.com/chack411
  • 2. セッションのゴール Session Takeaways  JavaScript と Web 技術のこれまで を振り返る  TypeScript の全体像 を学ぶ
  • 6. アプリケーション プラットフォームの変化 (Hardware + OS) ≒ (Browser + JavaScript) .hoge { color: red; background-color: #b6ff00; border-radius: 8px; }
  • 7. アプリケーション プラットフォームの変化 (Hardware + OS) ≒ (Browser + JavaScript) Memory Graphics Storage Security Memory Management Subsystems Graphics Storage Cookies, Security SSL, Sandbox, Subsystems Management HTML, CSS, Canvas, Garbage Collection Web GL, Audio, Video IndexedDb, File API CORS Threading Threading Events Events Network Networking APIs APIs Web Workers DOM Events, WebSockets, XHR, GeoLocation, Callbacks Offline, Realtime Sensors
  • 8. "JavaScript is the Assembly Language of the Web" by Scott Hanselman.
  • 9. JavaScript (ECMAScript 3) の課題点など Problems of JavaScript • 大規模開発になるほどコードが複雑に • デバッグ・テスト工数の増加 • プロトタイプベース OO 言語 • 変数スコープのへの理解 • 静的な型指定が不要 • ...
  • 10. TypeScript Any browser. Any host. Any OS. Open Source.
  • 11. TypeScript Any browser. Any host. Any OS. Open Source. • JavaScript (ECMAScript 5) のスーパーセットとなる 新しいプログラミング言語 (現在は 0.8.3 Preview) • TypeScript コードは JavaScript コードへコンパイル • コンパイラも TypeScript で書かれている (tsc.ts → tsc.js) • 静的型付け、クラス、モジュールをサポート class Point { x: number; • ECMAScript 6 (草案) をベース y: number; constructor(x: number, y: number) { this.x = x; • コンパイラー及び開発環境 } this.y = y; • Visual Studio 2012 プラグイン dist() { return Math.sqrt( http://go.Microsoft.com/fwlink/?LinkID=266563 this.x * this.x + this.y * this.y ); • Node.js Package Manager (npm) } static origin = new Point(0, 0); • WebMatrix 2 }
  • 12. TypeScript : 2 つの入り口 Official Web Sites www.typescriptlang.org typescript.codeplex.com クイック スタート ソースコード サンプル ドキュメント
  • 14. TypeScript の開発環境 #1 Compiler and Development Tool • node.js パッケージ (npm) • node.js のインストール: http://nodejs.org/ • TypeScript のインストール: • TypeScript のコンパイル: • TypeScript コンパイラの実体 • … ¥npm¥node_modules¥typescript¥bin¥tsc.js
  • 15. TypeScript の開発環境 #2 Compiler and Development Tool • WebMatrix 2 (http://www.microsoft.com/web/) • 拡張機能ギャラリーから “TypeScript Tools” をインストール
  • 16. TypeScript の開発環境 #3 Compiler and Development Tool • TypeScript for Visual Studio 2012 (VS プラグイン) • http://go.microsoft.com/fwlink/?LinkID=266563 ※ Visual Studio Express 2012 for Web でも利用可能 • プロジェクト テンプレート • [新しいプロジェクト] – [TypeScript] – [HTML Application with TypeScript] • 新しい項目の追加 • [新しい項目...] – [Visual C#] – [TypeScript File] VS 拡張機能: Web Essentials 2012 で プレビュー (分割ウィンドウ) が利用可能
  • 18. 動的型付けから静的型付けへ TypeScript Type System • 静的型付けシステムの導入 • JavaScript のあいまいさを排除 • 安全性・可読性・生産性の向上 interface I { } class C { } • 型付けするか否かは自由 module M { } • 動的型付けの利点も生かせる { s: string; } number[] () => bool • any 型: すべての型の基本 • プリミティブ (基本) 型 • number, string, bool, null, undefined • オブジェクト型 • class, module, interface • void 型: 戻り値なしの関数で使用
  • 19. 静的型付け記述例 (プリミティブ型) TypeScript Type System Example // Any // Boolean var x: any; // 明示的 var b: bool; // 明示的 var y; // y: any と同じ var yes = true; // yes: bool = true と同じ var z: { a; b; }; // z: { a: any; b: any; } と同じ var no = false; // no: bool = false と同じ function f(x) { // f(x: any): void と同じ console.log(x); // Number } var x: number; // 明示的 var y = 0; // y: number と同じ var z = 123.456; // z: number = 123.456 と同じ // Null var n: number = null; // 基本型は Null 設定可 var x = null; // x: any = null と同じ // String var s: string; // 明示的 var empty = “”; // empty: string = “” と同じ // Undefined var abc = ‘abc’; // abc: string = “abc” と同じ var n: number; // n: number = undefined と同じ var x = undefined; // x: any = undefined と同じ
  • 21. クラスとモジュール TypeScript Classes and Modules • モジュール化の利点 interface I { } • 疎結合化と相互影響の低減、再利用性の向上 class C { } module M { } • デバッグ、テスト、メンテナンスの容易性 { s: string; } • 大規模開発への対応 number[] () => bool • ECMAScript 6 (草案) ベースの実装 • Class, Module, Arrow Function 構文 • オブジェクト指向プログラミングの導入 • ポピュラーなモジュールシステムもサポート (External Modules) • CommonJS / AMD modules
  • 22. Interface, Class, Module 記述例 TypeScript Interface, Classes and Modules Example // Interface // Class interface Mover { class Greeter { move(): void; greeting: string; getStatus(): { speed: number; }; constructor (message: string) { } this.greeting = message; } interface Shaker { greet() { shake(): void; return "Hello, " + this.greeting; getStatus(): { frequency: number; }; } } } interface MoverShaker extends Mover, Shaker { var greeter = new Greeter(“world”); getStatus(): { speed: number; greeter.greet(); frequency: number; }; } // Module (Internal) interface Person { module Sayings { FullName: string; export class Greeter { Age: number; ... } } function greeter(person: Person) { } } var greeter = new Sayings.Greeter("world");
  • 24. "No one writes JavaScript anymore. They write jQuery."
  • 25. 型定義ファイル: *.d.ts Typing 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 ギャラリーからも入手可能
  • 26. TypeScript で jQuery を使う Typing for the jQuery • TypeScript ソースコードなどから jquery.d.ts を入手 • typings¥jquery.d.ts または samples¥jquery¥jquery.d.ts • *.ts ファイルに jquery.d.ts 参照を追加 /// <reference path="jquery.d.ts" /> ... • インテリセンス (コード補完) も有効 (Visual Studio 2012)
  • 28. 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
  • 29. まとめ: TypeScript Summary Web アプリケーションをスケールさせるために ... • JavaScript 開発の必要性 • JavaScript の OOP やモジュール化への対応 • デバッグ・テスト工数の削減 • C#, Java などの知識を生かした JavaScript 開発
  • 30. まとめ: TypeScript Summary Web アプリケーションをスケールさせるために ... TypeScript Any browser. Any host. Any OS. Open Source.
  • 31. 関連リソース Resources • Welcome to TypeScript • http://www.typescriptlang.org/ • TypeScript Home: CodePlex • http://typescript.codeplex.com/ • TypeScript Language Specification • http://go.microsoft.com/fwlink/?LinkId=267121 • Build 2012: Introducing TypeScript: A language for application-scale JavaScript development • http://channel9.msdn.com/Events/Build/2012/3-012 • 日本 TypeScript ユーザー会 • https://groups.google.com/forum/#!forum/typescript-japan • Facebook: TypeScript グループ (wTypeScript) • https://www.facebook.com/groups/wTypeScript/
  • 32. Enjoy coding, Be happy with TypeScript.
  • 33. © 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.