Kanazawa.JavaScript.Next

8adee9b4425232f1c23d6592a5d8c807?s=47 dynamis
March 31, 2012

 Kanazawa.JavaScript.Next

Kanazawa.js 1.7 with Mozilla で利用したスライド

8adee9b4425232f1c23d6592a5d8c807?s=128

dynamis

March 31, 2012
Tweet

Transcript

  1. JavaScript.Next @ Kanazawa.js 1.7 with Mozilla by Tomoya ASAI (dynamis)

    Mozilla Japan - Technical Marketing last update on 2012.03.30 see also: http://dynamis.jp/r
  2. BCPVUNF http:// dynamis.jp @dynamitter facebook.com/ dynamis mailto: Tomoya ASAI <dynamis

    mozilla-japan.org> @
  3. latest topic ECMAScript 5th ECMAScript 6th (Appendix) (References) Agenda

  4. ࠷ۙͷා͍࿩ɻ ոஊ࿩ʹ͸·ͩૣ͍ʁ

  5. ͪΐͬͱݹ͍σʔλͰΰϝϯ

  6. +BWB4DSJQU௒ߴ଎Խʂ "DUJPO4DSJQU஗͍ϚϚ

  7. None
  8. 'MBTIήʔϜʹϥΠηϯεྉ  'MBTIͷϋʔυ΢ΣΞΞΫηϥ ϨʔγϣϯΛόϦόϦ࢖ͬͨ EPNBJONFNPSZ4UBHF%  %ΞϓϦͰརӹΛ্͛ͨΒ  རӹͷ͸"EPCF͕຅ऩʂ

  9. "EPCFා͍ɻ ϓϩϓϥා͍ɻ +BWB4DSJQU͸ඪ४͔ͩΒ҆৺Ͱ͢Ͷ

  10. ͓͜ͱΘΓɻ  ݱߦ࢓༷͸஫໨ػೳΛൈਮ  ࣍ੈ୅࢓༷͸࣮૷͋ΓΛத৺ʹ  ಛʹෳ਺BOEPS௕ظ࣮૷͋Γ ૲Ҋ SFW ΑΓ޿͍ൣғ

    ఏҊ QSPQPTBM Λத৺ʹѻ͏͕ ࢼҊ TUSBXNBO ΋Ұ෦ؚΉ  cԋࢉࢠͱ͔ѻ͍·ͤΜɻ Proposal Strawman ࠓճ͸ωλతͳ࿩͸গͳΊͰ͢ m(_ _)m
  11. ECMAScript 5th first release of Harmony...

  12. &$."4DSJQUUI  ݱߦͷඪ४࢓༷Ͱ͢ ͱ͸۠ผ͢Δҙຯͳ͠  *&Ҏ߱͸΄΅ϑϧαϙʔτ 'JSFGPY $ISPNF 0QFSB *&

     TUSJDUNPEFҎ֎ 4BGBSJ  CJOEҎ֎  ৄࡉ͸ޓ׵දΛࢀর: http://kangax.github.com/es5-compat-table/
  13. None
  14. ޙํޓ׵εΫϦϓτ  ࠷ॳʹಡΈࠐΜͰޙํޓ׵ʹ  "VHNFOUKT  IUUQBVHNFOUKTDPN  EESFDNB IUUQDPEFHPPHMFDPNQEESFDNB

     FTTIJN  IUUQTHJUIVCDPNLSJTLPXBMFTTIJN
  15. /BUJWF+40/  Ϙεͷ࡞ͬͨ࢓༷ɻ  *& ͦͷଞ޿͘αϙʔτ  *& ʹ͸KTPOKTͰରԠ IUUQKTPOPSHKTIUNM

    Ready! http://json.org/
  16. /BUJWF+40/ // JSON 文字列から JavaScript オブジェクトを生成 var obj1 = JSON.parse('[1,

    2, 3, 4]'); var obj2 = JSON.parse('{"key": "value"}'); // JavaScript オブジェクトを JSON 文字列に変換 var obj = {}; obj.foo = "some property"; obj.bar = 1; var json = JSON.stringify(obj); // -> '{"foo":"some property","bar":1}'
  17. +40/ར༻ͷ஫ҙ  *&͸65'จࣈྻΛTUSJOHJGZ ͰΤεέʔϓ aV9999 ͞ΕΔ VOFTDBQF +40/TUSJOHJGZ จࣈ ྻ

    SFQMBDF aaVH V  TUSJOHJGZୈҾ਺ʹ͸஫ҙ  ݹ͍'JSFGPY౳ʹόά͋Γ  %BUFΦϒδΣΫτʹ΋஫ҙ  ϒϥ΢βؒͷڍಈ͕ҟͳΔ ड͚౉͢͠ΔσʔλʹΑͬͯ͸ཁ஫ҙ
  18. "SSBZ&YUSB  ഑ྻૢ࡞ϝιουΛ௥Ճ JOEFY0G MBTU*OEFY0G FWFSZ TPNF GPS&BDI NBQ pMUFS

    SFEVDF SFEVDF3JHIU  ݹ͔͘Β޿࣮͘૷͞Ε͖ͯͨ 'JSFGPY΍͕࠷ॳʹ࣮૷  *&dʹ͸"VHNFOUKTͳͲ Ready!
  19. "SSBZ&YUSB#BTJD6TBHF function isPositive(e, i, arr) { return (e > 0);

    } [1,3,-1,-3,5].filter(isPositive); // -> [1, 3, 5] [2,5,10,3].every(isPositive); // -> true [3,2,-1,5].every(isPositive); // -> false [2,-5,1,3].some(isPositive); // -> true [-1,-20,0].every(isPositive); // -> false
  20. "SSBZ&YUSB#BTJD6TBHF function sum(a,b) { return a+b; } function concatArray(a,b) {

    return a.concat(b); } var nestedArray = [[0, 1], [2, 3], [4, 5]]; var flat1 = nestedArray.reduce(concatArray); // -> [0, 1, 2, 3, 4, 5] var flat2 = nestedArray.reduceRight(concatArray); // -> [4, 5, 2, 3, 0, 1] var total = flat1.reduce(sum); // -> 15
  21. "SSBZ&YUSB&YUSB6TBHF function getcharcode(x) { return x.charCodeAt(0); } Array.prototype.map.call("dynamis", getcharcode); //

    [100, 121, 110, 97, 109, 105, 115] // Array 以外にも Generic に使いたい場合は call する [1,2,3,2,1].map(parseInt); // [1, NaN, NaN, 2, 1] // parseInt は (文字列, 基数) を受け取る関数 // 関数には (要素, インデックス, 配列) が渡される
  22. 'VODUJPOQSPUPUZQFCJOE  UIJTΛݻఆͨؔ͠਺Λఆٛ  BSHVNFOUT΋ݻఆՄೳ  4BGBSJ͸ະαϙʔτ *& 'JSFGPY $ISPNF

     0QFSB Ͱαϙʔτ 8FC,JU/JHIUMZ΋ରԠࡁΈ  "VHNFOUKTͳͲͰ ΄΅ ޙํޓ׵ No Safari Ready!
  23. CJOEͰϝιουΛؔ਺ʹ // Arguments などを Array に変換するショートカット定義 // call はメソッドとして使う必要があるので美しくない var

    slice1 = Array.prototype.slice; var argumentsArray1 = slice1.call(arguments); argumentsArray1.every( ... ) // Array のメソッドが使える // bind で関数として使えるシンプルなショートカットに var slice2 = Function.prototype.call.bind(slice1); var argumentsArray2 = slice2(arguments); argumentsArray2.filter( ... ) // Array は便利...
  24. $BMMCBDLͰ΋UIJTΛܧঝ var obj = { before: function() { // this

    を self に保持する必要あり var self = this; document.addEventListener('click', function(e) { self.handler(e) }, false); }, after: function() { // bind 使えば self なしでシンプルに document.addEventListener('click', this.handler.bind(this), false); }, handler: function(e) { // イベントハンドラ呼び出し時にも this === obj にしたい } } ͜Ε͚ͩͷͨΊͳΒ bind ࢖Θͣ self ʹอ࣋͢ΔͷͰे෼Ͱ͕͢...
  25. CJOEͰؔ਺ͷҾ਺Λݻఆ // 2点間の距離 function distance(x1,y1, x2,y2) { return Math.sqrt(Math.pow(x1-x2,2)+Math.pow(y1-y2,2)); }

    distance(2,11, 6,8); // -> 5 // 原点からの距離 (最初の2つの引数を固定) // 関数が this 使わないなら undefined で良い var distanceFromOrigin = distance.bind(undefined, 0, 0); distanceFromOrigin(6,8) // -> 10
  26. 4USJDU.PEF  ྑ͋͘ΔϛεΛΤϥʔͱͯ͠ݕग़  *&ະαϙʔτʹཁ஫ҙ *& 'JSFGPY $ISPNF  4BGBSJ

    0QFSB ͕ରԠ *&͸·ͩόά͋Γ͕ͩظ଴  Φϯʹ͢Δ͚ͩͳΒޙํޓ׵  ඇޓ׵ίʔυΛ࢖Θͳ͚Ε͹ ςετ͚࣌ͩ࢖͏ͷ΋ΞϦ No IE ಛʹཧ༝ͳ͚Ε͹ Strict Mode ͰΤϥʔʹͳΒͳ͍ίʔυΛॻ͘श׳Λ෇͚·͠ΐ͏ No Shim
  27. 4USJDU.PEF // ファイル冒頭で "use strict"; を書くとオンになる "use strict"; var type

    = "foo"; // 未定義の変数への代入 typo = "bar"; // × asignment to undeclared variable typo // 書き込み禁止や削除禁止のプロパティ操作 NaN = null; // × NaN is read-only delete Object.prototype; // × property Object.prototype is non-configurable and // can't be deleted https://developer.mozilla.org/en/JavaScript/Strict_mode
  28. 4USJDU.PEF "use strict"; // オブジェクトのプロパティ名や関数の引数名の重複 var obj = { foo:

    1, foo: 2 } // × property name foo appears more than once in object // literal function f(bar, bar) { return bar; } // × duplicate formal argument bar var sum = 015 + // 8 進数リテラル (誤用) 197 + 142; // × octal literals and octal escape sequences are // deprecated https://developer.mozilla.org/en/JavaScript/Strict_mode
  29. 4USJDU.PEF // Strict Mode は関数単位でも利用できます (function dosomething() { "use strict";

    // 関数内だけ Strict Mode に typo = "(・・)."; // × Error })() console.log(typo); // -> undefined (function dootherthing() { // こちらは Classic Mode typo = "(・・)."; // グローバル変数を定義 })() console.log(typo) // -> "(・・)." https://developer.mozilla.org/en/JavaScript/Strict_mode
  30. NPSFBCPVU4USJDU.PEF  XJUI࢖༻ېࢭ BSHVNFOUTDBMMFSDBMMFFېࢭ  ؔ਺தͰ͸UIJTOVMMHMPCBM  FWBMதͷίʔυ͸֎෦είʔϓʹ ม਺ΛఆٛͰ͖ͳ͍ 

    εΫϦϓτ·ͨ͸ؔ਺಺ͷτοϓ ϨϕϧҎ֎Ͱͷؔ਺ఆٛېࢭ  ͦͷଞ͍Ζ͍Ζ
  31. (FUUFS4FUUFS  ϓϩύςΟ஋ͷऔಘɾઃఆΛߦ ͏ͨΊͷಛผͳϝιου  HFUUFSؔ਺ͷฦΓ஋Λऔಘ TFUUFSؔ਺Λઃఆ࣌ʹ࣮ߦ  @@EFpOF(FUUFS@@ͳͲ͸ඇඪ४ Ready!

    No Shim
  32. (FUUFS4FUUFS var incremantal = { _n: 0, get next() {

    return this._n++; }, // アクセス時に呼び出し set next(n) { // 代入時に呼び出し if (n >= this._n) this._n=n; else throw "減らしちゃダメ!" } } incremantal.next; // -> 0 incremantal.next; // -> 1 incremantal.next = 3; incremantal.next; // -> 3 incremantal.next = 1; // -> "減らしちゃダメ!"
  33. .FNPJ[BUJPO -B[JMZ-PBE var obj = { get somethinglarge() { //

    getter 自身を削除し、単なるプロパティに変更 delete this.somethinglarge; return this.somethinglarge = new Large(); } } // ここまで読み込んだだけでは new Large() されない // = getter 定義のコストしかかからない ... obj.somethinglarge ... // 最初にアクセスした時に new Large() される ... obj.somethinglarge ... // 2 度目からは new されずに再利用される ࢖͏ͱݶΒͳ͍͕܁Γฦ͠࢖͏େ͖ͳΦϒδΣΫτ͕͋Δ࣌ͷ Perf Tips
  34. TFBMGSFF[F  ΦϒδΣΫτΛ੩తʹ  ؒҧͬͯॻ͖׵͑ΔͷΛ๷ࢭ ݩʹ໭͢͜ͱ͸Ͱ͖ͳ͍  TFBMϓϩύςΟ௥Ճɾ࡟আېࢭ  GSFF[FϓϩύςΟมߋېࢭ

     4USJDU.PEFͰ͸ྫ֎Λൃੜ Ready! No Shim seal/freeze ͞ΕͯΔ͔Ͳ͏͔͸ isSealed/isFrozen Ͱ֬ೝͰ͖Δ
  35. TFBM var obj = { foo: 1, bar: 2 };

    obj.foo = 3; obj.baz = 4; delete obj.bar; console.log(obj); // -> { foo: 3, baz: 4 } Object.seal(obj); obj.foo = 5; // 既存プロパティは変更可能 obj.bar = 6; // プロパティ追加は黙って無視 console.log(obj); // -> { foo: 5, baz: 4 } https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/seal
  36. GSFF[F "use strict"; // 黙って無視せず例外を発生させる var obj = { foo:

    1, bar: 2 }; obj.foo = 3; obj.baz = 4; delete obj.bar; console.log(obj); // -> { foo: 3, baz: 4 } Object.freeze(obj); obj.foo = 5; // × obj.foo is read-only obj.bar = 6; // × obj.bar is not extensible console.log(obj); // -> { foo: 3, baz: 4 } https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/freeze
  37. BOENPSF  4USJOHQSPUPUZQFUSJN  "SSBZJT"SSBZ %BUFOPX  %BUFQSPUPUZQFUP*404USJOH  /B/

    *OpOJUZ VOEFpOFEఆ਺Խ  QSFWFOU&YUFOTJPOT JT&YUFOTJCMF  QFSTF*OU  ͳͲ΋ਐ਺ʹ  ͦͷଞ͍Ζ͍Ζ
  38. BCPVU&$."UI  4USJDU.PEFͰϛεΛݮগ  +40/΍"SSBZؔ਺͕ศརʹ  ΦϒδΣΫτࢦ޲पΓ΋ڧԽ  جຊతʹߏจ͸มԽͳ͠ 

    ޙํޓ׵͸4IJNͰରԠ
  39. ECMAScript 6th Next release of Harmony...

  40. &$."4DSJQUUIͷ໨ඪ  ΑΓॻ͖΍͍͢ݴޠ ෳࡶͳΞϓϦɺϥΠϒϥϦɺ ࣍࢓༷ͷίʔυδΣωϨʔλ  ςετՄೳͳ࢓༷΁  ૬ޓӡ༻ੑΛ޲্ 

    ՄೳͳΒσϑΝΫτΛ࠾༻  όʔδϣχϯά͸୯७ʹ  ੩తݕূ΋Մೳʹ http://wiki.ecmascript.org/doku.php?id=harmony:harmony
  41. None
  42. ޙํޓ׵εΫϦϓτ  ࠷ॳʹಡΈࠐΜͰޙํޓ׵ʹ  FTTIJN IUUQTHJUIVCDPNQBVMNJMMSFTTIJN 

  43. 4JNQMF.BQT  ଞͷݴޠʹ΋͋Δ.BQ 1ZUIPOEJDU 3VCZ)BTI +BWBKBWBVUJM)BTI.BQ $ TUEVOPSEFSE@NBQ  'JSFGPY

    $ISPNF $ISPNF͸BCPVUqBHTͰ༗ޮԽ ະ࣮૷Ͱ΋FDTIJNͰޓ׵ʹ Proposal http://wiki.ecmascript.org/doku.php?id=harmony:simple_maps_and_sets
  44. 4JNQMF.BQ var map = new Map(); var str = "Mozilla",

    obj = {}, func = function(){}; // Map に値を格納 map.set(str, "Firefox"); map.set(obj, "Thunderbird"); map.set(func, "Japan"); // キーに対応する値を取得 map.get(str); // -> "Firefox" map.get(obj); // -> "Thunderbird" map.get(func); // -> "Japan" // 設定したキーと引数を === 的に比較して検索されることに注意 map.get("Mozilla"); // -> "Firefox" map.get({}); // -> undefined map.get(function(){}) // -> undefined ΩʔͱҾ਺ͷൺֱ͸ === ԋࢉࢠʹ͍͕ۙݫີʹ͸ === ͱ΋ҟͳΔ
  45. 4JNQMF4FUT  ଞͷݴޠʹ΋͋Δ4FU 1ZUIPOTFU 3VCZ4FU +BWBKBWBVUJM)BTI4FU $ TUEVOPSEFSFE@TFU  'JSFGPY

    $ISPNF $ISPNF͸BCPVUqBHTͰ༗ޮԽ ະ࣮૷Ͱ΋FDTIJNͰޓ׵ʹ Proposal http://wiki.ecmascript.org/doku.php?id=harmony:simple_maps_and_sets
  46. 4JNQMF4FU var set = new Set(); // 集合に追加・確認・削除 set.add("Firefox"); set.add("Thunderbird");

    set.add(+0); set.add(NaN); set.has("Firefox"); // -> true set.has("Sunbird"); // -> false set.delete("Firefox"); set.has("Firefox"); // -> false // -0 と +0 は区別される, NaN は区別されない set.has(-0); // -> false set.has(NaN); // -> true
  47. 8FBL.BQT  'JSFGPY $ISPNF 'JSFGPY͸ॳظ࢓༷ͷ࣮૷ $ISPNF͸BCPVUqBHTͰ༗ޮԽ ະ࣮૷Ͱ΋FDTIJNͰޓ׵ʹ  .BQͷΩʔ͸ऑࢀরʹ($ର৅ ࢓༷มߋ͞ΕͯΔͷͰৄࡉׂѪ

    ৄ͘͠͸.%/ࢀর Proposal http://wiki.ecmascript.org/doku.php?id=harmony:weak_maps
  48. 1SPYZ  'JSFGPY $ISPNF ͍ͣΕ΋ॳظ࢓༷ͷ࣮૷ $ISPNF͸BCPVUqBHTͰ༗ޮԽ  ࢓༷͸%JSFDU1SPYJFTʹҠߦ ࢓༷มߋ͞ΕͯΔͷͰৄࡉׂѪ ৄ͘͠͸.%/ࢀর

    Proposal http://wiki.ecmascript.org/doku.php?id=harmony:proxies
  49. DPOTU MFU#MPDL4DPQF  MFUͷ࣮૷͸޿͕Γͭͭ͋Δ 'JSFGPY͕ੲ͔Β࣮૷ $ISPNF BCPVUqBHT༗ޮԽ  DPOTU͸޿͘αϙʔτ 

    ୠ͠࠷৽࢓༷४ڌ͸ͳ͠ 4BGBSJ0QFSB͸WBSͱҰॹ *&͸DPOTUඇαϙʔτ http://wiki.ecmascript.org/doku.php?id=harmony:block_scoped_bindings Proposal
  50. DPOTU  DPOTU(PMEFO3BUJP  ఆ਺Λએݴ ఆٛ  MFUಉ༷ͷϒϩοΫείʔϓ  એݴ࣌ʹॳظԽ

    ୅ೖ ͕ඞਢ  ݱϒϥ΢βͷ࣮૷͸ݹ͍ ؔ਺είʔ ϓɺॳظԽෆཁ http://wiki.ecmascript.org/doku.php?id=harmony:const
  51. DPOTUར༻ͷ஫ҙ  DPOTUͰٯʹ஗͍͜ͱ΋͋Δ  ա౉ظ࢓༷ͷܽؕʹΑΔ DPOTUม਺͕ॳظԽࡁΈ͔Ͳ͏͔ ࣮ߦ࣌ʹ൑அ͕ඞཁͳ৔߹  &$."UI४ڌ࣮૷ͳΒ0, DPOTU͸ॳظ஋ඞਢʹͳΔFUD

    'YCVH +4$CVH http://d.hatena.ne.jp/Constellation/20111201/1322678350
  52. MFU { // let 定義: ブロックスコープ let a = 1,

    b = 10; // let 式・文: let (...) に続く式・文中だけで有効 let (a = 100, c = 300) console.log(a); // -> 100 // for 文などでの let for (let a=0; a<3; a++) { console.log(a+b); // -> 10, 11, 12 } console.log(a); // -> 1 } console.log(a); // × ReferenceError: a is not defined http://wiki.ecmascript.org/doku.php?id=harmony:let
  53. %FTUSVDUVSJOH ෼ׂ୅ೖ  ୅ೖࠨลΛ഑ྻ΍ΦϒδΣΫτ ͷΑ͏ʹॻ͖Ұׅɾ෦෼୅ೖ  'JSFGPYͰݹ͔͘Β࣮૷ࡁΈ 0QFSB΋Ұ෦ಈ࡞͢Δ͕ɺ࣮࣭ తʹ͸࢖͍෺ʹͳΒͳ͍࣮૷ 

    +40/σʔλॲཧͱ͔ಛʹศར Proposal http://wiki.ecmascript.org/doku.php?id=harmony:destructuring
  54. %FTUSVDUVSJOH ෼ׂ୅ೖ // Array のサンプル: // 値の入れ替え [a, b] =

    [b, a]; // 関数から複数の値を返す var [c,d] = (function f() { return [1,2]; })(); // -> c=1, d=2 // 一部省略や入れ子も可能 var [e,,[x,y]] = (function f(){return [3,4,[10,20]]})(); // -> e=3,x=10,y=20
  55. %FTUSVDUVSJOH ෼ׂ୅ೖ // Object のサンプル var fx={ name:"Firefox", vendor:"Mozilla", ver:13

    }; var ch={ name:"Chrome", vendor:"Google", ver:19 }; var browsers={ firefox: fx, chrome: ch } // 欲しいプロパティだけ一括代入 var { name: n, ver: v } = fx; // -> n="Firefox", v=13 // for-each-in などとの組み合わせも for each ( let { vendor: ven, ver: ver } in browsers ) console.log(ven) // -> "Mozilla", "Google"
  56. GPSPGϧʔϓ  Ωʔ͡Όͳͯ͘ཁૉͰϧʔϓ  ݱࡏ'JSFGPY ͚͕ͩରԠ http://wiki.ecmascript.org/doku.php?id=harmony:iterators Proposal

  57. GPSPGϧʔϓ let arr = ["Fx", "Ch", "IE"]; for (let k

    in arr) console.log(k); // -> 0, 1, 2 for (let v of arr) console.log(v); // -> "Fx", "Ch", "IE" // ECMAScript 5th でやると: arr.forEach(function(v) { console.log(v) }); // 昔々: for (var i=0; i<arr.length; i++) console.log(arr[i]);
  58. "SSBZ$PNQSFIFOTJPOT  ഑ྻͷ಺แදه 1ZUIPO΍)BTLFMMʹ΋͋Δ΍ͭ  +BWB4DSJQUߏจ͸'JSFGPY  &$."UIߏจ͸'JSFGPY GPSFBDIJOͰͳ͘GPSPG Proposal

    http://wiki.ecmascript.org/doku.php?id=harmony:array_comprehensions
  59. "SSBZ$PNQSFIFOTJPOT // 配列のフィルタ [x for (x of [1,-4,5,3,-7]) if (x

    > 0)] // -> [1, 5, 3] // 配列のマップ [x*x for (x of [2,4,6])] // -> [4, 16, 36] // 2つの配列のデカルト積 [ i*j for (i of [0,2,4]) for (j of [5,3]) ] // -> [0, 0, 10, 6, 20, 12]
  60. *UFSBUPST(FOFSBUPST  1ZUIPOͷδΣωϨʔλతͳϠπ 1ZUIPOͳͲΛࢀߟʹಋೖ͞Εͨ  'JSFGPY͕αϙʔτ  ZJFME͸+4όʔδϣϯࢦఆඞਢ TDSJQUUZQFBQQMJDBUJPO KBWBTDSJQUWFSTJPO

     PQUJOඞਢͳͷͰࠓ೔͸ׂѪ http://wiki.ecmascript.org/doku.php?id=harmony:generators Proposal
  61. 5ZQFE"SSBZ  ܕݻఆ഑ྻͰߴ଎਺஋ԋࢉ ݩʑ8FC(-Ͱಋೖ͞Ε'JMF"1*  9)3 8FC4PDLFUͳͲͰ΋࠾༻ &$."UIʹ΋ೖΔʁ  *&ඇαϙʔτʹ஫ҙ

    *& 'Y $ISPNF  4BGBSJ 0QFSB Strawman http://wiki.ecmascript.org/doku.php?id=strawman:typed_arrays WebGL Spec
  62. 5ZQFE"SSBZ  "SSBZ#VGGFS CZUF-FOHUI  ϝϞϦΛ֬อ͢ΔόοϑΝ  5IF5ZQFE"SSBZ7JFX5ZQFT  "SSBZ#VGGFSಡΈग़͠༻Ϗϡʔ

    *OU"SSBZ 6OJU"SSBZ *OU"SSBZ 6JOU"SSBZ *OU"SSBZ 6JOJU"SSBZ 'MPBU"SSBZ 'MPBU"SSBZ
  63. 5ZQFE"SSBZ7JFX // 16 バイト長のバッファを確保 var buffer = new ArrayBuffer(16); //

    32bit 整数 x 4 として読み出すビューを定義 var int32View = new Int32Array(buffer); // 32bit 整数として 0, 2, 4, 6 を格納 for (var i=0; i<int32View.length; i++) { int32View[i]=i*2; } // 16bit 整数 x 8 として同じバッファを読み出すビュー var int16View = new Int16Array(buffer); // 実際に読み出してみる for (var i=0; i<int16View.length; i++) { console.log(int16View[i]); } // -> 0, 0, 2, 0, 4, 0, 6, 0
  64. .PSF-JCSBSJFT  ະ࣮૷͕ͩ4IJNͰޙํޓ׵ʹ  .BUIͷ֦ு DPTI TJOI UBOI BSPTI BTJOI

    BUBOI  MPHQ MPH MPH TJHO USVOD  4USJOHͷ֦ு TUBSUT8JUI FOET8JUI DPOUBJOT 3FQFBU  UP"SSBZ SFWFSTF  /VNCFSͷ֦ு JT'JOJUF JT/B/ JT*OUFHFS UP*OUFHFS MS ͸ϓϩτλΠϓ࣮૷ΛϓϥάΠϯͱͯ͠ެ։ Proposal Strawman & Ready!
  65. (MPCBMJ[BUJPO  ೔࣌΍௨՟ͳͲͷจࣈྻΛϩ έʔϧ౳ʹԠͯ͡ग़ྗ .4͕ϓϩτλΠϓ࣮૷Λϓϥά Πϯͱͯ͠ެ։  *&ຊମʹ͸ະ࣮૷ͳͷͰׂѪ ·ͩ୯ͳΔࢼҊͷஈ֊ Strawman

    http://wiki.ecmascript.org/doku.php?id=globalization:globalization
  66. +4/FYUָ͍͠Ͷʂ +4/FYUษڧձ΍Γ·͠ΐ͏ ɾɾ 

  67. +BWB4DSJQU'VUVSF  ѻ͍қ͘ॻ͖қ͘  αʔό΍ΤϯλʔϓϥΠζ΋  "1*͸)5.-%0.Ͱ  (16΍ϋʔυ΋ϑϧ׆༻

  68. ୭΋ଚܟͯ͘͠Εͳ͍ +BWBͷͰ͖ͦ͜ͳ͍ ೥લ

  69. )5.-ͷج൫ݴޠ ԿͰ΋)5.-ʹԿͰ΋+BWB4DSJQU ݱࡏ

  70. +BWBͱର౳ʹ ଚܟ͞ΕѪ͞ΕΔݴޠʹͳΓ͍ͨ ೥ޙ

  71. ͍΍ɺ+BWBΛӽ͑Δʂ ෕Λ৐Γӽ͑ͯҰਓલ ೥ޙ

  72. "OZ2VFTUJPOʁ

  73. Appendix other ideas...

  74. &$."4DSJQU+BWB4DSJQU  &$."4DSJQU  +BWB4DSJQUͷجຊػೳΛඪ४Խ ͨ͠εΫϦϓτݴޠ  +BWB4DSJQU ޿ٛ 

    &$."4DSJQUʴϒϥ΢β༻ػೳ  +BWB4DSJQU ڱٛ  /FUTDBQF'JSFGPYͷ࣮૷ ޿ٛͷ JS ʹόʔδϣϯ͸͋Γ·ͤΜ (JS 1.x ͳͲ͸ Firefox όʔδϣϯʹରԠ)
  75. 7FSTJPOJOHʹ͍ͭͯ  )BSNPOZͷޙํඇޓ׵ػೳʹ PQUJO͢Δํ๏͸ະ֬ఆ VTFWFSTJPOʁ.PEVMFར༻࣌ʁ  'JSFGPY͸UIઐ༻Ϟʔυͳ͠  7͸ݱࡏϞʔυ࣮૷ 

    DMBTTJD TUSJDU FYUFOEFE IBSNPOZϑϥάͰFYUFOEFE ߋʹIBSNPOZ@TDPQJOHͱ͔
  76. 8FC$-  0QFO$-Λ+BWB4DSJQU͔Β /WJEJB͕'JSFGPYʹࢼݧ࣮૷ 4BNTVOH͕8FC,JUʹࢼݧ࣮૷  8FCΞϓϦͰ΋(16ϑϧ׆༻ ύϑΥʔϚϯεࠩ͸ྺવɻ http://www.khronos.org/webcl/

  77. 3JWFS5SBJM  ฒྻܭࢉ༻"1*  *OUFMʹΑΔఏҊɾ࣮૷ 'JSFGPY֦ுػೳͱͯ͠ࢼݧ࣮૷ http://blogs.intel.com/research/2011/09/15/pjs/ https://github.com/RiverTrail/RiverTrail

  78. %0.$SZQU  ҉߸Խॲཧαϙʔτ༻"1* 'JSFGPY֦ுػೳͱͯ͠ࢼݧ࣮૷  +BWB4DSJQUߴ଎Խ  ʹΤϯδϯߴ଎Խʴઐ༻"1*  Ұ෦"1*͸%0.Ͱඪ४Խ

    &$."4DSJQU͕શͯͰ͸ͳ͍ JSON ͷΑ͏ʹधཁͷ͋Δઐ༻ API ͕ఆٛ͞Ε͍ͯ͘ https://addons.mozilla.org/ja/firefox/addon/domcrypt/
  79. References link list...

  80. ݱߦ࢓༷ &$."4DSJQU &$." http://www.ecma-international.org/publications/standards/ Ecma-262.htm &$."4DSJQUUI)5.-൛ http://es5.github.com/ &$."4DSJQUGPS9.- &9 &$."

    http://www.ecma-international.org/publications/standards/ Ecma-357.htm &$."4DSJQU࣌୅͔Βͷ૲Ҋ http://wiki.ecmascript.org/doku.php? id=es3.1:es3.1_proposal_working_draft
  81. ࣍ੈ୅࢓༷ &$."4DSJQU8JLJ http://wiki.ecmascript.org &$."4DSJQUUI%SBGU4QFDJpDBUJPO http://wiki.ecmascript.org/doku.php? id=harmony:specification_drafts )BSNPOZ1SPQPTBMT http://wiki.ecmascript.org/doku.php?id=harmony:proposals )BSNPOZ4USBXNBO http://wiki.ecmascript.org/doku.php?id=strawman:strawman

  82. ϒϥ΢β࣮૷ঢ়گ $PNQBUJCJMJUZ5BCMF ୯७ݕग़ͳͷͰόά͋Γ࣮૷΋ؚΉˍݕग़ϛε΋͋Γ ߋ৽ස౓͸ఔʑͳͷͰ։ൃ൛ͷ࣮૷ঢ়گ͸ࢀߟఔ౓ http://kangax.github.com/es5-compat-table/ .%/Ͱݸผػೳϖʔδ຤ඌΛ֬ೝ͢Δͷ͕ൺֱత࣮֬ https://developer.mozilla.org/

  83. ߏจςετͳͲ +4-JOUCZ5IF#PTTPG:PV http://jslint.com/ JWKT&4OFYU&4OFYUMFYFSBOEQBSTFS http://constellation.github.com/iv/js/es.next.html &$."4DSJQUUI4ZOUBY(SBNNFS http://teramako.github.com/ECMAScript/ ecma6th_syntax.html 5SZ4USJDUCZ.4 http://ie.microsoft.com/testdrive/HTML5/TryStrict/

    Default.html
  84. ࣮૷ 4QJEFS.POLFZ#VJME%PDVNFOUBUJPO https://developer.mozilla.org/en/SpiderMonkey/ Build_Documentation )PXUP%PXOMPBEBOE#VJME7 http://code.google.com/intl/ja/apis/v8/build.html +BWB4DSJQU$PSF http://trac.webkit.org/wiki/JavaScriptCore MW&$."ΤϯδϯCZ!$POTUFMMBUJPO https://github.com/Constellation/iv

    WJNQFSBUPSͰ&4OFYU http://d.hatena.ne.jp/caisui/20111217/1324098318