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

Akira Inoue
Akira InoueTechnical Evangelist en Microsoft Japan (日本マイクロソフト株式会社)
TypeScript ファースト ステップ
~ Any browser. Any host. Any OS. Open Source. ~


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


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

  TypeScript の全体像 を学ぶ
アプリ開発のための
    Web 技術
モダン Web アプリ エクスペリエンス
Single Page Application Architecture

                                       Scripting
                                        Engine
                           HTML
       View
                           HTTP
       Async

       View
       Model               REST        Web API
                           JSON
      クライアント                XML        サーバー
アプリ開発のための "Web 技術"
マルチデバイス エクスペリエンスと Web 技術

• HTML5 / CSS3
  • クロス プラットフォームにおける共通 UI マークアップ
• JavaScript
  • 第一級のプログラミング言語としての進化と普及
  • JavaScript ライブラリの普及やサーバー サイドへの応用
• Web API
  • 進む HTTP サービス (REST API) の利用と開発ニーズ
• ネイティブ アプリ開発への応用
  • Windows ストア アプリ開発 (HTML5 + CSS3 + JavaScript + WinRT)
アプリケーション プラットフォームの変化
(Hardware + OS) ≒ (Browser + JavaScript)



       Memory    Graphics
                              Storage      Security
     Management Subsystems


      Threading    Events    Networking     APIs
