SlideShare a Scribd company logo
1 of 28
JSX の現在と未来
Oct. 26 2013
DeNA Co., Ltd.
Kazuho Oku

1
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
自己紹介
 名前:奥 一穂
 経歴:
⁃ モバイルウェブブラウザ Palmscape (Xiino) の開発
(1996-2003)
⁃ IPA未踏スーパークリエータ (2004)
•

「ウェブアプリケーション統合開発環境の開発」

⁃ サイボウズ・ラボ (2005-2010)
•

Japanize, Pathtraq, Q4M, mycached, …

⁃ ディー・エヌ・エー (2010-) R&Dに従事

JSX の現在と未来

2
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
JSX の概要

JSX の現在と未来

3
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
altJS とは?
 JavaScript に変換して実行される言語
 背景:
⁃ JavaScript の普及

⁃ ウェブブラウザで動くのは JavaScript だけ
•

ベンダー間の競争の結果、実行速度が高速に

⁃ ウェブブラウザ以外でも JavaScript を使うように
•

サーバサイド: node.js

•

クライアントサイド: Titanium, PhoneGap, ngCore, …

⁃ 適用範囲が拡大した結果、不満が噴出

JSX の現在と未来

4
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
JSX とは?
 DeNA でを中心に開発している altJS
⁃ JavaScript の言語仕様にできるだけ沿いつつ、以下
を実現

⁃ 静的型付け
⁃ クラスベースのオブジェクト指向
⁃ 最適化コンパイラ

 2012/5/31 に公開

JSX の現在と未来

5
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
JSX の現在と未来

6
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
altJS の種類
 CoffeeScript
⁃ JavaScript と1:1対応する文法
⁃ 意味論は変更しない

 TypeScript
⁃ JavaScript の上位互換
 JSX

⁃ JavaScript の下位互換 + 独自拡張
 Java Web Toolkit, Haxe, Emscripten, …

⁃ 既存のプログラミング言語を JavaScript に変換

JSX の現在と未来

7
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
DeNA における JavaScript
 JavaScript による大規模開発
⁃ 数万行〜10万行規模に及ぶコードベース
⁃ 開発メンバーの入れ替わりが激しい

 専用内製ライブラリ/フレームワークの使用が多い
⁃ ngCore, ExGame, Post ExGame, …
⁃ スマホ上での実行が多い + 一部サーバサイド

 頻繁なコード変更
⁃ ゲーム内イベント等

JSX の現在と未来

8
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
直面した問題
 生産性と品質担保
⁃ 実行するまでバグが見つからない
⁃ GUI やネットワークまわりはテストが難しい

 実行速度が遅い
 ロード時間と使用メモリ量の増大
⁃ スマートフォンは PC より貧弱

JSX の現在と未来

9
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
解決策: JSX の開発
 課題: 生産性と品質担保
→ コンパイル時にエラー検知
 課題: 実行速度

→ JavaScriptへの変換時に最適化コンパイル
•

型情報を利用したインライン展開や定数畳み込み

 課題: ロード時間と使用メモリ量

→ 強力なminify
•

静的型付け必須だからプロパティ名の安全確実なリネー
ムが可能

 トレードオフ: JavaScript の動的な性質を利用したラ
イブラリとの接続が煩雑に
JSX の現在と未来

10
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
静的型付けで生産性と品質が向上する理由
 変数名やメソッドの存在をコンパイル時に検証できる
⁃ 全ての値は、代入するまで参照不可能
⁃ 以下のような JS でよくある現象と戦わなくていい
•

“Object foo has no method ’bar’”

•

“foo is not defined”

•

いつのまにか値が NaN

 実行時にエラーチェックを行うことができる
⁃ 配列の未初期化要素へのアクセスを検出
⁃ デバッグビルドの場合のみ

JSX の現在と未来

11
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
なぜ静的型付けを必須としたのか
 型付けが Optional なら JavaScript 上位互換なのに
⁃ 例: CoffeeScript, Google Closure Compiler
 オプショナルな型付けの問題

⁃ 型付けがないコードが混在すると、コンパイル時の
エラーチェックが困難に
⁃ 安全な最適化やminifyができない

JSX の現在と未来

12
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
JSX の文法
 できるだけ JavaScript っぽく
⁃ プログラマの多くは、新しい言語を学びたいとは思
っていない
JSX = JavaScript の式と文
+ 型アノテーション

+ 型推論
+ クラスベースのオブジェクト指向
(単一クラス継承、複数インターフェイス継承)
(メソッドのオーバーロード可能)

JSX の現在と未来

13
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
JSX のコード例(アフィン変換)
class Point {
var x : number, y : number;
function constructor(x : number, y : number) {
this.x = x;
this.y = y;
}
}

class Matrix {
var a11 : number, a12 : number, a13 : number
var a21 : number, a22 : number, a23 : number;
function constructor(a11 : number, a12 : number, (省略)) {
this.a11 = a11;
(省略)
}
function transform(pt : Point) : Point {
return new Point(
this.a11 * pt.x + this.a12 * pt.y + this.a13,
this.a21 * pt.x + this.a22 * pt.y + this.a23);
}
}
JSX の現在と未来

