(57)【要約】      （修正有）【課題】十分なプログラミング技能を有していないウェブデザイナ等が、コンテンツの動的生成機能を簡便に利用可能にする。【解決手段】ＨＴＭＬファイル中に含めるべき文字列を動的に出力する出力プログラムを識別子と関連づけて格納した出力プログラム格納部１０３と、クライアントからのＨＴＴＰ要求を受信する要求受信部１０４と、受信した要求に対応してクライアントに返送するべきＨＴＭＬファイルのテンプレートを読み込み、当該テンプレート中の出力プログラムを指し示す識別子及び置換対象とのなる文字列を認識するファイル解析部１０５と、テンプレート中に記述されている識別子に対応する出力プログラムを実行し、その出力結果の文字列とテンプレート中の文字列を置換しＨＴＭＬファイルを完成させるファイル改訂部１０６と、ＨＴＭＬファイルをクライアントに送信するファイル送信部１０７とを具備するウェブサーバシステム１を構成した。【選択図】図３
2012145969.tif 000002
【特許請求の範囲】
【請求項１】
クライアントからもたらされる要求に対し、当該クライアント上で表示される構造化文書等のデータファイルを返送するウェブサーバシステムであって、
前記データファイル中に含めるべき文字列を動的に出力する出力プログラムを当該プログラムを識別する識別子と関連づけて格納している出力プログラム格納部と、
クライアントから送信される所定の通信プロトコルに則った要求を電気通信回線を介して受信する要求受信部と、
前記要求受信部で受信した要求に対応して前記クライアントに返送するべきデータファイルを読み込み、当該データファイル中に特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されているかどうかを解析するファイル解析部と、
前記データファイル中に特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されている場合に、前記出力プログラム格納部に格納され前記識別子で識別される出力プログラムを実行に移し、当該プログラムの実行の結果出力される文字列を以て前記データファイル中の文字列を置き換えるファイル改訂部と、
前記データファイルを前記クライアントに向けて電気通信回線を介して送信するファイル送信部と
を具備するウェブサーバシステム。
【請求項２】
特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されているデータファイルのテンプレートを格納しているファイル格納部をさらに具備し、
前記ファイル解析部は、前記出力プログラム格納部に格納され前記要求に対応して前記クライアントに返送するべきデータファイルのテンプレートを読み込み、
前記ファイル改訂部は、前記テンプレート中に記述された識別子で識別される出力プログラムを実行に移し、当該プログラムの実行の結果出力される文字列を以て前記テンプレート中の文字列を置き換え、
前記ファイル送信部は、前記テンプレート中の文字列を置換してなるデータファイルを前記クライアントに向けて送信する請求項１記載のウェブサーバシステム。
【請求項３】
前記データファイルは所定の記述言語を用いて表現され、特定の出力プログラムを指し示す識別子は当該記述言語におけるコメント行内に記述されており、
前記ファイル解析部は、前記クライアントに返送するべきデータファイル中のコメント行を検索して、そこに特定の出力プログラムを指し示す識別子が記述されているかどうかを解析する請求項１または２記載のウェブサーバシステム。
【請求項４】
置換対象となる文字列は前記識別子を包含した一対のコメント行間に所定の符号を付して記述されており、
前記ファイル改訂部は、前記一対のコメント行間に介在する所定の符号が付された文字列を置き換える請求項３記載のウェブサーバシステム。
【請求項５】
請求項１、２、３または４記載のウェブサーバシステムを構成するために用いられるものであって、コンピュータを、
前記データファイル中に含めるべき文字列を動的に出力する出力プログラムを当該プログラムを識別する識別子と関連づけて格納している出力プログラム格納部、
クライアントから送信される所定の通信プロトコルに則った要求を電気通信回線を介して受信する要求受信部、
前記要求受信部で受信した要求に対応して前記クライアントに返送するべきデータファイルを読み込み、当該データファイル中に特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されているかどうかを解析するファイル解析部、
前記データファイル中に特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されている場合に、前記出力プログラム格納部に格納され前記識別子で識別される出力プログラムを実行に移し、当該プログラムの実行の結果出力される文字列を以て前記データファイル中の文字列を置き換えるファイル改訂部、並びに、
前記データファイルを前記クライアントに向けて電気通信回線を介して送信するファイル送信部
として機能させるプログラム。
【請求項６】
さらに、前記コンピュータを、特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されているデータファイルのテンプレートを格納しているファイル格納部としても機能させ、
前記ファイル解析部は、前記出力プログラム格納部に格納され前記要求に対応して前記クライアントに返送するべきデータファイルのテンプレートを読み込み、
前記ファイル改訂部は、前記テンプレート中に記述された識別子で識別される出力プログラムを実行に移し、当該プログラムの実行の結果出力される文字列を以て前記テンプレート中の文字列を置き換え、
前記ファイル送信部は、前記テンプレート中の文字列を置換してなるデータファイルを前記クライアントに向けて送信する請求項５記載のプログラム。
【請求項７】
前記データファイルは所定の記述言語を用いて表現され、特定の出力プログラムを指し示す識別子は当該記述言語におけるコメント行内に記述されており、
前記ファイル解析部は、前記クライアントに返送するべきデータファイル中のコメント行を検索して、そこに特定の出力プログラムを指し示す識別子が記述されているかどうかを解析する請求項５または６記載のプログラム。
【請求項８】
置換対象となる文字列は前記識別子を包含した一対のコメント行間に所定の符号を付して記述されており、
前記ファイル改訂部は、前記一対のコメント行間に介在する所定の符号が付された文字列を置き換える請求項７記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアントに向けて構造化文書やその他各種のデータを送信して提供するウェブサーバシステムに関する。
【背景技術】
【０００２】
ウェブサーバ（ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）サーバ）の本来の機能はシンプルである。即ち、クライアントから電気通信回線を介してもたらされるＨＴＴＰ要求を受け取り、その要求を解釈して何れのデータファイルが求められているのかを判断した上、対象のファイルをクライアントに返送するというものである。
【０００３】
基本的には、予め用意されているファイルの中から要求で名指しされたファイルを抽出して送信するだけである。だが、要求を受信してはじめて、送信するべきファイルを生成しなければならないこともある。例えば、逐次ニュース記事がアップロード（または、ポスト）され蓄えられるデータベースから最新の記事またはアトランダムな記事を選んでクライアント上で表示させたい場合、選び出した記事を挿入したウェブページのファイルを、要求の受信後に生成してクライアントに送信する。クライアントのユーザによる、データベースの検索要求を受け付ける場合も同様である。ユーザの入力する検索クエリに応じた検索結果は事前に存在しておらず、検索結果表示用のウェブページもまた検索実行後に生成するより他にない。
【０００４】
この種の動的コンテンツを実現する仕組みとして、ＣＧＩ（Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ。下記特許文献１を参照）がよく知られている。ＣＧＩは、ウェブサーバプログラムから他のプログラム（または、スクリプト）を呼び出して作動させ、そのプログラムによる処理の結果を取得してクライアントに返すための取り決めである。ＣＧＩを用いれば、クライアントに対するフロントエンドであるウェブサーバプログラムと、コンテンツを動的に出力するバックエンドのプログラムとの連携を図ることができる。
【０００５】
また、ＰＨＰ（Ｈｙｐｅｒｔｅｘｔ  Ｐｒｅｐｒｏｃｅｓｓｏｒ。下記特許文献２を参照）と呼ばれるプラットフォームも存在する。ＰＨＰは、要求を受信した後に実行されるプログラムを構造化文書ファイル（ＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）ファイル、ＸＨＴＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）ファイル、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）ファイル等）中に一体的に記述しておくことを可能にする。
【０００６】
今日のワールドワイドウェブでは構造化文書が中心的役割を果たしており、ウェブサイトの外観デザイン作成に携わるウェブデザイナは、ＨＴＭＬ等の記述言語（マークアップ言語）やスタイルシートに関する知識を習得している。しかし、ウェブデザイナが、動的コンテンツを任意に制御できるだけのプログラミング技能をも有しているとは限られない。コーディング作業は、依然としてプログラマの領分である。
【０００７】
その上で、元来ウェブサイトはページオリエンテッドな思考の下に構築されており、一つのウェブページと、そのウェブページを動的に出力するプログラムとは原則として一対一の関係となる。よって、例えば、これまでウェブサイトのトップページに表示させていたニュース記事をセカンドページに表示させるようにウェブサイトの仕様を変更する際には、当該セカンドページを出力するプログラムを新たにコーディングする必要が発生する。結局のところ、ウェブサイトの増補や改作を行う度にプログラマの手を煩わせることとなり、プログラマの常駐化ひいてはウェブサイトの制作コストの騰貴を招く。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第３７８００９９号公報
【特許文献２】特開２００８−２２６２５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述の問題に着目してなされた本発明は、必ずしも十分なプログラミング技能を有していないウェブデザイナまたはウェブサイトオーナ等が、コンテンツの動的生成機能を簡便に利用できるようにすることを所期の目的とする。
【課題を解決するための手段】
【００１０】
本発明では、クライアントからもたらされる要求に対し、当該クライアント上で表示される構造化文書等のデータファイルを返送するウェブサーバシステムであって、前記データファイル中に含めるべき文字列を動的に出力する出力プログラムを当該プログラムを識別する識別子と関連づけて格納している出力プログラム格納部と、クライアントから送信される所定の通信プロトコルに則った要求を電気通信回線を介して受信する要求受信部と、前記要求受信部で受信した要求に対応して前記クライアントに返送するべきデータファイルを読み込み、当該データファイル中に特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されているかどうかを解析するファイル解析部と、前記データファイル中に特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されている場合に、前記出力プログラム格納部に格納され前記識別子で識別される出力プログラムを実行に移し、当該プログラムの実行の結果出力される文字列を以て前記データファイル中の文字列を置き換えるファイル改訂部と、前記データファイルを前記クライアントに向けて電気通信回線を介して送信するファイル送信部とを具備するウェブサーバシステムを構成した。
【００１１】
あるウェブページに動的に生成されるコンテンツを挿入したい場合、そのウェブページの主体となる構造化文書ファイルにおける、コンテンツの表示位置に該当する箇所に、所要のコンテンツを出力するプログラムの識別子及び置換対象の文字列を記述しておく。本発明のウェブサーバシステムは、当該ウェブページを返送するべき旨の要求をクライアントから受け取ったとき、当該ウェブページに係る構造化文書ファイルを参照、解析して、上記の識別子及び文字列を検出する。そして、その識別子で識別される出力プログラムの実行の結果取得されるテキストコンテンツ、またはコンテンツを指し示すＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）等を、構造化文書ファイル中の置換対象文字列に上書きする。しかる後、この構造化文書ファイルをクライアントに返送する。
【００１２】
ウェブデザイナやウェブサイトオーナ等は、クライアントに送信するデータファイルの必要箇所に出力プログラムの識別子及び置換対象文字列を記述するだけで、出力プログラムの機能を利用でき、動的コンテンツを包含したウェブサイトの構築が可能である。記述言語等に関する知識さえあれば、データファイル中に出力プログラムの識別子及び置換対象文字列を記述することは容易である。さらに、プログラマが一旦出力プログラムをコーディングしてしまえば、どのウェブページに対しても同じ出力プログラムを使い回しすることができる。これにより、ウェブサイトの増補や改作を行う度にプログラマの手を煩わせる必要がなくなり、プログラマの負担が著しく軽減され、プログラマに常駐を要求せずに済むようになる。
【００１３】
特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されているデータファイルのテンプレートを格納しているファイル格納部をさらに具備し、前記ファイル解析部が、前記出力プログラム格納部に格納され前記要求に対応して前記クライアントに返送するべきデータファイルのテンプレートを読み込み、前記ファイル改訂部が、前記テンプレート中に記述された識別子で識別される出力プログラムを実行に移し、当該プログラムの実行の結果出力される文字列を以て前記テンプレート中の文字列を置き換え、前記ファイル送信部が、前記テンプレート中の文字列を置換してなるデータファイルを前記クライアントに向けて送信するシステムとすれば、ウェブデザイナまたはウェブサイトオーナ等が作成したテンプレートファイルをアップロードして格納することで動的コンテンツの実装が完了する利便性の高いものとなる。
【００１４】
前記データファイルは所定の記述言語を用いて表現され、特定の出力プログラムを指し示す識別子は当該記述言語におけるコメント行内に記述されており、前記ファイル解析部は、前記クライアントに返送するべきデータファイル中のコメント行を検索して、そこに特定の出力プログラムを指し示す識別子が記述されているかどうかを解析するシステムとすれば、コメント行を検索するのみで解析を完遂できるため、負荷が軽く処理時間も短くなる。
【００１５】
置換対象となる文字列は前記識別子を包含した一対のコメント行間に所定の符号を付して記述されることが望ましい。前記ファイル改訂部は、前記一対のコメント行間に介在する所定の符号が付された文字列のみを置き換える処理を実行する。
【発明の効果】
【００１６】
本発明によれば、必ずしも十分なプログラミング技能を有していないウェブデザイナまたはウェブサイトオーナ等であっても、コンテンツの動的生成機能を簡便に利用できるようになる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施形態のウェブサーバシステムを利用するネットワークを示す図。
【図２】同実施形態のウェブサーバが具備するハードウェア資源を示す図。
【図３】同ウェブサーバの機能ブロック図。
【図４】動的コンテンツの材料となるデータを蓄積しているデータベースを例示する図。
【図５】構造化文書ファイルのテンプレートを例示する図。
【図６】クライアントが具備するハードウェア資源を示す図。
【図７】ウェブサーバがプログラムに従い実行する処理の手順を示すフローチャート。
【図８】テンプレート中に記述されている置換対象文字列を置換して完成した構造化文書ファイルを例示する図。
【図９】クライアント上での構造化文書ファイルの画面表示例を示す図。
【発明を実施するための形態】
【００１８】
本発明の一実施形態を、図面を参照して説明する。本実施形態のウェブサーバ１は、例えば、電子掲示板サーバ、ウェブログサーバ、フォトアルバムサーバ等またはネットワークストレージとしての役割を担う。図１に示すように、本実施形態のウェブサーバ１と、ユーザが使用するクライアント２とは、インターネット、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等の電気通信回線３を介して通信可能に接続する。
【００１９】
図２に示すように、ウェブサーバ１は、プロセッサ１ａ、メインメモリ１ｂ、補助記憶デバイス１ｃ、表示制御デバイス１ｄ、ディスプレイ１ｅ、操作入力デバイス１ｆ、通信インタフェース１ｇ等のハードウェア資源を備え、これらがコントローラ（システムコントローラ、Ｉ／Ｏコントローラ等）１ｈにより制御されて連携動作するものである。補助記憶デバイス１ｃは、ハードディスクドライブ、フラッシュメモリ、光学ディスクドライブ、その他である。表示制御デバイス１ｄは、プロセッサ１ａより受けた描画指示をもとに表示させるべき画像データを生成してディスプレイ１ｅに向けて送出するビデオチップ（または、グラフィクスプロセッサ）、画像データを一時的に格納しておくビデオメモリ等を要素とする。操作入力デバイス１ｆは、手指で操作可能な押下ボタン、キーボードや、マウス、トラックパッド、タッチパネル等のポインティングデバイスである。通信インタフェース１ｇは、電気通信回線３を介した情報通信を行うためのデバイスであり、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）や無線ＬＡＮトランシーバに代表されるが、これら以外にＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＩＥＥＥ１３９４等のインタフェースを採用することもできる。
【００２０】
プロセッサ１ａによって実行されるべきプログラムは補助記憶デバイス１ｃに格納されており、プログラムの実行の際には補助記憶デバイス１ｃからメインメモリ１ｂに読み込まれ、プロセッサ１ａによって解読される。本実施形態では、既存のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）プログラムやこれに付帯する各種デバイスドライバプログラムが予めインストールされ、他のプログラムによる上記ハードウェア資源の利用を仲介する。その上で、本発明のウェブサーバシステムを構成するために必要となるプログラムがインストールされており、これらプログラムに従い上記ハードウェア資源を作動して、図３に示すデータベース１０１、ファイル格納部１０２、出力プログラム格納部１０３、要求受信部１０４、ファイル解析部１０５、ファイル改訂部１０６、ファイル送信部１０７としての機能を発揮する。
【００２１】
データベース１０１は、メインメモリ１ｂまたは補助記憶デバイス１ｃの記憶領域を用いて、動的コンテンツの材料となる種々のデータ、例えば、テキストデータや画像（静止画であるか動画であるかを問わない）データ、楽曲データ、アプリケーションプログラム等を格納する。通常、これらデータは逐次ウェブサーバ１にアップロードされ、ウェブサーバ１はアップロードされるデータを電気通信回線３を介して受信してデータベース１０１に蓄積してゆく。図４に、データベース１０１に蓄積したデータを例示する。図示例では、個々のデータ、例えば記事のテキストデータや、画像データ等の非テキストデータ及び非テキストデータのＵＲＩを、記事がアップロードされた年月日その他のメタデータに関連づけて格納している。
【００２２】
ファイル格納部１０２は、メインメモリ１ｂまたは補助記憶デバイス１ｃの記憶領域を用いて、所定の記述言語、例えばＨＴＭＬ、ＸＨＴＭＬまたはＸＭＬ等で記述されたデータファイルである構造化文書ファイルを格納する。周知の通り、構造化文書ファイルはウェブサイトの構成要素である個々のウェブページの基礎となるものであり、ウェブサイトを制作または管理するウェブデザイナやウェブサイトオーナ等の手によって作成され、ウェブサーバ１にアップロードされる。ウェブサーバ１は、アップロードされた構造化文書ファイルを電気通信回線３を介して受信し、ＵＲＩに関連づけてファイル格納部１０２に蓄積してゆく。
【００２３】
本実施形態にあって、ファイル格納部１０２に格納している構造化文書ファイルは、各ウェブページ毎のテンプレートである。このテンプレートには予め、動的コンテンツに係る文字列を出力する出力プログラムを識別する識別子、及びその出力プログラムが出力した文字列によって置換される文字列が記述されている。
【００２４】
図５に、出力プログラムの識別子及び置換対象文字列の記述例を示す。出力プログラムの識別子及び置換対象文字列の書式は、下記の通りである。
＜！−−  ＞＞出力プログラムの識別子’引数  −−＞
｛置換対象文字列｝
＜！−−  出力プログラムの識別子’引数＜＜  −−＞
「＜！−−」及び「−−＞」は、テンプレートファイルの記述言語であるＨＴＭＬ等においてコメント行を意味する符号である。ウェブデザイナ、ウェブサイトオーナ等は、出力プログラムの識別子をＨＴＭＬ等のコメント行内に記述してウェブページのテンプレートを作成する。「引数」は出力プログラムに渡す値を意味し、その値が既知である場合に符号「’」を付した上で出力プログラムの識別子とともに記述することが可能である。置換対象文字列は、出力プログラムの識別子を包含した一対のコメント行間に、より詳しくは開始符号「＞＞」を付した「＞＞出力プログラムの識別子」と終了符号「＜＜」を付した「出力プログラムの識別子＜＜」との間に記述する。開始符号「＞＞」を含むコメント行と終了符号「＜＜」を含むコメント行とで囲まれたブロックが、後述するファイル改訂部１０６による改訂処理の対象となる。置換対象文字列には、符号「｛」及び「｝」を付す。ブロック内に存在する置換対象文字列以外の文字列は、置換等されることなくそのままウェブページのＨＴＭＬ等の一部として出力される。
【００２５】
出力プログラム格納部１０３は、メインメモリ１ｂまたは補助記憶デバイス１ｃの記憶領域を用いて、動的コンテンツに係る文字列を出力する出力プログラムを格納する。出力プログラムはウェブサーバ１上で実行されるものであり、主としてデータベース１０１に蓄積しているテキストデータまたは非テキストデータのＵＲＩを文字列として出力する。出力プログラムは、ウェブページのテンプレートとは独立してプログラマの手によって作成され、ウェブサーバ１にアップロードされる。ウェブサーバ１は、アップロードされた出力プログラムを電気通信回線３を介して受信し、当該プログラムを識別する識別子に関連づけて出力プログラム格納部１０３に蓄積してゆく。
【００２６】
要求受信部１０４は、クライアント２から送信される、所定の通信プロトコルに則った要求、例えばＨＴＴＰ要求を電気通信回線３を介して受信する。
【００２７】
ファイル解析部１０５は、要求受信部１０４で受信した要求に対応してクライアント２に返送するべき構造化文書ファイルを読み込み、当該ファイル中に特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されているかどうかを解析する。ファイル解析部１０５は、既存のウェブサーバプログラムと同様、クライアント２からもたらされたＨＴＴＰ要求に含まれている情報（即ち、ＵＲＩ、リファラ、ウェブフォームのデータ等）を基にクライアント２に送信するウェブページを決定し、当該ウェブページに対応した構造化文書ファイルを読む。基本的には、当該ウェブページに対応したテンプレートをファイル格納部１０２から読み出して解析するのであるが、ＨＴＴＰ要求によってＣＧＩプログラム等が呼び出されるということもあり得る。そのときには、ＣＧＩプログラム等が出力する構造化文書（のテンプレート）を読んで解析することとなる。既に述べたように、出力プログラムの識別子はＨＴＭＬ等のコメント行内に開始符号「＞＞」または終了符号「＜＜」を付して記述されることになっており、ファイル解析部１０５はコメント行を検索して開始符号「＞＞」または終了符号「＜＜」を検出し、出力プログラムの識別子を知得する。
【００２８】
ファイル改訂部１０６は、ファイル解析部１０５の解析により前記構造化文書ファイル中に記述された特定の出力プログラムを指し示す識別子及び置換対象となる文字列が検出された場合に、その識別子で識別される出力プログラムを実行に移し、当該プログラムの実行の結果出力される文字列を以て前記データファイル中の文字列を置き換える。ファイル改訂部１０６は、クライアント２から要求されたウェブページのテンプレート中に記述されている識別子を知得し、出力プログラム格納部１０３に格納している該当の出力プログラムを、例えば動的結合の形でメインメモリ１ｂにロードして実行させる。そして、同じ識別子を包含した一対のコメント行間のブロックに符号「｛」及び「｝」を付して記述されている置換対象文字列を、出力プログラムの実行の結果得られる文字列で置き換える。これにより、動的コンテンツが埋め込まれたウェブページの構造化文書ファイルが完成する。
【００２９】
ファイル送信部１０７は、完成した構造化文書ファイルをクライアント２に向けて電気通信回線３を介して送信する。
【００３０】
クライアント２は、汎用的なパーソナルコンピュータ、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、携帯電話端末またはビデオゲーム機等である。図６に示すように、クライアント２は、プロセッサ２ａ、メインメモリ２ｂ、補助記憶デバイス２ｃ、表示制御デバイス２ｄ、ディスプレイ２ｅ、操作入力デバイス２ｆ、通信インタフェース２ｇ等のハードウェア資源を備え、これらがコントローラ２ｈにより制御されて連携動作するものである。
【００３１】
プロセッサ２ａによって実行されるべきプログラムは補助記憶デバイス２ｃに格納されており、プログラムの実行の際には補助記憶デバイス２ｃからメインメモリ２ｂに読み込まれ、プロセッサ２ａによって解読される。クライアント２には、既存のＯＳプログラムやこれに付帯する各種デバイスドライバプログラムが予めインストールされ、他のプログラムによる上記ハードウェア資源の利用を仲介する。並びに、アプリケーションプログラムとして、既存のウェブブラウザまたはウェブブラウザ機能を発揮するプログラムがインストールされており、電気通信回線３を介してウェブサーバ１にＨＴＴＰ要求を発信し、ウェブサーバ１から返信される構造化文書ファイル等を受信してウェブページをレンダリング、画面表示することができる。また、いわゆる入力テキストボックスやチェックボックス、プルダウンメニュー等を備えるウェブフォームを画面表示することができ、ユーザの手によるウェブフォームへの入力を操作入力デバイス２ｆを介して受け付け、入力されたフォームデータをＨＴＴＰ要求に含めてウェブサーバ１に送信することもできる。
【００３２】
以降、本実施形態のウェブサーバ１がプログラムに従い実行する処理の手順を説明する。但し、出力プログラム格納部１０３に格納している出力プログラムの機能については種々のものが考えられるので、ここでは、具体例として以下の二種類のプログラムを想定する。
（ｉ）ニュースプログラム；ニュースプログラムは、データベース１０１に蓄積している記事の中から最新のものを選出し、あるいはアトランダムに選出する。そして、選出した記事のメタデータである記事がアップロードされた年月日、及び記事本文の文字列を出力する。記事本文の文字列は、選出された記事がテキストデータである場合にはその記事自体、選出された記事が非テキストデータである場合にはそのデータを指し示すＵＲＩとする。ニュースプログラムには、引数として、選出する（即ち、テンプレートに埋め込む）記事の個数の値を与えることができる。このプログラムは、識別子「ニュース」で識別される
（ii）検索プログラム；検索プログラムは、データベース１０１に蓄積している記事の中から、クライアント２のユーザの手によって入力された検索クエリに合致する記事を選出する。そして、記事がアップロードされた年月日及び記事本文の文字列を出力する。このプログラムは、識別子「検索」で識別される
ニュースプログラムと検索プログラムとの違いは、前者はクライアント２のユーザが入力する情報を必要としないのに対し、後者は必要とする点である。
【００３３】
ここで想定するウェブサイトは、トップページに最新のあるいはアトランダムな記事を表示し、セカンドページにデータベース検索用のクエリを入力するウェブフォームを表示し、サードページにデータベース検索の結果を表示するものとする。ファイル格納部１０２には、トップページ、セカンドページ及びサードページの基礎となるそれぞれの構造化文書のテンプレートが予め格納される。
【００３４】
図７は、ウェブサーバ１が実行する処理手順を示すフローチャートである。ウェブサーバ１は、クライアント２からもたらされるＨＴＴＰ要求を待ち受けており、ＨＴＴＰ要求を受信した（ステップＳ１）とき、このＨＴＴＰ要求に含まれる情報に基づいてクライアント２に返送するべきウェブページを決定、当該ウェブページのテンプレートをファイル格納部１０２から読み出す（ステップＳ２）。
【００３５】
クライアント２からトップページが要求された場合、ウェブサーバ１はトップページのテンプレートを読み出す（ステップＳ２）。そして、テンプレートを解析して、コメント行内に記述されている出力プログラムの識別子を検出する（ステップＳ３）。換言すれば、開始記号「＞＞」を含むコメント行及び終了記号「＜＜」を含むコメント行を検索することを通じて、これらコメント行で挟まれたブロックを検出する。図５に示しているように、トップページのテンプレートには、ニュースプログラムを指し示す識別子「ニュース」が記述されている。従って、ウェブサーバ１は、出力プログラム格納部１０３に格納している当該ニュースプログラムを実行に移し（ステップＳ４）、トップページのテンプレート中に記述されている置換対象文字列「｛年｝」、「｛月｝」、「｛日｝」及び「｛記事本文｝」を、ニュースプログラムの実行の結果得られる年、月、日及び記事本文の文字列で置き換える（ステップＳ５）。なお、テンプレート中に引数として記事の個数の値（図示例では、３）が記述されているときには、ファイル改訂部１０６はその引数をニュースプログラムに与える。ニュースプログラムは、引数として与えられた個数（即ち、３個）分だけ記事を選出して、それら各々のアップロードされた年月日及び記事本文の文字列を出力する。しかして、ファイル改訂部１０６は、開始符号「＞＞」を含むコメント行と終了符号「＜＜」を含むコメント行とで囲まれたブロックを記事の個数だけ複製した上、各ブロック内の置換対象文字列を各記事のアップロードされた年月日及び記事本文の文字列でそれぞれ置換する。図８に、記事が埋め込まれたウェブページの構造化文書ファイルを例示する。これにより、最新のあるいはアトランダムに選出された記事が埋め込まれたトップページの構造化文書ファイルが完成する。テンプレート中に存在する全てのブロックについて、出力プログラムの実行及び置換対象文字列の置換を終えた後（ステップＳ６）、ウェブサーバ１は、構造化文書ファイルをクライアント２に向けて送信する（ステップＳ７）。
【００３６】
図９に示しているように、クライアント２上では、最新のあるいはアトランダムな記事がトップページ内に表示される。
【００３７】
ステップＳ１で受信したＨＴＴＰ要求にて、クライアント２からセカンドページが要求された場合、ウェブサーバ１はセカンドページのテンプレートを読み出す（ステップＳ２）。そして、テンプレートを解析して、コメント行内に記述されている出力プログラムの識別子を検出する（ステップＳ３）。しかしながら、セカンドページは検索クエリを入力するためのウェブフォームであって、動的なコンテンツを埋め込む必要のないものであり、特定の出力プログラムの識別子及び置換対象文字列は記述されていない。従って、ウェブサーバ１は、セカンドページのテンプレートに改訂を加えることなくそのままクライアント２に向けて送信する（ステップＳ７）。
【００３８】
クライアント２上では、検索クエリを入力するためのウェブフォームがセカンドページ内に表示される。クライアント２のユーザは、操作入力デバイス２ｆを介して、例えば検索クエリを入力テキストボックスに入力し、マウスカーソルで検索実行を指令するボタンをクリックする等する。この操作を受け付けたクライアント２は、入力された検索クエリを含むＨＴＴＰ要求をウェブサーバ１に向けて発信するが、これは検索結果表示用のサードページを要求するものとなる。
【００３９】
ステップＳ１で受信したＨＴＴＰ要求にて、クライアント２からサードページが要求された場合、ウェブサーバ１はサードページのテンプレートを読み出す（ステップＳ２）。そして、テンプレートを解析して、コメント行内に記述されている出力プログラムの識別子を検出する（ステップＳ３）。サードページのテンプレートには、検索プログラムを指し示す識別子「検索」が記述されている。従って、ウェブサーバ１は、出力プログラム格納部１０３に格納している当該検索プログラムを実行に移し（ステップＳ４）、サードページのテンプレート中に記述されている置換対象文字列「｛年｝」、「｛月｝」、「｛日｝」及び「｛記事本文｝」を、検索プログラムの実行の結果得られる年、月、日及び記事本文の文字列で置き換える（ステップＳ５）。なお、検索プログラムがデータベース１０１の検索を実施するには、クライアント２のユーザが入力した検索クエリを必要とするが、検索プログラムに検索クエリを渡す具体的実装は任意である。即ち、検索プログラム自体が先に受信したＨＴＴＰ要求を参照して検索クエリを取り出すものとしてもよく、ファイル改訂部１０６がＨＴＴＰ要求から取り出した検索クエリを検索プログラムに引き渡すものとしてもよい。検索プログラムは、検索クエリに合致する一または複数の記事を選出して、それら各々のアップロードされた年月日及び記事本文の文字列を出力する。しかして、ファイル改訂部１０６は、開始符号「＞＞」を含むコメント行と終了符号「＜＜」を含むコメント行とで囲まれたブロックを記事の個数だけ複製した上、各ブロック内の置換対象文字列を各記事のアップロードされた年月日及び記事本文の文字列でそれぞれ置換する。これにより、データベース検索により選出された記事が埋め込まれたサードページの構造化文書ファイルが完成する。テンプレート中に存在する全てのブロックについて、出力プログラムの実行及び置換対象文字列の置換を終えた後（ステップＳ６）、ウェブサーバ１は、サードページの構造化文書ファイルをクライアント２に向けて送信する（ステップＳ７）。
【００４０】
クライアント２上では、データベース１０１の検索結果がサードページ内に表示される。
【００４１】
本実施形態によれば、クライアント２からもたらされる要求に対し、当該クライアント２上で表示される構造化文書等のデータファイルを返送するウェブサーバシステム１であって、前記データファイル中に含めるべき文字列を動的に出力する出力プログラムを当該プログラムを識別する識別子と関連づけて格納している出力プログラム格納部１０３と、クライアント２から送信される所定の通信プロトコルに則った要求を電気通信回線３を介して受信する要求受信部１０４と、前記要求受信部１０４で受信した要求に対応して前記クライアント２に返送するべきデータファイルを読み込み、当該データファイル中に特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されているかどうかを解析するファイル解析部１０５と、前記データファイル中に特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されている場合に、前記出力プログラム格納部１０３に格納され前記識別子で識別される出力プログラムを実行に移し、当該プログラムの実行の結果出力される文字列を以て前記データファイル中の文字列を置き換えるファイル改訂部１０６と、前記データファイルを前記クライアント２に向けて電気通信回線３を介して送信するファイル送信部１０７とを具備するウェブサーバシステム１を構成したため、ウェブデザイナやウェブサイトオーナ等は、クライアント２に送信するデータファイルの必要箇所に出力プログラムの識別子及び置換対象文字列を記述するだけで、出力プログラムの機能を利用でき、動的コンテンツを包含したウェブサイトの構築が可能となる。例えば、最新のあるいはアトランダムな記事をセカンドページ内に表示させたければ、セカンドページのテンプレートの中に、ニュースプログラムの識別子「ニュース」をコメント行として記述し、かつコメント行間のブロックに置換対象文字列「｛年｝」、「｛月｝」、「｛日｝」及び「｛記事本文｝」を記述すれば済むのである。これだけのことで、セカンドページ内に最新のあるいはアトランダムな記事が表示されるようになるのである。ＨＴＭＬ等の記述言語等に関する知識さえあれば、データファイル中に出力プログラムの識別子及び置換対象文字列を記述することは容易である。さらに、プログラマが一旦出力プログラムをコーディングしてしまえば、どのウェブページに対しても同じ出力プログラムを使い回しすることができる。ウェブサイトの増補や改作を行う度にプログラマの手を煩わせる必要がなくなり、プログラマの負担が著しく軽減され、プログラマに常駐を要求せずに済むようになる。
【００４２】
特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されているデータファイルのテンプレートを格納しているファイル格納部１０２をさらに具備し、前記ファイル解析部１０５が、前記出力プログラム格納部１０３に格納され前記要求に対応して前記クライアント２に返送するべきデータファイルのテンプレートを読み込み、前記ファイル改訂部１０６が、前記テンプレート中に記述された識別子で識別される出力プログラムを実行に移し、当該プログラムの実行の結果出力される文字列を以て前記テンプレート中の文字列を置き換え、前記ファイル送信部１０７が、前記テンプレート中の文字列を置換してなるデータファイルを前記クライアント２に向けて送信するシステムとしたため、ウェブデザイナまたはウェブサイトオーナ等が作成したテンプレートファイルをアップロードして格納することで動的コンテンツの実装が完了する利便性の高いものとなる。
【００４３】
前記データファイルは所定の記述言語を用いて表現され、特定の出力プログラムを指し示す識別子は当該記述言語におけるコメント行内に記述されており、前記ファイル解析部１０５は、前記クライアント２に返送するべきデータファイル中のコメント行を検索して、そこに特定の出力プログラムを指し示す識別子が記述されているかどうかを解析するシステムとしたため、コメント行を検索するのみで解析を完遂でき、負荷が軽く処理時間も短くなる。
【００４４】
置換対象となる文字列は前記識別子を包含した一対のコメント行間に所定の符号を付して記述され、前記ファイル改訂部１０６は、前記一対のコメント行間に介在する所定の符号が付された文字列のみを置き換える処理を実行するので、静的なウェブページと全く同じように、動的コンテンツ即ち置換された文字列の表現形式をＨＴＭＬ等及びスタイルシートにて柔軟にコントロールすることができる。
【００４５】
なお、本発明は以上に詳述した実施形態に限られるものではない。特に、図３に示す各部の機能が複数のコンピュータに分散され、それらが協働することで本発明に係るウェブサーバシステムとして成立している態様を妨げない。
【００４６】
その他、各部の具体的構成や処理の手順等は、本発明の趣旨を逸脱しない範囲で種々変形が可能である。
【産業上の利用可能性】
【００４７】
本発明は、例えば、ウェブサイト制作受託事業やホスティングサービス事業等に好適に利用することができる。
【符号の説明】
【００４８】
１…ウェブサーバ
１０２…ファイル格納部
１０３…出力プログラム格納部
１０４…要求受信部
１０５…ファイル解析部
１０６…ファイル改訂部
１０７…ファイル送信部
【図１】
2012145969.tif 000003
【図２】
2012145969.tif 000004
【図３】
2012145969.tif 000005
【図４】
2012145969.tif 000006
【図５】
2012145969.tif 000007
【図６】
2012145969.tif 000008
【図７】
2012145969.tif 000009
【図８】
2012145969.tif 000010
【図９】
2012145969.tif 000011