Devsumi2010 Ecmascript5 (ISO/IEC JTC1/SC22)

4,553 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,553
On SlideShare
0
From Embeds
0
Number of Embeds
43
Actions
Shares
0
Downloads
32
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Devsumi2010 Ecmascript5 (ISO/IEC JTC1/SC22)

  1. 1. C++0x、Ruby、ECMAScript5 言語 の国際標準化について 【19-E-5】 サイボウズ・ラボ株式会社 竹迫 良範 <takesako@shibuya.pm.org> 2010/02/19 1
  2. 2. パネリスト紹介 高橋 晶 【C++0x の概要】 株式会社ロングゲート C++標準化委員会エキスパート 前田 修吾 【Ruby 国際標準化】 株式会社ネットワーク応用通信研究所 日本Rubyの会 竹迫 良範 【ECMAScript 5th】【司会】 サイボウズ・ラボ株式会社 2010/02/19 2
  3. 3. 国際規格(IS)を作っている組織 ISO(国際標準化機構) International Organization for Standardization IS (国際規格、 International Standard) 例:ISO 9660 情報交換用CD-ROMのボリューム及びファイルの構造 IS の表記 ISO NNNNN (規格番号) ISO NNNNN:YYYY (改訂年) ISO NNNNN-P (部番号) 2010/02/19 3
  4. 4. ISO/TC ISO (国際標準化機構) TC (技術委員会、Technical Committee) 電気・電子技術分野「以外」の国際規格を作成 ISO/TC 1 ねじ(Screw threads) ISO/TC 4 転がり軸受(Rolling bearings) ISO/TC 5 金属管及び管継手 ISO/TC 6 紙、板紙及びパルプ ISO/TC 12 量、単位、記号、換算率及び換算量 : 2010/02/19 4
  5. 5. ISO/TC/SC/WG TC (技術委員会、Technical Committee) SC (分科委員会、Sub Committee) WG (作業部会、Working Group) 例: ISO 9000 シリーズの仕様策定  ISO/TC 176 (品質管理及び品質保証) ISO/TC 176/SC 1 (概念及び用語) ISO/TC 176/SC 1/WG 1 (ISO 9000) ISO/TC 176/SC 2 (品質システム) ISO/TC 176/SC 2/WG 18 (ISO 9001/9004)  http://www.tc176.org/ (続きはWebで) 2010/02/19 5
  6. 6. ISO と IEC の重複分野 ※ IEC (国際電気標準会議) 電気及び電子技術分野の国際規格を作成 International Electrotechnical Commission IEC/TC 83 (Information Technology Equipment) ※ IEC/TC 47 (半導体デバイス) IEC/TC 47/SC 47A (集積回路) IEC/TC 47/SC 47B (Microprocessor System) ※ ISO/TC 97 (Information Technology) ※ 用語、文字とコード、入出力、プログラム言語、 ディジタルデータ変換、定義と分析、機械装置の数値制御 2010/02/19 6
  7. 7. ISO/IEC JTC 1 (Information Technology) ISO/IEC JTC 1 (第一合同技術委員会) Joint Technical Committee for Information Technology 以前は ISO と IEC で情報技術の標準化作業が重複 情報技術の標準化を行う合同技術委員会を新設 IEC//SC 47B と IEC/TC 83 を事実上 ISO/TC 97 に統合 ISOのEicher事務総長が「Tsunami」と呼んだほどの衝撃 2010/02/19 7
  8. 8. ITSCJ 情報規格調査会(情報処理学会) JTC 1 には一カ国につき一組織のみが参加 JISC(日本工業標準調査会) → ITSCJ に委任 第1種専門委員会 【JTC 1の各SCに対応】 SC 2 専門委員会 「符号化文字集合」 SC 6 専門委員会 「通信とシステム間の情報交換」 SC 7 専門委員会 「ソフトウェア技術」 : SC 22 専門委員会 ※ 「プログラム言語、その環境及び システムソフトウェアインタフェース」 2010/02/19 : 8
  9. 9. JTC 1/SC 22 プログラム言語、その環境及び システムソフトウェアインタフェース SC 22/WG 4 COBOL SC 22/WG 5 Fortran SC 22/WG 11 言語共通 SC 22/WG 14 C SC 22/WG 16 LISP SC 22/WG 17 Prolog SC 22/WG 21 C++ 2010/02/19 9
  10. 10. ここで疑問 C++の標準化は…? ISO/IEC JTC 1/SC 22/WG 21 で言語仕様を策定 ⇔ 情報規格調査会/SC 22/WG 21(日本) ECMAScript のWGが…ない? 言語仕様の原案は ECMA TC39 が作成・保守 ECMA から Fast-Track 手続きで IS 化 IS各国投票(必要に応じて国際一致JISの作成) 日本の対応: SC 22 に ECMAScript ad hoc 委員会を設置 Ruby のWGが…ない? IS より前に JIS の原案を作成中… 2010/02/19 10
  11. 11. ISO規格の制定手順 国際規格(IS)発行までに作成するドキュメント 2010/02/19 © JSA 2009 http://www.jsa.or.jp/itn/kensyu/text_iso3-0.pdf 11
  12. 12. ISO規格の制定手順 目標期日 2010/02/19 © JSA 2009 http://www.jsa.or.jp/itn/kensyu/text_iso3-0.pdf 12
  13. 13. 迅速手続 Fast-Track(迅速手続) Pメンバ、Aリエゾンで制定した規格をそのままIS化 ECMA  ISO/IEC JTC 1 (ECMAScript、C#、CLI) JIS  ISO/IEC JTC 1 (Ruby) PAS方式 PAS Submitter資格を有する団体からのPAS提案  IS後の保守のため、リエゾン関係を締結することがある OASIS  ISO/IEC JTC 1/SC 34 (ODF) … ○ Sun  ISO/IEC JTC 1/SC 22 JSG (Java) …× FSG  ISO/IEC JTC 1/SC 22 LSG (Linux) …? 2010/02/19 13
  14. 14. 参考資料: JSA のホームページより 2010/02/19 © JSA 2009 http://www.jsa.or.jp/itn/kensyu/text_iso3-0.pdf 14
  15. 15. 【最新】 プログラミング言語の国際標準化動向 1. C++0xの概要  高橋 晶 2. ECMAScript 5th Edition  竹迫 良範 3. Ruby国際標準化  前田 修吾 2010/02/19 15
  16. 16. 【19-E-5】 ECMASCript 5th Edition で何が変わったか サイボウズ・ラボ株式会社 竹迫 良範 <takesako@shibuya.pm.org> 2010/02/19 16
  17. 17. ECMAScript の標準仕様はどこで決まっている? ECMA International ECMAScript (ECMA-262) ECMA TC39 で原案作成、保守、改訂 国際規格(IS) ISO/IEC 16262 各国の SC22 mirror committee が投票、コメント 国内規格(JIS) JIS X 3060 (必要があれば)JIS原案作成委員会にて策定・改訂  参考:JIS Z 8301(規格票の様式及び作成方法) 2010/02/19 17
  18. 18. ECMAScript のバージョン 1997年6月 ECMA-262 1st Edition 1998年6月 ECMA-262  ISO/IEC 16262 に対応 1999年12月 ECMA-262 3rd Edition 正規表現、文字列処理、try/catch、エラー処理などを追加 2009年12月 ECMA-262 5th Edition  いまここ 2010/02/19 18
  19. 19. 消えた!?ECMAScript 4 ActionScript 3.0 から継承 namespace, package, class, interface, 継承 const, プロパティ, var i:int, is, as 演算子 JavaScript 1.7 から継承 let宣言(待望のブロックスコープ!) 分割代入 ([a, b] = [1, 2]) yield(ジェネレーター)、イテレータ ECMAScript の拡張 演算子オーバーロード “string”[0] == “s” とか 2010/02/19 19
  20. 20. ECMAScript 5th Edition ECMAScript 4 は様々な理由で結局まとまらず… ECMAScript 3 からの10年の空白 ECMAScript 3.1 をベースに 5th Edition を作成 今年の ISO/IEC 16262:2010 策定を目指す Fast-Track手続申請、JTC1参加各国が投票の準備中 日本では… SC22 ECMAScript アドホック委員会を招集して 審議開始・投票・コメントを準備 2010/02/19 20
  21. 21. ECMASCript 5 で変わった点 2010/02/19 21
  22. 22. ECMAScript 5 で変わったところ Strict Mode slice[0:1:2] 正式な JSON サポート JSON.parse JSON.stringify 配列操作メソッドの追加 forEach , filter , map その他 getter, setter サポート / エラーの厳密定義 など 2010/02/19 22
  23. 23. Strict mode 2010/02/19 23
  24. 24. Strict Mode - 安全なプログラミング function foo() { var a = 1; b = 2; // global scope } function bar() { ”use strict”; var c = 3; d = 4; // Error } 2010/02/19 24
  25. 25. 後方互換性 ○× 2010/02/19 25
  26. 26. with 2010/02/19 26
  27. 27. with で疑似ブロックスコープ × window.alert(1); with (window) { alert(2); for (var i = 0; i < 100; i++) { with({i: i}) { i = 0; } } } 2010/02/19 27
  28. 28. with で疑似ブロックスコープ → NG window.alert(1); with (window) { alert(2); for (var i = 0; i < 100; i++) { “use strict”; with({i: i}) { i = 0; } } } 2010/02/19 28
  29. 29. this 2010/02/19 29
  30. 30. 暗黙の this が global object でなくなる // no strict function Point(x, y) { this.x = x + 0.0; this.y = y + 0.0; } var a = new Point(1, 2); // ok var b = Point(1, 2); // miss // b = {window.x = 1, window.y = 2}; 2010/02/19 30
  31. 31. 暗黙の this が global object でなくなる ”use strict”; function Point(x, y) { this.x = x + 0.0; this.y = y + 0.0; } var a = new Point(1, 2); // ok var b = Point(1, 2); // miss // b = {undefined.x = 1, undefined.y = 2}; 2010/02/19 31
  32. 32. ”string”[0]  ”s” 2010/02/19 32
  33. 33. jjencode 記号だけで任意のコードが書けます Javascript:$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_ :(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$ $:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$ _:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+ ($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$ ]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[ $._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$ ]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+ "¥""+$.$_$_+(![]+"")[$._$_]+$.$$$_+"¥¥"+$.__$+$.$$_+$._$_ +$.__+"(¥¥¥"¥¥"+$.__$+$.__$+$.___+$.$$$_+(![]+"")[$._$_]+ (![]+"")[$._$_]+$._$+", ¥¥"+$.__$+$.__$+$._$_+$.$_$_+"¥¥"+$.__$+$.$$_+$.$$_+$.$_$ _+"¥¥"+$.__$+$._$_+$._$$+$.$$__+"¥¥"+$.__$+$.$$_+$._$_+"¥ ¥"+$.__$+$.$_$+$.__$+"¥¥"+$.__$+$.$$_+$.___+$.__+"¥¥¥")"+ "¥"")())(); 2010/02/19 33
  34. 34. リテラルの生成 数字の生成 $ = ~[]; // -1 文字の生成 $ = (![]+""); // "false" $ = (![]+"")[0]; // "f" $ = ({}+""); // "[object Object]" $ = ({}+"")[5]; // "c" $ = ({}.$+""); // "undefined" $ = ({}.$+"")[1]; // "n" 2010/02/19 34
  35. 35. 任意コードの実行 eval相当の作成 Number.constructor === Function Object Function( "alert(1)" )(); // substitute for eval (0)["constructor"]["constructor"]("alert(1)")(); 準備 $ = "constructor"; $$ = "alert(1)"; $_ = ~[]; // == -1 ($_)[$][$]($$)(); // 実行 2010/02/19 35
  36. 36. 2010/02/19 36
  37. 37. ECMAScript 5 で変わったところ(再掲) Strict Mode slice[0:1:2] 正式な JSON サポート JSON.parse JSON.stringify 配列操作メソッドの追加 forEach , filter , map その他 getter, setter サポート / エラーの厳密定義 など 2010/02/19 37
  38. 38. ECMAScript 規格の特徴 既存の実装 たくさんのブラウザ、言語処理系がある 机上の空論じゃない、利用者がいる HTML  SGML 後方互換性の維持 予約語、パーサの変更に敏感 ”use strict”; 特定の企業・実装に左右されにくい 仕様を国際規格団体が保守をしてくれる データの長期保存、オープンな規格 2010/02/19 38
  39. 39. ECMAScript 5 Conformance Suite 2010/02/19 39
  40. 40. 2010/02/19 40
  41. 41. 2010/02/19 41
  42. 42. 2010/02/19 42
  43. 43. 2010/02/19 43

×