色んなブログを渡り歩き、『ソース表示→RDFアドレス取得→XMLデータをゲトー』という行為を繰り返したところ、大まかにブログのデータがどうやって構成されているのか分かってきました。XML文書をXSLT変換して、HTML文書に書き出してるのかな。ブログの仕組みなどを見てみると、どうも静的HTMLファイルを作成しているようです。
このうち、メインページとなるRDFファイル及びそのXSLT変換はできそうです。データベースの代わりにファイル保存にするので扱いには融通が利かない可能性が出てきますが、これができれば一応mixiの日記にも対応させることはできそうです。
分からないのが、静的HTMLファイルを作成しているタイミング。CGIなどのように、ブラウザがアクセスしてきたら作成というオンデマンド方式ではないような気がするんです。仕組みの中に書かれている『サイトの再構築』というタイミングも不明。エントリを追加するたびに再構築されているんでしょうか。それとも静的HTMLの生成はエントリの追加毎に追加された分だけ行い、それとは別に『サイトの再構築』をした際は全てのページが再生成されるようになっているんでしょうか。後者の方が圧倒的に都合がいいように思えるんですが、動作が分からないので確証はもてないです……。XREAの質問掲示板でMovableTypeを初期化だかなんだかの処理をしたときにCPU占有率が著しく増加してしまうという応答があったことからも、『サイトの再構築』はかなりCPUを占有し、かつそれが初回時ということで、後者である可能性が高いともいえますけど。
さらにいうと、コメント機能やトラックバック機能によるページへの書き込みの動作周りも不明なのです。これらも実行されるたびに、該当ページの再生成が行われているんでしょうか。該当ページといっても、この場合は個別エントリページに対してくらいしか……あ、メインページでの該当エントリの『コメント数』や『トラックバック数』の書き換えも必要ですから、これらにも再生成が行われていると考えた方がいいんでしょうか(成瀬氏のブログでは、メインページのコメント数がすぐに反映されないという疑問があったんですけど、これは該当する個別エントリページのみしか生成を行っていないということを考えれば辻褄が合います)。
とするとコメントやトラックバックのデータそのものは、何らかのログとして保存しているわけではなく、静的HTMLファイルを再生成することで直接書き込んでいるという風に考えた方が分かりやすいと思います。ブログのHTMLソースを見ていても、該当するようなデータへのリンクがないですし……。勿論、データベース内にコメントデータ用テーブルを用意して、そこからHTMLファイルを生成していると考えても何らおかしくはないんですが。どちらの形式にしろ、私は最終的にPHPでブログを実現しようと思っているので、必然的に何らかの形でログにとっておいた方が都合がいいんですけどね。
動作仕様の大筋は分かってきたものの、データベースを用いて生成された静的HTMLファイルの構成を『ブログ』というならば、PHPで実現する限り『似非ブログ』というレッテルは剥がせそうもないですね。自宅サーバならともかく、個人的なデータベースをレンタルサーバで使いたいとは思いませんし……(前述のような、処理の重さに起因する悩みもあったりするわけですが)。まぁ外観だけなら区別が付かない程度にはできると思いますし、それ以上のものは別に閲覧者側が求めるものでもないと思うので、挙動の違いなどに悩むのは杞憂なのかもしれません。そもそもレンタルブログサービスでさえ、各サービス毎に記述構造が違ったりしますし。
……そうか。そこで出てくるプログラマの必殺の一言が『仕様です。』というわけですね!
(´A`)ウボァー
Comment