SlideShare a Scribd company logo
1 of 46
Download to read offline
JSX の紹介

    bleis-tift


November 3 2012
///// 型の紹介
 JSX

    bleis-tift


November 3 2012
自己紹介




id:bleis-tift / @bleis
好きなプログラミング言語は JavaScript /
Scala / F#など
てるるーさんが Haxe の話をするっぽいので、
当初は JSX の話を考えてました
無理っぽいので型と絡めた話をします
注意!




ガチな話はしない (できない) ので
   気軽に聞いてください
ガチな話が聞きたい人は、@keita44 f4 とか、@t6s
とかにどうぞ。
今日話すこと



JS を吐き出す言語と型の話
    型の便利さ
    型の楽しさ
    型の奥深さ
このあたりをちょ  っとでも伝えられたらな、と。
出てくる言語

     JSX・ DeNA 社製。生の JS よりも遅くならな
         ・
         ・
     いらしい (要出典1 )。JS の皮をかぶった Java
     Haxe・・
          ・この中では最古参。JS だけでなく、
     PHP や Flash、Java に C#など、様々な言語に
     変換可能。手続型言語の皮をかぶった関数型
     言語
     TypeScript・
               ・・この中では最後発。C#作った
     人が設計。JS との親和性を重視している、JS
     の皮をかぶった C#
静的型付けの言語オンリー

1
    ベンチマークが少ないので評価保留中
注意そのに!

これら 3 つの言語は設計思想が全く異なる
  JSX は最適化に重点を置いて、ばしばしインラ
  イン化を行う。ベストプラクティスという名の
  バッドノウハウを気にせずにコードが書ける
  TypeScript は JS との親和性を重視し、素直な JS
  を出力する
  Haxe は柔軟性があり、どちらにも倒せる
今回は「型」という観点からこれらの言語を
見てみる
これら 3 つの言語の優劣を決めようとかって
話ではない
目的や状況に合わせて言語を選択しましょう
質問!


Q. みなさん型についてどういうイメージをお持
ちですか?
    マイナスイメージ
    書くのが面倒・・
           ・
    冗長で邪魔!
    考えたくない><
  プラスイメージ
    安心!
    分かりやすい
    ウヒョヒョ、脳汁出るウヒョー
型がある言語ない言語


  型を持っている言語
    C / Java / JSX / TypeScript / Haxe
    PHP / Perl / Ruby / JavaScript / CoffeeScript
  型を持っていない言語
    機械語
    Grass / LazyK / ラムダ計算
静的型付け言語だろうが、動的型付け言語だろう
が、型はある
動的型付けと静的型付けの違い



ざっくり説明:
  動的型付け・・
        ・値にしか型が付かない
  静的型付け・・
        ・変数に型が付く
型を書く必要がある/ないという違いではない点
に注意!
静的型付けの何がうれしいの?

型に関するエラーが実行時に発生しない
  これはテストでは得られない保証
  キャスト?しらんがなー
型がドキュメントになる
  型があればある程度何をするか分かる
  とはいっても、何でもかんでも文字列で表すと
  かは論外なので死ねばいい
最適化の余地が多い
  最適化をどこまでやるかはトレードオフ
開発支援ツールが充実する可能性
  入力補完とか、リファクタリングツールとか
  可能性はあるが用意されてるかどうかは別
型推論
よくある比較の例
架空の静的型付け言語の変数宣言
// 文字列型の変数 s を"hoge"で初期化
String s = "hoge";
// 日付型の変数 d を現在日時で初期化
Date d = new Date();

架空の動的型付け言語の変数宣言
// 変数 s を"hoge"で初期化
var s = "hoge";
// 変数 d を現在日時で初期化
var d = new Date();
これで「静的型付け言語は冗長だ!」となるのは
悲しい

              型推論!
簡単な型推論
架空の静的型付け言語の変数宣言
// 文字列型の変数 s を"hoge"で初期化
String s = "hoge";
// 日付型の変数 d を現在日時で初期化
Date d = new Date();

