SlideShare ist ein Scribd-Unternehmen logo
1 von 12
JSX
Design Overview

DeNA Co., Ltd.
  Kazuho Oku
自己紹介

    1997-2003 「Palmscape」「Xiino」の開発者
         Palm OS用Webブラウザ (Sony, IBM, DoCoMo 等が採用)
         JavaScript VMもフルスクラッチで書いていた
    2004 IPA未踏「Webアプリ統合開発環境の開発」
         スーパークリエータ認定
         Perlのウェブブラウザ上でのデバッガ等
    2005-2010 サイボウズ・ラボ
         Japanize, Pathtraq – ブラウザ拡張を使うウェブサービス
         Q4M – メッセージキュー (Mixi, livedoor, DeNA 等で利用)
    2011- ディー・エヌ・エー
         JavaScript 等、プラットフォーム技術の研究開発


May 31 2012                JSX - Design Overview       2
JSX の目標

   優れたウェブブラウザ用プログラミング
    言語
        JavaScript より速く
              ブラウザゲームは速度重要。超重要
        JavaScript より開発効率が高く
              特に中〜大規模開発において
              メンテナンスコストも重要
        JavaScript より成果物の品質が向上
              サービスに影響があるバグの中には JavaScript で書か
               れたコードが原因のものもある
May 31 2012             JSX - Design Overview    3
JavaScript の問題

   生産性が低い
        実行しないとバグが見つからない
   成果物の品質が低い
   遅い
   メモリ食い
   初動が遅い


May 31 2012           JSX - Design Overview   4
JavaScript の問題 = 動的な言語である点

   実行時に「しか」エラーチェックできな
    い
        → 生産性と品質に悪影響
   実行時に適応コンパイル
        → 実行速度、起動速度、メモリ消費量に悪影響
   コンパイラ系の最適化技術が活用されな
    い
              JIT で可能な最適化には限界 or オーバーヘッドが存在
        → 実行速度に悪影響
May 31 2012            JSX - Design Overview   5
解決策

   独自のプログラミング言語を開発
        JavaScript に静的な型機構を追加
        like ActionScript 3 / EcmaScript 4
        JavaScript への変換時に最適化
              JavaScript より高速に!




May 31 2012               JSX - Design Overview   6
先行事例

   いずれも一長一短
                                           実行環境               生産性と品質              速度
                                      (PC Web / SP Web)
               JavaScript                     ○/○                  △               △
          Google Web Toolkit                  ○/△                  □               ×
       Google Closure Compiler                ○/○                  △               □
                  Dart                        △/△                  ○               ×
              ActionScript 3                  △/×                  ○               ○
                   JSX                        ○/○                  ○               ○

   Google Web Toolkit は JVM と JavaScript へのトランスレータの互換性に難あり。Google Closure Compiler には、生産性/品質
   と速度の間にトレードオフあり(ADVANCED_OPTIMIZATIONS モードを使用するには煩雑でエラーチェックの弱い型アノテー
   ションを書く必要があるため)。Dart はネイティブサポートしたブラウザがないに等しく、JavaScript へのトランステータだ
   と実行速度低下。ActionScript 3 は要フラッシュ、スマートホンのブラウザ上で動作しない。



May 31 2012                           JSX - Design Overview                                7
JSX の言語設計方針

   静的型言語
        できるだけ多くのエラーをコンパイル時に検出
              開発効率と品質の向上につながる

   式と文は JavaScript + 型指定
        開発者がとっつきやすいように
        JS への変換におけるオーバーヘッドを最小化
        デバッグ支援コードの挿入
   静的なクラス構造
        リンク時最適化を含むコンパイル時最適化
May 31 2012           JSX - Design Overview   8
JSX が解決する JavaScript の問題

   生産性が低い / 成果物の品質が低い
        → コンパイル時のエラーチェック + デバッグ支援
   速度が遅い
        → コンパイル時最適化
   メモリ食い
        → ???
   初動が遅い
        → ???

May 31 2012      JSX - Design Overview   9
JavaScript との連携

   JS のオブジェクトは JSX 内ではキャストし
    て使用
              (js.global["alert"] as function (:string):void)("hello");

   JS から JSX を呼び出すには require
               JSX.require("foo.jsx")._Main.run$();




