SlideShare a Scribd company logo
1 of 40
JavaScript使いのための
TypeScript実践入門
2016/08/24
株式会社オープンウェブ・テクノロ
ジー
白石 俊平
本日のアジェンダ
• 自己紹介
• 書きながら学ぶTypeScript
• TypeScriptを仕事で使う
• TypeScriptのメリット・デメリット
• まとめ
• おまけ
自己紹介
• html5jファウンダー
• HTML5 Experts.jp編集長
• 株式会社オープンウェブ・テクノロジー
CEO
– TechFeedというサービスをやっています
TechFeed
• エンジニア向けキュレーションサービス
– 世界中からテック情報収集してランク付けしてます。
• 速い、深い、面白い!
• モバイルアプリはTypeScript(Angular2)で作ってます。
ぜひ使ってみてください。
http://techfeed.io
TechFeed
http://techfeed.io
http://facebook.com/techfeedapp
http://twitter.com/techfeedapp
最先端が、ここにある。
書きながら学ぶTypeScript
TypeScriptとは?
ES.next + 型 + α
ざっくり言い過ぎると
ライブコーディング
• https://goo.gl/zferqi にアクセス
TypeScript Playground
ES.nextな部分を試してみる
• ECMAScript6以降で導入された言語仕様は多
岐に登るが、その中でも特に仕様頻度が高い
ものを紹介
– 変数
– 文字列
– 配列
– オブジェクトリテラル
– デストラクチャリング
– 関数
– クラス
ES.nextな部分を試してみる:
変数
• letやconstが使えます。
– let: スコープが {...} に限定された変数の定義
• varは、関数スコープしか持たない
– const: 再代入不可のlet
• 正直、varの出番はもうありません
– ぼくらは、「基本const、たまにlet」というルールでやっ
てます
let a ='Hello';
const b = 'World';
b = 'Error'; // 再代入不可
ES.nextな部分を試してみる:
文字列
• テンプレート文字列
– バッククォートで囲んだ文字列内では、"${ }"
を使って式を埋め込める
let a ='Hello';
const b = 'World';
const c = `${a}, ${b}`;
ES.nextな部分を試してみる:
配列
• spread演算子
– 配列の中身をいい感じに展開
• for...of
– 配列(正確にはイテレータ)をループ処理
let a ='Hello';
const b = 'World';
const c = `${a}, ${b}`;
const d = [a, b];
const e = [1, 2, ...d]; // [1, 2, 'Hello', 'World']
e.push(...d); // [1,2,'Hello','World','Hello','World']
for (let f of e)
console.log(f); // 1, 2, Hello, World
ES.nextな部分を試してみる:
オブジェクトリテラル
• Property Shorthand
– 変数名と同名のプロパティを簡単に定義
– {a: a} みたいなのを {a} で宣言できる
– 個人的には異様に便利
• Computed PropertyNames
– {[式]: 値} とすることで、プロパティ名に式を使用できる
• Method properties
– オブジェクトのメンバーに関数を指定するのが楽になった
let a ='Hello';
const b = 'World';
const c = {a, b}; // {a: Hello, b: World}
const d = {[a]: a}; // {Hello: Hello}
const f = {
method() {}
};
ES.nextな部分を試してみる:
デストラクチャリング
• 配列やオブジェクトの中身を変数に展開
するのがとても楽に
• オブジェクトも配列も展開可能
const fullName =
{firstName: 'Shumpei', lastName: 'Shiraishi'};
// Destructuring
const {firstName, lastName} = fullName;
const array = [firstName, lastName];
// Destructuring
const [first, last] = array;
ES.nextな部分を試してみる:
関数1
• アロー関数
– ( ) => { 関数本体 } という形式で関数定義可能
– 関数本体が単一の式な場合、中括弧を省略可能
• デフォルト引数
– 関数の仮引数に「= デフォルト値」と指定することで、
引数のデフォルト値を指定可能
const sum = (a = 0, b = 0) => { return a + b; };
// 上と同義
// const sum = (a = 0, b = 0) => a + b;
ES.nextな部分を試してみる:
関数2
• Rest Parameter
– 関数の最後の仮引数を「...仮引数名」とすること
で、可変長引数を配列として扱うことが可能
• Spread Operator
– 「...配列」とすることで、配列を関数の引数に展
開できる
// 可変長引数を取る関数
const join = (s, ...rest) => [s, ...rest].join(' ');
let s = ['Wor', 'ld'];
// 配列を引数に展開
join('Hello,', ...s);
ES.nextな部分を試してみる:
クラス
• クラス定義
• コンストラクタ
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
ES.nextな部分を試してみる:
クラス
• 継承
– 親クラスのメンバーを引き継いだ新たなクラ
スを作れる
...(略)...
class MorningGreeter extends Greeter {
greet() {
return "Good morning, " + this.greeting;
}
}
ES.nextな部分を試してみる:
async/await
• Promiseベースの非同期なコードを、あたかも同期的なコードであるかのように記述できるようになる
– 処理は依然として非同期なので、並列度が下がることもない
– 一度使うとやめられないくらい便利。
• asyncキーワードは関数に指定する。
– 指定した関数内ではawaitを使える
– async関数の戻り値はPromiseとなる
• awaitキーワードは、Promiseを返す関数呼び出しの前に付与する
– Promiseを返す関数の結果を戻り値として受け取れる。
– エラーをtry-catchできる。
• TypeScriptのコンパイルターゲットをES6にしないと使えない(Promiseやyieldが必要なので)
// 指定したミリ秒待つ関数
function waitFor(millis): Promise<void> {
return new Promise(resolve => setTimeout(resolve, millis));
}
// 非同期関数
async function hello(seconds) {
try {
// awaitで、Promiseの終了を待ち合わせ
await waitFor(seconds * 1000);
alert('Hello');
} catch (e) {}
}
hello(3); // 3秒後に「Hello」が表示される
型+αを試してみる
• 型定義、型推論、ダックタイピング
• ジェネリクス
• クラス
• 抽象クラス
• インターフェース
• Enum(列挙型)
型+αを試してみる:
型定義、型推論、ダックタイピング
• 「変数名: 変数の型」という記述で変数の型
を明示的に指定可能
• 型を明示的に指定しない場合も、右辺から型
推論される。
• 型のORも可能(型Aもしくは型B)
let a: string ='Hello'; // 型を明示的に指定
const b = 'World'; // 型推論
b = 1; // 型が合わないためエラー
// 文字列もしくは数値型
let c: string | number = 'Hello';
c = 1; // 数値も代入可能
型+αを試してみる:
型定義、型推論、ダックタイピング
• 無名の型を簡単に宣言できる
• ダックタイピング
– 「もしもそれがアヒルのように歩き、アヒルのように鳴く
のなら、それはアヒルである」
– 宣言された型とは無関係のオブジェクトでも、インター
フェースが一致していれば同じ型だとみなされる
// 無名の型をアドホックに宣言
function hello(person: {name: string}): void {
alert(`Hello, ${person.name}`);
}
// 上の型と一致するオブジェクトを引数に指定
hello({name: 'shiraishi'});
型+αを試してみる:
ジェネリクス
• 型情報の一部をパラメータ化する機能
• 例えば、配列内容の具体的な型は、コー
ディング時に初めて決定する
// 文字列型の配列を宣言
let a: Array<string> = [];
// 配列については、以下のようにも指定可能
// let a: string[] = [];
a = 1; // 型が合わないためエラー
// 右辺の型から、型推論も行われる
let b = [1, 2, 3]; // numberの配列と推論される
b = 'a';
型+αを試してみる:
クラス
• アクセス修飾子
– private: そのクラス内でのみ利用可能
– protected: そのクラス、もしくは子クラスから利用可能
– public: あらゆる場所から利用可能
• コンストラクタでのプロパティ指定
– コンストラクタの仮引数に、アクセス修飾子をつけると、
クラスのプロパティ宣言を省略できる
class Greeter {
constructor(private greeting: string) {
}
greet() {
return "Hello, " + this.greeting;
}
}
型+αを試してみる:
抽象クラス
• abstractキーワードをクラスに指定すると抽象クラス
となる。
– 抽象クラスはnewできない
– 抽象クラスには抽象メソッド(中身なしのメソッド)を定
義できる
• 抽象クラスを継承するクラスは、抽象メソッドの実装
が求められる
abstract class Greeter {
constructor(private greeting: string) {
}
abstract greet();
}
// 抽象メソッドを実装していないのでエラー
class MorningGreeter extends Greeter {}
型+αを試してみる:
インターフェース
• interfaceキーワードを使用すると、インターフェース
を定義できる
• インターフェースは全てのメソッドが抽象メソッドと
なる
• implementsキーワードでインターフェースを実装する
クラスを作成可能
– 継承とは異なり、複数のインターフェースを実装可能
interface Greeter {
greet();
}
// 抽象メソッドを実装していないのでエラー
class MorningGreeter implements Greeter {}
型を試してみる:
Enum(列挙型)
• ひとまとまりの定数を型としてまとめら
れる機能
• Enumとは異なるが、代入可能な文字列を
型として定義する機能もある
// 0から始まる定数が割り振られる
enum RGB {RED, GREEN, YELLOW};
// 定数値を指定することも可能
// enum RGB {RED = 1, GREEN, YELLOW};
const color: RGB = RGB.RED;
// red/blue/yellowに限定した文字列型
let s: 'red' | 'blue' | 'yellow';
s = 'black';
TypeScriptを仕事で使う
TypeScriptを仕事で使う
• 仕事で使う、とは?
– 毎日書く→良いエディタが必要
– 複数人で書く→コーディングスタイルの統一
が必要
– コードが大規模→モジュール型開発
– 可能な限り自動化する→ビルドの自動化
TypeScriptを書くためのエディタ
エディタ 良い点(主観) 悪い点(主観)
Visual Studio Code そつなし 設定がJSON
WebStorm 多機能 重い
Atom そつなし
設定がGUI
ファイル検索・イン
デックスが重い
Sublime Text
(あんまり使ってない)
そつなし 設定がJSON
コーディングスタイルの統一
• tslintをつかおう
– コーディングスタイルについてかなり細かい
レベルまで設定可能
• ESLintには敵わないが
モジュール型開発
• モジュール構文(import/export)を使用
– TypeScriptは、モジュール構文を様々なスタ
イルのJavaScriptコードに変換可能
• モジュール分割すると、それをまとめ上
げる必要も生じる
– →モジュールバンドラー必須
モジュールバンドラー
• モジュールバンドラーで、import/exportを
JSコードに変換
import {Component} from 'angular2/core'
↓ (TypeScriptコンパイラ)
var Component = require('angular2/core').Component;
↓ (モジュールバンドラーがrequireをブラウザ上で使えるよう変
換)
var component_1 = __webpack_require__(1);
モジュールバンドラー
• TechFeedではWebpackを選択
– 実績豊富
– React界隈でのデファクト
– なんでもできそう
– 既に下調べが済んでいた
• その他の選択肢について
– Browserify…最古参
– System.js
• 現在のところAngular2公式?
• 後発なため情報が少なめ
• JSPMも組み合わせる必要あり?
• 参考文献
– http://webpack.github.io/docs/comparison.html
– http://ilikekillnerds.com/2015/07/jspm-vs-webpack/
ビルドの自動化
• コード修正→再ビルド→(ビルド終了を
待って)ブラウザリロードを自動化する
必要がある
• TechFeedではgulp+Webpackを組み合わ
せ
– Webpackは超多機能だが、gulpで書くほうが
楽なことも多数
初公開!TechFeedのビルド環境
• Angular2
• Ionic
• gulp
• Webpack
• (Cordova)
TypeScriptの
メリット・デメリット
TypeScriptのメリット
• 最新の言語仕様を思う存分使える
• 静的型付け言語である
– コンパイラによるコードの静的解析
– コードがより文書的
– ツールによるコーディング補助
• 入力補完
• リファクタリング
TypeScriptのデメリット
• ツールチェインがまだ未成熟
– WebStormといえどもまだまだ
• JavaScriptコードとの統合はやはりつらい
– 基本的には型定義ファイル(d.ts)必要
– JSとTSの間には浅くない溝がある
– なので、プロジェクトの一部をTSで…というのは厳
しい
• 静的型付け言語である
– 記述が冗長になりがち
– JSほど気楽に書き下させない
– ビルドが速くない(これはBabelでも同じだが…)
まとめ
TypeScriptはよい言語だがちとつらい

