読者です 読者をやめる 読者になる 読者になる

Minecraftとタートルと僕

PCゲームMinecraftのMOD「ComputerCraft」の情報を集めたニッチなブログです。

はてなブログのJavascriptコメント抽出してたら、なんだかプログラマあるあるネタになってた

はじめに

もふぬこさんの記事がとても面白かったので、興味を持って僕も調べてみた。

はてなさんのjavascript

なお、うちのサイトでは、javascriptの実行はほとんどストレスないですね。

調べるとむしろ、外部サイトのサービス埋め込みの方が重いです。

以下、コメントを適当に抽出

// シェアするサービスが変化したら保存する

// ajax getまたはキャッシュから返す
// タブ切り替えて戻すだけで通信しないようにするためのやつ
// jqXHRではなくDeferredオブジェクトが返ることがあるので使う側で注意すること

// セッション終了時に前のajaxをキャンセル

// 価格の表示をいい感じにする
// 最初に戻すには,rewindPhotosCursor()してください

// tipsy-southwestクラスを付けたり外したりします

// thenを追加してキャッシュに保存するというのをやっています

// なぜやってるのか不明
$modalWindow.appendTo(document.body);

// AmazonSearch からだいたいコピペしてきた

// 中央揃え,ちょっと上のほうに配置します.admin-headerはrelativeになってるのでその分は引く

// 文の末尾にiTunes入れると以降編集できなくなるので(tinyMCEが悪い),うしろに改行つけたい.
// 本来はtinymce側でなんとかしてほしい

みえてくるもの

ここから見えてくるのは、コードの大元を作ったメインプラグラマ(おそらくこの人は退職か別部署)。

そしてメインプログラマと連絡がつかない状態でその解読と、機能追加を命じられた引継ぎプログラマ。

という涙なくしては語れない、業界ではあるあるネタ。

おそらく、次のような感じ。

  • メインプログラマ: 末尾断定系のコメント(返す/保存する/できる)
  • 引継ぎプログラマ: 末尾丁寧語のコメント(不明/してください/します/やっています)

僕の思ったこと

プログラマの端くれとしては、内部事情あけすけなコメントに、ニヨニヨと口元を緩めてしまうしかないのですが、さすがにこれをまんま出すのはまずいですよw

趣味で無償で個人でやっている分には全く問題ないですが、仮にも会社のプロダクトなんですから。

はてぶコメントにもありますが、minifyしましょうよ。せめてコメントは隠そう。

「AmazonSearch からだいたいコピペしてきた」というコメント

Amazonからのコピペ?まずいのでは?と思ったけれど、よくコードを読んでみると、

Hatena.Diary.Pages.Admin['user-blog-edit'].Evernote.prototypeの実装のために、すでにあるHatena.Diary.Pages.Admin['user-blog-edit'].AmazonSearch.prototypeのコードをコピペして持ってきたという話なのね。

それなら問題ない。(構造化としてはどうなのという話は別として)

コードを深く読み込んだわけではないので、間違えていたらごめんなさい。

しかし、プロダクトに「コピペ」というコメントが埋め込まれていることの破壊力。じわじわときますw

「AmazonSearch.prototypeと共通」くらいにしておきましょうよ(提案)

また、JSファイル内に「twitterからコピペ」というコメントもあるようですが、「Twitter.prototypeと共通」あたりが無難だと思われます。はいw

念のため再度強調しておきますね。勘違いしてしまわないように(僕も危うく・・・)。

  • Amazon社、Twitter社のコードをコピペしたわけではない。
  • 同じjsファイル内のAmazon、twitter関連の機能を実装したコード(それぞれ数行程度)をコピペして流用しましたというお話。

「いろんなエラーが出るけど些細な問題なので無視する」というコメント

はてぶコメントに色々と言及されていたので調べてみた

該当部分を抽出。

if (Hatena.Diary.Browser.isIE) {
     var editor = Hatena.Diary.Editor.Support.currentEditor;
     // IEでは,モーダルウィンドウ開くボタンクリックした瞬間に,エディタの選択範囲取れないので,タイマーで監視する………
     setInterval(function() {
         try {
  self.selectionRangeInTimer = editor.getSelectionRange();
  self.selectionContentInTimer = editor.isCollapsed() ? null : editor.getSelectionText();
         } catch(ignore) {
  // いろんなエラーが出るけど些細な問題なので無視する
         }
     }, 1000);
 }

あぁなるほど。IE関係ですか。

IE側に機能がないので、無理やり代替手段をとって、そのために出てきた(IE側からの)エラーを無視するという話。

これは仕方ない。IEなんて絶滅してしまえばいいのに

追記(2014/03/13 11:30)

このような言及をいただいたので、この記事の意図について補足させてください。

この記事を書いた理由は、次のようなものです。

  • もふねこさんの記事読んで
  • そのはてぶ見て
  • しかし本当かな、ちょっとコメント読んでみようかな。という動機でコメントを読んでみたところ、非難される内容では全然なくて、むしろ、あるあるという共感を持ったわけですね。
  • だからこの記事ははてな擁護の意図を持って書いたのです。
    • 正直、今回の件ではてなを批判する気は全然なくて、むしろ親近感を抱いたというか。だって、プログラマなら、これらコメント見て、によによしてしまうでしょ?
  • ただし「twitterからコピペ」のような誤解招くコメント、「なぜやってるのか不明」のような技術力を疑うようなコメント。これらをプロダクトにそのまま残しておくのは、企業イメージをそこねるという意味で悪手ですよね。
    • 上記のはてぶ見ると、いまだに「Amazon社のコードをコピーしてつかっているけしからん」みたいに思っている人がいるんではないかな。この記事で指摘したとおり、違いますからね。
    • 僕は、IE関連の些細なエラーなどのコメントは非難してないですよ。これ、あるあるネタですよね。
  • とはいえ、内部的にこれらコメントを残しておくのは有用でしょうから、内部から表に出すときに調整した方がいいでしょうね。
  • そういう体制が組織内で作れないのならば、コメントざっくり削った方がいいかもよ。という提案がこの記事の主張になります。
  • 技術力の高さなどの企業イメージに拘泥しないなら、親近感・気さくさというイメージを狙うために、むしろ積極的にこのようなコメントを残しておくのはありかもしれないですね(僕としてはこちらの方がはてなへの好感があがる)。

はてな擁護のつもりが、批判と受け取られてしまうとは・・・、全ては僕の言葉の至らなさが原因ですね。申し訳ない。