日本マイクロソフト株式会社
パートナー事業本部 パートナー技術統括本部
テクニカル エバンジェリスト
井上 章 (いのうえ あきら)
~ Any developer, Any app, Any platform ~
"今" 押さえておきたい!
Web アプリ開発の技術トレンドとツールの進化
井上 章 (いのうえ あきら)
テクニカル エバンジェリスト
http://aka.ms/chack
2008 年マイクロソフト入社。
主に .NET/ASP.NET や Visual Studio,
Microsoft Azure などの開発技術を専門とする
エバンジェリストとして、技術書籍やオンライ
ン記事などの執筆、さまざまな技術イベントで
の講演などを行う。
Bringing AI to Every Developer
Any developer
Any app
Any platform
Visual Studio Code
http://code.visualstudio.com/
Code optimized editor
Intellisense, debugging, GIT
Windows + Mac + Linux
Open Source
JavaScript is the
Assembly Language of the Web.
by Scott Hanselman.






TypeScript
TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
Any browser. Any host. Any OS. Open Source.
JavaScript that scales.
 JavaScript (ECMAScript) のスーパー セット (上位拡張)
となるオープン ソースのプログラミング言語
 0 0

 TypeScript コンパイラ (tsc) が JavaScript を生成

 静的型付け、クラス、モジュールをサポート

~ Any browser. Any host. Any OS. Open Source. ~
TypeScript
ファイル
(*.ts)
TypeScript
コンパイラ
(tsc)
JavaScript
ファイル
(*.js)
TypeScript
型定義ファイル
(*.d.ts)
JavaScript
実行エンジン
Node.js または
WSH (WScript.Shell)
で実行
ECMAScript 3 (ES3)
ECMAScript 5 (ES5)
ECMAScript 2015+ (ES2015, ES2016, ES2017, ESNEXT)
Web ブラウザーや
Node.js など
JavaScript のあいまいさを排除し、安全性・可読性・生産性を向上
interface I { }
class C { }
module M { }
{ s: string; }
number[]
() => boolean
// Number
let x: number; // 明示的
let y = 0; // y: number と同じ
// Boolean
let b: boolean; // 明示的
let yes = true; // yes: boolean = true と同じ
// String
let s: string; // 明示的
let n = "akira"; // n: string = "akira" と同じ
// Enum
enum Color { Red, Green, Blue }
let myColor = Color.Red;
Console.log(Color[myColor]); // Red
interface, class, namespace などのオブジェクト指向言語構文の導入
interface Dog {
name: string;
Talk: () => string;
}
class Corgi implements Dog {
name: string;
constructor(name: string) {
this.name = name;
}
Talk(): string {
return "Bow wow!";
}
}
class myDog extends Corgi {
constructor() {
super("reo");
}
Talk(): string {
return "Wan wan!";
}
}
namespace M {
export let reo = new myDog();
}
alert(M.reo.Talk());
 ジェネリクス (Generics) 構文
 アロー関数式 (ES2015 匿名関数構文)
 Get / Set アクセサ構文 (プロパティ)
class Human<T> { ... }
let me = new Human<string>("Akira");
let a = function (x: number) { return Math.sin(x); } // 標準式
let b = x => Math.sin(x)
class Who {
private _name: string;
get Name() { return this._name; }
set Name(name: string) { this._name = name; }
}
http://www.typescriptlang.org/samples/index.html
プラットフォームの変化
201620001990 2010
Cloud Native Apps
Serverless
Containers
Monolithic
Frontend
Middle tier
Backend
Microservice
1
Microservice
2
Microservice
3
Microservice
4
Microservice
5
Function 1
Function 2
Function 3
Function 4
Function 5
Function 6
Function 7
Function 8
Function 9
Function 10
Function 11
Function 12
• Azure Functions
• Web App for Containers
• Azure Container Instances
• Azure Container Service (AKS)
• Service Fabric
TypeScript
Any browser. Any host. Any OS. Open Source.
JavaScript のスーパーセット
ES 3 以上の環境をサポート
静的型付けとオブジェクト指向
多くの開発ツールのサポート
最新 ES 言語仕様を先取り
JS 開発生産性を向上
Visual Studio
Visual Studio for Mac
Visual Studio Code
Visual Studio App Center
Visual Studio Team Services
Microsoft Developers
© 2017 Microsoft Corporation. All rights reserved.
本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

"今" 押さえておきたい! Web アプリ開発の技術トレンドとツールの進化