May 31 2012                      JSX - Design Overview                     10
最適化

 JavaScript より遅くはならない
    理由: 式と文が1対1対応だから
 型情報を使ったインライン展開を実装
    中〜大規模開発でプロジェクトで特に有効
    Google Closure Compiler では不可能な展開も実現
 型アノテーションつきの JavaScript を出
  力
         Closure Compiler で更に最適化可能
         つまり JSX で書くだけで Closure Compiler
May 31 2012 (ADVANCED_OPTIMIZATIONS) 以上の高速化
                          JSX - Design Overview   11
最適化の実装状況

   数種類のテストプログラムで JavaScript
    より高速なことを確認
   大域最適化から優先して実装中
        インライン展開
              既に Google Closure Compiler より優秀?
        定数畳み込み
        リンク時最適化
        コードの可読性が下がらない最適化はあとまわし
              例: loop-invariant code motion, CSE

May 31 2012                    JSX - Design Overview   12

Weitere ähnliche Inhalte

Was ist angesagt?

(過去バージョン) Q#基礎 ver1.0
(過去バージョン) Q#基礎 ver1.0(過去バージョン) Q#基礎 ver1.0
(過去バージョン) Q#基礎 ver1.0Takayoshi Tanaka
 
AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~Yabata Tomomitsu
 
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発日本マイクロソフト株式会社
 
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善Works Applications
 
復習も兼ねて!C#6.0-7.0
復習も兼ねて!C#6.0-7.0復習も兼ねて!C#6.0-7.0
復習も兼ねて!C#6.0-7.0Yuta Matsumura
 
はじめての UWP アプリ開発
はじめての UWP アプリ開発はじめての UWP アプリ開発
はじめての UWP アプリ開発hiyohiyo
 
Android アプリ開発における Gradle ビルドシステム
Android アプリ開発における Gradle ビルドシステムAndroid アプリ開発における Gradle ビルドシステム
Android アプリ開発における Gradle ビルドシステムYu Nobuoka
 
【BS15】.NET アップグレード アシスタントで簡単にできます! .NET Framework アプリの .NET 6 へのマイグレーション
【BS15】.NET アップグレード アシスタントで簡単にできます! .NET Framework アプリの .NET 6 へのマイグレーション 【BS15】.NET アップグレード アシスタントで簡単にできます! .NET Framework アプリの .NET 6 へのマイグレーション
【BS15】.NET アップグレード アシスタントで簡単にできます! .NET Framework アプリの .NET 6 へのマイグレーション 日本マイクロソフト株式会社
 
20170624 interact2017 open shift on azure
20170624 interact2017 open shift on azure20170624 interact2017 open shift on azure
20170624 interact2017 open shift on azureTakayoshi Tanaka
 
.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素Akira Inoue
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Koichi Sakata
 
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介 【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介 日本マイクロソフト株式会社
 
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデートデモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデートAkira Inoue
 
.NET Core時代のCI/CD
.NET Core時代のCI/CD.NET Core時代のCI/CD
.NET Core時代のCI/CDYuta Matsumura
 
マイクロサービス時代の動画配信基Ruby×go=∞
マイクロサービス時代の動画配信基Ruby×go=∞マイクロサービス時代の動画配信基Ruby×go=∞
マイクロサービス時代の動画配信基Ruby×go=∞DMM.com
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところY Watanabe
 
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介Yuta Matsumura
 

Was ist angesagt? (20)

(過去バージョン) Q#基礎 ver1.0
(過去バージョン) Q#基礎 ver1.0(過去バージョン) Q#基礎 ver1.0
(過去バージョン) Q#基礎 ver1.0
 
AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~
 
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
 
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
 
復習も兼ねて!C#6.0-7.0
復習も兼ねて!C#6.0-7.0復習も兼ねて!C#6.0-7.0
復習も兼ねて!C#6.0-7.0
 
【BS2】.NET 6 最新アップデート
【BS2】.NET 6 最新アップデート【BS2】.NET 6 最新アップデート
【BS2】.NET 6 最新アップデート
 
はじめての UWP アプリ開発
はじめての UWP アプリ開発はじめての UWP アプリ開発
はじめての UWP アプリ開発
 
ゼロから始めるQ#
ゼロから始めるQ#ゼロから始めるQ#
ゼロから始めるQ#
 