More Related Content

What's hot

JJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャ
JJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャJJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャ
JJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャ
Kaname Motoyama
 
The Lego Scrum Awakens
The Lego Scrum AwakensThe Lego Scrum Awakens
The Lego Scrum Awakens
Masanori Kado
 
ジェネリクスの基礎と クラス設計への応用
ジェネリクスの基礎とクラス設計への応用ジェネリクスの基礎とクラス設計への応用
ジェネリクスの基礎と クラス設計への応用
nagise
 

What's hot (20)

UXデザインのはじめの一歩を体験しよう! ユーザーインタビューの基本 | UXデザイン実践セミナー 第1回
UXデザインのはじめの一歩を体験しよう! ユーザーインタビューの基本 | UXデザイン実践セミナー 第1回UXデザインのはじめの一歩を体験しよう! ユーザーインタビューの基本 | UXデザイン実践セミナー 第1回
UXデザインのはじめの一歩を体験しよう! ユーザーインタビューの基本 | UXデザイン実践セミナー 第1回
 
仕様書作成のポイント_180814
仕様書作成のポイント_180814仕様書作成のポイント_180814
仕様書作成のポイント_180814
 
AIによる未来のUXデサイン? 〜 ChatGPT・AIartなど 〜
AIによる未来のUXデサイン? 〜 ChatGPT・AIartなど 〜AIによる未来のUXデサイン? 〜 ChatGPT・AIartなど 〜
AIによる未来のUXデサイン? 〜 ChatGPT・AIartなど 〜
 
JJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャ
JJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャJJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャ
JJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャ
 
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
 
ふつうの受託開発チームのつくりかた
ふつうの受託開発チームのつくりかたふつうの受託開発チームのつくりかた
ふつうの受託開発チームのつくりかた
 
インフラエンジニアってなんでしたっけ(仮)
インフラエンジニアってなんでしたっけ(仮)インフラエンジニアってなんでしたっけ(仮)
インフラエンジニアってなんでしたっけ(仮)
 
Smalltalkだめ自慢
Smalltalkだめ自慢Smalltalkだめ自慢
Smalltalkだめ自慢
 
The Lego Scrum Awakens
The Lego Scrum AwakensThe Lego Scrum Awakens
The Lego Scrum Awakens
 
ジェネリクスの基礎と クラス設計への応用
ジェネリクスの基礎とクラス設計への応用ジェネリクスの基礎とクラス設計への応用
ジェネリクスの基礎と クラス設計への応用
 
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
 
ウェブパフォーマンスの基礎とこれから
ウェブパフォーマンスの基礎とこれからウェブパフォーマンスの基礎とこれから
ウェブパフォーマンスの基礎とこれから
 
Multibranch pipelineでいろいろ学んだこと
Multibranch pipelineでいろいろ学んだことMultibranch pipelineでいろいろ学んだこと
Multibranch pipelineでいろいろ学んだこと
 
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
 
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
 