14
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
JSX のコード例(アフィン変換)
 JSX のソースコード:
new Matrix(1, 0, 0, 0, 2, 0).transform(new Point(x, y))

 生成される JavaScript:
{x: x + 0 * y, y: 0 * x + 2 * y}
// Note: 0 * n cannot be folded since it is equiv. to: isNaN(n) ? NaN : 0

JSX の現在と未来

15
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
Performance Benchmarks
 Box2D
⁃ box2d.js を JSX に移植して fps を測定
⁃ iOS 5.0 – 12%向上

⁃ Android 2.3 – 29%向上
 AOBench
⁃

http://spheresofa.net/blog/?p=757

処理速度

Haxe

TypeScript
iOS
Android

JSX

JavaScript

0
JSX の現在と未来

0.5

1

1.5

2
16

Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
プロファイラ
 呼出回数や総実行時間を測定
⁃ サンプリングではない
 あらゆる環境で実行可能

JSX の現在と未来

17
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
Minify
 強力かつ安全な minify
⁃ プロパティ名の短縮は静的型付けが必須でない限り
不可能
Impact of Minifica on
Total

ngCore HTML5
jsx --release
jsx --release | uglifyjs
JSX

jsx --release | esmangle
jsx --release --minify

v8bench.jsx
0

JSX の現在と未来

0.2
0.4
0.6
0.8
1
byte size of generated code(ra o)

1.2

18
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
JSX 公開後の進化

JSX の現在と未来

19
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
JSX 公開後の進化
 セルフホスティング
⁃ JSX のコンパイラを JSX へ移植
 minify

 型推論の強化
⁃ var a = [1,2,3].map((x) -> 3 * x)
•

a の型は number[]

 オプティマイザの強化
⁃ メソッドの関数への変換、末尾再帰のループ展開等
 JavaScript との互換性の強化
⁃ export 属性、バインディングのインライン定義

JSX の現在と未来

20
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
バインディング/ライブラリの増加
 W3C API
⁃ ほぼ全対応
•

IDLから自動生成

 node.jsx
⁃ node.js 用のバインディングを淡々と作っていくよ
⁃ コア, mysql, memcached, needle, …

 Qt.jsx, Ext.jsx, tmlib.jsx, mizuki, …
⁃ ごめんなさいなんかいろいろ忘れてる気が

JSX の現在と未来

21
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
現在の開発体制
 ゆるふわにこんな感じ?
名前

主な貢献

kazuho

リーダー, 言語仕様, コンパイラ実装

gfx

コンパイラ実装, テストフレームワーク, W3C バインディング

wasabiz

セルフホスティング, オプティマイザ, 言語仕様拡張

shibukawa

バインディング, パッケージ管理

JSX の現在と未来

22
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
DeNA における JSX の使用状況
 社内における普及方針
⁃ 複雑なライブラリの新規開発で JSX を使用
⁃ その後、それらを使うゲームでも JSX を使用
•

理由: 既存のゲームを JSX に移植するのは非現実的

 社内の使用状況
⁃ JSX で開発されたライブラリが複数存在
•

ngCore on HTML5

•

HTML5 上で動作するスプライト描画系

•

node.js 上で動作するサーバサイドフレームワーク

⁃ それらを使ったゲーム開発プロジェクトが複数

JSX の現在と未来

23
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
社内開発の教訓
 言語仕様は枯れている
⁃ 学習コストはそれほど高くなさそう
 最適化関連のバグを踏むことがある

⁃ デバッグビルドは品質高い
•

開発中はデバッグビルドでエラー検出するのが便利

⁃ 早期から最適化オプションを使ったテストをすべき

JSX の現在と未来

24
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
JSX の未来

JSX の現在と未来

25
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
予定している拡張
 async対応
⁃ 非同期処理を同期的に書けるように
 JSX のパッケージ管理

⁃ npm として公開する方向
 ドキュメント強化
⁃ 必要ですよね…

JSX の現在と未来

26
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
まとめ

JSX の現在と未来

27
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
まとめ
 JSX は得失のはっきりした altJS
⁃ メリット:
•

強力なエラー検出機能

•

実行速度とサイズの両面における最適化

⁃ デメリット:
•

JavaScript で書かれた既存との接続が煩雑

 プロダクションレベルの成熟度
⁃ 今後も機能追加します/互換性は壊しません
 新規開発案件にオススメ
⁃ バインディングは今後増えて行くでしょうが
⁃ 既存ライブラリへの依存が少ないとなお良い
JSX の現在と未来

28
Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.

More Related Content

What's hot

サーバサイドNodeの使い道
サーバサイドNodeの使い道サーバサイドNodeの使い道
サーバサイドNodeの使い道pospome
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)NTT DATA Technology & Innovation
 
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)Koichi Sakata
 
An Internal of LINQ to Objects
An Internal of LINQ to ObjectsAn Internal of LINQ to Objects
An Internal of LINQ to ObjectsYoshifumi Kawai
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますinfinite_loop
 
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーションYoshifumi Kawai
 
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringGoでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringYahoo!デベロッパーネットワーク
 
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうGraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうKoichi Sakata
 
Mithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワークMithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワークsairoutine
 
