Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Devsumi2010 Ecmascript5 (ISO/IEC JTC1/SC22)

4,848 views

Published on

Published in: Technology
  • Be the first to comment

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

×