ワークショップのアイデア発想で「AIでユーザーに最適な情報を出します」とか言うな
ワークショップのアイデア発想で「AIでユーザーに最適な情報を出します」とか言うなワークショップのアイデア発想で「AIでユーザーに最適な情報を出します」とか言うな
ワークショップのアイデア発想で「AIでユーザーに最適な情報を出します」とか言うな
 
UXデザインのはじめの一歩を体験しよう! ユーザーインタビューの基本 [第2版] | UXデザイン実践セミナー 第2回
UXデザインのはじめの一歩を体験しよう! ユーザーインタビューの基本 [第2版] | UXデザイン実践セミナー 第2回UXデザインのはじめの一歩を体験しよう! ユーザーインタビューの基本 [第2版] | UXデザイン実践セミナー 第2回
UXデザインのはじめの一歩を体験しよう! ユーザーインタビューの基本 [第2版] | UXデザイン実践セミナー 第2回
 
プロが生実演! 「ユーザーインタビュー」の深掘りテクニックを大公開!
プロが生実演! 「ユーザーインタビュー」の深掘りテクニックを大公開!プロが生実演! 「ユーザーインタビュー」の深掘りテクニックを大公開!
プロが生実演! 「ユーザーインタビュー」の深掘りテクニックを大公開!
 
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
 