Introduction to GraalVM
Introduction to GraalVMIntroduction to GraalVM
Introduction to GraalVMKoichi Sakata
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM LoggingYuji Kubota
 
DSPでディープラーニング
DSPでディープラーニングDSPでディープラーニング
DSPでディープラーニングMr. Vengineer
 
Redshift Spectrumを使ってみた話
Redshift Spectrumを使ってみた話Redshift Spectrumを使ってみた話
Redshift Spectrumを使ってみた話Yoshiki Kouno
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計sairoutine
 
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発infinite_loop
 
HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向Kazuho Oku
 

What's hot (20)

サーバサイドNodeの使い道
サーバサイドNodeの使い道サーバサイドNodeの使い道
サーバサイドNodeの使い道
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
 
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
 
Mithril
MithrilMithril
Mithril
 
An Internal of LINQ to Objects
An Internal of LINQ to ObjectsAn Internal of LINQ to Objects
An Internal of LINQ to Objects
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
 
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringGoでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
 
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjpElasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
 
オタク×Node.js勉強会
オタク×Node.js勉強会オタク×Node.js勉強会
オタク×Node.js勉強会
 
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうGraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
 
Mithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワークMithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワーク
 
Introduction to GraalVM
Introduction to GraalVMIntroduction to GraalVM
Introduction to GraalVM
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
 
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
 
DSPでディープラーニング
DSPでディープラーニングDSPでディープラーニング
DSPでディープラーニング
 
Redshift Spectrumを使ってみた話
Redshift Spectrumを使ってみた話Redshift Spectrumを使ってみた話
Redshift Spectrumを使ってみた話
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
 
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
 
HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向
 

Viewers also liked

Rik Panganiban's Keynote at SLCC 2011
Rik Panganiban's Keynote at SLCC 2011Rik Panganiban's Keynote at SLCC 2011
Rik Panganiban's Keynote at SLCC 2011rik panganiban
 
Understanding the sphere of integrated marketing
Understanding the sphere of integrated marketingUnderstanding the sphere of integrated marketing
Understanding the sphere of integrated marketingEddie Choi
 
BÆRUMbeta på It-forum 2009
BÆRUMbeta på It-forum 2009BÆRUMbeta på It-forum 2009
BÆRUMbeta på It-forum 2009Pål Hivand
 
A Long Walk to Water: Lesson1 unit2
A Long Walk to Water: Lesson1 unit2A Long Walk to Water: Lesson1 unit2
A Long Walk to Water: Lesson1 unit2Terri Weiss
 
A Long Walk to Water - Lssn 12
A Long Walk to Water - Lssn 12A Long Walk to Water - Lssn 12
A Long Walk to Water - Lssn 12Terri Weiss
 
Learning With Technology the Educator's Role revised
Learning With Technology the Educator's Role revisedLearning With Technology the Educator's Role revised
Learning With Technology the Educator's Role revisedtuchodi
 
Google Androidの現在と近未来 ~マッシュアップにより変革するもの~
Google Androidの現在と近未来 ~マッシュアップにより変革するもの~Google Androidの現在と近未来 ~マッシュアップにより変革するもの~
Google Androidの現在と近未来 ~マッシュアップにより変革するもの~shimay
 
SHARE-IT - A Blog “from Researchers for Researchers”
SHARE-IT - A Blog “from Researchers for Researchers”SHARE-IT - A Blog “from Researchers for Researchers”
SHARE-IT - A Blog “from Researchers for Researchers”Martin Rehm
 
Lift'11 Venture Night Presentation
Lift'11 Venture Night PresentationLift'11 Venture Night Presentation
Lift'11 Venture Night PresentationSebastien Dubuis
 
Introduction to Mozilla Student Reps
Introduction to Mozilla Student RepsIntroduction to Mozilla Student Reps
Introduction to Mozilla Student RepsKinshuk Sunil
 
Y vuestros ojos lo veran
Y vuestros ojos lo veranY vuestros ojos lo veran
Y vuestros ojos lo veranPaulo Arieu
 
Improve your Web Development using Visual Studio 2010
Improve your Web Development using Visual Studio 2010Improve your Web Development using Visual Studio 2010
Improve your Web Development using Visual Studio 2010Suthep Sangvirotjanaphat
 
Examenopleiding energieconsulent mfl
Examenopleiding energieconsulent mflExamenopleiding energieconsulent mfl
Examenopleiding energieconsulent mflwweijmans
 
Digital literacies supporting learning
Digital literacies supporting learningDigital literacies supporting learning
Digital literacies supporting learningLis Parcell
 
E2AGP - Country Portfolio
E2AGP - Country PortfolioE2AGP - Country Portfolio
E2AGP - Country Portfolioroxannemiller
 

Viewers also liked (20)

Rik Panganiban's Keynote at SLCC 2011
Rik Panganiban's Keynote at SLCC 2011Rik Panganiban's Keynote at SLCC 2011
Rik Panganiban's Keynote at SLCC 2011
 
Understanding the sphere of integrated marketing
Understanding the sphere of integrated marketingUnderstanding the sphere of integrated marketing
Understanding the sphere of integrated marketing
 
