ゴミ箱の中のメモ帳

まだ見ぬ息子たちへ綴る手記

はてなブログ構成スクリプトのコメントが生々しい

最近はてなブログにはまって利用しているのだが、利用を初めてまだ間もないにも関わらず、いくつかの問題を見つけて報告させて頂いている。(はてなブログ グロープでヘッダが不正に表示されるはてなブログProを1年延長した。けど、購入フォームがわかりづらかった。)

そして、本日もはてなブログに不具合っぽいものを見つけたので、それが不具合なのかどうなのかを確認するためにソースコードを追いかけていた。

ハッカー・プログラミング大全

ハッカー・プログラミング大全


そしたら非常に生々しいコメント郡を見つけた。「生々しい」とは、決してバカにしているわけではなく、コメントからシステム制作の苦労が垣間見え、はてなプログラマも人間なんだと思わせてくれた。

一般的なWebシステムでは、ソースコードをシステムにデプロイするときにはソースコード内のコメントを削除したり、コメント番号と置換して隠蔽したりするかと思うが、はてなはそういったことをしないようだ。少なくとも、私が読んでいたスクリプトにはコメントはそのまま残されていた。(丸々残されているのかはわからないが、開発中に書かれたと思われるコメントも残されていた。)

例えばこちらのJavascriptファイル。
http://hatenablog.com/js?5f2ab9f5c239bf7aa431c876ced4e97d

現在時点のそのファイルの35行目にはこのようなコメントが残されている。

    function decoded(s) {
        // XXX: 諸事情あってここを変更しています 詳しくはblameしてください
        try {
            return decodeURIComponent(s.replace(pluses, ' '));
        } catch(error) {
            return s.replace(pluses, ' ');
        }
    }

なんか怖い。「blame」とは「非難、咎める」という意味。ちょっと怖い。「諸事情あってここを変更しています 詳しくはblame(非難)してください」。「理由が知りたければ非難して下さい」と言う意味になるかと思う。(もしかしないでもないが、git blameで変更内容を追いかけて下さいという意味かもしれない。)

5119行目からもいくつかのXXXコメントがある。

    migrateOldStyleYoutubeURL: function (url) {
        // XXX: /v/以下のURLはiframeに入れられなくなった./embed/にしたら再生できる.パラメータも消す必要ある.
        // 旧: https://www.youtube.com/v/***&aaa=bbbb&
        // 新: https://www.youtube.com/embed/***
        url = url.split(/[?&]/)[0];
        url = url.replace('/v/', '/embed/');

        // XXX: youtube.googleapis.com はiPhoneで再生できなくなった.www.youtube.com/embed/ なら再生できる.
        url = url.replace('youtube.googleapis.com', 'www.youtube.com');

        // XXX: httpsも貼れなくなったので//で貼って現在のプロトコルと一致させる
        url = url.replace(/^https:/, '');
        return url;
    },

なんだか生々しい。

XXX以外にも5190行目から以下のようなコメントもある。

            if (scroll_top + page_container_top < container_offset.top) {
                // 上で固定
                $target.css({
                    position: 'static'
                });
            } else if (!enable_bottom || (scroll_top <  page_container_height - target_height)) {
                // 真ん中 ついてくる

                $target.css({
                    position: 'fixed',
                    top: page_container_top,
                    left: container_offset.left
                });
            } else {
                // 下で固定 #containerの底辺に合わせる
                $target.css({
                    position: 'absolute',
                    top: page_container_top + page_container_height - target_height,
                    left: container_offset.left
                });

            }

「真ん中 ついてくる」。あらかわいい。動きはわからないが、「中央が追従する」ではない。真ん中がついてくるのだ。


いくつかのコメントを見てみると基本的にコメントは口語体で記述されており、書き方にルールはないように感じられる。非常に自由な書き方かと思う。
私が昔に働いていた職場では、コメントをつけるのにも変数を増やすのにも、コードを削除するのにも増やすのにも全て管理番号が必要になり、コードが非常に読みづらく、コメントを残すのすら嫌になってしまう状態になっていた。

なので、このように自由にわかりやすいコメントや書き方が許されているというのは非常に働きやすい会社だと再認識できた。前に読んだ「へんな会社」のつくり方の通り、自由な社風があるのかと思う。


こんな会社で働いてみたい。


「へんな会社」のつくり方 (NT2X)

「へんな会社」のつくり方 (NT2X)

メンテナブルJavaScript ―読みやすく保守しやすいJavaScriptコードのための作法

メンテナブルJavaScript ―読みやすく保守しやすいJavaScriptコードのための作法

テストから見えてくる グーグルのソフトウェア開発

テストから見えてくる グーグルのソフトウェア開発