Viewers also liked

HTML5を使うためのプログレッシブエンハンスメント 〜すべての人に確実に情報を届けるために〜SwapSkillsFreeEventProgressiv...
HTML5を使うためのプログレッシブエンハンスメント 〜すべての人に確実に情報を届けるために〜SwapSkillsFreeEventProgressiv...HTML5を使うためのプログレッシブエンハンスメント 〜すべての人に確実に情報を届けるために〜SwapSkillsFreeEventProgressiv...
HTML5を使うためのプログレッシブエンハンスメント 〜すべての人に確実に情報を届けるために〜SwapSkillsFreeEventProgressiv...
SwapSkills
 

Viewers also liked (20)

jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶjQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
 
TypeScript超入門
TypeScript超入門TypeScript超入門
TypeScript超入門
 
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
 
TypeScriptは明日から使うべき
TypeScriptは明日から使うべきTypeScriptは明日から使うべき
TypeScriptは明日から使うべき
 
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた
 
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
 
jQuery+TypeScriptやってみた
jQuery+TypeScriptやってみたjQuery+TypeScriptやってみた
jQuery+TypeScriptやってみた
 
nioで作ったBufferedWriterに変えたら例外になった
nioで作ったBufferedWriterに変えたら例外になったnioで作ったBufferedWriterに変えたら例外になった
nioで作ったBufferedWriterに変えたら例外になった
 
Javascriptの歴史
Javascriptの歴史Javascriptの歴史
Javascriptの歴史
 
Let’s angular js!!
Let’s angular js!!Let’s angular js!!
Let’s angular js!!
 
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
 
React+TypeScriptもいいぞ
React+TypeScriptもいいぞReact+TypeScriptもいいぞ
React+TypeScriptもいいぞ
 
Workshop1-01
Workshop1-01Workshop1-01
Workshop1-01
 
HTML5を使うためのプログレッシブエンハンスメント 〜すべての人に確実に情報を届けるために〜SwapSkillsFreeEventProgressiv...
HTML5を使うためのプログレッシブエンハンスメント 〜すべての人に確実に情報を届けるために〜SwapSkillsFreeEventProgressiv...HTML5を使うためのプログレッシブエンハンスメント 〜すべての人に確実に情報を届けるために〜SwapSkillsFreeEventProgressiv...
HTML5を使うためのプログレッシブエンハンスメント 〜すべての人に確実に情報を届けるために〜SwapSkillsFreeEventProgressiv...
 
最近のHTML5はどうなってるのか
最近のHTML5はどうなってるのか最近のHTML5はどうなってるのか
最近のHTML5はどうなってるのか
 
最近のWeb関連技術の動向あれこれ
最近のWeb関連技術の動向あれこれ最近のWeb関連技術の動向あれこれ
最近のWeb関連技術の動向あれこれ
 
モバイルWebアプリのこれまでとこれから。Sencha Touch vs jQuery Mobile
モバイルWebアプリのこれまでとこれから。Sencha Touch vs jQuery MobileモバイルWebアプリのこれまでとこれから。Sencha Touch vs jQuery Mobile
モバイルWebアプリのこれまでとこれから。Sencha Touch vs jQuery Mobile
 
Ionicでハイブリッドアプリ入門①
Ionicでハイブリッドアプリ入門①Ionicでハイブリッドアプリ入門①
Ionicでハイブリッドアプリ入門①
 
Sencha のフレームワーク Ext JS 5 について 15 分で説明するよ
Sencha のフレームワーク Ext JS 5 について 15 分で説明するよSencha のフレームワーク Ext JS 5 について 15 分で説明するよ
Sencha のフレームワーク Ext JS 5 について 15 分で説明するよ
 
今からハジメるHTML5プログラミング
今からハジメるHTML5プログラミング今からハジメるHTML5プログラミング
今からハジメるHTML5プログラミング
 