BÆRUMbeta på It-forum 2009
BÆRUMbeta på It-forum 2009BÆRUMbeta på It-forum 2009
BÆRUMbeta på It-forum 2009
 
A Long Walk to Water: Lesson1 unit2
A Long Walk to Water: Lesson1 unit2A Long Walk to Water: Lesson1 unit2
A Long Walk to Water: Lesson1 unit2
 
A Long Walk to Water - Lssn 12
A Long Walk to Water - Lssn 12A Long Walk to Water - Lssn 12
A Long Walk to Water - Lssn 12
 
Learning With Technology the Educator's Role revised
Learning With Technology the Educator's Role revisedLearning With Technology the Educator's Role revised
Learning With Technology the Educator's Role revised
 
Google Androidの現在と近未来 ~マッシュアップにより変革するもの~
Google Androidの現在と近未来 ~マッシュアップにより変革するもの~Google Androidの現在と近未来 ~マッシュアップにより変革するもの~
Google Androidの現在と近未来 ~マッシュアップにより変革するもの~
 
Mwomen
MwomenMwomen
Mwomen
 
SHARE-IT - A Blog “from Researchers for Researchers”
SHARE-IT - A Blog “from Researchers for Researchers”SHARE-IT - A Blog “from Researchers for Researchers”
SHARE-IT - A Blog “from Researchers for Researchers”
 
Lift'11 Venture Night Presentation
Lift'11 Venture Night PresentationLift'11 Venture Night Presentation
Lift'11 Venture Night Presentation
 
Introduction to Mozilla Student Reps
Introduction to Mozilla Student RepsIntroduction to Mozilla Student Reps
Introduction to Mozilla Student Reps
 
Y vuestros ojos lo veran
Y vuestros ojos lo veranY vuestros ojos lo veran
Y vuestros ojos lo veran
 
Unit 2.7 Images
Unit 2.7 ImagesUnit 2.7 Images
Unit 2.7 Images
 
Improve your Web Development using Visual Studio 2010
Improve your Web Development using Visual Studio 2010Improve your Web Development using Visual Studio 2010
Improve your Web Development using Visual Studio 2010
 
Journey To The East Part 2
Journey To The East Part 2Journey To The East Part 2
Journey To The East Part 2
 
Examenopleiding energieconsulent mfl
Examenopleiding energieconsulent mflExamenopleiding energieconsulent mfl
Examenopleiding energieconsulent mfl
 
Bing Bang
Bing BangBing Bang
Bing Bang
 
Digital literacies supporting learning
Digital literacies supporting learningDigital literacies supporting learning
Digital literacies supporting learning
 
E2AGP - Country Portfolio
E2AGP - Country PortfolioE2AGP - Country Portfolio
E2AGP - Country Portfolio
 
Happy Meals
Happy MealsHappy Meals
Happy Meals
 

Similar to JSX の現在と未来 - Oct 26 2013

ゲームだけじゃないHTML5
ゲームだけじゃないHTML5ゲームだけじゃないHTML5
ゲームだけじゃないHTML5Osamu Shimoda
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術dena_study
 
第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」
第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」
第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」Osamu Shimoda
 
JSX Design Overview (日本語)
JSX Design Overview (日本語)JSX Design Overview (日本語)
JSX Design Overview (日本語)Kazuho Oku
 
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~Shinichi Tomita
 
ネットゲーム開発者がサーバレスしてみたver1.10
ネットゲーム開発者がサーバレスしてみたver1.10ネットゲーム開発者がサーバレスしてみたver1.10
ネットゲーム開発者がサーバレスしてみたver1.10Yasuharu Suzuki
 
Japan elasticusergroup01 Acroquest
Japan elasticusergroup01 AcroquestJapan elasticusergroup01 Acroquest
Japan elasticusergroup01 AcroquestHiroshi Yoshioka
 
【日本語版】Styler: Our Journey to GCP
【日本語版】Styler: Our Journey to GCP【日本語版】Styler: Our Journey to GCP
【日本語版】Styler: Our Journey to GCPMichaelFindlater
 
新しいWEBフロントの開拓.pptx
新しいWEBフロントの開拓.pptx新しいWEBフロントの開拓.pptx
新しいWEBフロントの開拓.pptxRyo Higashigawa
 
DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)denatech2016
 
キャッチアップJavaScriptビルド - ビルドから見るJSの今/2016春
キャッチアップJavaScriptビルド -ビルドから見るJSの今/2016春キャッチアップJavaScriptビルド -ビルドから見るJSの今/2016春
キャッチアップJavaScriptビルド - ビルドから見るJSの今/2016春Kondo Hitoshi
 
WebStormでできること
WebStormでできることWebStormでできること
WebStormでできることkamiyam .
 
Web担当者Forumミーティング2013 Autumn 「マルチデバイス、HTML5がとりまくWebサイト制作とCMSの現在」
Web担当者Forumミーティング2013 Autumn 「マルチデバイス、HTML5がとりまくWebサイト制作とCMSの現在」Web担当者Forumミーティング2013 Autumn 「マルチデバイス、HTML5がとりまくWebサイト制作とCMSの現在」
Web担当者Forumミーティング2013 Autumn 「マルチデバイス、HTML5がとりまくWebサイト制作とCMSの現在」xyz corporation
 
