31 Oct 2012

Third-Party JavaScript を読んだ

Third-Party Javascript

Third-Party Javascript

thirdpartyjs.com

Third-Party JavaScript という本を読みました. 面白かったです.

Third-Party JavaScript とはいわゆるはてブボタンやいいねボタンのような, 外部の Web サイトに埋め込まれて機能を提供する Javascript です. 閲覧者をファーストパーティ, サイトオーナーセカンドパーティと考え, 外部スクリプトがサードパーティとなるわけです. ソーシャル系のボタンや Disqus といったサイトに機能を提供するウィジェット系のスクリプトだけでなく, アクセス解析のための情報収集タグなども Third-party JavaScript の範疇です. 本書はそんな Third-party JavaScript に初めてテーマを絞った本です.

Third-Party JavaScript は全く別のドメインで動作することになるので, 通常のクライアントサイドの JavaScript とはまた別の難しさがあります. パフォーマンスに気をつけないとホストの Web サイトの動作に影響を与えるし, どのようなページでも同じ見た目を実現しないといけません. その他にもクロスドメインの通信やサードパーティクッキー, セキュリティなどなど. . . このように通常のフロントエンド開発とはまた別の知識が求められることになるわけです.

Web サイト/ JavaScript のパフォーマンスや Web セキュリティについて個別に扱った本や, あるいはクロスオリジンのメッセージングを行うためのハックにについてなどに一部で触れている書籍はありましたが, Third-Party JavaScript だけに着目したものは今までありませんでした. これまではそれぞれの書籍や散在するブログ記事, あるいは各ベンダーのコードを実際に読むといった方法しかなかったものを, この本で包括的に知ることができます. 現在のところほかに選択肢がないので, Third-Party JavaScript を提供する場合には必読の書になるのではないでしょうか.

本書の作者陣はいずれも Disqus のエンジニア*1で, JSHint をメンテするなど実績のある人たちです.

内容は開発に伴う数々の問題とその解決策*2を, スクリプトとリソースのロード・HTML と CSS のレンダリング・サーバとの通信といったテーマごとに解説しながら, セキュリティ・パフォーマンス・デバッグとテストというトピックまでカバーしています. これでほぼすべての項目をカバーできているのではという印象です. しいていうとプライバシー関連のことにもっと触れてもいいのかなと思ったのですが, もし著者が広告やデータ解析系のエンジニアだったならこの辺がもっと厚くなっていたのかもしれませんね.

Third-party JavaScript に携わる人はこの本スタートにして, パフォーマンスやセキュリティなどの個別の書籍に進んだり, 実際に各ベンダのスクリプトを読んだりして深堀していけば良さそうです. 特にパフォーマンスに関しては本文中で以下の書籍が紹介されていました.

ハイパフォーマンスWebサイト ―高速サイトを実現する14のルール

ハイパフォーマンスWebサイト ―高速サイトを実現する14のルール

      <li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/Steve%20Souders" class="keyword">Steve Souders</a>,<a href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%C6%A5%A3%A1%BC%A5%D6%A5%B5%A5%A6%A5%C0%A1%BC%A5%BA" class="keyword">スティーブサウダーズ</a>,<a href="http://d.hatena.ne.jp/keyword/%C9%F0%BC%CB%B9%AD%B9%AC" class="keyword">武舎広幸</a>,<a href="http://d.hatena.ne.jp/keyword/%CA%A1%C3%CF%C2%C0%CF%BA" class="keyword">福地太郎</a>,<a href="http://d.hatena.ne.jp/keyword/%C9%F0%BC%CB%A4%EB%A4%DF" class="keyword">武舎るみ</a></li>
    
      <li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%AA%A5%E9%A5%A4%A5%EA%A1%BC%A5%B8%A5%E3%A5%D1%A5%F3" class="keyword">オライリージャパン</a></li>
    
      <li><span class="hatena-asin-detail-label">発売日:</span> 2008/04/11</li>
                                                      <li><span class="hatena-asin-detail-label">メディア:</span> 大型本</li>
      <li><span class="hatena-asin-detail-label">購入</span>: 32人 <span class="hatena-asin-detail-label">クリック</span>: 676回</li>
      <li><a href="http://d.hatena.ne.jp/asin/487311361X" target="_blank">この商品を含むブログ (127件) を見る</a></li>
    </ul>
    

ハイパフォーマンスJavaScript

ハイパフォーマンスJavaScript

目次

1. Introduction to Third-Party JavaScript

2. Distributing and loading your application

3. Rendering HTML and CSS

4. Communicating with the server

5. Cross-domain iframe messaging

6. Authentication and sessions

7. Security

8. Developing a third-party JavaScript SDK

9. Performance

10. Testing and debugging

*1:Anton Kovalyov は先月 Mozilla に移籍し開発者ツールにコミットしているそうなので, 正確には元 Disqus です

*2:バッドノウハウというか, Workaround が多い