Android アプリ開発における Gradle ビルドシステム
Android アプリ開発における Gradle ビルドシステムAndroid アプリ開発における Gradle ビルドシステム
Android アプリ開発における Gradle ビルドシステム
 
【BS15】.NET アップグレード アシスタントで簡単にできます! .NET Framework アプリの .NET 6 へのマイグレーション
【BS15】.NET アップグレード アシスタントで簡単にできます! .NET Framework アプリの .NET 6 へのマイグレーション 【BS15】.NET アップグレード アシスタントで簡単にできます! .NET Framework アプリの .NET 6 へのマイグレーション
【BS15】.NET アップグレード アシスタントで簡単にできます! .NET Framework アプリの .NET 6 へのマイグレーション
 
20170624 interact2017 open shift on azure
20170624 interact2017 open shift on azure20170624 interact2017 open shift on azure
20170624 interact2017 open shift on azure
 
.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
 
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介 【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
 
20201127 .NET 5
20201127 .NET 520201127 .NET 5
20201127 .NET 5
 
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデートデモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
 
.NET Core時代のCI/CD
.NET Core時代のCI/CD.NET Core時代のCI/CD
.NET Core時代のCI/CD
 
マイクロサービス時代の動画配信基Ruby×go=∞
マイクロサービス時代の動画配信基Ruby×go=∞マイクロサービス時代の動画配信基Ruby×go=∞
マイクロサービス時代の動画配信基Ruby×go=∞
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
 
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
 

Andere mochten auch

Test Engineering on Mobage
Test Engineering on MobageTest Engineering on Mobage
Test Engineering on MobageMasaki Nakagawa
 
Latest Meteor JS News
Latest Meteor JS NewsLatest Meteor JS News
Latest Meteor JS NewsDesignveloper
 
Microservices with SenecaJS (part 2)
Microservices with SenecaJS (part 2)Microservices with SenecaJS (part 2)
Microservices with SenecaJS (part 2)Designveloper
 
Android Abc2009 Fall Shima091130 1
Android Abc2009 Fall Shima091130 1Android Abc2009 Fall Shima091130 1
Android Abc2009 Fall Shima091130 1shimay
 
Using video online to increase sales slideshare
Using video online to increase sales slideshareUsing video online to increase sales slideshare
Using video online to increase sales slideshareDIYMarketers
 
From research student to academic: thinking about and preparing for academic ...
From research student to academic: thinking about and preparing for academic ...From research student to academic: thinking about and preparing for academic ...
From research student to academic: thinking about and preparing for academic ...Joss Winn
 
Ilona fpra luncheon
Ilona fpra luncheonIlona fpra luncheon
Ilona fpra luncheonilona418
 
JSX の現在と未来 - Oct 26 2013
JSX の現在と未来 - Oct 26 2013JSX の現在と未来 - Oct 26 2013
JSX の現在と未来 - Oct 26 2013Kazuho Oku
 
A Long Walk to Water: Lesson19 unit2
A Long Walk to Water: Lesson19 unit2A Long Walk to Water: Lesson19 unit2
A Long Walk to Water: Lesson19 unit2Terri Weiss
 
A Long Walk to Water: Lesson18 unit2
A Long Walk to Water: Lesson18 unit2A Long Walk to Water: Lesson18 unit2
A Long Walk to Water: Lesson18 unit2Terri Weiss
 
Lyddie: Unit2 lesson5
Lyddie:  Unit2 lesson5Lyddie:  Unit2 lesson5
Lyddie: Unit2 lesson5Terri Weiss
 
Latvia my school-keipenes_school(1)
Latvia my school-keipenes_school(1)Latvia my school-keipenes_school(1)
Latvia my school-keipenes_school(1)Gavranica
 
Bulgaria 25et
Bulgaria 25etBulgaria 25et
Bulgaria 25etGavranica
 
Lyddie: Unit2 lesson1
Lyddie: Unit2 lesson1Lyddie: Unit2 lesson1
Lyddie: Unit2 lesson1Terri Weiss
 

Andere mochten auch (20)

JSX
JSXJSX
JSX
 
Test Engineering on Mobage
Test Engineering on MobageTest Engineering on Mobage
Test Engineering on Mobage
 
JSX Optimizer
JSX OptimizerJSX Optimizer
JSX Optimizer
 