JAMstackは眠らない
JAMstackは眠らないJAMstackは眠らない
JAMstackは眠らないKuniyoshi Tone
 
ガラケーで楽しむオレJSの勧め
ガラケーで楽しむオレJSの勧めガラケーで楽しむオレJSの勧め
ガラケーで楽しむオレJSの勧めHiroshi Tokumaru
 
ななめ45°から見たJavaOne
ななめ45°から見たJavaOneななめ45°から見たJavaOne
ななめ45°から見たJavaOneAdvancedTechNight
 
サンプルで学ぶCassandraアプリケーションの作り方
サンプルで学ぶCassandraアプリケーションの作り方サンプルで学ぶCassandraアプリケーションの作り方
サンプルで学ぶCassandraアプリケーションの作り方Yuki Morishita
 

Similar to JSX の現在と未来 - Oct 26 2013 (20)

ゲームだけじゃないHTML5
ゲームだけじゃないHTML5ゲームだけじゃないHTML5
ゲームだけじゃないHTML5
 
JSX
JSXJSX
JSX
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術
 
第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」
第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」
第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」
 
JSX Design Overview (日本語)
JSX Design Overview (日本語)JSX Design Overview (日本語)
JSX Design Overview (日本語)
 
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~
 
ネットゲーム開発者がサーバレスしてみたver1.10
ネットゲーム開発者がサーバレスしてみたver1.10ネットゲーム開発者がサーバレスしてみたver1.10
ネットゲーム開発者がサーバレスしてみたver1.10
 
Japan elasticusergroup01 Acroquest
Japan elasticusergroup01 AcroquestJapan elasticusergroup01 Acroquest
Japan elasticusergroup01 Acroquest
 
【日本語版】Styler: Our Journey to GCP
【日本語版】Styler: Our Journey to GCP【日本語版】Styler: Our Journey to GCP
【日本語版】Styler: Our Journey to GCP
 
新しいWEBフロントの開拓.pptx
新しいWEBフロントの開拓.pptx新しいWEBフロントの開拓.pptx
新しいWEBフロントの開拓.pptx
 
DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)
 
キャッチアップJavaScriptビルド - ビルドから見るJSの今/2016春
キャッチアップJavaScriptビルド -ビルドから見るJSの今/2016春キャッチアップJavaScriptビルド -ビルドから見るJSの今/2016春
キャッチアップJavaScriptビルド - ビルドから見るJSの今/2016春
 
WebStormでできること
WebStormでできることWebStormでできること
WebStormでできること
 
Web担当者Forumミーティング2013 Autumn 「マルチデバイス、HTML5がとりまくWebサイト制作とCMSの現在」
Web担当者Forumミーティング2013 Autumn 「マルチデバイス、HTML5がとりまくWebサイト制作とCMSの現在」Web担当者Forumミーティング2013 Autumn 「マルチデバイス、HTML5がとりまくWebサイト制作とCMSの現在」
Web担当者Forumミーティング2013 Autumn 「マルチデバイス、HTML5がとりまくWebサイト制作とCMSの現在」
 
JAMstackは眠らない
JAMstackは眠らないJAMstackは眠らない
JAMstackは眠らない
 
Synquery ja
Synquery jaSynquery ja
Synquery ja
 
ガラケーで楽しむオレJSの勧め
ガラケーで楽しむオレJSの勧めガラケーで楽しむオレJSの勧め
ガラケーで楽しむオレJSの勧め
 
ななめ45°から見たJavaOne
ななめ45°から見たJavaOneななめ45°から見たJavaOne
ななめ45°から見たJavaOne
 
サンプルで学ぶCassandraアプリケーションの作り方
サンプルで学ぶCassandraアプリケーションの作り方サンプルで学ぶCassandraアプリケーションの作り方
サンプルで学ぶCassandraアプリケーションの作り方
 
BPStudy20121221
BPStudy20121221BPStudy20121221
BPStudy20121221
 

More from Kazuho Oku

HTTP/2で 速くなるとき ならないとき
HTTP/2で 速くなるとき ならないときHTTP/2で 速くなるとき ならないとき
HTTP/2で 速くなるとき ならないときKazuho Oku
 
QUIC標準化動向 〜2017/7
QUIC標準化動向 〜2017/7QUIC標準化動向 〜2017/7
QUIC標準化動向 〜2017/7Kazuho Oku
 
HTTP/2の課題と将来
HTTP/2の課題と将来HTTP/2の課題と将来
HTTP/2の課題と将来Kazuho Oku
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話Kazuho Oku
 
Reorganizing Website Architecture for HTTP/2 and Beyond
Reorganizing Website Architecture for HTTP/2 and BeyondReorganizing Website Architecture for HTTP/2 and Beyond
Reorganizing Website Architecture for HTTP/2 and BeyondKazuho Oku
 
Recent Advances in HTTP, controlling them using ruby
Recent Advances in HTTP, controlling them using rubyRecent Advances in HTTP, controlling them using ruby
Recent Advances in HTTP, controlling them using rubyKazuho Oku
 
Programming TCP for responsiveness
Programming TCP for responsivenessProgramming TCP for responsiveness
Programming TCP for responsivenessKazuho Oku
 
