2006-08-31

Blogger in Beta の Dynamic Publishing

Blogger in Beta では、ダイナミック・パブリッシングが採用された。この聞きなれない用語について説明しませう。

ダイナミック・パブリッシングのメリットは、「再構築」が要らなくなること。今まで、「再構築」は、記事をポストした時とテンプレートを編集した時に必須の作業だった。特にテンプレートを編集した時の、再構築は時間がかかったよね。その待ち時間がなくなる!

じゃあ、どうやって構築し直してるんでせう。その説明の前に、再構築が何をやっているかを書きませう。例えば、新しい記事をポストする場合。システムは、次の四つの作業をしている。

  • テンプレートに従って、新規記事の個別記事ページを作る。
  • テンプレートに従って、新規記事をインデックス・ページに追加する。
  • テンプレートに従って、新規記事をアーカイブ・ページに追加する。

この際、「Previous Entries」などのリンク集も、自動更新する。これが再構築という作業 (テンプレートを編集した場合は、全ての記事を作り直すので、記事の数だけ再構築に時間がかかる)。

つまり、新規記事をポストするタイミングで、新しい個別ページ、インデックス・ページ、アーカイブ・ページを作って (読者のために) 用意しておくのが「再構築」という作業。一般に、こういった手法を静的なページ生成という。

これに対して、訪問者が来たタイミングでページを作ってしまおう、ってのがダイナミック・パブリッシング。日本語にすれば、動的なページ生成。ネット上には古いページのまま残ってるけど、見る人がいないんならそのまんまでいいよね。見る人が来たら、その時ページを更新しやうって考え方。

例えば、二本の記事 (A と B) を連続でポストする場合を考えてみませう。静的な方法だと、記事 A をポストした時に、新しい個別・インデックス・アーカイブの三つのページを作る。そして、記事 B をポストした時に、また新しい個別・インデックス・アーカイブの三つのページを作る。さてさて、この時、もし記事 A をポストしてから記事 B をポストするまでの短い時間に、訪問者がいなかったらどうでせう。記事 A をポストした時に作ったインデックス・ページとアーカイブ・ページは誰も見なかったことになる。これじゃあ、記事 A をポストした時に作ったインデックスとアーカイブは、作るだけ時間の無駄だったってことになる。でも、記事 B を作るまでの間に訪問者が来ないとは限らない。だから作らざるを得ない。

動的な方法なら、話は簡単になる。

記事 A をポストした時に、新しい個別ページもインデックス・ページもアーカイブ・ページも作られてない。もし、記事 B をポストする前に誰も訪問者がいなければ、記事 A 用のページは作られない。そして、記事 B をポストした後に訪問者が来れば、その時初めて記事 A・B を含むページを作る。もちろん、記事 B をポストする前に訪問者が来れば、そのタイミングでページを作る。

記事 A・B・C・D…とポストしていって、誰も訪問者が来なければ (それは悲しいことだけど)、その分のインデックスとアーカイブを作る時間を節約できる。これがダイナミック・パブリックシングのメリット。

一言付け加えれば、ページを初めて訪問する人には、ページ生成の時間分、少し待ってもらうことになる。これがデメリットになるんだけど、その時間はそんなに大きくないので、読者には我慢してもらいませう :p

最後に、何故ダイナミック・パブリッシングが大きな変化なのかについて。

それは、動的な方法では、「初めての訪問者」をキャッチしてページを作り直さなきゃいけないので、静的な方法とはアーキテクチャーが全く変わってしまうから。例えば、Movable Type というブログ・ツールの場合、静的なページ生成をするコードは Perl で書かれている。一方、動的なページ生成をするコードは、PHP で全てのコードが書き直されている。Blogger が何言語で書かれているのか知らないけれど、ページ生成のコードはほぼ全面的に書き直されているでせう。そして、見た目には変わっていないように見せるために、大きな努力が払われていると思う。

2 comments:

  1.  なぁるほど。
     よく判りました、ダイナミック・パブリッシング。
     そういう違いがあるんですねぇ。
     旧テンプレートをbeta用テンプレートに作り変えるようなサービス、誰か作ってくれないかなぁ。
     ブロッガー・ヘルプの新しいタグの説明を読んだだけで、ちょっと寒気が(笑)。

    ReplyDelete
  2. 新テンプレートのタグには、かなり手こずりそうですよね。
    私も、なるべく早く新タグを把握して、記事として取り上げようと思っています。

    ReplyDelete