ハイパフォーマンスJavaScript
Published at 2015-01-24
昔買ったN.Zakasの本を掘り当てたので読みなおした。
ハイパフォーマンスなJavaScriptとは
今やJavaScriptはブラウザに留まらないので、一口にハイパフォーマンスなJavaScriptを括るのは難しい。この本に関しては Build Faster Web Application Interfaces とあるようにブラウザ環境におけるJavaScriptにフォーカスしている。
ブラウザのJavaScriptと言っても、Webアプリケーションの形態も多種多様になってので、最適化の形もケースバイケースとしか言えない。最適化アプローチの選択肢を増やすための本と言える。アプリケーションが複雑化してもブラウザで何が起こっているかわかれば、自ずとすべきことが見えてくる。この本にはそういうことが書かれている。
Nicholas C. Zakas氏 (@slicknet) について
JavaScript界隈では有名な人なので、前のめりな人なら知っている人も多いと思う。Yahoo!のリードディベロッパーであり、YUIのコントリビュータも務めていた人。今はBoxで働いているそうで、最近はES6/ES7の仕様に口出ししたり、ESLintにコミットしてる様子。この本以外だとメンテナブルJavaScriptが有名。
ブログも濃い記事ばかりなので、英語が苦手じゃなかったら読んでみて欲しい。英語が苦手でも読んでみて欲しい。
ブラウザJavaScriptの最適化に向けて
前述の通り、プログラムのアルゴリズム的な部分だけを取り扱っているわけではなく、ブラウザの描画をブロッキングしないために<script>
をどう考えれば良いかであったり、DOMスクリプティングを効率的に実行するにはどうすればいいかなど、JavaScriptから作用しうるパフォーマンスのファクターについて網羅的に書かれている。
目次
- 読み込みと実行 - JSファイルロードの妙技
- データアクセス - グローバルへのアクセスコストやスコープの話
- DOMスクリプティング - 効率的なDOM操作・イベントのハンドリングについて
- アルゴリズムと処理の制御 - ifや再帰等のアルゴリズムの最適化
- 文字列と正規表現 - 文字列処理と正規表現、及びそれらの連携
- 反応性のよいインターフェイス - ブラウザスレッドを邪魔しないために
- Ajax - XMLHttpRequestのイロハと使いどころ
- プログラミングの実践的手法 - 4章を発展させた話
- 高パフォーマンスなJavaScriptアプリケーションのビルドと配置 - デプロイする前にやっておくべき、結合・圧縮・キャッシュ等について
- ツール - 各ブラウザベンダーのデバッグツールについて
実行上の最適化についてはV8をはじめとしたJavaScriptエンジンの進化が進みすぎて、何もせずともブラウザが気を利かせてしまう可能性もあるけど、知っておくに越したことはない。Tipを集めることより、ブラウザで何が行われるかを理解するほうが本質である。
JavaScriptのMVCがどうとか、流行り廃りのあるライブラリや思想より、Webを作っていく上で大事で必要な知識だと思う。逆にこの本をおさえておけば、いま巷で話題の技術にも、これから現れるであろう新たな流行にも応用が効く。2011年刊行ということで、10章のツール部分は流石に古さがあるけど、駆け出しWebエンジニアが読むべき内容が詰まっている。