=の右側が分かれば、左側の型って自明じゃね?
→静的型付け言語なら右側の型は分かる
→じゃぁ書かなくていいじゃん!
架空の簡単な型推論付静的型付け言語の変数宣言
// 変数 s を"hoge"で初期化 (変数の型は文字列)
var s = "hoge";
// 変数 d を現在日時で初期化 (変数の型は日付)
var d = new Date();
ん?
同じや!


架空の動的型付け言語の変数宣言
// 変数 s を"hoge"で初期化
var s = "hoge";
// 変数 d を現在日時で初期化
var d = new Date();

架空の簡単な型推論付静的型付け言語の変数宣言
// 変数 s を"hoge"で初期化 (変数の型は文字列)
var s = "hoge";
// 変数 d を現在日時で初期化 (変数の型は日付)
var d = new Date();
どんなものが来ても推論できるの?
var i = 42; // i は数値型

var xs = [1, 2, 3]; // xs は数値の配列型

// f: Regex[] を返すなら、x は Regex 型
var x = f("hoge")[2];
// g は文字列を受け取って Regex の配列を返す関数
var g = f;

var h = function(a) { return a + 1; };
// JSX : コンパイルエラー
// TypeScript : any を受け取り any を返す関数
// Haxe : Int を受け取り Int を返す関数
Haxe 素敵。TypeScript は any に落ちる。JSX は型
推論自体が後付けなので残念。
ちなみに・  ・
       ・
関数式 (ラムダ式)

JS
var f = function(i) { return i + 1 }
これを Haxe / JSX / TypeScript で書くと・
                                ・・
Haxe
var f = function(i) return i + 1;

JSX
var f = (i: int): int -> i + 1;

TypeScript
var f = (i: number) => i + 1
TypeScript が一番短く書けました
オーバーロード
JavaScript で



  文字列を検索して、ヒットした index が欲
  しい!
  それ indexOf で
  文字列だけじゃなくて、正規表現でも指定し
  たい!
とかそんな場合にどうするか。
そこでオーバーロードですよ!


JS でオーバーロードもどき
function idxOf(str, target) {
  switch (target.constructor.name) {
  case ’String’: // target が文字列の場合の実装
  case ’RegExp’: // target が正規表現の場合の実装
  }
}
他にも、コンストラクタはオーバーロード欲しい
ことが多いかも。
実は JS にも一部オーバーロードがある


演算子はオーバーロードされてる
1 + 2   // number + number = number
’3’ + 4 // string + number = string
// Object + number = number
{
  valueOf: function() { return 10 }
} + 20
// Object + number = string
{
  toString: function() { return ’x’ }
} + 20
JSX / Haxe / TypeScript の場合



  JSX・・
      ・オーバーロード対応
  TS・・・オーバーロード対応 (メソッドはでき
  ないっぽ)
  Haxe・
      ・・オーバーロード非対応
オーバーロードは一見便利だが・
              ・・
オーバーロードが型推論を邪魔する

オーバーロードがあると・         ・・
function f(i: Int) { return 0 }
function f(s: String) { return 1 }

// x の型は・ ?・
           ・
function g(x) { return f(x) }

オーバーロードを導入すると、強力な型推論はあ
きらめたほうがよい。
それに加え、後で出てくる variant があれば型が違
うだけのオーバーロードはパターンマッチで代用
できるし、数が異なるものはリストで代用できる。
名前を付けない型
ダックタイピング




アヒル (duck) のように歩き、
アヒルのように鳴くらば、
それはアヒルだ!
JS でのダックタイピング

x と y さえあればいい
function f(point) {
  var x = point.x;
  var y = point.y;
  // なにか素敵な処理
}
var p1 = { x: 10, y: 20 };
var p2 = new (function() {
  this.x = 1;
  this.y = 2;
})();