Programming TCP for responsiveness
Programming TCP for responsivenessProgramming TCP for responsiveness
Programming TCP for responsivenessKazuho Oku
 
Developing the fastest HTTP/2 server
Developing the fastest HTTP/2 serverDeveloping the fastest HTTP/2 server
Developing the fastest HTTP/2 serverKazuho Oku
 
TLS & LURK @ IETF 95
TLS & LURK @ IETF 95TLS & LURK @ IETF 95
TLS & LURK @ IETF 95Kazuho Oku
 
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先Kazuho Oku
 
Cache aware-server-push in H2O version 1.5
Cache aware-server-push in H2O version 1.5Cache aware-server-push in H2O version 1.5
Cache aware-server-push in H2O version 1.5Kazuho Oku
 
HTTP/2時代のウェブサイト設計
HTTP/2時代のウェブサイト設計HTTP/2時代のウェブサイト設計
HTTP/2時代のウェブサイト設計Kazuho Oku
 
H2O - making the Web faster
H2O - making the Web fasterH2O - making the Web faster
H2O - making the Web fasterKazuho Oku
 
H2O - making HTTP better
H2O - making HTTP betterH2O - making HTTP better
H2O - making HTTP betterKazuho Oku
 
H2O - the optimized HTTP server
H2O - the optimized HTTP serverH2O - the optimized HTTP server
H2O - the optimized HTTP serverKazuho Oku
 
JSON SQL Injection and the Lessons Learned
JSON SQL Injection and the Lessons LearnedJSON SQL Injection and the Lessons Learned
JSON SQL Injection and the Lessons LearnedKazuho Oku
 
Using the Power to Prove
Using the Power to ProveUsing the Power to Prove
Using the Power to ProveKazuho Oku
 
JSX - developing a statically-typed programming language for the Web
JSX - developing a statically-typed programming language for the WebJSX - developing a statically-typed programming language for the Web
JSX - developing a statically-typed programming language for the WebKazuho Oku
 
ウェブブラウザの時代は終わるのか 〜スマホアプリとHTML5の未来〜
ウェブブラウザの時代は終わるのか 〜スマホアプリとHTML5の未来〜ウェブブラウザの時代は終わるのか 〜スマホアプリとHTML5の未来〜
ウェブブラウザの時代は終わるのか 〜スマホアプリとHTML5の未来〜Kazuho Oku
 

More from Kazuho Oku (20)

HTTP/2で 速くなるとき ならないとき
HTTP/2で 速くなるとき ならないときHTTP/2で 速くなるとき ならないとき
HTTP/2で 速くなるとき ならないとき
 
QUIC標準化動向 〜2017/7
QUIC標準化動向 〜2017/7QUIC標準化動向 〜2017/7
QUIC標準化動向 〜2017/7
 
HTTP/2の課題と将来
HTTP/2の課題と将来HTTP/2の課題と将来
HTTP/2の課題と将来
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話
 
Reorganizing Website Architecture for HTTP/2 and Beyond
Reorganizing Website Architecture for HTTP/2 and BeyondReorganizing Website Architecture for HTTP/2 and Beyond
Reorganizing Website Architecture for HTTP/2 and Beyond
 
Recent Advances in HTTP, controlling them using ruby
Recent Advances in HTTP, controlling them using rubyRecent Advances in HTTP, controlling them using ruby
Recent Advances in HTTP, controlling them using ruby
 
Programming TCP for responsiveness
Programming TCP for responsivenessProgramming TCP for responsiveness
Programming TCP for responsiveness
 
Programming TCP for responsiveness
Programming TCP for responsivenessProgramming TCP for responsiveness
Programming TCP for responsiveness
 
Developing the fastest HTTP/2 server
Developing the fastest HTTP/2 serverDeveloping the fastest HTTP/2 server
Developing the fastest HTTP/2 server
 
TLS & LURK @ IETF 95
TLS & LURK @ IETF 95TLS & LURK @ IETF 95
TLS & LURK @ IETF 95
 
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
 
Cache aware-server-push in H2O version 1.5
Cache aware-server-push in H2O version 1.5Cache aware-server-push in H2O version 1.5
Cache aware-server-push in H2O version 1.5
 
HTTP/2時代のウェブサイト設計
HTTP/2時代のウェブサイト設計HTTP/2時代のウェブサイト設計
HTTP/2時代のウェブサイト設計
 
H2O - making the Web faster
H2O - making the Web fasterH2O - making the Web faster
H2O - making the Web faster
 
H2O - making HTTP better
H2O - making HTTP betterH2O - making HTTP better
H2O - making HTTP better
 
H2O - the optimized HTTP server
H2O - the optimized HTTP serverH2O - the optimized HTTP server
H2O - the optimized HTTP server
 
JSON SQL Injection and the Lessons Learned
JSON SQL Injection and the Lessons LearnedJSON SQL Injection and the Lessons Learned
JSON SQL Injection and the Lessons Learned
 
Using the Power to Prove
Using the Power to ProveUsing the Power to Prove
Using the Power to Prove
 