Latest Meteor JS News
Latest Meteor JS NewsLatest Meteor JS News
Latest Meteor JS News
 
Microservices with SenecaJS (part 2)
Microservices with SenecaJS (part 2)Microservices with SenecaJS (part 2)
Microservices with SenecaJS (part 2)
 
Android Abc2009 Fall Shima091130 1
Android Abc2009 Fall Shima091130 1Android Abc2009 Fall Shima091130 1
Android Abc2009 Fall Shima091130 1
 
Journey To The East Part 2
Journey To The East Part 2Journey To The East Part 2
Journey To The East Part 2
 
Unit 2.7 Images
Unit 2.7 ImagesUnit 2.7 Images
Unit 2.7 Images
 
Antropologia rzeczy
Antropologia rzeczyAntropologia rzeczy
Antropologia rzeczy
 
Using video online to increase sales slideshare
Using video online to increase sales slideshareUsing video online to increase sales slideshare
Using video online to increase sales slideshare
 
From research student to academic: thinking about and preparing for academic ...
From research student to academic: thinking about and preparing for academic ...From research student to academic: thinking about and preparing for academic ...
From research student to academic: thinking about and preparing for academic ...
 
Ilona fpra luncheon
Ilona fpra luncheonIlona fpra luncheon
Ilona fpra luncheon
 
JSX の現在と未来 - Oct 26 2013
JSX の現在と未来 - Oct 26 2013JSX の現在と未来 - Oct 26 2013
JSX の現在と未来 - Oct 26 2013
 
A Long Walk to Water: Lesson19 unit2
A Long Walk to Water: Lesson19 unit2A Long Walk to Water: Lesson19 unit2
A Long Walk to Water: Lesson19 unit2
 
A Long Walk to Water: Lesson18 unit2
A Long Walk to Water: Lesson18 unit2A Long Walk to Water: Lesson18 unit2
A Long Walk to Water: Lesson18 unit2
 
Zehirleme
ZehirlemeZehirleme
Zehirleme
 
Lyddie: Unit2 lesson5
Lyddie:  Unit2 lesson5Lyddie:  Unit2 lesson5
Lyddie: Unit2 lesson5
 
Latvia my school-keipenes_school(1)
Latvia my school-keipenes_school(1)Latvia my school-keipenes_school(1)
Latvia my school-keipenes_school(1)
 
Bulgaria 25et
Bulgaria 25etBulgaria 25et
Bulgaria 25et
 
Lyddie: Unit2 lesson1
Lyddie: Unit2 lesson1Lyddie: Unit2 lesson1
Lyddie: Unit2 lesson1
 

Ähnlich wie JSX Design Overview (日本語)

Net advantage 2012 volume2 最新情報 xaml プラットフォーム編
Net advantage 2012 volume2 最新情報 xaml プラットフォーム編Net advantage 2012 volume2 最新情報 xaml プラットフォーム編
Net advantage 2012 volume2 最新情報 xaml プラットフォーム編Daizen Ikehara
 
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力Akira Inoue
 
HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解Monaca
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShiftEtsuji Nakai
 
JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)taskie
 
Flex開発を加速するFlash Builder 4新機能紹介
Flex開発を加速するFlash Builder 4新機能紹介Flex開発を加速するFlash Builder 4新機能紹介
Flex開発を加速するFlash Builder 4新機能紹介Keisuke Todoroki
 
~初心者がこれから Web アプリの開発をするために~
~初心者がこれから Web アプリの開発をするために~~初心者がこれから Web アプリの開発をするために~
~初心者がこれから Web アプリの開発をするために~Oda Shinsuke
 
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Codeどっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio CodeTakashi Okawa
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発Akira Inoue
 
【17-B-6】RIAの性能テストとアプリケーション品質向上のための管理手法
【17-B-6】RIAの性能テストとアプリケーション品質向上のための管理手法【17-B-6】RIAの性能テストとアプリケーション品質向上のための管理手法
【17-B-6】RIAの性能テストとアプリケーション品質向上のための管理手法Developers Summit
 
Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309Nobuhiro Sue
 
Java scriptの進化
Java scriptの進化Java scriptの進化
Java scriptの進化maruyama097
 