JSX / Haxe / TypeScript でどうやるのかを見てい
きます。
JSX の場合:template
JSX は template を使います。
template
function f.<T>(point: T): 戻り値の型 {
  var x = point.x;
  var y = point.y;
  // なにか素敵な処理
}
var p = { x: 10, y: 20 }; // うっ・ ・・
class Point {
  var x: number;
  var y: number;
  function constructor(x: number, y: number) {
    this.x = x; this.y = y;
  }
}

が、現行バージョンではユーザは関数テンプレー
トが使えません・
       ・・駄目じゃん
Haxe の場合:構造的部分型
Haxe では、構造的部分型を使います。
構造的部分型 (Haxe)
function f(point: { x: Int, y: Int }) {
  var x = point.x;
  var y = point.y;
  // なにか素敵な処理
}
var p = { x: 10, y: 20 };
class Point {
  public var x: Int;
  public var y: Int;
  public function new(x, y) {
    this.x = x; this.y = y;
  }
}
TS の場合:構造的部分型

TypeScript でも、構造的部分型を使います。
構造的部分型 (TypeScript)
function f(point: { x: number; y: number; }) {
  var x = point.x;
  var y = point.y;
  // なにか素敵な処理
}
var p = { x: 10, y: 20 };
class Point {
  constructor(public x: number, public y: number) { }
}

短い!
ダックタイピングと構造的部分型の比較
両者、同じようなことが実現できました。しか
し、プログラムの変更に対して、両者はまったく
異なる特徴を持ちます。
  内側の変更・
       ・・関数 f の中で、他のメンバにア
  クセスしたくなった
  外側の変更・
       ・・渡していたオブジェクトのメ
  ンバ名を、リファクタリングで変更した
これらの状況に対し、
  ダックタイピングは前者は容易だが後者は
  困難
  構造的部分型は前者は困難だが後者は容易
それにしても、だ




JSX マジ頑張れ・
         ・・
直和型
トランプのカード




簡単のために、絵柄を無視するとして・    ・
                      ・
  1∼10 までの数字
  Jack / Queen / King
これを、どう表現するか?
JSX の場合:クラス階層
abstract class Card {
  abstract function toNum(): number;
}
class Num extends Card {
  var num: number;
  function constructor(n: number) {
    this.num = n;
  }
  override function toNum(): number { return this.num; }
}
class Jack extends Card {
  static var _instance = new Jack();
  static function getInstance(): Jack { return Jack._instance; }
  override function toNum(): number { return 11; }
}
class Queen extends Card {
  static var _instance = new Queen();
  static function getInstance(): Queen { return Queen._instance; }
  override function toNum(): number { return 12; }
}
class King extends Card {
  static var _instance = new King();
  static function getInstance(): King { return King._instance; }
  override function toNum(): number { return 13; }
}


長い!
Haxe の場合:enum


enum といっても、C や Java の enum とは違い
ます。
トランプのカードの表現
enum Card {
  num(n: Int); jack; queen; king;
}
num に注目!何と他の列挙子と違い、値を持って
ます。
enum に対する操作

enum に対する操作は、switch を使って行います。
カードを数値化する
function   toInt(c)
  return   switch (c) {
    case   num(n): n; // !
    case   jack: 11;
    case   queen: 12;
    case   king: 13;
  }
パターンマッチ!
ここで仕様変更!


Joker も扱いたくなった
Card に Joker を追加
enum Card {
  num(n: Int); jack; queen; king; joker;
}
これでよい・ ?
     ・・
今まで書いてきた Card を使う処理、どうしま
しょう。
例えばさっき書いたこの処理

カードの数値化 (再掲)
function   toInt(c)
  return   switch (c) {
    case   num(n): n; // !
    case   jack: 11;
    case   queen: 12;
    case   king: 13;
  }
