Fork me on GitHub

2014-04-14のJS: Chrome35β、JavaScript非同期処理、spy-js

Edit on GitHub 編集履歴を見る

JSer.info #170 - Chrome 35 Betaがリリースされました。 Stableに全部入るかわかりませんがChrome 35βでは、ES6 Promises、WeakMapやWeakSet、Angular2.0でも使うとしてるObject.observe等が入ったり色々新しいものが入っています。

また、前回紹介した開発者ツールに非同期処理のスタックトレースをちゃんと追跡出来る仕組み等、大きな機能追加が多いバージョンとなりそうです。


Asynchronous JavaScript Interfacesというスライドでは、JavaScriptの非同期処理について書かれています。

特にChrome 35βでも入ってる、ES6 Promisesについてよく書かれています。 medikoo/plain-promiseというPromisesの実装をしながらどのような動きになってるかや、ES6 Promisesにdoneがないのは何故か?等詳しく書かれています。


WebStorm 8.0.1がリリースされましたが、8.xから入ったspy-jsについて Spy-js: WebStorm secret serviceという記事で詳しい機能解説がされています。

簡単に紹介するとspy-jsはproxyとして機能するJavaScriptのコードの実行時間やイベントのトレースを行えるツールです。(元々は独立したツールだったがJetBrainsが買収して統合された)

例えば、ボタンをクリックした時にJavaScriptのコードのどの行が実行されて、どの行が実行されてないか、それぞれの処理に何msかかったか、どのような順番で実行されたか、関数が返した値等をトレースすることが出来ます。

どのような仕組みでやっているかというと、proxyを通ったコードは一度JavaScript ASTにパースされて、instrument.jsという所でそれぞれのステートメントに対して計測用の関数をラップして、escodegenでJavaScriptのコードに戻して実行するという事をしています。

この仕組みは、power-assertでJavaScriptのテストをする ブラウザ編 | Web scratchで紹介している、 power-assertでも似たような事を行っています。

コードを変換して実行時にassertのエラー情報をより詳細に取れるようにするためにやっていて、他にもIstanbulのようなコードカバレッジツールなどで似たような手法が使われてると思います。

このような今まではよくわからない技術(独自の)に見えるところも、既にあるツールやライブラリの組み合わせでできてる事などが見えると色々と面白いなと思いました。


ヘッドライン

WebStormReleaseNotenode.jsTypeScript

WebStorm 8.0.1リリース。

TypeScript 1.0、Sass3.3対応、node-webkitのデバッグ実行に対応

Chrome

Chrome35βリリース。

35で入るCSSのtouch-actionプロパティ、ES6 Promises、WeakMap/WeakSet、Object.observe、WebAudio、Shadow DOMのprefixがなし、CSS Font Loading

JavaScriptToolsReleaseNote

ESLint 0.5.0リリース

eslint-env又はCLIの--envオプションで実行環境の設定が出来るように、グローバル変数を定義するCLI --globalオプションの追加等

YUIReleaseNote

YUI 3.16.0リリース。

FirebugReleaseNote

Firebug 2.0 beta 1リリース。

ブレークポイント周りの強化。

コンソールパネルからエラーに対してブレークポイントを貼れるようになる等

JavaScriptToolsReleaseNote

Bower 1.3.2リリース。

concurrency実行した時の問題を修正等

node.jsReleaseNote

Express 4がリリースされた

アーティクル

JavaScripttestingbrowserbrowserify

power-assertを使ったブラウザでのテストについて。

testemとgulpを使った方法、browserifyとkarmaを使った方法、sourcemapでのデバッグについて書かれてる。

JavaScriptdebugToolsWebStorm

WebStorm8に入ったspy-jsの詳細。

トレースを行うproxyサーバを立てて、JSのトレースを行う。

イベントのスタックを見たり、カバレッジのようにコードの実行された部分の可視化や実行時の値の確認等が出来る。

WAI-ARIA翻訳

"Using WAI-ARIA in HTML"の翻訳

JavaScriptwebfonts

WebFontsのロードタイミングを取得できたりするCSS Font Loadingについて。

document.fontsの使い方について書かれてる。

スライド、動画関係

JavaScriptイベント動画

meet.jsの動画が公開された。

メモリ管理、gulp、WebComponents、Selenium Builderの話等

JavaScriptスライド

JavaScriptの基本からnpmやGrunt等のツールやリソースについて幅広く書かれてるスライド

d3.jsスライド

d3.jsについてのスライド。

セレクタ、スタイルの適応、scale、データの操作、アニメーション等について

node.jsToolsスライド

Node.jsアプリのデプロイ、モニタリング等についてのスライド。

recluster, PM2, kibana, new relic、エラーレポート等ツールについて色々まとまってる

JavaScriptスライド

JavaScriptの非同期処理についてのスライド。Event、コールバック、Generator、Promises。

Promisesのエラーハンドリング、簡単に実装しながら学ぶ、donethenの違い、Deferred、doneの論争についてよくまとまってる

サイト、サービス

ChromedebugToolsTips

Chrome DevToolsのTips集

node.jswebservice

npmに登録されてるパッケージの統計データ。

ユーザー数、利用者(dependencies)、開発利用者(devDependencies)、ページランク等でソートして一覧出来る (元なるデータがちょっと更新されてないので若干古いかも)

ソフトウェア、ツール、ライブラリ関係

HTML5JavaScriptlibraryUImobile

リッチウェブアプリ向けのJavaScriptフレームワーク。

Event管理、物理エンジン、数学ライブラリ、transform、transition、Canvasのコンテナ、View Layout等を持ってる。

UIのパフォーマンスとメンテンスビリティに重きがある感じ

書籍関係

ECMAScriptbook

Nicholas C. ZakasによるES6についての書籍

backbone.jsbook

Backbone.jsのベストプラクティスとパターンについての書籍

https://github.com/nzakas/understandinges6

この記事へ修正リクエストをする
JSer.info Slackに参加する