【レポート】
![]() |
Windows Internet Explorer 9 |
標準規約に準拠したアプリケーションを開発することは互換性という面で重要だが、それが必ずしも現実に則しているとは言いがたいこともある。また、標準規約に誤りがあり矛盾した記述がなされていることや、問題を先送りにして規約として説明していないもの、そもそも標準化されていないものなどもある。開発者はこうした「規約」と「現実」という2つの側面を見ながら、ほかのアプリケーションと互換性が高く標準規約へも準拠しつつ、さらに現実の問題に対処できる実装という「落とし所」を見つけなければならない。
IEBlogにおいてChakra: Interoperability Means More Than Just Standardsのタイトルのもと、IE9の新しいJavaScriptエンジンChakraを開発するにあたって、こうした標準規約と現実との乖離を加味しつつ、どういった決定をおこなって仕様が曖昧な部分や問題が発生する部分の実装方針を決定したかが紹介されている。どういった判断基準で開発を進めているのかがわかり参考になる。紹介されている事例は次の4つ。
ECMAScript 5 (ES5)仕様では次の表記の正規表現はエラーとして処理される。]の表記は\]のようにエスケープして使わなければならない。しかしほかのブラウザでは次の表記でも意図通りに動作する。先に[が記載されていない場合、]が[と組み合わせて使われる指定ではなく、]単体で使われることが明確にわかるためだ。
next = /]/.exec(buffer);
IE9ではほかのブラウザと同じように]単体の表記はエスケープしなくても利用できるように実装。こうした記述を採用したページが多く、ES5に従った実装を採用すると動作しなくなるサイトが多いためだと理由を紹介している。将来のバージョンのES5でこの記述が正式なものとして採用されるように働きかけていくと説明がある。
ES5以前ではゲッタメソッドとセッタメソッドの実装に__defineGetter__と__defineSetter__が使われている。TC39はこの表記をES5で採用するかどうか検討した結果、ゲッタメソッドとセッタメソッドは採用するものの、表記は別のものを採用することに決定した。これは__*__実装を標準規約にすると、規約の内容に準拠するためにブラウザの実装を変更する必要が生まれ、これまで__*__を使って動作していたコードが動作しなくなるため、これを防ぐ狙いがある。
IE9は__*__の実装は見送り、ES5で規定されるObject.definePropertyのみを採用。IE9における__*__メソッドの実装要望は多いが、将来の互換性を考えると現在完璧な互換性が実現していない__*__をサポートすることは将来に禍根を残すものとしてサポートしないとしている。
ES5では制御構文内における関数の定義をサポートしていない。制御構文の中で関数定義を実施すると、その結果としてさまざまな挙動が考えられ、実装に互換性を持たせることが難しいためだとしている。IE9はこの規約をそのまま取り込まずに、IE8以前と同じ実装のままにしておく方針を採用。これはすでに制御構文内で関数定義を実施しているJavaScriptコードが多すぎるためで、この機能をサポートしないと現実にサイトの多くが動作しなくなるためだという。規約に従うことは重要だが、すでにそこにあるものの方が優先されるわけで、これにはほとんど選択の余地がないと説明している。
ほかのブラウザは定数を宣言するためのconst指定をサポートしている。IE9ではこれをサポートしないことに決定。これはconstに関する既存のブラウザの挙動がばらばらであり、TC39でも標準規約として取り込むことにまだ慎重な姿勢をみせているためだという。たとえば同じ名前の変数にconst指定した場合、ブラウザによって次のように別々の動作をみせるという。
Chakra: Interoperability Means More Than Just Standardsの説明を読む限りでは、基本的には標準規約を優先する方針を見せつつ、それが現実に沿わない場合にはほかのブラウザとの互換性や将来性、現実に必要不可欠な機能であるかどうかなどを加味して文脈ごとに採用の可否を判断していることがわかる。
| IE9、わずらわしい2pxボーダ線を排除 [2010/8/24] |
| IE9 PP4登場、SunSpiderベンチでSafari5を抜く [2010/8/10] |
| IE9のキャッシュ性能改善のしくみ [2010/7/20] |
| IE9開発版、Web Timing APIを実装 [2010/7/2] |
| IE9 Platform Preview 3登場、CanvasとVideoに対応 [2010/6/25] |
| IE9のSVGサポート、WOFFとSVG Fonts [2010/6/14] |
| IEのクラッシュ理由を見つけやすくするIE Diagnostics [2010/6/10] |
| Microsoft、IE9でVP8のサポートに言及 [2010/5/26] |
| IE9、H.264がベストな選択肢だが、ほかのコーデックの可能性も [2010/5/10] |
| IE9がサポートするビデオ形式はH.264のみ!? [2010/5/6] |
| 理研、脳・脊髄形成に必要な神経板湾曲の仕組みを解明 [20:16 5/25] |
| 京大、「慢性閉塞性肺疾患」患者の労作時呼吸困難は鍼治療が有効と実証 [20:08 5/25] |
| 120Hz SHVカメラ用イメージセンサーを使った撮像装置 - SHVフルスペック化へ [18:10 5/25] |
| 京大、視覚による物体認知は前頭前野からのトップダウン信号が重要と確認 [17:45 5/25] |
| 製品数の拡大だけでなくBCPの展開なども含めた総合力で事業の強化を図るTI [17:25 5/25] |
|
【レポート】「メガホビ EXPO 2012 SPRING」開催! ハイクオリティなフィギュアが多数展示される [14:50 5/27] ホビー |
|
AKB48の松原夏海「待ち遠しかった」 - 映画初主演作『骨壺』公開に感激 [14:30 5/27] エンタメ |
|
[ゲーム質問状]「ドラゴンズドグマ」 ゲームブックのドキドキ感を今の技術で [13:30 5/27] ホビー |
|
「デビルサバイバー」&「氷結鏡界」シリウスでマンガ化 [13:15 5/27] ホビー |
|
[SKE48]松井玲奈、17人ランクインで手応え「飛躍できている」 [13:12 5/27] ホビー |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。