Similar to JavaScript使いのためのTypeScript実践入門

PHPカンファレンス関西2012 Silex
PHPカンファレンス関西2012 SilexPHPカンファレンス関西2012 Silex
PHPカンファレンス関西2012 Silex
Masao Maeda
 
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03
Daiki Maekawa
 
JavaScript on GitHub (#kyotojs)
JavaScript on GitHub  (#kyotojs)JavaScript on GitHub  (#kyotojs)
JavaScript on GitHub (#kyotojs)
y_uuki
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
Ayumi Goto
 

Similar to JavaScript使いのためのTypeScript実践入門 (20)

PHPカンファレンス関西2012 Silex
PHPカンファレンス関西2012 SilexPHPカンファレンス関西2012 Silex
PHPカンファレンス関西2012 Silex
 
Azure Functions あれこれ
Azure Functions あれこれAzure Functions あれこれ
Azure Functions あれこれ
 
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
 
ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版
 
ようこそ! Swift Playgroundsへ
ようこそ! Swift Playgroundsへようこそ! Swift Playgroundsへ
ようこそ! Swift Playgroundsへ
 
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
 
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
 
Spring Security 5.0 解剖速報
Spring Security 5.0 解剖速報Spring Security 5.0 解剖速報
Spring Security 5.0 解剖速報
 
実演 AppExchange アプリケーション ライフサイクル
実演 AppExchange アプリケーション ライフサイクル実演 AppExchange アプリケーション ライフサイクル
実演 AppExchange アプリケーション ライフサイクル
 
Spring BootでHello Worldのその先へ
Spring BootでHello Worldのその先へSpring BootでHello Worldのその先へ
Spring BootでHello Worldのその先へ
 
JavaScript on GitHub (#kyotojs)
JavaScript on GitHub  (#kyotojs)JavaScript on GitHub  (#kyotojs)
JavaScript on GitHub (#kyotojs)
 
Endo kitura on_bluemix
Endo kitura on_bluemixEndo kitura on_bluemix
Endo kitura on_bluemix
 
[GrapeCity Web TECH FORUM 2018]グレープシティJavaScript製品のご紹介 活用のコツと開発のポイント
[GrapeCity Web TECH FORUM 2018]グレープシティJavaScript製品のご紹介 活用のコツと開発のポイント[GrapeCity Web TECH FORUM 2018]グレープシティJavaScript製品のご紹介 活用のコツと開発のポイント
[GrapeCity Web TECH FORUM 2018]グレープシティJavaScript製品のご紹介 活用のコツと開発のポイント
 
Vue入門
Vue入門Vue入門
Vue入門
 
pairsでのAngularJS x TypeScript x e2e @めぐすた#1
pairsでのAngularJS x TypeScript x e2e @めぐすた#1 pairsでのAngularJS x TypeScript x e2e @めぐすた#1
pairsでのAngularJS x TypeScript x e2e @めぐすた#1
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
 
アトリエ秋葉原 Choregraphe WS#4
アトリエ秋葉原 Choregraphe WS#4アトリエ秋葉原 Choregraphe WS#4
アトリエ秋葉原 Choregraphe WS#4
 

More from Shumpei Shiraishi

HTML5がもたらすアプリ開発へのインパクト
HTML5がもたらすアプリ開発へのインパクトHTML5がもたらすアプリ開発へのインパクト
HTML5がもたらすアプリ開発へのインパクト
Shumpei Shiraishi
 
この人と結婚していいの?を読んで
この人と結婚していいの?を読んでこの人と結婚していいの?を読んで
この人と結婚していいの?を読んで
Shumpei Shiraishi
 
第62回 読書するエンジニアの会(テーマ:メカ) 「Prototyping lab」
第62回 読書するエンジニアの会(テーマ:メカ) 「Prototyping lab」第62回 読書するエンジニアの会(テーマ:メカ) 「Prototyping lab」
第62回 読書するエンジニアの会(テーマ:メカ) 「Prototyping lab」
Shumpei Shiraishi
 
はやぶさ」からの贈り物
はやぶさ」からの贈り物はやぶさ」からの贈り物
はやぶさ」からの贈り物
Shumpei Shiraishi
 
第1回 (白石俊平と) カッコいいやつら
第1回 (白石俊平と) カッコいいやつら第1回 (白石俊平と) カッコいいやつら
第1回 (白石俊平と) カッコいいやつら
Shumpei Shiraishi
 

More from Shumpei Shiraishi (20)

俺的GEB概論(前半)
俺的GEB概論(前半)俺的GEB概論(前半)
俺的GEB概論(前半)
 
コンセプトのつくりかた - アイデアをかたちにする技術
コンセプトのつくりかた - アイデアをかたちにする技術コンセプトのつくりかた - アイデアをかたちにする技術
コンセプトのつくりかた - アイデアをかたちにする技術
 
「それでも人生にイエスと言う」を読んで
「それでも人生にイエスと言う」を読んで「それでも人生にイエスと言う」を読んで
「それでも人生にイエスと言う」を読んで
 
「それでも人生にイエスと言う」を読んで
「それでも人生にイエスと言う」を読んで「それでも人生にイエスと言う」を読んで
「それでも人生にイエスと言う」を読んで
 
Angular2実践入門
Angular2実践入門Angular2実践入門
Angular2実践入門
 
WebRTCがビデオ会議市場に与えるインパクトを探る
WebRTCがビデオ会議市場に与えるインパクトを探るWebRTCがビデオ会議市場に与えるインパクトを探る
WebRTCがビデオ会議市場に与えるインパクトを探る
 
変身×フランツ・カフカ
変身×フランツ・カフカ変身×フランツ・カフカ
変身×フランツ・カフカ
 
イラスト日用服飾辞典/三面記事の歴史/健康男 を読んで
イラスト日用服飾辞典/三面記事の歴史/健康男 を読んでイラスト日用服飾辞典/三面記事の歴史/健康男 を読んで
イラスト日用服飾辞典/三面記事の歴史/健康男 を読んで
 
「1秒でわかる!アパレル業界ハンドブック」を読んで
「1秒でわかる!アパレル業界ハンドブック」を読んで「1秒でわかる!アパレル業界ハンドブック」を読んで
「1秒でわかる!アパレル業界ハンドブック」を読んで
 
漫☆画太郎論
漫☆画太郎論漫☆画太郎論
漫☆画太郎論
 
HTML5時代のフロントエンド開発入門
HTML5時代のフロントエンド開発入門HTML5時代のフロントエンド開発入門
HTML5時代のフロントエンド開発入門
 
6,000人のWeb技術者コミュニティを5年間やってみて学んだこと
6,000人のWeb技術者コミュニティを5年間やってみて学んだこと6,000人のWeb技術者コミュニティを5年間やってみて学んだこと
6,000人のWeb技術者コミュニティを5年間やってみて学んだこと
 
はじめにことばありき
はじめにことばありきはじめにことばありき
はじめにことばありき
 
秒速一億円
秒速一億円秒速一億円
秒速一億円
 
HTML5がもたらすアプリ開発へのインパクト
HTML5がもたらすアプリ開発へのインパクトHTML5がもたらすアプリ開発へのインパクト
HTML5がもたらすアプリ開発へのインパクト
 
この人と結婚していいの?を読んで
この人と結婚していいの?を読んでこの人と結婚していいの?を読んで
この人と結婚していいの?を読んで
 
20130921レジュメ2
20130921レジュメ220130921レジュメ2
20130921レジュメ2
 
第62回 読書するエンジニアの会(テーマ:メカ) 「Prototyping lab」
第62回 読書するエンジニアの会(テーマ:メカ) 「Prototyping lab」第62回 読書するエンジニアの会(テーマ:メカ) 「Prototyping lab」
第62回 読書するエンジニアの会(テーマ:メカ) 「Prototyping lab」
 
はやぶさ」からの贈り物
はやぶさ」からの贈り物はやぶさ」からの贈り物
はやぶさ」からの贈り物
 
第1回 (白石俊平と) カッコいいやつら
第1回 (白石俊平と) カッコいいやつら第1回 (白石俊平と) カッコいいやつら
第1回 (白石俊平と) カッコいいやつら
 

Recently uploaded

Recently uploaded (12)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

JavaScript使いのためのTypeScript実践入門