joker の場合の処理が書かれてないです。
こんな感じの関数がすでにいたるところで書かれ
ている・   ・・
パターンの網羅性チェック
でも、Haxe の enum ならパターンの網羅性チェッ
クがあるので、全ての場所でコンパイルエラーと
なります。
パターンが網羅性がチェ         ックされる
function toInt(c)
  // Some constructors are not matched: joker
  return switch (c) {
    case num(n): n;
    case jack: 11;
    case queen: 12;
    case king: 13;
  }
あとはコンパイルエラーをつぶしていくだけ!
安心!
enum によるオーバーロードの代用


例えばこんな enum を用意します。
enum StrOrEReg { str(s: String); regex(r: EReg); }

そしてパターンマッチ!
function   idxOf(s, target)
  return   switch(target) {
    case   str(x):   // target が文字列の場合の実装
    case   regex(x): // target が正規表現の場合の実装
  }
JS との比較
JavaScript
function idxOf(str, target) {
  switch (target.constructor.name) {
  case ’String’: // target が文字列の場合の実装
  case ’RegExp’: // target が正規表現の場合の実装
  }
}

Haxe
function   idxOf(s, target)
  return   switch(target) {
    case   str(x):   // target が文字列の場合の実装
    case   regex(x): // target が正規表現の場合の実装
  }

Haxe 版は、target に数値などを渡すとコンパイル
エラーになってくれる!
TypeScript の場合:enum?


     We expect the final language to
  support enum types, but not in the form
  they are currently implemented.
「最終的な言語には enum のせたいけど、今はま
だないよ」
とのことなので、Haxe の enumっぽいものがのる
ことをみんなで祈りましょう。
まとめ

静的型付け言語といっても、型をいっぱい書
く必要はない (型推論)
オーバーロードは便利だが、いいことばかり
ではない
構造によって型を指定できる (構造的部分型)
Haxe の enum は他の言語の enum とは違う (直
和型)
今回は「型」という観点で各言語を見た
もう一度「注意そのに!」のスライドをよく
読むこと
注意そのに!(再掲)

これら 3 つの言語は設計思想が全く異なる
  JSX は最適化に重点を置いて、ばしばしインラ
  イン化を行う。ベストプラクティスという名の
  バッドノウハウを気にせずにコードが書ける
  TypeScript は JS との親和性を重視し、素直な JS
  を出力する
  Haxe は柔軟性があり、どちらにも倒せる
今回は「型」という観点からこれらの言語を
見てみる
これら 3 つの言語の優劣を決めようとかって
話ではない
目的や状況に合わせて言語を選択しましょう
おしまい

More Related Content

What's hot

プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードプログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードShigenori Sagawa
 
constexpr idioms
constexpr idiomsconstexpr idioms
constexpr idiomsfimbul
 
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプC++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプKohsuke Yuasa
 
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarrayRyosuke839
 
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会Akihiko Matuura
 
クロージャデザインパターン
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターンMoriharu Ohzu
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~CHY72
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門natrium11321
 
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!Ra Zon
 
F#によるFunctional Programming入門
F#によるFunctional Programming入門F#によるFunctional Programming入門
F#によるFunctional Programming入門bleis tift
 
闇魔術を触ってみた
闇魔術を触ってみた闇魔術を触ってみた
闇魔術を触ってみたSatoshi Sato
 
エラーハンドリング
エラーハンドリングエラーハンドリング
エラーハンドリング道化師 堂華
 
君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らない君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らないdigitalghost
 

What's hot (20)

Power of Scala
Power of ScalaPower of Scala
Power of Scala
 
C言語講習会2
C言語講習会2C言語講習会2
C言語講習会2
 
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードプログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
 
Introduction to PEG
Introduction to PEGIntroduction to PEG
Introduction to PEG
 
constexpr idioms
constexpr idiomsconstexpr idioms
constexpr idioms
 
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプC++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
 
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
 
C言語講習会4
C言語講習会4C言語講習会4
C言語講習会4
 
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会
 
Haxeについて
HaxeについてHaxeについて
Haxeについて
 