JSX - developing a statically-typed programming language for the Web
JSX - developing a statically-typed programming language for the WebJSX - developing a statically-typed programming language for the Web
JSX - developing a statically-typed programming language for the Web
 
ウェブブラウザの時代は終わるのか 〜スマホアプリとHTML5の未来〜
ウェブブラウザの時代は終わるのか 〜スマホアプリとHTML5の未来〜ウェブブラウザの時代は終わるのか 〜スマホアプリとHTML5の未来〜
ウェブブラウザの時代は終わるのか 〜スマホアプリとHTML5の未来〜
 

Recently uploaded

論文紹介: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
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
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
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介: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
 
論文紹介: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
 
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
 

Recently uploaded (8)

論文紹介: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
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
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」の紹介
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介: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
 
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
 

JSX の現在と未来 - Oct 26 2013

  • 1. JSX の現在と未来 Oct. 26 2013 DeNA Co., Ltd. Kazuho Oku 1 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 2. 自己紹介  名前:奥 一穂  経歴: ⁃ モバイルウェブブラウザ Palmscape (Xiino) の開発 (1996-2003) ⁃ IPA未踏スーパークリエータ (2004) • 「ウェブアプリケーション統合開発環境の開発」 ⁃ サイボウズ・ラボ (2005-2010) • Japanize, Pathtraq, Q4M, mycached, … ⁃ ディー・エヌ・エー (2010-) R&Dに従事 JSX の現在と未来 2 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 3. JSX の概要 JSX の現在と未来 3 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 4. altJS とは?  JavaScript に変換して実行される言語  背景: ⁃ JavaScript の普及 ⁃ ウェブブラウザで動くのは JavaScript だけ • ベンダー間の競争の結果、実行速度が高速に ⁃ ウェブブラウザ以外でも JavaScript を使うように • サーバサイド: node.js • クライアントサイド: Titanium, PhoneGap, ngCore, … ⁃ 適用範囲が拡大した結果、不満が噴出 JSX の現在と未来 4 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 5. JSX とは?  DeNA でを中心に開発している altJS ⁃ JavaScript の言語仕様にできるだけ沿いつつ、以下 を実現 ⁃ 静的型付け ⁃ クラスベースのオブジェクト指向 ⁃ 最適化コンパイラ  2012/5/31 に公開 JSX の現在と未来 5 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 6. JSX の現在と未来 6 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 7. altJS の種類  CoffeeScript ⁃ JavaScript と1:1対応する文法 ⁃ 意味論は変更しない  TypeScript ⁃ JavaScript の上位互換  JSX ⁃ JavaScript の下位互換 + 独自拡張  Java Web Toolkit, Haxe, Emscripten, … ⁃ 既存のプログラミング言語を JavaScript に変換 JSX の現在と未来 7 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 8. DeNA における JavaScript  JavaScript による大規模開発 ⁃ 数万行〜10万行規模に及ぶコードベース ⁃ 開発メンバーの入れ替わりが激しい  専用内製ライブラリ/フレームワークの使用が多い ⁃ ngCore, ExGame, Post ExGame, … ⁃ スマホ上での実行が多い + 一部サーバサイド  頻繁なコード変更 ⁃ ゲーム内イベント等 JSX の現在と未来 8 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 9. 直面した問題  生産性と品質担保 ⁃ 実行するまでバグが見つからない ⁃ GUI やネットワークまわりはテストが難しい  実行速度が遅い  ロード時間と使用メモリ量の増大 ⁃ スマートフォンは PC より貧弱 JSX の現在と未来 9 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 10. 解決策: JSX の開発  課題: 生産性と品質担保 → コンパイル時にエラー検知  課題: 実行速度 → JavaScriptへの変換時に最適化コンパイル • 型情報を利用したインライン展開や定数畳み込み  課題: ロード時間と使用メモリ量 → 強力なminify • 静的型付け必須だからプロパティ名の安全確実なリネー ムが可能  トレードオフ: JavaScript の動的な性質を利用したラ イブラリとの接続が煩雑に JSX の現在と未来 10 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 11. 静的型付けで生産性と品質が向上する理由  変数名やメソッドの存在をコンパイル時に検証できる ⁃ 全ての値は、代入するまで参照不可能 ⁃ 以下のような JS でよくある現象と戦わなくていい • “Object foo has no method ’bar’” • “foo is not defined” • いつのまにか値が NaN  実行時にエラーチェックを行うことができる ⁃ 配列の未初期化要素へのアクセスを検出 ⁃ デバッグビルドの場合のみ JSX の現在と未来 11 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 12. なぜ静的型付けを必須としたのか  型付けが Optional なら JavaScript 上位互換なのに ⁃ 例: CoffeeScript, Google Closure Compiler  オプショナルな型付けの問題 ⁃ 型付けがないコードが混在すると、コンパイル時の エラーチェックが困難に ⁃ 安全な最適化やminifyができない JSX の現在と未来 12 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 13. JSX の文法  できるだけ JavaScript っぽく ⁃ プログラマの多くは、新しい言語を学びたいとは思 っていない JSX = JavaScript の式と文 + 型アノテーション + 型推論 + クラスベースのオブジェクト指向 (単一クラス継承、複数インターフェイス継承) (メソッドのオーバーロード可能) JSX の現在と未来 13 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 14. JSX のコード例(アフィン変換) class Point { var x : number, y : number; function constructor(x : number, y : number) { this.x = x; this.y = y; } } class Matrix { var a11 : number, a12 : number, a13 : number var a21 : number, a22 : number, a23 : number; function constructor(a11 : number, a12 : number, (省略)) { this.a11 = a11; (省略) } function transform(pt : Point) : Point { return new Point( this.a11 * pt.x + this.a12 * pt.y + this.a13, this.a21 * pt.x + this.a22 * pt.y + this.a23); } } JSX の現在と未来 14 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 15. JSX のコード例(アフィン変換)  JSX のソースコード: new Matrix(1, 0, 0, 0, 2, 0).transform(new Point(x, y))  生成される JavaScript: {x: x + 0 * y, y: 0 * x + 2 * y} // Note: 0 * n cannot be folded since it is equiv. to: isNaN(n) ? NaN : 0 JSX の現在と未来 15 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 16. Performance Benchmarks  Box2D ⁃ box2d.js を JSX に移植して fps を測定 ⁃ iOS 5.0 – 12%向上 ⁃ Android 2.3 – 29%向上  AOBench ⁃ http://spheresofa.net/blog/?p=757 処理速度 Haxe TypeScript iOS Android JSX JavaScript 0 JSX の現在と未来 0.5 1 1.5 2 16 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 17. プロファイラ  呼出回数や総実行時間を測定 ⁃ サンプリングではない  あらゆる環境で実行可能 JSX の現在と未来 17 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 18. Minify  強力かつ安全な minify ⁃ プロパティ名の短縮は静的型付けが必須でない限り 不可能 Impact of Minifica on Total ngCore HTML5 jsx --release jsx --release | uglifyjs JSX jsx --release | esmangle jsx --release --minify v8bench.jsx 0 JSX の現在と未来 0.2 0.4 0.6 0.8 1 byte size of generated code(ra o) 1.2 18 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 19. JSX 公開後の進化 JSX の現在と未来 19 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 20. JSX 公開後の進化  セルフホスティング ⁃ JSX のコンパイラを JSX へ移植  minify  型推論の強化 ⁃ var a = [1,2,3].map((x) -> 3 * x) • a の型は number[]  オプティマイザの強化 ⁃ メソッドの関数への変換、末尾再帰のループ展開等  JavaScript との互換性の強化 ⁃ export 属性、バインディングのインライン定義 JSX の現在と未来 20 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 21. バインディング/ライブラリの増加  W3C API ⁃ ほぼ全対応 • IDLから自動生成  node.jsx ⁃ node.js 用のバインディングを淡々と作っていくよ ⁃ コア, mysql, memcached, needle, …  Qt.jsx, Ext.jsx, tmlib.jsx, mizuki, … ⁃ ごめんなさいなんかいろいろ忘れてる気が JSX の現在と未来 21 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 22. 現在の開発体制  ゆるふわにこんな感じ? 名前 主な貢献 kazuho リーダー, 言語仕様, コンパイラ実装 gfx コンパイラ実装, テストフレームワーク, W3C バインディング wasabiz セルフホスティング, オプティマイザ, 言語仕様拡張 shibukawa バインディング, パッケージ管理 JSX の現在と未来 22 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 23. DeNA における JSX の使用状況  社内における普及方針 ⁃ 複雑なライブラリの新規開発で JSX を使用 ⁃ その後、それらを使うゲームでも JSX を使用 • 理由: 既存のゲームを JSX に移植するのは非現実的  社内の使用状況 ⁃ JSX で開発されたライブラリが複数存在 • ngCore on HTML5 • HTML5 上で動作するスプライト描画系 • node.js 上で動作するサーバサイドフレームワーク ⁃ それらを使ったゲーム開発プロジェクトが複数 JSX の現在と未来 23 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 24. 社内開発の教訓  言語仕様は枯れている ⁃ 学習コストはそれほど高くなさそう  最適化関連のバグを踏むことがある ⁃ デバッグビルドは品質高い • 開発中はデバッグビルドでエラー検出するのが便利 ⁃ 早期から最適化オプションを使ったテストをすべき JSX の現在と未来 24 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 25. JSX の未来 JSX の現在と未来 25 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 26. 予定している拡張  async対応 ⁃ 非同期処理を同期的に書けるように  JSX のパッケージ管理 ⁃ npm として公開する方向  ドキュメント強化 ⁃ 必要ですよね… JSX の現在と未来 26 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 27. まとめ JSX の現在と未来 27 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.
  • 28. まとめ  JSX は得失のはっきりした altJS ⁃ メリット: • 強力なエラー検出機能 • 実行速度とサイズの両面における最適化 ⁃ デメリット: • JavaScript で書かれた既存との接続が煩雑  プロダクションレベルの成熟度 ⁃ 今後も機能追加します/互換性は壊しません  新規開発案件にオススメ ⁃ バインディングは今後増えて行くでしょうが ⁃ 既存ライブラリへの依存が少ないとなお良い JSX の現在と未来 28 Copyright (C) 2013 DeNA Co.,Ltd. All Rights Reserved.