Amazon商品の価格変動チェック「あまとも」
コミックダッシュ!は初音ミクGTプロジェクトを応援しています
個人ニュースサイトを巡回する「メガとんトラック」
全ての記事 携プレMP3 デジカメ レコーダ ゲーム メモリ デジモノ コラム 雑談 ブログ あまとも コミックダッシュ!
前の記事次の記事
2005/11/13 23:59 - 2005/11/13

「英知」のコンピューティング - CMSが作り出す大量データ

カテゴリ : コラム タグ :

    日曜コラムです。こんばんは。
     
    昨日もお伝えしました、「デジモノREVIEW」のデザイン変更ですが、
    ようやく形になってきましたので、本日の夜に反映してみることにしました。
    まだ整合性がおかしなところも一部残っていますが、
    そのあたりは徐々に直していく予定です。
     
    今日はその デジモノREVIEW を題材にした、
    CMS (=Content Management Sysytem) のお話です。
     
    デジモノREVIEWのページは、静的ページ(HTML)と動的ページ(CGI)で構成
    されていますが、メニューから直接リンクされている代表的なページは
    ほとんど静的ページ(HTML)で作られています。
     
    たとえば、「携帯音楽プレイヤー」 カテゴリのトップページを見てみましょう。
     
    ■デジモノREVIEW 「携帯音楽プレイヤー」カテゴリトップ
    http://c-kom.homeip.net/review/reviewcat1.html
     
    ページの真ん中あたりに、携プレのレビュー記事リストが並び、これは
    一定間隔で更新されています。下のほうには携プレのメーカ、製品リスト
    が表示されています。実はここも不定期に新製品が追加されています。
     
    昔は静的ページといえば、「ホームページビルダー」などのHTML編集ソフトで
    コリコリと作っている印象がありました。では私はこれらのページを毎日毎日、
    手動で書き換えているのでしょうか? モチロンそんなことはありません。
    これらのページはスクリプトによって定期的に自動生成されているのです。
     
    大量の情報を少しでも楽に扱おうと、少しずつ
    手を加えていった結果、このページ生成の仕組みは、
    妙にシステマチックな構成になっています。
     
    まず、BASEファイル(.base)という独自仕様を定義しました。
    BASEファイルとは、中身は通常のHTMLですが、その中に
     
    #INCLUDE_BASE[ (HTML部分ファイル) ]
     
    という記述がところどころに入れてあります。
    これは、そのHTML部分ファイルを該当位置に埋め込め、
    という命令です。それからもう1つ、
     
    #OUTPUT_BASE[ (HTML出力ファイル) ]
     
    という記述もあります。これは #INCLUDE_BASE で複数のHTML
    をマージし終わった結果を、指定のhtmlファイルに出力せよ、
    という命令です。
     
    右図をご覧頂きますと判るとおり、先ほどの携プレのページは、
    実は沢山の部品をマージした構成になっています。
     
    タイトル部分は TITLEBAR というHTML部分ファイルです。
    メニュー部分は MENUBAR、フッター部分は FOOTERBAR
    これらは他のページでも全て同じ部品を使っています。
     
    そしてページ特有の可変HTML部品として、
    携プレのレビュー記事リストが RECENTCAT_1
    携プレのメーカ、製品リストが REVIEWCAT_A1
    というHTML部分ファイルから読み込まれています。
     
    さらにそれらの間には、楽天・Amazonの広告を埋め込む
    RAKUTEN、それからGoogle AdSenseの広告を埋め込む
    GOOGLE、というHTML部分ファイルから読み込まれます。
     
    こうして静的部分と動的部分は部品としてマージされ、
    一定間隔ごと(実際には10分おき)に静的HTMLページが
    生成されていく、というのがデジモノREVIEWの主な仕組みです。
     
    こうまでして静的ページにこだわるのは、ページ表示の負荷を低くしたい
    からに他なりません。トップページや各カテゴリページを表示するたびに
    CGIが起動されるような構成だけはどうしても避けたかったのです。
    かといって動的部分を全く含まないページでは面白みがありません。
     
    だったら Javascript で差し込めば良いのではと思われるかもしれませんが、
    そうすると今度は 検索エンジンから何も無いページだと思われて
    しまいます。SEO効果もさることながら、ページの記述内容にあわせて広告を
    表示するGoogleAdSenseのパワーをも削いでしまうことになりかねません。
     
    こうして、HTML部品をマージして静的ページを組み上げるという、
    今のデジモノREVIEWの独自CMSが出来上がったのでした。
     
    HTMLを部品化して組み上げることには他にもメリットがあります。
    基本的に「部品化したモノを組み込む」構成を徹底しておけば、
    もし共通部品を変更したいと思ったとき、
     
     1箇所の変更があらゆるページに反映される
     
    ことになります。タイトル表示のテキストを変えたい、とか、
    メニューバーの表示順序を変えたい、あるいは広告を変更したい、
    といった要求は結構頻繁に発生します。そのたびにいちいち
    全てのページを書き換えるのはあまりにも面倒です。
     
    たとえば、デジモノREVIEWには現在 14個ものBASEファイル があります。
    これらが部品読み込み型ではない別々のHTMLだったら、メニューを
    書き換えるだけで14個のHTMLを編集しなければなりません。
    そんな事態は、たとえ頻度が低かったとしても 悪夢に近い ものがあります。
    共通した部分を部品化することで、そうした苦労からは逃れられるように
    なりました。これをオブジェクト指向などというのはおこがましいですが、
    考え方は同じだと思ってよいでしょう。
     
    これらのページは一定間隔で更新するという形式ですが、
    各製品ごと、メーカごと、カテゴリごとなどのレビュー記事をまとめた
    RSSファイルの生成は、もう少し賢いタイミングで生成されています。
    すなわち、新しいレビュー記事が登録されたときに、関連するRSSだけを判別して、
    オンデマンドで再生成 しています。これって何かに似ていませんか?
    そう、MovableType を初めとする静的ページPublish型ブログシステムと同じです。
     
     
    簡単なUIを使ってデータベースにデータを投入し、投入されたデータを元に、
     
     ルールに従って静的ページを自動で生成しまくる、
     
    これが昨今のWebページ作成方法の1つのトレンドになりました。
    これを爆発的に広めたのは言うまでもなくMovableTypeであり、
    そこから影響を受けた数々のブログシステムたちです。
     
    かつて「ホームページビルダー」で、HTMLページを1ページずつ作成し、
    FTPでアップロードしていた時代を思い出してください。
    当時の手法で作れるページの量には、明らかに限界がありました。
     
    CMSとは、ページ作成のうちの面倒な作業を徹底的に自動化していくことに
    他なりません。ブログは、「本文」だけを書けば、決められたテンプレートに
    従って記事ページを生成するのみならず、トップページとカテゴリ別ページと
    月別ページも自動的に作り直してくれる仕組みを提供しました。
    私が「デジモノREVIEW」で行っていることも、それと似たような道のりを再び
    なぞっているだけです。ただ、生成したいページの構成や内容が若干異なるため、
    それを自分自身で作り直してみた、ということに過ぎません。
     
    ただ1つ共通することは、私たちは、面倒な作業を少しずつ自動化し、
    コンテンツそのものに集中できる環境を整えることで、
     
     従来では考えられいほどの、大量なデータを扱う世界
     
    に身を置くことになったということです。Web2.0はWeb上に散乱するデータを
    人間が見るだけでなく、コンピュータが直接処理する世界と言われています。
    しかし、5年前くらいのWebを考えてみてください。当時のWebにはコンピューティング
    しなければならないほど大量のデータソースが転がっていたでしょうか?
     
    そう、Webをコンピューティングすることは大変な革命ですが、それを
    支えているデータソースの発生源、そのデータ生成スピードが同時に
    進化していなければ、Webは「コンピューティングするまでもない世界」
    として、未開の大地たる魅力を失ってしまうのかもしれません。
     
    Webコンピューティングは、Webコンピューティングが生み出した結果をまた
    データソースとしてインプットして、違う結果を生成していくことができます。
    しかし、自動生成の連鎖からは、新しい英知はなかなか生まれてきません。
    最初のデータソースが決定した時点で、残りの結果の連鎖は決定してしまうのです。
     
    ブログやソーシャルブックマークが見せる世界というのは、常にその
     
     データソースの大量発生を、人間の英知を込めた形で促す
     
    ものでした。インプットとして人間が考えた何かが少なからず投入されて
    いかなければならない、そしてそれを纏め上げるところにこそ、満を持して
    コンピュータを使うのだ、という考え方があってこそ、なのです。
    だとしたら、人間からのデータ入力は徹底的に楽にしてあげなければなりません。
     
    上で例に挙げたようなCMSが目指している世界は、人間の判断、知識を
    如何にスムースにコンピューティングの世界のデータソースとして
    反映させてあげるか、というための仕組みだと考えれば良いでしょう。
     
    私たちはブログを通じて、非常に多くの人々の「気持ち」を、データ世界に
    持ってくることができました。そのデータソースが大量であれば大量であるほど、
    そこから生み出されるコンピューティングの結果もまた、エキサイティング
    なものになるに違いありません。今のネット世界は、その入り口にあるのです。

    CK@デジモノに埋もれる日々 @ckom
    ブログ「デジモノに埋もれる日々」「アニメレーダー」「コミックダッシュ!」管理人。デジモノ、アニメ、ゲーム等の雑多な情報をツイートします。



    投稿者 CK : 記事URL | コラム | | 2005/11/13 23:59


    « デジモノREVIEW デザイン変更中。と過去のデザイン発掘

    トップに戻る

    HDDではないgigabeatって?? HDDとシリコンの市場侵食図 »



    ▼ コメント ▼

    ご自由にコメントください(=゜ω゜)ノ  ▼ コメント入力欄を開く ▼
    ※管理人は多忙のためお返事はほとんどできません(スミマセン)。
    スパムおよび本文と無関係なコメントは削除対象になる可能性があります。


    ▼ はてなブックマークのコメント ▼


    ▼ トラックバック ▼

    このエントリーのトラックバックURL:

    ★コミックダッシュ! 10,000人突破ありがとうキャンペーン!(9/18~10/23)
     
    デジモノに埋もれる日々 : (C) CKWorks