JSer.info #174 - browserify 4.0.0がリリースされました。(もう4.1.2まででてました)
Semantic Versioning的な上げ方な気がしますが、4.0.0での変更点について以下にまとめられています。
kintoneのJSユニットテスト最新事情 | Cybozu Inside Out | サイボウズエンジニアのブログ という記事では、 JsUnitベースのテスト環境から、Karma( Mocha + expect.js + Sinon.JS )へのテスト環境へ移行について書かれています。
元は単独のHTMLとしてテストが独立しているためDOMの追加やグローバルによる汚染が無いですが、Karma等のTest Runnerは同じHTML上でテスト走らせるため、cleanup処理が抜けていると汚染が起きてしまいます。
そのようなケースにどう対応していったかについても書かれていて興味深いです。
.@azu_re 既存のテストケースはそのままで、平行で運用しています。既存のを触るときに新しい形式に書き換えてる感じですね。コンバートも検討していますが、モックやアサーションの書き方ががらっと変わったので単純なルールで置換するのが難しくて。。今後の課題としています。
— ama-ch (@ama_ch) May 12, 2014
よく使われるテストライブラリでも以下の3種類で結構壁があります。(主に非同期周り)
QUnit | Jasmine 1.x | Mocha / Jasmine 2.x
理論的には 変換ツール等 を書いて自動的にできなくもないですが、FacebookのES6移行の話でも出てきたような移行する際のルールを明確化することや変換が失敗したことを検知する仕組みなどが必要になってくると思います。
なので、既存のテストも変換するかは時と場合による感じになる気がします。
長々と書きましたが、テストに限らず最近はこういった環境の移行をするという話が多いので(特にES6やモジュール周り)、色々と考えてみると面白いかもしれませんね。
- AMD -> ES6 by Rich-Harris · Pull Request #678 · ractivejs/ractive
- Ember.js - Core Team Meeting Minutes - 2014/02/14
- AngularJS 2.0 | AngularJS
ericdouglas/ES6-Learning というリポジトリでは、ES6に関する記事や書籍や動画等のリンクがまとまっています。
個人的にはtagtreeのES6 - episode 1とlukehoban/es6featuresとリストには載ってないですがECMAScript 6入门あたりが分かりやすいかなーと思います。
簡単にコードを試したい場合はES6 Fiddleを利用するのがお手軽です。
ツールに関してはaddyosmani/es6-toolsを参照するのがいいと思います。
ヘッドライン
Release 1.0.0 (Orion) · appium/appium
appium1.0.0リリース
browserify v4 changelog
browserify 4.0.0リリース。
アーティクル
Service Worker - first draft published - JakeArchibald.com
Service Worker の最初のドラフトがリリースされた。
オフラインアプリで使うようなキャッシュの仕様。
今のところセキュリティの観点からSSL下でないと使えない仕様になってる。
JavaScriptでセキュアなコーディングをするために気をつけること – cybozu.com developer network
JavaScriptで脆弱性を作り出しやすい所と注意点。
kintoneのJSユニットテスト最新事情 | Cybozu Inside Out | サイボウズエンジニアのブログ
それぞれのテストが独立したtestbedとなるHTMLを持つ方式から、
test runnerとしてKarmaを採用し乗り換えた時に起きた問題と対策、乗り換えたことによって得られた効果について
Guide to JavaScript Prototypes, Scopes, and Performance | Toptal
JavaScriptのprototypeチェーン、スコープと変数のlookupについての解説。
図がキレイで分かりやすい。
Chapter 28. Subclassing Built-ins
ビルトインオブジェクトのサブクラス的な実装をする方法について。(Speaking JavaScript )
Arrayのサブクラスの実装例、Errorのサブクラス、delegateによる実装について書かれてる。
Navigation Timingだからできる、Webアプリを俯瞰したパフォーマンス計測(1/3) | HTML5Experts.jp
Navigation Timing APIについての連載。
Navigation Timingの使い方、計測できるモノなどについて
JavaScriptでスパイ、スタブ、モックなどのテストダブルを行う (1/3):CodeZine
sinon.jsを使ったテストダブルを使ったテストのチュートリアル
ericdouglas/ES6-Learning
ES6のチュートリアルや記事、書籍、スライドやポッドキャスト等のリソースまとめ
ECMAScript 6’s new array methods
ES6のArray likeやiterableオブジェクトを配列にするArray.from
、可変長の引数を受けて配列にするArray.of
、新たに追加されたentries、keys、valuesについて
Getting gulpy — Medium
gulpとstreamについて詳しく書かれてる。
buffer <-> stream、いつもpluginが必要という訳ではないという話、Orchestratorについて
スライド、動画関係
Gulp
gulpチュートリアル動画 @ tagtree
Test Double | Our Thinking | JavaScript Testing Tactics: Lightning Edition
JasmineとCoffeeScriptを使ったテスト。
XHRに対してはFake server、UI Eventじはテストしやすくするためにも、自分の手に届くようにラッパーを作る、非同期コード、DOMへのテストの方針について書かれてる。
Long版 : Test Double | Our Thinking | JavaScript Testing Tactics.
BigPipe // Speaker Deck
NodeのウェブアプリケーションフレームワークであるBigPipeについてのスライド
サイト、サービス
WebComponents.org
WebComponentsについてのドキュメントやプラクティスを集約するサイト
ソフトウェア、ツール、ライブラリ関係
rdio/jsfmt
gofmtみたいなJavaScriptの整形/検索/置換ツール。
整形だけではなくルールを使った置換等も行える。
JavaScript ASTを使ったツール。
quilljs/quill
SalesforceによるJavaScriptのリッチテキストエディタライブラリ
VVVV.js - Visual Web Client Programming
ビジュアルプログラミング言語 http://vvvv.org/ のJavaScript版
email.js
IMAP、SMTPクライアント、Emailパーサとビルダーをまとめたライブラリ
cofounders/urlutils
https://github.com/medialize/URI.js をベースにしたURL
コンストラクタの実装。
文字列からURLオブジェクトを作成出来る
書籍関係
You Don’t Know JS: this & Object Prototypes - O’Reilly Media
June 2014発売
JavaScriptのthisとprototypeについての書籍
JS.next: A Manager’s Guide
現状とES6。
ES6の機能紹介,ES7についての書籍