Googleのdesign docを眺めてみる

http://steps.dodgson.org/?date=20090705より。
Google社員によるWebKitのWeb Socketに関するdesign docがchromeの開発ML上で公開されている事を知った。

WebKit Web Socket design doc
http://docs.google.com/View?id=dfm7gfvg_0fpjg22gh

鵜飼さんなど日本人Googlerによるdesign docらしい。

Googleの講演などでdesign docをよく書く文化があると言う事は知っていたが、実際に見るのははじめて。このdocの場合だいたい以下のような構成になっている。

目的

Web Socketでブラウザ=サーバー間双方向通信のための新しいAPIを定義するよー

背景

Ajaxとかでブラウザ=サーバーの双方向通信をよくやっているけど、httpを無理矢理つかうよりも、ソケットで自由に通信できた方がいいよねー。ということでweb socketという仕様を追加しようぜー

ハイレベルアーキテクチャ

モジュール図的なもの。そこはかとなく、google docsの作図ツールで作りました風のモジュール図。僕も原稿書くときに使ってますが、あれなかなか良いよね。

新しく追加するクラスについて

webscoketパッケージに、こんなクラスを追加するよー

各クラスのインタフェースの概要について説明

追加するクラスのインタフェース(*.h)を示す。メソッドや構造体の定義コードなどなどがズラズラ

処理フロー

上で紹介したインタフェースを使って、どうやって処理を行うかを説明。各メソッドについて自然言語で処理フローが、事細かに書かれている。

プラットフォームコード要求

ここはwebkitのdesign doc固有の項かな。プラットフォーム依存部部分についての要求・要件。既存コードに対する変更点的なことをまとめてるのかな?よくわからず。

レイアウトテスト計画

どんなテストをするかという計画が記されている。"planned test cases"のところを見ると、どんなテストをやる予定なのか分かる。これ、いいなー。「proxy経由のときどうする」「認証があったらどうする」とか、設計しながら思いついたパターンをテスト計画としてまとめている、って感じがする。これは真似したい。

セキュリティ考慮点,既知の問題

こういうのもいいですね。ディスカッションの材料となりそう(実際のML上では、ほとんどdesign docについてのディスカッションは無かったようですが)。

参考,ドキュメント履歴

おー、こういうのも書くのね。前の会社でもこういうの書かされてたけど(めんどくせー、svnのログ見りゃいーじゃんと思いながら)、googleでも書くのですねー。

ということで、Googlerの仕事っぷりをかいま見る事ができました。日本人が書いただけあって、読み易い英語でした。また、ちゃんとgoogle docs使っているところも偉いですね。目次作成機能なんてあったっけ?