アプリケーション プラットフォームの変化
(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.1.1 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

  • Visual Studio 2012 プラグイン
    • TypeScript for Visual Studio 2012
     http://go.microsoft.com/fwlink/?LinkID=266563
     ※ Visual Studio Express 2012 for Web でも利用可能
    • プロジェクト テンプレート
     • [新しいプロジェクト] – [Visual C#] –
       [HTML Application with TypeScript]


    • 新しい項目の追加
     • [新しい項目...] – [Visual C#] –
       [TypeScript File]
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, literal
• 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
 • その他、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.8.1.1 (Alpha): 現在
• 0.8.2
  • Improve compiler performance
• 0.8.3
  • Generics
  • Improvements to type system to help model a larger variety of JS libraries
• 0.9.x
  • Align with ECMAScript 6
  • Community site for .d.ts files
  • Usability improvements to VS plugin
• 1.x
  • Async/Await, Mixins, Protected access
まとめ: 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

• Facebook: TypeScript グループ (wTypeScript)
  • https://www.facebook.com/groups/wTypeScript/
Enjoy coding, Be happy with TypeScript.
© 2012 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.
1 de 36

Recomendados

TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~ por
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~Akira Inoue
2.4K vistas33 diapositivas
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~ por
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~Akira Inoue
3.2K vistas55 diapositivas
わんくまT78 mfcを始めようとしてみた por
わんくまT78 mfcを始めようとしてみたわんくまT78 mfcを始めようとしてみた
わんくまT78 mfcを始めようとしてみた伸男 伊藤
3.3K vistas61 diapositivas
C++勉強会 por
C++勉強会C++勉強会
C++勉強会mitsutaka_takeda
3.2K vistas48 diapositivas
T93 com入門 por
T93 com入門T93 com入門
T93 com入門伸男 伊藤
2.3K vistas48 diapositivas
T90 きっと怖くないmvvm & mvpvm por
T90 きっと怖くないmvvm & mvpvmT90 きっと怖くないmvvm & mvpvm
T90 きっと怖くないmvvm & mvpvm伸男 伊藤
8.2K vistas70 diapositivas

Más contenido relacionado

La actualidad más candente

C#の書き方 por
C#の書き方C#の書き方
C#の書き方信之 岩永
9.1K vistas47 diapositivas
イマドキC++erのモテカワリソース管理術 por
イマドキC++erのモテカワリソース管理術イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術Kohsuke Yuasa
10.6K vistas114 diapositivas
C# コーディングガイドライン 2013/02/26 por
C# コーディングガイドライン 2013/02/26C# コーディングガイドライン 2013/02/26
C# コーディングガイドライン 2013/02/26Yoshihisa Ozaki
12.5K vistas53 diapositivas
LINQ 概要 + 結構便利な LINQ to XML por
LINQ 概要 + 結構便利な LINQ to XMLLINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XMLShinichiAoyagi
4.9K vistas22 diapositivas
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines por
Boost.勉強会#19東京 Effective Modern C++とC++ Core GuidelinesBoost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core GuidelinesShintarou Okada
13.1K vistas133 diapositivas
ActionScriptを使わないFlash勉強会 #1(前日版) por
ActionScriptを使わないFlash勉強会 #1(前日版)ActionScriptを使わないFlash勉強会 #1(前日版)
ActionScriptを使わないFlash勉強会 #1(前日版)libpanda
3.9K vistas84 diapositivas

La actualidad más candente(20)

イマドキC++erのモテカワリソース管理術 por Kohsuke Yuasa
イマドキC++erのモテカワリソース管理術イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術
Kohsuke Yuasa10.6K vistas
C# コーディングガイドライン 2013/02/26 por Yoshihisa Ozaki
C# コーディングガイドライン 2013/02/26C# コーディングガイドライン 2013/02/26
C# コーディングガイドライン 2013/02/26
Yoshihisa Ozaki12.5K vistas
LINQ 概要 + 結構便利な LINQ to XML por ShinichiAoyagi
LINQ 概要 + 結構便利な LINQ to XMLLINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XML
ShinichiAoyagi4.9K vistas
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines por Shintarou Okada
Boost.勉強会#19東京 Effective Modern C++とC++ Core GuidelinesBoost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Shintarou Okada13.1K vistas
ActionScriptを使わないFlash勉強会 #1(前日版) por libpanda
ActionScriptを使わないFlash勉強会 #1(前日版)ActionScriptを使わないFlash勉強会 #1(前日版)
ActionScriptを使わないFlash勉強会 #1(前日版)
libpanda3.9K vistas
Mvpvm pattern por Mami Shiino
Mvpvm patternMvpvm pattern
Mvpvm pattern
Mami Shiino2.7K vistas
大規模なギョームシステムにHaxeを採用してみた話 por terurou
大規模なギョームシステムにHaxeを採用してみた話大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話
terurou11.3K vistas
C++0x 言語の未来を語る por Akira Takahashi
C++0x 言語の未来を語るC++0x 言語の未来を語る
C++0x 言語の未来を語る
Akira Takahashi1.7K vistas
C++ マルチスレッドプログラミング por Kohsuke Yuasa
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa107.6K vistas
規格書で読むC++11のスレッド por Kohsuke Yuasa
規格書で読むC++11のスレッド規格書で読むC++11のスレッド
規格書で読むC++11のスレッド
Kohsuke Yuasa17.6K vistas
DoActionからJava VMバイトコードに変換する話 por emorins
DoActionからJava VMバイトコードに変換する話DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話
emorins2.5K vistas
Windows 8 ストア アプリ 開発 Tips por Fujio Kojima
Windows 8 ストア アプリ 開発 TipsWindows 8 ストア アプリ 開発 Tips
Windows 8 ストア アプリ 開発 Tips
Fujio Kojima9.3K vistas
知って得するC# por Shota Baba
知って得するC#知って得するC#
知って得するC#
Shota Baba9.7K vistas
Orange Cube 自社フレームワーク 2015/3 por 信之 岩永
Orange Cube 自社フレームワーク 2015/3Orange Cube 自社フレームワーク 2015/3
Orange Cube 自社フレームワーク 2015/3
信之 岩永22.8K vistas
.NET Core 2.x 時代の C# por 信之 岩永
.NET Core 2.x 時代の C#.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
信之 岩永6.2K vistas
基礎からのCode Contracts por Yoshifumi Kawai
基礎からのCode Contracts基礎からのCode Contracts
基礎からのCode Contracts
Yoshifumi Kawai14.1K vistas

Similar a TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~

TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc... por
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
3.6K vistas35 diapositivas
TypeScript と Visual Studio Code por
TypeScript と Visual Studio CodeTypeScript と Visual Studio Code
TypeScript と Visual Studio CodeAkira Inoue
1.1K vistas30 diapositivas
TypeScriptへの入口 por
TypeScriptへの入口TypeScriptへの入口
TypeScriptへの入口Sunao Tomita
22.2K vistas36 diapositivas
Node.jsでブラウザメッセンジャー por
Node.jsでブラウザメッセンジャーNode.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャーYahoo!デベロッパーネットワーク
4.2K vistas63 diapositivas
20010901 por
2001090120010901
20010901小野 修司
341 vistas17 diapositivas
DTraceによるMySQL解析ことはじめ por
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめMikiya Okuno
3.9K vistas34 diapositivas

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

TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc... por Akira Inoue
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 Inoue3.6K vistas
TypeScript と Visual Studio Code por Akira Inoue
TypeScript と Visual Studio CodeTypeScript と Visual Studio Code
TypeScript と Visual Studio Code
Akira Inoue1.1K vistas
TypeScriptへの入口 por Sunao Tomita
TypeScriptへの入口TypeScriptへの入口
TypeScriptへの入口
Sunao Tomita22.2K vistas
DTraceによるMySQL解析ことはじめ por Mikiya Okuno
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめ
Mikiya Okuno3.9K vistas
エンタープライズ分野での実践AngularJS por Ayumi Goto
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
Ayumi Goto9.7K vistas
WASM(WebAssembly)入門 ペアリング演算やってみた por MITSUNARI Shigeo
WASM(WebAssembly)入門 ペアリング演算やってみたWASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみた
MITSUNARI Shigeo3.3K vistas
復習も兼ねて!C#6.0-7.0 por Yuta Matsumura
復習も兼ねて!C#6.0-7.0復習も兼ねて!C#6.0-7.0
復習も兼ねて!C#6.0-7.0
Yuta Matsumura324 vistas
Visual Studio Codeで始めるTypeScript por Akira Inoue
Visual Studio Codeで始めるTypeScriptVisual Studio Codeで始めるTypeScript
Visual Studio Codeで始めるTypeScript
Akira Inoue1.3K vistas
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~ por normalian
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
normalian10.4K vistas
実践 NestJS por Ayumi Goto
実践 NestJS実践 NestJS
実践 NestJS
Ayumi Goto1.2K vistas
ちゃんとWeb会議スライド『Coffee script』 por H2O Space. Co., Ltd.
ちゃんとWeb会議スライド『Coffee script』ちゃんとWeb会議スライド『Coffee script』
ちゃんとWeb会議スライド『Coffee script』
H2O Space. Co., Ltd.1.9K vistas
オブジェクト指向開発におけるObject-Functional Programming por Tomoharu ASAMI
オブジェクト指向開発におけるObject-Functional Programmingオブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programming
Tomoharu ASAMI6.2K vistas
How to Make Own Framework built on OWIN por Yoshifumi Kawai
How to Make Own Framework built on OWINHow to Make Own Framework built on OWIN
How to Make Own Framework built on OWIN
Yoshifumi Kawai38.1K vistas
Scalaプログラミング・マニアックス por Tomoharu ASAMI
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
Tomoharu ASAMI6.5K vistas
TypeScript 言語処理系ことはじめ por Yu Nobuoka
TypeScript 言語処理系ことはじめTypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
Yu Nobuoka3.3K vistas
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話 por Akira Inoue
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Akira Inoue2K vistas
Software Development with Symfony por Atsuhiro Kubo
Software Development with SymfonySoftware Development with Symfony
Software Development with Symfony
Atsuhiro Kubo1.1K vistas

Más de Akira Inoue

New Features in C# 10/11 por
New Features in C# 10/11New Features in C# 10/11
New Features in C# 10/11Akira Inoue
147 vistas14 diapositivas
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート por
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデートデモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデートAkira Inoue
735 vistas20 diapositivas
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要 por
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要Akira Inoue
896 vistas12 diapositivas
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート por
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデートAkira Inoue
1.4K vistas20 diapositivas
.NET の過去、現在、そして未来 ~ .NET 最新アップデート por
.NET の過去、現在、そして未来 ~ .NET 最新アップデート.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデートAkira Inoue
2.7K vistas19 diapositivas
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース! por
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!Akira Inoue
900 vistas47 diapositivas

Más de Akira Inoue(20)

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

Último

SSH応用編_20231129.pdf por
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdficebreaker4
335 vistas13 diapositivas
Windows 11 information that can be used at the development site por
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development siteAtomu Hidaka
88 vistas41 diapositivas
The Things Stack説明資料 by The Things Industries por
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things IndustriesCRI Japan, Inc.
58 vistas29 diapositivas
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... por
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
120 vistas42 diapositivas
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向 por
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Hitachi, Ltd. OSS Solution Center.
60 vistas26 diapositivas

Último(11)

SSH応用編_20231129.pdf por icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4335 vistas
Windows 11 information that can be used at the development site por Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka88 vistas
The Things Stack説明資料 by The Things Industries por CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.58 vistas
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... por NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) por NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
さくらのひやおろし2023 por 法林浩之
さくらのひやおろし2023さくらのひやおろし2023
さくらのひやおろし2023
法林浩之96 vistas
SNMPセキュリティ超入門 por mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda355 vistas

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

  • 1. TypeScript ファースト ステップ ~ Any browser. Any host. Any OS. Open Source. ~ 日本マイクロソフト株式会社 デベロッパー & プラットフォーム統括本部 エバンジェリスト 井上 章 (いのうえ あきら) blogs.msdn.com/chack twitter.com/chack411
  • 2. セッションのゴール Session Takeaways  JavaScript と Web 技術のこれまで を振り返る  TypeScript の全体像 を学ぶ
  • 4. モダン Web アプリ エクスペリエンス Single Page Application Architecture Scripting Engine HTML View HTTP Async View Model REST Web API JSON クライアント XML サーバー
  • 5. アプリ開発のための "Web 技術" マルチデバイス エクスペリエンスと Web 技術 • HTML5 / CSS3 • クロス プラットフォームにおける共通 UI マークアップ • JavaScript • 第一級のプログラミング言語としての進化と普及 • JavaScript ライブラリの普及やサーバー サイドへの応用 • Web API • 進む HTTP サービス (REST API) の利用と開発ニーズ • ネイティブ アプリ開発への応用 • Windows ストア アプリ開発 (HTML5 + CSS3 + JavaScript + WinRT)
  • 6. アプリケーション プラットフォームの変化 (Hardware + OS) ≒ (Browser + JavaScript) Memory Graphics Storage Security Management Subsystems Threading Events Networking APIs
  • 9. アプリケーション プラットフォームの変化 (Hardware + OS) ≒ (Browser + JavaScript) .hoge { color: red; background-color: #b6ff00; border-radius: 8px; }
  • 10. アプリケーション プラットフォームの変化 (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
  • 11. "JavaScript is the Assembly Language of the Web" by Scott Hanselman.
  • 12. JavaScript (ECMAScript 3) の課題点など Problems of JavaScript • 大規模開発になるほどコードが複雑に • デバッグ・テスト工数の増加 • プロトタイプベース OO 言語 • 変数スコープのへの理解 • 静的な型指定が不要 • ...
  • 13. TypeScript Any browser. Any host. Any OS. Open Source.
  • 14. TypeScript Any browser. Any host. Any OS. Open Source. • JavaScript (ECMAScript 5) のスーパーセットとなる 新しいプログラミング言語 (現在は 0.8.1.1 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 }
  • 15. TypeScript : 2 つの入り口 Official Web Sites www.typescriptlang.org typescript.codeplex.com クイック スタート ソースコード サンプル ドキュメント
  • 17. TypeScript の開発環境 #1 Compiler and Development Tool • node.js パッケージ (npm) • node.js のインストール: http://nodejs.org/ • TypeScript のインストール: • TypeScript のコンパイル: • TypeScript コンパイラの実体 • … ¥npm¥node_modules¥typescript¥bin¥tsc.js
  • 18. TypeScript の開発環境 #2 Compiler and Development Tool • WebMatrix 2 (http://www.microsoft.com/web/) • 拡張機能ギャラリーから “TypeScript Tools” をインストール
  • 19. TypeScript の開発環境 #3 Compiler and Development Tool • Visual Studio 2012 プラグイン • TypeScript for Visual Studio 2012 http://go.microsoft.com/fwlink/?LinkID=266563 ※ Visual Studio Express 2012 for Web でも利用可能 • プロジェクト テンプレート • [新しいプロジェクト] – [Visual C#] – [HTML Application with TypeScript] • 新しい項目の追加 • [新しい項目...] – [Visual C#] – [TypeScript File]
  • 21. 動的型付けから静的型付けへ TypeScript Type System • 静的型付けシステムの導入 • JavaScript のあいまいさを排除 • 安全性・可読性・生産性の向上 interface I { } class C { } • 型付けするか否かは自由 module M { } • 動的型付けの利点も生かせる { s: string; } number[] () => bool • any 型: すべての型の基本 • プリミティブ (基本) 型 • number, string, bool, null, undefined • オブジェクト型 • class, module, interface, literal • void 型: 戻り値なしの関数で使用
  • 22. 静的型付け記述例 (プリミティブ型) 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 と同じ
  • 24. クラスとモジュール 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
  • 25. 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”);
  • 27. "No one writes JavaScript anymore. They write jQuery."
  • 28. 型定義ファイル: *.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 • その他、NuGet ギャラリーからも入手可能
  • 29. 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)
  • 31. TypeScript ロードマップ Compiler and Language Improvements • 0.8.1.1 (Alpha): 現在 • 0.8.2 • Improve compiler performance • 0.8.3 • Generics • Improvements to type system to help model a larger variety of JS libraries • 0.9.x • Align with ECMAScript 6 • Community site for .d.ts files • Usability improvements to VS plugin • 1.x • Async/Await, Mixins, Protected access
  • 32. まとめ: TypeScript Summary Web アプリケーションをスケールさせるために ... • JavaScript 開発の必要性 • JavaScript の OOP やモジュール化への対応 • デバッグ・テスト工数の削減 • C#, Java などの知識を生かした JavaScript 開発
  • 33. まとめ: TypeScript Summary Web アプリケーションをスケールさせるために ... TypeScript Any browser. Any host. Any OS. Open Source.
  • 34. 関連リソース 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 • Facebook: TypeScript グループ (wTypeScript) • https://www.facebook.com/groups/wTypeScript/
  • 35. Enjoy coding, Be happy with TypeScript.
  • 36. © 2012 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.