BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Mozilla と WebKit,縮小された JS や CoffeScript など JS 言語のデバッグサポートを目指す

Mozilla と WebKit,縮小された JS や CoffeScript など JS 言語のデバッグサポートを目指す

原文(投稿日:2011/08/08)へのリンク

最近の Web と Javascript デバッガは強力で,ブラウザと密に統合されている – ただしそれは デバッグ対象のコードが手作業で記述された,平坦なJavascript の場合に限った話だ。今日では,実行あるいはデプロイされる Javascript の多くが開発者ではなく,ソフトウェアによって生成されている。そのようなコードの大部分は縮小されているか,あるいは圧縮されたコードだ。このようなファイルに対して,通常はソース行を単位とするブレークポイントをセットするのは至難の技か,あるいは不可能だ – 元になったソースがきれいにフォーマットされたものであっても同じことだ。

もうひとつの問題:Javascript はコンパイル言語の出力ターゲット としても注目を高めてきている。Javascript 仮想マシンの普及がその主な理由だ。CoffeeScript はそのような新言語の一例であり,さらに先日発表された ClojureScript は,Javascript にコンパイルされる形式の,独立した言語の例だ。これらの言語で記述されたコードのデバッグでは,ブレークポイントの設定や console.log() メッセージ,その他言語依存の機能には,元になった言語ではなく 生成された Javascript コードを扱うことになる。

これは新しい問題ではなく,JVM 言語にもかつて同じ問題があった。その成果が JSR-045 - 他言語のデバッグサポート となり,JRuby など JVM へのコンパイルを行う様々な言語で使用されている。

解決策はソースマップ (Source Maps/SMAPs),すなわち,ソース言語とターゲット表現間をマップするファイルだ。Google の Closure コンパイラには,縮小された出力 Javascript ファイルの SMAP ファイルを生成する機能がある。ただし現時点で SMAP ファイルを読むことができるツールは,Firebug 拡張である Closure Inspector に限られている。

Mozilla と WebKit の両プロジェクトでは,それぞれのデバッグ機能で SMAP をサポートする作業を開始している。

Mozilla は SMAP とデバッグ機能に関する綿密な計画資料 を作成した。資料には,ソースマップの別領域に関する言及も見られる – SASS あるいは LESS など,CSS のスーパーセットによってコンパイルターゲットとして使用される CSS である。
この作業をトラックする Mozilla のチケットが Bug 618650 – JS ソースに変換されたソース言語と JS とを関連づけるマップ であり,計画資料ではターゲットリリースとして Firefox 9 がリストされている。

WebKit も SMAP サポートを計画しているが,実際に扱う SMAP フォーマットは Closure Inspector のフォーマットの拡張版になる可能性がある。同様な検討を Mozilla も行っていて,Bug 63940 – Web Inspector: デバッガのコンパイラソースマッピングサポートのドラフト実装 がその機能のトラックである。

この記事に星をつける

おすすめ度
スタイル

BT