ariyasacca

カテゴリ一覧

Biz | SF | Software | tDiary | Web | ゲーム | サバティカル | スポーツ | ミステリ | メタル | 健康 | 投資 | 携帯 | 時事ネタ | 死生観 | 資格 | 雑記
2004|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

2009-07-17 (金) [長年日記]

[雑記]JavaScriptで時間がかかってる部分をあとで実行させる

JavaScriptで実行時間を計測した結果、ある部分の実行に時間がかかってユーザが待たされてしまうと分かったとき、その部分をあとで実行させてしまうことがある。

var book_review = new BookReview();

//待たされる
book_review.show();

showメソッドの実装がこんな感じだとして

BookReview = function() {
}

BookReview.prototype.show = function() {
    //レビューを表示したいすべての本について, Amazonとかの画像URLを作成する部分
    var books_url = this.createUrl();

    //大量の画像をリクエストして時間がかかる(閲覧しているユーザを待たせる)部分
    this.showImages(books_url);

    //レビュー本文を表示する部分
    this.showReviews();
}

一連の振る舞いの中で、あとに回しても構わない部分を切り出してしまう。

BookReview = function() {
}

BookReview.prototype.show = function() {
    //レビューを表示したいすべての本について, Amazonとかの画像URLを作成する部分
    var books_url = this.createUrl();

    this.delay(function() {
        //大量の画像をリクエストして時間がかかる(閲覧しているユーザを待たせる)部分
        this.showImages(books_url);
    });

    //レビュー本文を表示する部分
    this.showReviews();
}

BookReview.prototype.delay = function() {
    var args = Array.prototype.slice.call(arguments);
    var func = args.shift();
    var time = args.shift() || 0;
    var self = this;

    var f = function() {
        return func.apply(self, arguments);
    };
    
    setTimeout(f, time);
}

重い部分は実行キューに入れておいて、showメソッドは終了させるイメージ。

以前は本質をまったく理解していなかった

これからはAjaxの時代だからJavaScriptを勉強するぜー! と触り始めた頃は、IEだけちょっと仕様が違うから、ここはラッパーで囲んでやって、他のブラウザと一緒に使えるようにして・・・みたいなことばかり調べていた。IEの実装に腹を立ててばかりで面白くなかった。

けど実はクロスブラウザを気にすることは、(業務ではもちろん大事だけど)JavaScriptの本質とは全然関係が無くて、

  • クロージャ
  • 関数が呼ばれたときにthisが指す場所
  • 実行キューが一つ

みたいなところが肝だと分かってから、面白くなった。

JavaScriptには有用なライブラリが幾つかあって、jQueryよりもPrototype.jsやMootoolsの方が、JavaScriptの勉強に向いているという意見がある。これは、ようやく脱初心者できた僕も、そう思う。jQuery vs MooToolsという文書を読むと頷ける箇所が多い。

jQueryというライブラリはとても気が利いていて、実現したいこともサッと短く書けちゃうんだけど、JavaScriptという土台の上に何か別の言語を作っているような印象を受ける。

同じbindメソッドでも、jQueryと他2つのライブラリとでは意味が全く異なるところが設計思想の違いというか。

  1. Prototype.js
  2. jQuery

という順番で触ったので、bindメソッドは、ちょっと衝撃でした。

[雑記][Web]サイトの平均寿命はこれから延びるんじゃないか

侍魂ちゆ12歳の大ブームから、現在のテキストサイトの衰退ぶりまでを振り返る趣旨のページらしい。大変面白い。

テキストサイト大流行の時、僕の友人で、いかにも侍魂の影響を受けたようなフォントいじり全開のウェブサイトを運営していた人のウェブサイトは、いつの間にか404 Not Foundを返してきて、閲覧できなくなってしまった。あれだけ熱心にアクセス数がどうだこうだと力説していたのに。そういえばReadMe!っていうランキングもあったっけ。

他にも、僕がこのウェブサイトを始めた当時、2ちゃんねるのHR/HM板ではメロスピ・メロデスが局所的なブームで、皆がCDレビューサイトやメタルニュースサイトが続々と開設していたんだけど、結局ほとんど居なくなってしまったなぁ。寂しい限り。

冒頭に挙げたまとめページを見ても、テキストサイトの平均寿命は、それほど長くないようだ。

けどこれからは、ウェブサイトの平均寿命は、延びる傾向が出て来ると思ってる。

何故かというと、

  • レンタルブログやmixi日記の普及によって、サイト開設のコストと維持管理の手間が減った
  • ソーシャルブックマークなどの、一つのURLに対するメタな情報が増えたため、URLを消してしまうことの損失が高まった。

といった理由によって、「消して非難されるくらいなら残そう」という考え方が主流になりそうだから。

懸念点は、アクセス至上主義が蔓延すること。「誰からも注目されなくて寂しい」と勝手に閉鎖してしまう人が増えそう。ここが悩ましい。そういう意味で、アメブロの自動コメントシステムは良いアイディアかもしれない。

本日のツッコミ(全3件) [ツッコミを入れる]
Ussy (2009-07-18 (土) 00:05)

綺麗なコードだなー

かわはら (2009-07-18 (土) 01:54)

まもなくサイトを閉めようとしてる人の意見として、有料サーバを借りてるといつかどっかで終わりがあるのよね。あるいはドメイン名にしても、個人で使う限り使わなくなる可能性もあるわけで。ブログなんかの永続性にノーコストってキーワードはついてまわるだろうね。

雷悶 (2009-07-18 (土) 09:12)

>かわはら<br>企業が運営してユーザに提供しているブログやSNSも、個人運営よりは継続が期待できるというだけで、赤字になったらやっぱり終わりが来るわけで、なかなか難しい問題ですよね。


最近のツッコミ

  1. ともお (2024-05-29(水)20:59)「真上からの恐怖🫨」
  2. いちごみるく (2024-05-29(水)20:59)「🩸」
  3. レモン (2024-05-29(水)20:59)「レモン」

参号館  の中の  日記(ariyasacca)

トップ «前の日記(2009-07-16 (木)) 最新 次の日記(2009-07-18 (土))» 編集