Gws 20120521 gradle
Gws 20120521 gradleGws 20120521 gradle
Gws 20120521 gradleNobuhiro Sue
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから真吾 吉田
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshopDaisuke Sugai
 
Introduction to web development 1
Introduction to web development 1Introduction to web development 1
Introduction to web development 1hideaki honda
 
デスクトップ アプリ開発における Visual Studio の進化
デスクトップ アプリ開発における Visual Studio の進化デスクトップ アプリ開発における Visual Studio の進化
デスクトップ アプリ開発における Visual Studio の進化Katsuhiro Aizawa
 

Ähnlich wie JSX Design Overview (日本語) (20)

Net advantage 2012 volume2 最新情報 xaml プラットフォーム編
Net advantage 2012 volume2 最新情報 xaml プラットフォーム編Net advantage 2012 volume2 最新情報 xaml プラットフォーム編
Net advantage 2012 volume2 最新情報 xaml プラットフォーム編
 
Mvc conf session_5_isami
Mvc conf session_5_isamiMvc conf session_5_isami
Mvc conf session_5_isami
 
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
 
HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift
 
JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)
 
Flex開発を加速するFlash Builder 4新機能紹介
Flex開発を加速するFlash Builder 4新機能紹介Flex開発を加速するFlash Builder 4新機能紹介
Flex開発を加速するFlash Builder 4新機能紹介
 
~初心者がこれから Web アプリの開発をするために~
~初心者がこれから Web アプリの開発をするために~~初心者がこれから Web アプリの開発をするために~
~初心者がこれから Web アプリの開発をするために~
 
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Codeどっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
 
【17-B-6】RIAの性能テストとアプリケーション品質向上のための管理手法
【17-B-6】RIAの性能テストとアプリケーション品質向上のための管理手法【17-B-6】RIAの性能テストとアプリケーション品質向上のための管理手法
【17-B-6】RIAの性能テストとアプリケーション品質向上のための管理手法
 
Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309
 
Java scriptの進化
Java scriptの進化Java scriptの進化
Java scriptの進化
 
Gws 20120521 gradle
Gws 20120521 gradleGws 20120521 gradle
Gws 20120521 gradle
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
 
開発ツール「Wijmo」と「SpreadJS」からみる業務アプリケーションの変遷とこれから
開発ツール「Wijmo」と「SpreadJS」からみる業務アプリケーションの変遷とこれから開発ツール「Wijmo」と「SpreadJS」からみる業務アプリケーションの変遷とこれから
開発ツール「Wijmo」と「SpreadJS」からみる業務アプリケーションの変遷とこれから
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshop
 
Grailsのススメ(仮)
Grailsのススメ(仮)Grailsのススメ(仮)
Grailsのススメ(仮)
 
Introduction to web development 1
Introduction to web development 1Introduction to web development 1
Introduction to web development 1
 
デスクトップ アプリ開発における Visual Studio の進化
デスクトップ アプリ開発における Visual Studio の進化デスクトップ アプリ開発における Visual Studio の進化
デスクトップ アプリ開発における Visual Studio の進化
 

Mehr von 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
 
HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向Kazuho 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 - 公開から1年を迎えて
JSX - 公開から1年を迎えてJSX - 公開から1年を迎えて
JSX - 公開から1年を迎えてKazuho Oku
 

Mehr von 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
 
HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向
 
ウェブを速くするために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 - 公開から1年を迎えて
JSX - 公開から1年を迎えてJSX - 公開から1年を迎えて
JSX - 公開から1年を迎えて
 

Kürzlich hochgeladen

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介: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
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
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
 
論文紹介: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
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
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
 
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
 
論文紹介: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
 

Kürzlich hochgeladen (9)

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介: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
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
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
 
論文紹介: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
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
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
 
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」の紹介
 
論文紹介: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...
 