クロージャデザインパターン
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターン
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
 
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!
 
C言語講習会3
C言語講習会3C言語講習会3
C言語講習会3
 
F#によるFunctional Programming入門
F#によるFunctional Programming入門F#によるFunctional Programming入門
F#によるFunctional Programming入門
 
C++0x総復習
C++0x総復習C++0x総復習
C++0x総復習
 
闇魔術を触ってみた
闇魔術を触ってみた闇魔術を触ってみた
闇魔術を触ってみた
 
エラーハンドリング
エラーハンドリングエラーハンドリング
エラーハンドリング
 
君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らない君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らない
 

Viewers also liked

TypeScriptへの入口
TypeScriptへの入口TypeScriptへの入口
TypeScriptへの入口Sunao Tomita
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときRyunosuke SATO
 
効果の低いテストの話
効果の低いテストの話効果の低いテストの話
効果の低いテストの話bleis tift
 
No more Legacy documents
No more Legacy documentsNo more Legacy documents
No more Legacy documentsbleis tift
 
モナドハンズオン前座
モナドハンズオン前座モナドハンズオン前座
モナドハンズオン前座bleis tift
 
解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compiler解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compilerbleis tift
 
F#の基礎(?)
F#の基礎(?)F#の基礎(?)
F#の基礎(?)bleis tift
 
Better C#の脱却を目指して
Better C#の脱却を目指してBetter C#の脱却を目指して
Better C#の脱却を目指してbleis tift
 
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2Nobuhiro Nakashima
 
Node.js Tutorial at Hiroshima
Node.js Tutorial at HiroshimaNode.js Tutorial at Hiroshima
Node.js Tutorial at HiroshimaYoshihiro Iwanaga
 
基礎からのベイズ統計学 2章 勉強会資料
基礎からのベイズ統計学 2章 勉強会資料基礎からのベイズ統計学 2章 勉強会資料
基礎からのベイズ統計学 2章 勉強会資料at grandpa
 
基礎からのベイズ統計学 輪読会資料 第1章 確率に関するベイズの定理
基礎からのベイズ統計学 輪読会資料 第1章 確率に関するベイズの定理基礎からのベイズ統計学 輪読会資料 第1章 確率に関するベイズの定理
基礎からのベイズ統計学 輪読会資料 第1章 確率に関するベイズの定理Ken'ichi Matsui
 
統計学の基礎の基礎
統計学の基礎の基礎統計学の基礎の基礎
統計学の基礎の基礎Ken'ichi Matsui
 
仕事で使うF#
仕事で使うF#仕事で使うF#
仕事で使うF#bleis tift
 

Viewers also liked (17)

TypeScriptへの入口
TypeScriptへの入口TypeScriptへの入口
TypeScriptへの入口
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
 
Node js 入門
Node js 入門Node js 入門
Node js 入門
 
効果の低いテストの話
効果の低いテストの話効果の低いテストの話
効果の低いテストの話
 
No more Legacy documents
No more Legacy documentsNo more Legacy documents
No more Legacy documents
 
モナドハンズオン前座
モナドハンズオン前座モナドハンズオン前座
モナドハンズオン前座
 
解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compiler解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compiler
 
F#の基礎(?)
F#の基礎(?)F#の基礎(?)
F#の基礎(?)
 
Better C#の脱却を目指して
Better C#の脱却を目指してBetter C#の脱却を目指して
Better C#の脱却を目指して
 
Nodeについて
NodeについてNodeについて
Nodeについて
 
Node.js入門
Node.js入門Node.js入門
Node.js入門
 
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2
 
Node.js Tutorial at Hiroshima
Node.js Tutorial at HiroshimaNode.js Tutorial at Hiroshima
Node.js Tutorial at Hiroshima
 
基礎からのベイズ統計学 2章 勉強会資料
基礎からのベイズ統計学 2章 勉強会資料基礎からのベイズ統計学 2章 勉強会資料
基礎からのベイズ統計学 2章 勉強会資料
 
