JP2012145969A - ウェブサーバシステム及びプログラム - Google Patents
ウェブサーバシステム及びプログラム Download PDFInfo
- Publication number
- JP2012145969A JP2012145969A JP2009021777A JP2009021777A JP2012145969A JP 2012145969 A JP2012145969 A JP 2012145969A JP 2009021777 A JP2009021777 A JP 2009021777A JP 2009021777 A JP2009021777 A JP 2009021777A JP 2012145969 A JP2012145969 A JP 2012145969A
- Authority
- JP
- Japan
- Prior art keywords
- file
- character string
- output program
- program
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Document Processing Apparatus (AREA)
Abstract
【課題】十分なプログラミング技能を有していないウェブデザイナ等が、コンテンツの動的生成機能を簡便に利用可能にする。
【解決手段】HTMLファイル中に含めるべき文字列を動的に出力する出力プログラムを識別子と関連づけて格納した出力プログラム格納部103と、クライアントからのHTTP要求を受信する要求受信部104と、受信した要求に対応してクライアントに返送するべきHTMLファイルのテンプレートを読み込み、当該テンプレート中の出力プログラムを指し示す識別子及び置換対象とのなる文字列を認識するファイル解析部105と、テンプレート中に記述されている識別子に対応する出力プログラムを実行し、その出力結果の文字列とテンプレート中の文字列を置換しHTMLファイルを完成させるファイル改訂部106と、HTMLファイルをクライアントに送信するファイル送信部107とを具備するウェブサーバシステム1を構成した。
【選択図】図3
【解決手段】HTMLファイル中に含めるべき文字列を動的に出力する出力プログラムを識別子と関連づけて格納した出力プログラム格納部103と、クライアントからのHTTP要求を受信する要求受信部104と、受信した要求に対応してクライアントに返送するべきHTMLファイルのテンプレートを読み込み、当該テンプレート中の出力プログラムを指し示す識別子及び置換対象とのなる文字列を認識するファイル解析部105と、テンプレート中に記述されている識別子に対応する出力プログラムを実行し、その出力結果の文字列とテンプレート中の文字列を置換しHTMLファイルを完成させるファイル改訂部106と、HTMLファイルをクライアントに送信するファイル送信部107とを具備するウェブサーバシステム1を構成した。
【選択図】図3
Description
本発明は、クライアントに向けて構造化文書やその他各種のデータを送信して提供するウェブサーバシステムに関する。
ウェブサーバ(HTTP(HyperText Transfer Protocol)サーバ)の本来の機能はシンプルである。即ち、クライアントから電気通信回線を介してもたらされるHTTP要求を受け取り、その要求を解釈して何れのデータファイルが求められているのかを判断した上、対象のファイルをクライアントに返送するというものである。
基本的には、予め用意されているファイルの中から要求で名指しされたファイルを抽出して送信するだけである。だが、要求を受信してはじめて、送信するべきファイルを生成しなければならないこともある。例えば、逐次ニュース記事がアップロード(または、ポスト)され蓄えられるデータベースから最新の記事またはアトランダムな記事を選んでクライアント上で表示させたい場合、選び出した記事を挿入したウェブページのファイルを、要求の受信後に生成してクライアントに送信する。クライアントのユーザによる、データベースの検索要求を受け付ける場合も同様である。ユーザの入力する検索クエリに応じた検索結果は事前に存在しておらず、検索結果表示用のウェブページもまた検索実行後に生成するより他にない。
この種の動的コンテンツを実現する仕組みとして、CGI(Common Gateway Interface。下記特許文献1を参照)がよく知られている。CGIは、ウェブサーバプログラムから他のプログラム(または、スクリプト)を呼び出して作動させ、そのプログラムによる処理の結果を取得してクライアントに返すための取り決めである。CGIを用いれば、クライアントに対するフロントエンドであるウェブサーバプログラムと、コンテンツを動的に出力するバックエンドのプログラムとの連携を図ることができる。
また、PHP(Hypertext Preprocessor。下記特許文献2を参照)と呼ばれるプラットフォームも存在する。PHPは、要求を受信した後に実行されるプログラムを構造化文書ファイル(HTML(HyperText Markup Language)ファイル、XHTML(Extensible HyperText Markup Language)ファイル、XML(Extensible Markup Language)ファイル等)中に一体的に記述しておくことを可能にする。
今日のワールドワイドウェブでは構造化文書が中心的役割を果たしており、ウェブサイトの外観デザイン作成に携わるウェブデザイナは、HTML等の記述言語(マークアップ言語)やスタイルシートに関する知識を習得している。しかし、ウェブデザイナが、動的コンテンツを任意に制御できるだけのプログラミング技能をも有しているとは限られない。コーディング作業は、依然としてプログラマの領分である。
その上で、元来ウェブサイトはページオリエンテッドな思考の下に構築されており、一つのウェブページと、そのウェブページを動的に出力するプログラムとは原則として一対一の関係となる。よって、例えば、これまでウェブサイトのトップページに表示させていたニュース記事をセカンドページに表示させるようにウェブサイトの仕様を変更する際には、当該セカンドページを出力するプログラムを新たにコーディングする必要が発生する。結局のところ、ウェブサイトの増補や改作を行う度にプログラマの手を煩わせることとなり、プログラマの常駐化ひいてはウェブサイトの制作コストの騰貴を招く。
上述の問題に着目してなされた本発明は、必ずしも十分なプログラミング技能を有していないウェブデザイナまたはウェブサイトオーナ等が、コンテンツの動的生成機能を簡便に利用できるようにすることを所期の目的とする。
本発明では、クライアントからもたらされる要求に対し、当該クライアント上で表示される構造化文書等のデータファイルを返送するウェブサーバシステムであって、前記データファイル中に含めるべき文字列を動的に出力する出力プログラムを当該プログラムを識別する識別子と関連づけて格納している出力プログラム格納部と、クライアントから送信される所定の通信プロトコルに則った要求を電気通信回線を介して受信する要求受信部と、前記要求受信部で受信した要求に対応して前記クライアントに返送するべきデータファイルを読み込み、当該データファイル中に特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されているかどうかを解析するファイル解析部と、前記データファイル中に特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されている場合に、前記出力プログラム格納部に格納され前記識別子で識別される出力プログラムを実行に移し、当該プログラムの実行の結果出力される文字列を以て前記データファイル中の文字列を置き換えるファイル改訂部と、前記データファイルを前記クライアントに向けて電気通信回線を介して送信するファイル送信部とを具備するウェブサーバシステムを構成した。
あるウェブページに動的に生成されるコンテンツを挿入したい場合、そのウェブページの主体となる構造化文書ファイルにおける、コンテンツの表示位置に該当する箇所に、所要のコンテンツを出力するプログラムの識別子及び置換対象の文字列を記述しておく。本発明のウェブサーバシステムは、当該ウェブページを返送するべき旨の要求をクライアントから受け取ったとき、当該ウェブページに係る構造化文書ファイルを参照、解析して、上記の識別子及び文字列を検出する。そして、その識別子で識別される出力プログラムの実行の結果取得されるテキストコンテンツ、またはコンテンツを指し示すURI(Uniform Resource Identifier)等を、構造化文書ファイル中の置換対象文字列に上書きする。しかる後、この構造化文書ファイルをクライアントに返送する。
ウェブデザイナやウェブサイトオーナ等は、クライアントに送信するデータファイルの必要箇所に出力プログラムの識別子及び置換対象文字列を記述するだけで、出力プログラムの機能を利用でき、動的コンテンツを包含したウェブサイトの構築が可能である。記述言語等に関する知識さえあれば、データファイル中に出力プログラムの識別子及び置換対象文字列を記述することは容易である。さらに、プログラマが一旦出力プログラムをコーディングしてしまえば、どのウェブページに対しても同じ出力プログラムを使い回しすることができる。これにより、ウェブサイトの増補や改作を行う度にプログラマの手を煩わせる必要がなくなり、プログラマの負担が著しく軽減され、プログラマに常駐を要求せずに済むようになる。
特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されているデータファイルのテンプレートを格納しているファイル格納部をさらに具備し、前記ファイル解析部が、前記出力プログラム格納部に格納され前記要求に対応して前記クライアントに返送するべきデータファイルのテンプレートを読み込み、前記ファイル改訂部が、前記テンプレート中に記述された識別子で識別される出力プログラムを実行に移し、当該プログラムの実行の結果出力される文字列を以て前記テンプレート中の文字列を置き換え、前記ファイル送信部が、前記テンプレート中の文字列を置換してなるデータファイルを前記クライアントに向けて送信するシステムとすれば、ウェブデザイナまたはウェブサイトオーナ等が作成したテンプレートファイルをアップロードして格納することで動的コンテンツの実装が完了する利便性の高いものとなる。
前記データファイルは所定の記述言語を用いて表現され、特定の出力プログラムを指し示す識別子は当該記述言語におけるコメント行内に記述されており、前記ファイル解析部は、前記クライアントに返送するべきデータファイル中のコメント行を検索して、そこに特定の出力プログラムを指し示す識別子が記述されているかどうかを解析するシステムとすれば、コメント行を検索するのみで解析を完遂できるため、負荷が軽く処理時間も短くなる。
置換対象となる文字列は前記識別子を包含した一対のコメント行間に所定の符号を付して記述されることが望ましい。前記ファイル改訂部は、前記一対のコメント行間に介在する所定の符号が付された文字列のみを置き換える処理を実行する。
本発明によれば、必ずしも十分なプログラミング技能を有していないウェブデザイナまたはウェブサイトオーナ等であっても、コンテンツの動的生成機能を簡便に利用できるようになる。
本発明の一実施形態を、図面を参照して説明する。本実施形態のウェブサーバ1は、例えば、電子掲示板サーバ、ウェブログサーバ、フォトアルバムサーバ等またはネットワークストレージとしての役割を担う。図1に示すように、本実施形態のウェブサーバ1と、ユーザが使用するクライアント2とは、インターネット、WAN(Wide Area Network)、LAN(Local Area Network)等の電気通信回線3を介して通信可能に接続する。
図2に示すように、ウェブサーバ1は、プロセッサ1a、メインメモリ1b、補助記憶デバイス1c、表示制御デバイス1d、ディスプレイ1e、操作入力デバイス1f、通信インタフェース1g等のハードウェア資源を備え、これらがコントローラ(システムコントローラ、I/Oコントローラ等)1hにより制御されて連携動作するものである。補助記憶デバイス1cは、ハードディスクドライブ、フラッシュメモリ、光学ディスクドライブ、その他である。表示制御デバイス1dは、プロセッサ1aより受けた描画指示をもとに表示させるべき画像データを生成してディスプレイ1eに向けて送出するビデオチップ(または、グラフィクスプロセッサ)、画像データを一時的に格納しておくビデオメモリ等を要素とする。操作入力デバイス1fは、手指で操作可能な押下ボタン、キーボードや、マウス、トラックパッド、タッチパネル等のポインティングデバイスである。通信インタフェース1gは、電気通信回線3を介した情報通信を行うためのデバイスであり、NIC(Network Interface Card)や無線LANトランシーバに代表されるが、これら以外にUSB(Universal Serial Bus)、IEEE1394等のインタフェースを採用することもできる。
プロセッサ1aによって実行されるべきプログラムは補助記憶デバイス1cに格納されており、プログラムの実行の際には補助記憶デバイス1cからメインメモリ1bに読み込まれ、プロセッサ1aによって解読される。本実施形態では、既存のOS(Operating System)プログラムやこれに付帯する各種デバイスドライバプログラムが予めインストールされ、他のプログラムによる上記ハードウェア資源の利用を仲介する。その上で、本発明のウェブサーバシステムを構成するために必要となるプログラムがインストールされており、これらプログラムに従い上記ハードウェア資源を作動して、図3に示すデータベース101、ファイル格納部102、出力プログラム格納部103、要求受信部104、ファイル解析部105、ファイル改訂部106、ファイル送信部107としての機能を発揮する。
データベース101は、メインメモリ1bまたは補助記憶デバイス1cの記憶領域を用いて、動的コンテンツの材料となる種々のデータ、例えば、テキストデータや画像(静止画であるか動画であるかを問わない)データ、楽曲データ、アプリケーションプログラム等を格納する。通常、これらデータは逐次ウェブサーバ1にアップロードされ、ウェブサーバ1はアップロードされるデータを電気通信回線3を介して受信してデータベース101に蓄積してゆく。図4に、データベース101に蓄積したデータを例示する。図示例では、個々のデータ、例えば記事のテキストデータや、画像データ等の非テキストデータ及び非テキストデータのURIを、記事がアップロードされた年月日その他のメタデータに関連づけて格納している。
ファイル格納部102は、メインメモリ1bまたは補助記憶デバイス1cの記憶領域を用いて、所定の記述言語、例えばHTML、XHTMLまたはXML等で記述されたデータファイルである構造化文書ファイルを格納する。周知の通り、構造化文書ファイルはウェブサイトの構成要素である個々のウェブページの基礎となるものであり、ウェブサイトを制作または管理するウェブデザイナやウェブサイトオーナ等の手によって作成され、ウェブサーバ1にアップロードされる。ウェブサーバ1は、アップロードされた構造化文書ファイルを電気通信回線3を介して受信し、URIに関連づけてファイル格納部102に蓄積してゆく。
本実施形態にあって、ファイル格納部102に格納している構造化文書ファイルは、各ウェブページ毎のテンプレートである。このテンプレートには予め、動的コンテンツに係る文字列を出力する出力プログラムを識別する識別子、及びその出力プログラムが出力した文字列によって置換される文字列が記述されている。
図5に、出力プログラムの識別子及び置換対象文字列の記述例を示す。出力プログラムの識別子及び置換対象文字列の書式は、下記の通りである。
<!−− >>出力プログラムの識別子’引数 −−>
{置換対象文字列}
<!−− 出力プログラムの識別子’引数<< −−>
「<!−−」及び「−−>」は、テンプレートファイルの記述言語であるHTML等においてコメント行を意味する符号である。ウェブデザイナ、ウェブサイトオーナ等は、出力プログラムの識別子をHTML等のコメント行内に記述してウェブページのテンプレートを作成する。「引数」は出力プログラムに渡す値を意味し、その値が既知である場合に符号「’」を付した上で出力プログラムの識別子とともに記述することが可能である。置換対象文字列は、出力プログラムの識別子を包含した一対のコメント行間に、より詳しくは開始符号「>>」を付した「>>出力プログラムの識別子」と終了符号「<<」を付した「出力プログラムの識別子<<」との間に記述する。開始符号「>>」を含むコメント行と終了符号「<<」を含むコメント行とで囲まれたブロックが、後述するファイル改訂部106による改訂処理の対象となる。置換対象文字列には、符号「{」及び「}」を付す。ブロック内に存在する置換対象文字列以外の文字列は、置換等されることなくそのままウェブページのHTML等の一部として出力される。
<!−− >>出力プログラムの識別子’引数 −−>
{置換対象文字列}
<!−− 出力プログラムの識別子’引数<< −−>
「<!−−」及び「−−>」は、テンプレートファイルの記述言語であるHTML等においてコメント行を意味する符号である。ウェブデザイナ、ウェブサイトオーナ等は、出力プログラムの識別子をHTML等のコメント行内に記述してウェブページのテンプレートを作成する。「引数」は出力プログラムに渡す値を意味し、その値が既知である場合に符号「’」を付した上で出力プログラムの識別子とともに記述することが可能である。置換対象文字列は、出力プログラムの識別子を包含した一対のコメント行間に、より詳しくは開始符号「>>」を付した「>>出力プログラムの識別子」と終了符号「<<」を付した「出力プログラムの識別子<<」との間に記述する。開始符号「>>」を含むコメント行と終了符号「<<」を含むコメント行とで囲まれたブロックが、後述するファイル改訂部106による改訂処理の対象となる。置換対象文字列には、符号「{」及び「}」を付す。ブロック内に存在する置換対象文字列以外の文字列は、置換等されることなくそのままウェブページのHTML等の一部として出力される。
出力プログラム格納部103は、メインメモリ1bまたは補助記憶デバイス1cの記憶領域を用いて、動的コンテンツに係る文字列を出力する出力プログラムを格納する。出力プログラムはウェブサーバ1上で実行されるものであり、主としてデータベース101に蓄積しているテキストデータまたは非テキストデータのURIを文字列として出力する。出力プログラムは、ウェブページのテンプレートとは独立してプログラマの手によって作成され、ウェブサーバ1にアップロードされる。ウェブサーバ1は、アップロードされた出力プログラムを電気通信回線3を介して受信し、当該プログラムを識別する識別子に関連づけて出力プログラム格納部103に蓄積してゆく。
要求受信部104は、クライアント2から送信される、所定の通信プロトコルに則った要求、例えばHTTP要求を電気通信回線3を介して受信する。
ファイル解析部105は、要求受信部104で受信した要求に対応してクライアント2に返送するべき構造化文書ファイルを読み込み、当該ファイル中に特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されているかどうかを解析する。ファイル解析部105は、既存のウェブサーバプログラムと同様、クライアント2からもたらされたHTTP要求に含まれている情報(即ち、URI、リファラ、ウェブフォームのデータ等)を基にクライアント2に送信するウェブページを決定し、当該ウェブページに対応した構造化文書ファイルを読む。基本的には、当該ウェブページに対応したテンプレートをファイル格納部102から読み出して解析するのであるが、HTTP要求によってCGIプログラム等が呼び出されるということもあり得る。そのときには、CGIプログラム等が出力する構造化文書(のテンプレート)を読んで解析することとなる。既に述べたように、出力プログラムの識別子はHTML等のコメント行内に開始符号「>>」または終了符号「<<」を付して記述されることになっており、ファイル解析部105はコメント行を検索して開始符号「>>」または終了符号「<<」を検出し、出力プログラムの識別子を知得する。
ファイル改訂部106は、ファイル解析部105の解析により前記構造化文書ファイル中に記述された特定の出力プログラムを指し示す識別子及び置換対象となる文字列が検出された場合に、その識別子で識別される出力プログラムを実行に移し、当該プログラムの実行の結果出力される文字列を以て前記データファイル中の文字列を置き換える。ファイル改訂部106は、クライアント2から要求されたウェブページのテンプレート中に記述されている識別子を知得し、出力プログラム格納部103に格納している該当の出力プログラムを、例えば動的結合の形でメインメモリ1bにロードして実行させる。そして、同じ識別子を包含した一対のコメント行間のブロックに符号「{」及び「}」を付して記述されている置換対象文字列を、出力プログラムの実行の結果得られる文字列で置き換える。これにより、動的コンテンツが埋め込まれたウェブページの構造化文書ファイルが完成する。
ファイル送信部107は、完成した構造化文書ファイルをクライアント2に向けて電気通信回線3を介して送信する。
クライアント2は、汎用的なパーソナルコンピュータ、PDA(Personal Digital Assistant)、携帯電話端末またはビデオゲーム機等である。図6に示すように、クライアント2は、プロセッサ2a、メインメモリ2b、補助記憶デバイス2c、表示制御デバイス2d、ディスプレイ2e、操作入力デバイス2f、通信インタフェース2g等のハードウェア資源を備え、これらがコントローラ2hにより制御されて連携動作するものである。
プロセッサ2aによって実行されるべきプログラムは補助記憶デバイス2cに格納されており、プログラムの実行の際には補助記憶デバイス2cからメインメモリ2bに読み込まれ、プロセッサ2aによって解読される。クライアント2には、既存のOSプログラムやこれに付帯する各種デバイスドライバプログラムが予めインストールされ、他のプログラムによる上記ハードウェア資源の利用を仲介する。並びに、アプリケーションプログラムとして、既存のウェブブラウザまたはウェブブラウザ機能を発揮するプログラムがインストールされており、電気通信回線3を介してウェブサーバ1にHTTP要求を発信し、ウェブサーバ1から返信される構造化文書ファイル等を受信してウェブページをレンダリング、画面表示することができる。また、いわゆる入力テキストボックスやチェックボックス、プルダウンメニュー等を備えるウェブフォームを画面表示することができ、ユーザの手によるウェブフォームへの入力を操作入力デバイス2fを介して受け付け、入力されたフォームデータをHTTP要求に含めてウェブサーバ1に送信することもできる。
以降、本実施形態のウェブサーバ1がプログラムに従い実行する処理の手順を説明する。但し、出力プログラム格納部103に格納している出力プログラムの機能については種々のものが考えられるので、ここでは、具体例として以下の二種類のプログラムを想定する。
(i)ニュースプログラム;ニュースプログラムは、データベース101に蓄積している記事の中から最新のものを選出し、あるいはアトランダムに選出する。そして、選出した記事のメタデータである記事がアップロードされた年月日、及び記事本文の文字列を出力する。記事本文の文字列は、選出された記事がテキストデータである場合にはその記事自体、選出された記事が非テキストデータである場合にはそのデータを指し示すURIとする。ニュースプログラムには、引数として、選出する(即ち、テンプレートに埋め込む)記事の個数の値を与えることができる。このプログラムは、識別子「ニュース」で識別される
(ii)検索プログラム;検索プログラムは、データベース101に蓄積している記事の中から、クライアント2のユーザの手によって入力された検索クエリに合致する記事を選出する。そして、記事がアップロードされた年月日及び記事本文の文字列を出力する。このプログラムは、識別子「検索」で識別される
ニュースプログラムと検索プログラムとの違いは、前者はクライアント2のユーザが入力する情報を必要としないのに対し、後者は必要とする点である。
(i)ニュースプログラム;ニュースプログラムは、データベース101に蓄積している記事の中から最新のものを選出し、あるいはアトランダムに選出する。そして、選出した記事のメタデータである記事がアップロードされた年月日、及び記事本文の文字列を出力する。記事本文の文字列は、選出された記事がテキストデータである場合にはその記事自体、選出された記事が非テキストデータである場合にはそのデータを指し示すURIとする。ニュースプログラムには、引数として、選出する(即ち、テンプレートに埋め込む)記事の個数の値を与えることができる。このプログラムは、識別子「ニュース」で識別される
(ii)検索プログラム;検索プログラムは、データベース101に蓄積している記事の中から、クライアント2のユーザの手によって入力された検索クエリに合致する記事を選出する。そして、記事がアップロードされた年月日及び記事本文の文字列を出力する。このプログラムは、識別子「検索」で識別される
ニュースプログラムと検索プログラムとの違いは、前者はクライアント2のユーザが入力する情報を必要としないのに対し、後者は必要とする点である。
ここで想定するウェブサイトは、トップページに最新のあるいはアトランダムな記事を表示し、セカンドページにデータベース検索用のクエリを入力するウェブフォームを表示し、サードページにデータベース検索の結果を表示するものとする。ファイル格納部102には、トップページ、セカンドページ及びサードページの基礎となるそれぞれの構造化文書のテンプレートが予め格納される。
図7は、ウェブサーバ1が実行する処理手順を示すフローチャートである。ウェブサーバ1は、クライアント2からもたらされるHTTP要求を待ち受けており、HTTP要求を受信した(ステップS1)とき、このHTTP要求に含まれる情報に基づいてクライアント2に返送するべきウェブページを決定、当該ウェブページのテンプレートをファイル格納部102から読み出す(ステップS2)。
クライアント2からトップページが要求された場合、ウェブサーバ1はトップページのテンプレートを読み出す(ステップS2)。そして、テンプレートを解析して、コメント行内に記述されている出力プログラムの識別子を検出する(ステップS3)。換言すれば、開始記号「>>」を含むコメント行及び終了記号「<<」を含むコメント行を検索することを通じて、これらコメント行で挟まれたブロックを検出する。図5に示しているように、トップページのテンプレートには、ニュースプログラムを指し示す識別子「ニュース」が記述されている。従って、ウェブサーバ1は、出力プログラム格納部103に格納している当該ニュースプログラムを実行に移し(ステップS4)、トップページのテンプレート中に記述されている置換対象文字列「{年}」、「{月}」、「{日}」及び「{記事本文}」を、ニュースプログラムの実行の結果得られる年、月、日及び記事本文の文字列で置き換える(ステップS5)。なお、テンプレート中に引数として記事の個数の値(図示例では、3)が記述されているときには、ファイル改訂部106はその引数をニュースプログラムに与える。ニュースプログラムは、引数として与えられた個数(即ち、3個)分だけ記事を選出して、それら各々のアップロードされた年月日及び記事本文の文字列を出力する。しかして、ファイル改訂部106は、開始符号「>>」を含むコメント行と終了符号「<<」を含むコメント行とで囲まれたブロックを記事の個数だけ複製した上、各ブロック内の置換対象文字列を各記事のアップロードされた年月日及び記事本文の文字列でそれぞれ置換する。図8に、記事が埋め込まれたウェブページの構造化文書ファイルを例示する。これにより、最新のあるいはアトランダムに選出された記事が埋め込まれたトップページの構造化文書ファイルが完成する。テンプレート中に存在する全てのブロックについて、出力プログラムの実行及び置換対象文字列の置換を終えた後(ステップS6)、ウェブサーバ1は、構造化文書ファイルをクライアント2に向けて送信する(ステップS7)。
図9に示しているように、クライアント2上では、最新のあるいはアトランダムな記事がトップページ内に表示される。
ステップS1で受信したHTTP要求にて、クライアント2からセカンドページが要求された場合、ウェブサーバ1はセカンドページのテンプレートを読み出す(ステップS2)。そして、テンプレートを解析して、コメント行内に記述されている出力プログラムの識別子を検出する(ステップS3)。しかしながら、セカンドページは検索クエリを入力するためのウェブフォームであって、動的なコンテンツを埋め込む必要のないものであり、特定の出力プログラムの識別子及び置換対象文字列は記述されていない。従って、ウェブサーバ1は、セカンドページのテンプレートに改訂を加えることなくそのままクライアント2に向けて送信する(ステップS7)。
クライアント2上では、検索クエリを入力するためのウェブフォームがセカンドページ内に表示される。クライアント2のユーザは、操作入力デバイス2fを介して、例えば検索クエリを入力テキストボックスに入力し、マウスカーソルで検索実行を指令するボタンをクリックする等する。この操作を受け付けたクライアント2は、入力された検索クエリを含むHTTP要求をウェブサーバ1に向けて発信するが、これは検索結果表示用のサードページを要求するものとなる。
ステップS1で受信したHTTP要求にて、クライアント2からサードページが要求された場合、ウェブサーバ1はサードページのテンプレートを読み出す(ステップS2)。そして、テンプレートを解析して、コメント行内に記述されている出力プログラムの識別子を検出する(ステップS3)。サードページのテンプレートには、検索プログラムを指し示す識別子「検索」が記述されている。従って、ウェブサーバ1は、出力プログラム格納部103に格納している当該検索プログラムを実行に移し(ステップS4)、サードページのテンプレート中に記述されている置換対象文字列「{年}」、「{月}」、「{日}」及び「{記事本文}」を、検索プログラムの実行の結果得られる年、月、日及び記事本文の文字列で置き換える(ステップS5)。なお、検索プログラムがデータベース101の検索を実施するには、クライアント2のユーザが入力した検索クエリを必要とするが、検索プログラムに検索クエリを渡す具体的実装は任意である。即ち、検索プログラム自体が先に受信したHTTP要求を参照して検索クエリを取り出すものとしてもよく、ファイル改訂部106がHTTP要求から取り出した検索クエリを検索プログラムに引き渡すものとしてもよい。検索プログラムは、検索クエリに合致する一または複数の記事を選出して、それら各々のアップロードされた年月日及び記事本文の文字列を出力する。しかして、ファイル改訂部106は、開始符号「>>」を含むコメント行と終了符号「<<」を含むコメント行とで囲まれたブロックを記事の個数だけ複製した上、各ブロック内の置換対象文字列を各記事のアップロードされた年月日及び記事本文の文字列でそれぞれ置換する。これにより、データベース検索により選出された記事が埋め込まれたサードページの構造化文書ファイルが完成する。テンプレート中に存在する全てのブロックについて、出力プログラムの実行及び置換対象文字列の置換を終えた後(ステップS6)、ウェブサーバ1は、サードページの構造化文書ファイルをクライアント2に向けて送信する(ステップS7)。
クライアント2上では、データベース101の検索結果がサードページ内に表示される。
本実施形態によれば、クライアント2からもたらされる要求に対し、当該クライアント2上で表示される構造化文書等のデータファイルを返送するウェブサーバシステム1であって、前記データファイル中に含めるべき文字列を動的に出力する出力プログラムを当該プログラムを識別する識別子と関連づけて格納している出力プログラム格納部103と、クライアント2から送信される所定の通信プロトコルに則った要求を電気通信回線3を介して受信する要求受信部104と、前記要求受信部104で受信した要求に対応して前記クライアント2に返送するべきデータファイルを読み込み、当該データファイル中に特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されているかどうかを解析するファイル解析部105と、前記データファイル中に特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されている場合に、前記出力プログラム格納部103に格納され前記識別子で識別される出力プログラムを実行に移し、当該プログラムの実行の結果出力される文字列を以て前記データファイル中の文字列を置き換えるファイル改訂部106と、前記データファイルを前記クライアント2に向けて電気通信回線3を介して送信するファイル送信部107とを具備するウェブサーバシステム1を構成したため、ウェブデザイナやウェブサイトオーナ等は、クライアント2に送信するデータファイルの必要箇所に出力プログラムの識別子及び置換対象文字列を記述するだけで、出力プログラムの機能を利用でき、動的コンテンツを包含したウェブサイトの構築が可能となる。例えば、最新のあるいはアトランダムな記事をセカンドページ内に表示させたければ、セカンドページのテンプレートの中に、ニュースプログラムの識別子「ニュース」をコメント行として記述し、かつコメント行間のブロックに置換対象文字列「{年}」、「{月}」、「{日}」及び「{記事本文}」を記述すれば済むのである。これだけのことで、セカンドページ内に最新のあるいはアトランダムな記事が表示されるようになるのである。HTML等の記述言語等に関する知識さえあれば、データファイル中に出力プログラムの識別子及び置換対象文字列を記述することは容易である。さらに、プログラマが一旦出力プログラムをコーディングしてしまえば、どのウェブページに対しても同じ出力プログラムを使い回しすることができる。ウェブサイトの増補や改作を行う度にプログラマの手を煩わせる必要がなくなり、プログラマの負担が著しく軽減され、プログラマに常駐を要求せずに済むようになる。
特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されているデータファイルのテンプレートを格納しているファイル格納部102をさらに具備し、前記ファイル解析部105が、前記出力プログラム格納部103に格納され前記要求に対応して前記クライアント2に返送するべきデータファイルのテンプレートを読み込み、前記ファイル改訂部106が、前記テンプレート中に記述された識別子で識別される出力プログラムを実行に移し、当該プログラムの実行の結果出力される文字列を以て前記テンプレート中の文字列を置き換え、前記ファイル送信部107が、前記テンプレート中の文字列を置換してなるデータファイルを前記クライアント2に向けて送信するシステムとしたため、ウェブデザイナまたはウェブサイトオーナ等が作成したテンプレートファイルをアップロードして格納することで動的コンテンツの実装が完了する利便性の高いものとなる。
前記データファイルは所定の記述言語を用いて表現され、特定の出力プログラムを指し示す識別子は当該記述言語におけるコメント行内に記述されており、前記ファイル解析部105は、前記クライアント2に返送するべきデータファイル中のコメント行を検索して、そこに特定の出力プログラムを指し示す識別子が記述されているかどうかを解析するシステムとしたため、コメント行を検索するのみで解析を完遂でき、負荷が軽く処理時間も短くなる。
置換対象となる文字列は前記識別子を包含した一対のコメント行間に所定の符号を付して記述され、前記ファイル改訂部106は、前記一対のコメント行間に介在する所定の符号が付された文字列のみを置き換える処理を実行するので、静的なウェブページと全く同じように、動的コンテンツ即ち置換された文字列の表現形式をHTML等及びスタイルシートにて柔軟にコントロールすることができる。
なお、本発明は以上に詳述した実施形態に限られるものではない。特に、図3に示す各部の機能が複数のコンピュータに分散され、それらが協働することで本発明に係るウェブサーバシステムとして成立している態様を妨げない。
その他、各部の具体的構成や処理の手順等は、本発明の趣旨を逸脱しない範囲で種々変形が可能である。
本発明は、例えば、ウェブサイト制作受託事業やホスティングサービス事業等に好適に利用することができる。
1…ウェブサーバ
102…ファイル格納部
103…出力プログラム格納部
104…要求受信部
105…ファイル解析部
106…ファイル改訂部
107…ファイル送信部
102…ファイル格納部
103…出力プログラム格納部
104…要求受信部
105…ファイル解析部
106…ファイル改訂部
107…ファイル送信部
Claims (8)
- クライアントからもたらされる要求に対し、当該クライアント上で表示される構造化文書等のデータファイルを返送するウェブサーバシステムであって、
前記データファイル中に含めるべき文字列を動的に出力する出力プログラムを当該プログラムを識別する識別子と関連づけて格納している出力プログラム格納部と、
クライアントから送信される所定の通信プロトコルに則った要求を電気通信回線を介して受信する要求受信部と、
前記要求受信部で受信した要求に対応して前記クライアントに返送するべきデータファイルを読み込み、当該データファイル中に特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されているかどうかを解析するファイル解析部と、
前記データファイル中に特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されている場合に、前記出力プログラム格納部に格納され前記識別子で識別される出力プログラムを実行に移し、当該プログラムの実行の結果出力される文字列を以て前記データファイル中の文字列を置き換えるファイル改訂部と、
前記データファイルを前記クライアントに向けて電気通信回線を介して送信するファイル送信部と
を具備するウェブサーバシステム。 - 特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されているデータファイルのテンプレートを格納しているファイル格納部をさらに具備し、
前記ファイル解析部は、前記出力プログラム格納部に格納され前記要求に対応して前記クライアントに返送するべきデータファイルのテンプレートを読み込み、
前記ファイル改訂部は、前記テンプレート中に記述された識別子で識別される出力プログラムを実行に移し、当該プログラムの実行の結果出力される文字列を以て前記テンプレート中の文字列を置き換え、
前記ファイル送信部は、前記テンプレート中の文字列を置換してなるデータファイルを前記クライアントに向けて送信する請求項1記載のウェブサーバシステム。 - 前記データファイルは所定の記述言語を用いて表現され、特定の出力プログラムを指し示す識別子は当該記述言語におけるコメント行内に記述されており、
前記ファイル解析部は、前記クライアントに返送するべきデータファイル中のコメント行を検索して、そこに特定の出力プログラムを指し示す識別子が記述されているかどうかを解析する請求項1または2記載のウェブサーバシステム。 - 置換対象となる文字列は前記識別子を包含した一対のコメント行間に所定の符号を付して記述されており、
前記ファイル改訂部は、前記一対のコメント行間に介在する所定の符号が付された文字列を置き換える請求項3記載のウェブサーバシステム。 - 請求項1、2、3または4記載のウェブサーバシステムを構成するために用いられるものであって、コンピュータを、
前記データファイル中に含めるべき文字列を動的に出力する出力プログラムを当該プログラムを識別する識別子と関連づけて格納している出力プログラム格納部、
クライアントから送信される所定の通信プロトコルに則った要求を電気通信回線を介して受信する要求受信部、
前記要求受信部で受信した要求に対応して前記クライアントに返送するべきデータファイルを読み込み、当該データファイル中に特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されているかどうかを解析するファイル解析部、
前記データファイル中に特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されている場合に、前記出力プログラム格納部に格納され前記識別子で識別される出力プログラムを実行に移し、当該プログラムの実行の結果出力される文字列を以て前記データファイル中の文字列を置き換えるファイル改訂部、並びに、
前記データファイルを前記クライアントに向けて電気通信回線を介して送信するファイル送信部
として機能させるプログラム。 - さらに、前記コンピュータを、特定の出力プログラムを指し示す識別子及び置換対象となる文字列が記述されているデータファイルのテンプレートを格納しているファイル格納部としても機能させ、
前記ファイル解析部は、前記出力プログラム格納部に格納され前記要求に対応して前記クライアントに返送するべきデータファイルのテンプレートを読み込み、
前記ファイル改訂部は、前記テンプレート中に記述された識別子で識別される出力プログラムを実行に移し、当該プログラムの実行の結果出力される文字列を以て前記テンプレート中の文字列を置き換え、
前記ファイル送信部は、前記テンプレート中の文字列を置換してなるデータファイルを前記クライアントに向けて送信する請求項5記載のプログラム。 - 前記データファイルは所定の記述言語を用いて表現され、特定の出力プログラムを指し示す識別子は当該記述言語におけるコメント行内に記述されており、
前記ファイル解析部は、前記クライアントに返送するべきデータファイル中のコメント行を検索して、そこに特定の出力プログラムを指し示す識別子が記述されているかどうかを解析する請求項5または6記載のプログラム。 - 置換対象となる文字列は前記識別子を包含した一対のコメント行間に所定の符号を付して記述されており、
前記ファイル改訂部は、前記一対のコメント行間に介在する所定の符号が付された文字列を置き換える請求項7記載のプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009021777A JP2012145969A (ja) | 2009-02-02 | 2009-02-02 | ウェブサーバシステム及びプログラム |
PCT/JP2009/070520 WO2010087071A1 (ja) | 2009-02-02 | 2009-12-08 | ウェブサーバシステム及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009021777A JP2012145969A (ja) | 2009-02-02 | 2009-02-02 | ウェブサーバシステム及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012145969A true JP2012145969A (ja) | 2012-08-02 |
Family
ID=42395338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009021777A Pending JP2012145969A (ja) | 2009-02-02 | 2009-02-02 | ウェブサーバシステム及びプログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2012145969A (ja) |
WO (1) | WO2010087071A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014153879A (ja) * | 2013-02-07 | 2014-08-25 | Impress R&D Co Ltd | 編集システム |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5346900B2 (ja) * | 2010-09-27 | 2013-11-20 | 京セラドキュメントソリューションズ株式会社 | 情報処理装置および情報処理プログラム |
CN104798067B (zh) * | 2012-09-18 | 2017-07-04 | 株式会社野村综合研究所 | 辞典系统以及辞典调用方法 |
US9714397B2 (en) | 2014-10-16 | 2017-07-25 | Encapsys Llc | Controlled release microcapsules |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003016059A (ja) * | 2001-07-04 | 2003-01-17 | Sharp Corp | 情報表示端末、情報表示方法およびコンピュータに情報を表示するためのプログラム |
-
2009
- 2009-02-02 JP JP2009021777A patent/JP2012145969A/ja active Pending
- 2009-12-08 WO PCT/JP2009/070520 patent/WO2010087071A1/ja active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014153879A (ja) * | 2013-02-07 | 2014-08-25 | Impress R&D Co Ltd | 編集システム |
Also Published As
Publication number | Publication date |
---|---|
WO2010087071A1 (ja) | 2010-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9929990B2 (en) | Inserting content into an application from an online synchronized content management system | |
US8640093B1 (en) | Native web server for cross-platform mobile apps | |
CN102177515B (zh) | 用于代码转换和显示电子文档的方法、系统和设备 | |
US20130019189A1 (en) | Augmented editing of an online document | |
US20090006646A1 (en) | System and Method of Auto Populating Forms on Websites With Data From Central Database | |
US20120030553A1 (en) | Methods and systems for annotating web pages and managing annotations and annotated web pages | |
JP2010506304A (ja) | 翻訳文とともに原文をユーザインタフェース上に表示すること | |
WO2013028081A1 (en) | Page based navigation and presentation of web content | |
US20090106296A1 (en) | Method and system for automated form aggregation | |
CN105900091A (zh) | 加速文档加载 | |
US20090144158A1 (en) | System And Method For Enabling Viewing Of Documents Not In HTML Format | |
CN106471497B (zh) | 使用上下文的辅助浏览 | |
JP5309121B2 (ja) | 情報処理方法、プログラム、情報処理システム | |
KR20110127584A (ko) | 위지윅 방식의 웹 컨텐츠 취합시스템 및 그 방법 | |
JP2012145969A (ja) | ウェブサーバシステム及びプログラム | |
JP5247741B2 (ja) | 文字入力支援装置及び方法 | |
US10324600B2 (en) | Web page generation system | |
US8413062B1 (en) | Method and system for accessing interface design elements via a wireframe mock-up | |
JP2019086931A (ja) | 情報処理装置およびコンピュータプログラム | |
KR100477577B1 (ko) | 마우스 양쪽버튼의 동시클릭을 이용한 프로그램실행시스템 및 실행방법 | |
JPWO2020240875A1 (ja) | 特許文章管理装置、特許文章管理方法、および特許文章管理プログラム | |
Kujala | Development of a modern full stack web application | |
Mairn | Practical mobile web design | |
Späth et al. | Building Single-Page Web Applications with REST and JSON | |
JP5674704B2 (ja) | 情報処理装置、方法、コンピュータ・プログラム及びシステム |