JSX Design Overview (日本語)

  • 2. 自己紹介  1997-2003 「Palmscape」「Xiino」の開発者  Palm OS用Webブラウザ (Sony, IBM, DoCoMo 等が採用)  JavaScript VMもフルスクラッチで書いていた  2004 IPA未踏「Webアプリ統合開発環境の開発」  スーパークリエータ認定  Perlのウェブブラウザ上でのデバッガ等  2005-2010 サイボウズ・ラボ  Japanize, Pathtraq – ブラウザ拡張を使うウェブサービス  Q4M – メッセージキュー (Mixi, livedoor, DeNA 等で利用)  2011- ディー・エヌ・エー  JavaScript 等、プラットフォーム技術の研究開発 May 31 2012 JSX - Design Overview 2
  • 3. JSX の目標 優れたウェブブラウザ用プログラミング 言語 JavaScript より速く ブラウザゲームは速度重要。超重要 JavaScript より開発効率が高く 特に中〜大規模開発において メンテナンスコストも重要 JavaScript より成果物の品質が向上 サービスに影響があるバグの中には JavaScript で書か れたコードが原因のものもある May 31 2012 JSX - Design Overview 3
  • 4. JavaScript の問題 生産性が低い 実行しないとバグが見つからない 成果物の品質が低い 遅い メモリ食い 初動が遅い May 31 2012 JSX - Design Overview 4
  • 5. JavaScript の問題 = 動的な言語である点 実行時に「しか」エラーチェックできな い → 生産性と品質に悪影響 実行時に適応コンパイル → 実行速度、起動速度、メモリ消費量に悪影響 コンパイラ系の最適化技術が活用されな い JIT で可能な最適化には限界 or オーバーヘッドが存在 → 実行速度に悪影響 May 31 2012 JSX - Design Overview 5
  • 6. 解決策 独自のプログラミング言語を開発 JavaScript に静的な型機構を追加 like ActionScript 3 / EcmaScript 4 JavaScript への変換時に最適化 JavaScript より高速に! May 31 2012 JSX - Design Overview 6
  • 7. 先行事例 いずれも一長一短 実行環境 生産性と品質 速度 (PC Web / SP Web) JavaScript ○/○ △ △ Google Web Toolkit ○/△ □ × Google Closure Compiler ○/○ △ □ Dart △/△ ○ × ActionScript 3 △/× ○ ○ JSX ○/○ ○ ○ Google Web Toolkit は JVM と JavaScript へのトランスレータの互換性に難あり。Google Closure Compiler には、生産性/品質 と速度の間にトレードオフあり(ADVANCED_OPTIMIZATIONS モードを使用するには煩雑でエラーチェックの弱い型アノテー ションを書く必要があるため)。Dart はネイティブサポートしたブラウザがないに等しく、JavaScript へのトランステータだ と実行速度低下。ActionScript 3 は要フラッシュ、スマートホンのブラウザ上で動作しない。 May 31 2012 JSX - Design Overview 7
  • 8. JSX の言語設計方針 静的型言語 できるだけ多くのエラーをコンパイル時に検出 開発効率と品質の向上につながる 式と文は JavaScript + 型指定 開発者がとっつきやすいように JS への変換におけるオーバーヘッドを最小化 デバッグ支援コードの挿入 静的なクラス構造 リンク時最適化を含むコンパイル時最適化 May 31 2012 JSX - Design Overview 8
  • 9. JSX が解決する JavaScript の問題 生産性が低い / 成果物の品質が低い → コンパイル時のエラーチェック + デバッグ支援 速度が遅い → コンパイル時最適化 メモリ食い → ??? 初動が遅い → ??? May 31 2012 JSX - Design Overview 9
  • 10. JavaScript との連携 JS のオブジェクトは JSX 内ではキャストし て使用 (js.global["alert"] as function (:string):void)("hello"); JS から JSX を呼び出すには require  JSX.require("foo.jsx")._Main.run$(); May 31 2012 JSX - Design Overview 10
  • 11. 最適化 JavaScript より遅くはならない 理由: 式と文が1対1対応だから 型情報を使ったインライン展開を実装 中〜大規模開発でプロジェクトで特に有効 Google Closure Compiler では不可能な展開も実現 型アノテーションつきの JavaScript を出 力 Closure Compiler で更に最適化可能 つまり JSX で書くだけで Closure Compiler May 31 2012 (ADVANCED_OPTIMIZATIONS) 以上の高速化 JSX - Design Overview 11
  • 12. 最適化の実装状況 数種類のテストプログラムで JavaScript より高速なことを確認 大域最適化から優先して実装中 インライン展開 既に Google Closure Compiler より優秀? 定数畳み込み リンク時最適化 コードの可読性が下がらない最適化はあとまわし 例: loop-invariant code motion, CSE May 31 2012 JSX - Design Overview 12