基礎からのベイズ統計学 輪読会資料 第1章 確率に関するベイズの定理
基礎からのベイズ統計学 輪読会資料 第1章 確率に関するベイズの定理基礎からのベイズ統計学 輪読会資料 第1章 確率に関するベイズの定理
基礎からのベイズ統計学 輪読会資料 第1章 確率に関するベイズの定理
 
統計学の基礎の基礎
統計学の基礎の基礎統計学の基礎の基礎
統計学の基礎の基礎
 
仕事で使うF#
仕事で使うF#仕事で使うF#
仕事で使うF#
 

Similar to JSX / Haxe / TypeScript

テンプレートメタプログラミング as 式
テンプレートメタプログラミング as 式テンプレートメタプログラミング as 式
テンプレートメタプログラミング as 式digitalghost
 
Material
MaterialMaterial
Material_TUNE_
 
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューTypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューAkira Inoue
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdfHiroshi Ono
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdfHiroshi Ono
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdfHiroshi Ono
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Ransui Iso
 
これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールこれからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールNobuhisa Koizumi
 
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜Hiromi Ishii
 
asm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web gamesasm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web gamesNoritada Shimizu
 
Swift らしい表現を目指そう #eventdots
Swift らしい表現を目指そう #eventdotsSwift らしい表現を目指そう #eventdots
Swift らしい表現を目指そう #eventdotsTomohiro Kumagai
 
Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】Yukiko Kato
 
関数型志向Python - LLまつり2013
関数型志向Python - LLまつり2013関数型志向Python - LLまつり2013
関数型志向Python - LLまつり2013Esehara Shigeo
 
関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』Kenta USAMI
 
Swiftで、かなり微妙な型クラス
Swiftで、かなり微妙な型クラスSwiftで、かなり微妙な型クラス
Swiftで、かなり微妙な型クラスNobukazu Hanada
 
こんなEqualsは嫌だ
こんなEqualsは嫌だこんなEqualsは嫌だ
こんなEqualsは嫌だOda Shinsuke
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Ransui Iso
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)啓 小笠原
 

Similar to JSX / Haxe / TypeScript (20)

テンプレートメタプログラミング as 式
テンプレートメタプログラミング as 式テンプレートメタプログラミング as 式
テンプレートメタプログラミング as 式
 
Material
MaterialMaterial
Material
 
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューTypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービュー
 
たのしい関数型
たのしい関数型たのしい関数型
たのしい関数型
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdf
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdf
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdf
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
 
これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールこれからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツール
 
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
 
asm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web gamesasm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web games
 
Swift らしい表現を目指そう #eventdots
Swift らしい表現を目指そう #eventdotsSwift らしい表現を目指そう #eventdots
Swift らしい表現を目指そう #eventdots
 
Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】
 
関数型志向Python - LLまつり2013
関数型志向Python - LLまつり2013関数型志向Python - LLまつり2013
関数型志向Python - LLまつり2013
 
Lispでやる記号微分
Lispでやる記号微分Lispでやる記号微分
Lispでやる記号微分
 
関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』
 
Swiftで、かなり微妙な型クラス
Swiftで、かなり微妙な型クラスSwiftで、かなり微妙な型クラス
Swiftで、かなり微妙な型クラス
 
こんなEqualsは嫌だ
こんなEqualsは嫌だこんなEqualsは嫌だ
こんなEqualsは嫌だ
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
 

More from bleis tift

PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。bleis tift
 
テストの自動化を考える前に
テストの自動化を考える前にテストの自動化を考える前に
テストの自動化を考える前にbleis tift
 
札束でExcelを殴る
札束でExcelを殴る札束でExcelを殴る
札束でExcelを殴るbleis tift
 
.NET系開発者から見たJava
.NET系開発者から見たJava.NET系開発者から見たJava
.NET系開発者から見たJavableis tift
 
SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~bleis tift
 
F#事例発表
F#事例発表F#事例発表
F#事例発表bleis tift
 
yield and return (poor English ver)
yield and return (poor English ver)yield and return (poor English ver)
yield and return (poor English ver)bleis tift
 
yieldとreturnの話
yieldとreturnの話yieldとreturnの話
yieldとreturnの話bleis tift
 
F#の基礎(嘘)
F#の基礎(嘘)F#の基礎(嘘)
F#の基礎(嘘)bleis tift
 
現実(えくせる)と戦う話
現実(えくせる)と戦う話現実(えくせる)と戦う話
現実(えくせる)と戦う話bleis tift
 
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)bleis tift
 
async/await不要論
async/await不要論async/await不要論
async/await不要論bleis tift
 
VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)bleis tift
 
F#で始めるスマートフォンアプリ
F#で始めるスマートフォンアプリF#で始めるスマートフォンアプリ
F#で始めるスマートフォンアプリbleis tift
 
ぼくのかんがえたさいきょうのLL
ぼくのかんがえたさいきょうのLLぼくのかんがえたさいきょうのLL
ぼくのかんがえたさいきょうのLLbleis tift
 
SCMBC闇LT資料
SCMBC闇LT資料SCMBC闇LT資料
SCMBC闇LT資料bleis tift
 
SCMBC Git入門セッション発表資料
SCMBC Git入門セッション発表資料SCMBC Git入門セッション発表資料
SCMBC Git入門セッション発表資料bleis tift
 
輪るビングドラム.NET
輪るビングドラム.NET輪るビングドラム.NET
輪るビングドラム.NETbleis tift
 

More from bleis tift (20)

PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。
 
テストの自動化を考える前に
テストの自動化を考える前にテストの自動化を考える前に
テストの自動化を考える前に
 
札束でExcelを殴る
札束でExcelを殴る札束でExcelを殴る
札束でExcelを殴る
 
.NET系開発者から見たJava
.NET系開発者から見たJava.NET系開発者から見たJava
.NET系開発者から見たJava
 
SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~
 
F#事例発表
F#事例発表F#事例発表
F#事例発表
 
yield and return (poor English ver)
yield and return (poor English ver)yield and return (poor English ver)
yield and return (poor English ver)
 
yieldとreturnの話
yieldとreturnの話yieldとreturnの話
yieldとreturnの話
 
F#の基礎(嘘)
F#の基礎(嘘)F#の基礎(嘘)
F#の基礎(嘘)
 
現実(えくせる)と戦う話
現実(えくせる)と戦う話現実(えくせる)と戦う話
現実(えくせる)と戦う話
 
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
 
async/await不要論
async/await不要論async/await不要論
async/await不要論
 
VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)
 
自分戦略
自分戦略自分戦略
自分戦略
 
F#で始めるスマートフォンアプリ
F#で始めるスマートフォンアプリF#で始めるスマートフォンアプリ
F#で始めるスマートフォンアプリ
 
ぼくのかんがえたさいきょうのLL
ぼくのかんがえたさいきょうのLLぼくのかんがえたさいきょうのLL
ぼくのかんがえたさいきょうのLL
 
SCMBC闇LT資料
SCMBC闇LT資料SCMBC闇LT資料
SCMBC闇LT資料
 
SCMBC Git入門セッション発表資料
SCMBC Git入門セッション発表資料SCMBC Git入門セッション発表資料
SCMBC Git入門セッション発表資料
 
輪るビングドラム.NET
輪るビングドラム.NET輪るビングドラム.NET
輪るビングドラム.NET
 
SCM Boot Camp
SCM Boot CampSCM Boot Camp
SCM Boot Camp
 

Recently uploaded

論文紹介: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
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
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
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介: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
 
論文紹介: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
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
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 (10)

論文紹介: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
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
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」の紹介
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介: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...
 
論文紹介: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
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
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
 

JSX / Haxe / TypeScript