JP2015138541A - ウェブ・コンテンツ生成システム - Google Patents
ウェブ・コンテンツ生成システム Download PDFInfo
- Publication number
- JP2015138541A JP2015138541A JP2014011916A JP2014011916A JP2015138541A JP 2015138541 A JP2015138541 A JP 2015138541A JP 2014011916 A JP2014011916 A JP 2014011916A JP 2014011916 A JP2014011916 A JP 2014011916A JP 2015138541 A JP2015138541 A JP 2015138541A
- Authority
- JP
- Japan
- Prior art keywords
- web
- generation system
- content generation
- widget
- web content
- 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
Abstract
【課題】プログラマーが記述するHTML文書から画面デザインの情報を完全に分離し、更にページ・レイアウト情報を提供するサーバーから、プログラマーが組み込んだロジックや非公開情報を管理するデータベースを不可視にできるウェブ・コンテンツ生成システムを提供する。【解決手段】ウェブ・ページ・レイアウト・データベース7と、前記ウェブ・ページ・レイアウト・データベースに格納されるウェブ・ページ・レイアウト情報10と、前記ウェブ・ページ・レイアウト情報にもとづきウェブ・ブラウザ上でウェブ・コンテンツを生成する画面描画ライブラリ9と、前記画面描画ライブラリの要求にもとづき前記ウェブ・ページ・レイアウト情報を出力する第二処理装置6と、で構成され、前記画面描画ライブラリを備えることにより、非公開情報等を管理するプロプライエタリ・データベース202をシステム内に設ける必要がない。【選択図】図1
Description
本発明は、ウェブ・コンテンツ生成システムに関する。
従来、ウェブ・コンテンツの作成を、画面レイアウト定義ファイルとデータベースの情報を元に、HTML文書を出力するものは多数存在している。例えば、特許文献1には、表示画面のデザインを容易に変更することができ、また、表示データの追加・変更・削除等も容易に行えるウェブ・ページ・コンテンツ生成システムが開示されている。この場合、処理装置12から出力される回答画面ファイルはHTML文書であった。このようにWebブラウザ22に対しHTML文書で出力されると、プログラマーが追加の作業を行うことができない。また、新たなロジックを追加しようとした場合、一度前記HTML文書を別の記憶装置等に保存し、追加作業を行わなければならなかった。さらに、前記処理装置12から出力されたような機械生成されたHTML文書は、プログラマーが新たなロジックを追加しようとした場合、一見しただけではHTMLコードのどの部分を修正すればよいのかが判別しづらく、追加作業を非常に困難なものにしている。
本発明は、上述した問題を解決するためになされたもので、デザイナー及びプログラマーがひとつのHTMLファイルを巡って共同作業をするという作業工程を含まず、デザイナーが担当するデザインとプログラマーが担当するロジックを完全に分離して作業をできるとともに、プログラマーがロジックを追加する際にソフトウェアにより機械生成したHTML文書を直接編集する必要がなく、しかも、ページ・レイアウト情報を提供するサーバーから、プログラマーが組み込んだロジックや非公開情報を管理するデータベースを不可視にすることができるウェブ・コンテンツ生成システムを提供することを目的としている。
本発明のウェブ・コンテンツ生成システムは、ウェブ・ページのレイアウトを定義するウェブ・ページ・レイアウト・データベースと、前記ウェブ・ページ・レイアウト・データベースに格納されるウェブ・ページのレイアウト等の情報からなるウェブ・ページ・レイアウト情報と、前記ウェブ・ページ・レイアウト情報にもとづきウェブ・ブラウザ上でウェブ・コンテンツを生成する画面描画ライブラリと、前記画面描画ライブラリの要求にもとづき前記ウェブ・ページ・レイアウト情報を出力する第二処理装置と、で構成され、前記画面描画ライブラリを備えることにより、非公開情報等を管理するプロプライエタリ・データベースをシステム内に設ける必要がないことを特徴としている。
また、前記ウェブ・ページ・レイアウト情報は、前記第二処理装置から出力する際にXML形式で表現されていることを特徴としている。
さらに、前記ウェブ・ページ・レイアウト情報は、前記第二処理装置から出力する際にJSON形式で表現されていることを特徴としている。
また、前記画面描画ライブラリの関数呼び出しにより、前記第二処理装置が前記ウェブ・ページ・レイアウト情報にもとづき、PDF文書ファイルを出力することを特徴としている。
さらに、前記ウェブ・ページ・レイアウト情報は、ウィジェットと呼ばれるウェブ部品の集合により構成されることを特徴としている。
また、前記ウェブ部品は、テキスト属性を有し、そのテキスト属性の文字列中にプレースホルダー文字列を記述でき、画面描画ライブラリにてプレースホルダー文字列に具体的な文字列を動的に割り当てることを特徴としている。
さらに、前記画面描画ライブラリの関数呼び出しにより、前記プレースホルダー文字列に具体的な文字列を動的に割り当てた後、前記第二処理装置が前記ウェブ・ページ・レイアウト情報にもとづき、PDF文書ファイルを出力することを特徴としている。
また、前記ウェブ部品は、テキスト属性を有し、そのテキストの記法により、複数のサブ部品を表現及び生成することを特徴としている。
さらに、前記ウェブ部品及び前記サブ部品に自動的に識別名が割り振られることを特徴としている。
また、前記ウェブ部品はulタグを表し、サブ部品はliタグに展開されることを特徴としている。
さらに、前記ウェブ部品はolタグを表し、サブ部品はliタグに展開されることを特徴としている。
また、前記ウェブ部品はtableタグを表し、テキスト属性の各行がサブ部品のtrタグに、各行を区切り文字で分割した部分文字列がサブ部品のthタグ、tdタグに展開されることを特徴としている。
さらに、前記ウェブ部品はselectタグを表し、サブ部品はoptionタグに展開されることを特徴としている。
また、前記サブ部品は<input type=“radio”>タグに展開されることを特徴としている。
さらに、前記サブ部品は<input type=“checkbox”>タグに展開されることを特徴としている。
また、前記ウェブ部品は、複数のウィジェットをまとめて1つのウィジェットとして扱えるようにしたコンテナ・ウィジェットであることを特徴としている。
さらに、前記コンテナ・ウィジェットは、複数のウィジェットが1つの繰り返しパターンを形成し、コンテナ・ウィジェットの縦横サイズと、繰り返しパターンの縦横サイズを、それぞれ保持し、一定の規則に従って繰り返しパターンを複数回、複製表示することを特徴としている。
また、前記コンテナ・ウィジェットに含まれるウィジェットは、それぞれテキスト属性を有し、そのテキスト属性の文字列中にプレースホルダー文字列を記述でき、前記画面描画ライブラリに繰り返し回数分の連想配列の配列を渡すことで、
プレースホルダー文字列に対し繰り返しパターン毎にそれぞれ異なる文字列を動的に割り当てることを特徴としている。
プレースホルダー文字列に対し繰り返しパターン毎にそれぞれ異なる文字列を動的に割り当てることを特徴としている。
さらに、前記コンテナ・ウィジェットは、繰り返しパターンを横方向に並べて表示し、繰り返しパターンの横幅の合計がコンテナ・ウィジェットの横幅を超える場合に次の行に改行することを特徴としている。
また、前記コンテナ・ウィジェットは、繰り返しパターンを縦方向に並べて表示することを特徴としている。
本発明のウェブ・コンテンツ生成システムは、ウェブ・ページのレイアウトを定義するウェブ・ページ・レイアウト・データベースと、前記ウェブ・ページ・レイアウト・データベースに格納されるウェブ・ページのレイアウト等の情報からなるウェブ・ページ・レイアウト情報と、前記ウェブ・ページ・レイアウト情報にもとづきウェブ・ブラウザ上でウェブ・コンテンツを生成する画面描画ライブラリと、前記画面描画ライブラリの要求にもとづき前記ウェブ・ページ・レイアウト情報を出力する第二処理装置と、で構成され、前記画面描画ライブラリを備えることにより、非公開情報等を管理するプロプライエタリ・データベースをシステム内に設ける必要がないことにより、サーバー処理装置とは完全に独立した別のウェブ・サーバーから配信されるHTML文書内で、当該ウェブ・ページ・レイアウト・データベースに格納されたウェブ・ページ・レイアウト情報にもとづき、ウェブ・コンテンツを生成・表示することができる。よって、デザイナーが担当するデザインとプログラマーが担当するロジックを完全に分離したウェブ・コンテンツ生成システムを提供することができる。また、前記画面描画ライブラリを備えることにより、非公開情報(個人情報、企業情報等)を管理するプロプライエタリ・データベースをシステム内に設ける必要がないため、非公開情報を第二ウェブ・サーバー装置等から直接アクセスされることを防止することができる。
また、本発明のウェブ・コンテンツ生成システムは、ウェブ・ページ・レイアウト情報を前記第二処理装置から出力する際にXML形式で表現されていることにより、XML形式を扱うJavaScript(登録商標)ライブラリは多数ある為、画面描画ライブラリの実装が容易になる。
さらに、本発明のウェブ・コンテンツ生成システムは、ウェブ・ページ・レイアウト情報を前記第二処理装置から出力する際にJSON形式で表現されていることにより、JSON形式を扱うJavaScript(登録商標)ライブラリは多数ある為、画面描画ライブラリの実装が容易になる。
また、本発明のウェブ・コンテンツ生成システムは、画面描画ライブラリの関数呼び出しにより、前記第二処理装置が前記ウェブ・ページ・レイアウト情報にもとづき、PDF文書ファイルを出力することにより、前記ウェブ・ページ・レイアウト情報にもとづいた請求書や明細書などの印刷用のページをウェブ・コンテンツ閲覧者に提供することができる。
さらに、本発明のウェブ・コンテンツ生成システムは、ウェブ・ページ・レイアウト情報をウィジェットと呼ばれるウェブ部品の集合により構成することにより、ウェブ部品単位でウェブ・ページへの追加、削除、移動、コピー&ペーストすることができ、ウェブ・コンテンツのページ・レイアウトを簡単かつ直感的に編集することができる。
また、本発明のウェブ・コンテンツ生成システムは、ウェブ部品にテキスト属性を有し、そのテキスト属性の文字列中にプレースホルダー文字列を記述でき、画面描画ライブラリにてプレースホルダー文字列に具体的な文字列を動的に割り当てることにより、画面描画ライブラリを通じて、プレースホルダー文字列に具体的な文字列を動的に割り当てることができる。
さらに、本発明のウェブ・コンテンツ生成システムは、画面描画ライブラリの関数呼び出しにより、前記プレースホルダー文字列に具体的な文字列を動的に割り当てた後、前記第二処理装置が前記ウェブ・ページ・レイアウト情報にもとづき、PDF文書ファイルを出力することにより、前記ウェブ・ページ・レイアウト情報にもとづいた請求書や明細書などの印刷用のページに、ページ・レイアウトのデザイン時には特定できない宛名や金額など具体的な文字列や数字を書き込むことができる。
また、本発明のウェブ・コンテンツ生成システムは、ウェブ部品にテキスト属性を有し、そのテキストの記法により、複数のサブ部品を表現及び生成することにより、作成時、少ない労力で多数のウェブ・ページの画面要素を定義することができる。
さらに、本発明のウェブ・コンテンツ生成システムは、ウェブ部品及び前記サブ部品に自動的に識別名が割り振られることにより、自動的に割り振られた識別名でDOM要素を特定することでJavaScript(登録商標)コードから前記DOM要素を操作することができ、AjaxやjQueryライブラリに代表されるウェブ・コンテンツの動的プログラミングに対応することができる。また、フォーム投稿型のウェブ・ページを作成した場合に、テキストボックスやチェックボックスなどのフォーム部品と、そこに入力した値や選択した結果が識別名を介して結びつく為、前記ウェブ・コンテンツ作成システムが動的に作成したウェブ・コンテンツであっても静的なHTML文書を記述するスタイルで開発したページと同様、ユーザーがフォームに入力した内容をサーバー側で取得することができる。
また、本発明のウェブ・コンテンツ生成システムは、ウェブ部品はulタグを表し、サブ部品はliタグに展開されることにより、HTMLを記述しなくても簡単に「順序なしリスト(Unordered List)」を生成・表示することができる。
さらに、本発明のウェブ・コンテンツ生成システムは、前記ウェブ部品はolタグを表し、サブ部品はliタグに展開されることにより、HTMLを記述しなくても簡単に「順序つきリスト(Ordered List)」を生成・表示することができる。
また、本発明のウェブ・コンテンツ生成システムは、前記ウェブ部品はtableタグを表し、テキスト属性の各行がサブ部品のtrタグに、各行を区切り文字で分割した部分文字列がサブ部品のthタグ、tdタグに展開されることにより、HTMLを記述しなくても簡単に「表組み(Table)」を生成・表示することができる。
さらに、本発明のウェブ・コンテンツ生成システムは、前記ウェブ部品はselectタグを表し、サブ部品はoptionタグに展開されることにより、HTMLを記述しなくても簡単に「ドロップ・ダウン・リスト」を生成・表示することができる。また、部分文字列の先頭が特定文字(‘*’)であれば、その項目を選択済みとすることができる。
また、前記サブ部品は<input type=“radio”>タグに展開されることにより、HTMLを記述しなくても簡単に「ラジオ・ボタン選択」を生成・表示することができる。さらに部分文字列の先頭が特定文字(‘*’)であれば、その項目を選択済みとすることができる。
さらに、前記サブ部品は<input type=“checkbox”>タグに展開されることにより、HTMLを記述しなくても簡単に「複数のチェックボックス」を生成・表示することができる。また、部分文字列の先頭が特定文字(‘*’)であれば、その項目を選択済みとすることができる。
また、前記ウェブ部品は、複数のウィジェットをまとめて1つのウィジェットとして扱えるようにしたコンテナ・ウィジェットにすることができることにより、複数のウィジェットをまとめて削除、移動、コピー&ペーストすることができ、複雑なウェブ・コンテンツのページ・レイアウトを簡単に編集することができる。さらに、コンテナ・ウィジェットを複数のウィジェットの相対位置を保持したまま1つの部品としてコピー&ペーストすることで、同じデザイン・パターンを複数箇所、複数ページで使い回すことができる。
さらに、前記コンテナ・ウィジェットは、複数のウィジェットが1つの繰り返しパターンを形成し、コンテナ・ウィジェットの縦横サイズと、繰り返しパターンの縦横サイズを、それぞれ保持し、一定の規則に従って繰り返しパターンを複数回、複製表示することにより、1つのデザイン・パターンを一定の規則で配置したウェブ・ページを容易にデザインすることができる。
また、前記コンテナ・ウィジェットに含まれるウィジェットは、それぞれテキスト属性を有し、そのテキスト属性の文字列中にプレースホルダー文字列を記述でき、前記画面描画ライブラリに繰り返し回数分の連想配列の配列を渡すことで、
1つのプレースホルダー文字列に対し繰り返しパターン毎にそれぞれ異なる文字列を動的に割り当てることにより、写真の一覧表示や掲示板のような1つのデザイン・パターンが一定の規則で繰り返されたウェブ・ページにおいて、繰り返しパターン毎に異なる写真のタイトルや掲示板の書き込みテキストなどの部分を動的に切り替えて表示することができる。
1つのプレースホルダー文字列に対し繰り返しパターン毎にそれぞれ異なる文字列を動的に割り当てることにより、写真の一覧表示や掲示板のような1つのデザイン・パターンが一定の規則で繰り返されたウェブ・ページにおいて、繰り返しパターン毎に異なる写真のタイトルや掲示板の書き込みテキストなどの部分を動的に切り替えて表示することができる。
さらに、前記コンテナ・ウィジェットは、繰り返しパターンを横方向に並べて表示し、繰り返しパターンの横幅の合計がコンテナ・ウィジェットの横幅を超える場合に次の行に改行することにより、写真の一覧表示のような1つのデザイン・パターンが横方向に繰り返し、一定の横幅に達すると縦方向に更に繰り返すウェブ・ページを容易にデザインすることができる。
また、前記コンテナ・ウィジェットは、繰り返しパターンを縦方向に並べて表示することにより、掲示板のような1つのデザイン・パターンが縦方向に繰り返すウェブ・ページを容易にデザインすることができる。
以下、本発明を実施するための最良の形態を、図面を参照して説明する。図1ないし図15は、本発明の一実施例によるウェブ・コンテンツ生成システムの構成及び動作を示している。図1は、本発明のウェブ・コンテンツ生成システムのシステム構成を示す構成図である。
図1の如く、ウェブ・コンテンツ生成システム1は、少なくとも、第一ウェブ・サーバー装置2と、第二ウェブ・サーバー装置3と、第一端末装置4とで構成されている。
前記第一ウェブ・サーバー装置2は、HTTP/HTTPSプロトコルを通じてリクエストを処理する第一処理装置5を搭載している。前記第一処理装置5は、リアルタイム・ウェブ・アプリケーションを実現する為に、双方向通信が可能なWebSocketプロトコルを処理する能力を有している。この第一ウェブ・サーバー装置2は、ページ・レイアウトを編集するウェブ・アプリケーション(ウェブ・アプリ)を提供するものである。このウェブ・アプリのシステムにより、ウェブ・コンテンツにおけるウェブ・ページのレイアウトを、ディスプレイ画面で見たものがそのまま印刷物やHTML文書として出力できる、所謂、WYSIWYG編集することができる。
前記第二ウェブ・サーバー装置3は、第二処理装置6と、ウェブ・ページ・レイアウト・データベース7と、ハードディスク等の記憶装置8とで構成される。前記第二処理装置6は、HTTP/HTTPSプロトコルを通じてリクエストに応答しHTML文書を送信する。前記ウェブ・ページ・レイアウト・データベース7は、ウェブ画面のレイアウトを定義する。
前記記憶装置8には、画面描画ライブラリ9が保存されている。前記画面描画ライブラリ9は、ウェブ・ページ全てに組み込まれる共通のライブラリとしている。なお、本実施の形態では、前記画面描画ライブラリ9は、前記第二ウェブ・サーバー装置3に保存されているが、これに限るものではなく、後述する第三ウェブ・サーバー装置200に保存されていても良いし、図示しない独立したウェブ・サーバーに保存されていても良い。
前記第二処理装置6は、Web API(application programming interface)によるリクエストを処理し、ウェブ・ページ・レイアウト情報10を配信する。なお、本実施の形態では、ウェブ・ページ・レイアウト・データベース7は、第二ウェブ・サーバー装置3に含まれているが、第一ウェブ・サーバー装置2にあっても良いし、両ウェブ・サーバー装置2,3とは独立した図示しないデータベース・サーバーとして存在していても良い。
前記第一端末装置4は、ウェブ・コンテンツを閲覧する一般ユーザーが使用する端末装置であり、Webブラウザ11を起動できるパソコン、タブレットPC、スマートフォン等の任意の端末装置である。前記Webブラウザ11は、図1の仮想線で示される如く、前記第二処理装置6に前記画面描画ライブラリ9をリクエストし、あらかじめ画面描画ライブラリ9を取得しておく。そして、実行可能な状態となった前記画面描画ライブラリ9の描画関数を呼び出すことにより、前記ウェブ・ページ・レイアウト・データベース7に格納された前記ウェブ・ページ・レイアウト情報10にもとづいてページ・レイアウトを再現し、ウェブ・コンテンツを表示する。前記第一端末装置4は、インターネット等を通じて、前記第二ウェブ・サーバー装置3及び後述する第三ウェブ・サーバー装置200にアクセスする。
第二端末装置100は、ウェブ・ページをレイアウト編集する際にこれらをデザインするデザイナーが使用する端末装置である。前記第二端末装置100は、Webブラウザ101を起動できるパソコン、タブレットPC、スマートフォン等の任意の端末装置である。
第三ウェブ・サーバー装置200は、第三処理装置201と、プロプライエタリ・データベース202とを搭載している。前記第三処理装置201は、HTTP/HTTPSプロトコルを通じてリクエストに応答しHTML文書や画像ファイルを出力する。前記プロプライエタリ・データベース202は、非公開情報等を管理している。前記第三ウェブ・サーバー装置200は、本発明のウェブ・コンテンツ生成システム1を利用するウェブ・コンテンツ開発者(プログラマー)が、本発明のシステムとは独立して設計・実装・管理するサーバー装置である。
次に、本発明のウェブ・コンテンツ生成システム1によるウェブ・コンテンツの生成方法について説明をする。図2は、本発明のウェブ・コンテンツ生成システム1によるウェブ・コンテンツの生成方法を示したフローチャートの一部であり、デザイナーの作業範囲を示している。図3は、本発明のウェブ・コンテンツ生成システム1によるウェブ・コンテンツの生成方法を示したフローチャートの一部であり、プログラマーの作業範囲を示している。
ウェブ・コンテンツを生成する際には、表示画面をデザインするデザイナーと、この表示画面についてJavaScript(登録商標)言語やサーバーサイド・スクリプト言語等を用いてプログラミングするプログラマーが分業体制で生成している場合が一般的である。
まず、Step1ないしStep6のデザイナーの作業範囲について図2を参照しながら説明する。
Step1 前記第二端末装置100で前記Webブラウザ101を立ち上げ、そして該Webブラウザ101に前記第一ウェブ・サーバー装置2のウェブ・ページのアドレスを入力する。前記Webブラウザ101は、入力されたアドレスに従い、前記第一ウェブ・サーバー装置2にアクセスし、ウェブ・アプリを記述したHTML文書を前記第一処理装置5にリクエストする。
Step1 前記第二端末装置100で前記Webブラウザ101を立ち上げ、そして該Webブラウザ101に前記第一ウェブ・サーバー装置2のウェブ・ページのアドレスを入力する。前記Webブラウザ101は、入力されたアドレスに従い、前記第一ウェブ・サーバー装置2にアクセスし、ウェブ・アプリを記述したHTML文書を前記第一処理装置5にリクエストする。
Step2 前記第一処理装置5は、リクエストされたHTML文書を前記Webブラウザ101に送信する。
Step3 前記Webブラウザ101はHTML文書を解釈し、そこから外部参照された図示しない画像ファイル、スタイルシート及びスクリプトファイルを追加リクエストする。それらリクエストに対しても前記第一処理装置5は応答し、要求されたファイルを前記Webブラウザ101に送信する。前記Webブラウザ101は、このようにして取得したHTML文書、スタイルシートで指定された画面デザインを描画し、スクリプトコードを実行して、ウェブ・アプリを前記第二端末装置100の画面上に表示する。ウェブ・アプリの画面は図4に示す。なお、本実施の形態では、ウェブ・アプリはウェブ・アプリケーションとして実装されているが、前記第二端末装置100の専用アプリケーションとして提供することも可能である。
Step4 デザイナーはウェブ・アプリを操作し、目的のウェブ・コンテンツのページ・レイアウトを編集する。このウェブ・ページのレイアウト編集の手順を図4にもとづいて、説明する。ウェブ・ページ編集画面は大きく分けて、編集対象となっているウェブ・ページ20、ウィジェット・ツールボックス21、ウィジェット属性編集ツールバー22から構成されている。
前記ウィジェット・ツールボックス21は、前記ウェブ・ページ20をデザインする際の部品となるウィジェットアイコン23(ウェブ部品)が多数並んでいる。デザイナーは前記ウィジェットアイコン23をドラッグ&ドロップ操作により、前記ウェブ・ページ20に追加することができる。ウェブ・ページ20に追加したウィジェット24は、ドラッグによりページ内の位置を移動することができる。
また、前記ウィジット24をクリックすることにより選択して、掴んで操作できるオブジェクトであるハンドル25を表示し、ハンドル操作で前記ウィジェット24の大きさや形を変形することができる。前記ウィジェット24をダブル・クリックすることによりテキスト編集ダイアログ26を表示し、テキスト属性を編集することができる。前記ウィジェット24のテキスト属性を変更すると、ウィジェット24のキャプションなど見た目が変化する。さらに、選択中のウィジェット24は、前記ウィジェット属性編集ツールバー22により、ウィジェット24の文字色、背景色、線幅、ハイパーリンクのリンク先など、様々な属性値を編集することができる。
図2のフローチャートを参照しながら、作業工程の説明に戻る。
Step5 本実施の形態のウェブ・アプリの起動中は、前記Webブラウザ101と前記第一処理装置5との間はWebSocketプロトコルによりリアルタイムな双方向通信が可能な状態になっている。上述のウェブ・ページの編集操作を実行すると、その都度リアルタイムに前記Webブラウザ101は前記第一処理装置5に編集内容を通知(更新:図1参照)する。
Step5 本実施の形態のウェブ・アプリの起動中は、前記Webブラウザ101と前記第一処理装置5との間はWebSocketプロトコルによりリアルタイムな双方向通信が可能な状態になっている。上述のウェブ・ページの編集操作を実行すると、その都度リアルタイムに前記Webブラウザ101は前記第一処理装置5に編集内容を通知(更新:図1参照)する。
Step6 前記第一処理装置5は、編集内容からウェブ・ページやウィジェットのレコードを更新し、前記ウェブ・ページ・レイアウト・データベース7に書き込む。該ウェブ・ページ・レイアウト・データベース7への書き込みに時間がかかる場合は、タイマー割り込みを利用し、10秒に1回書き込みをおこなうようにしたりして頻度を軽減する。このような手順により、ウェブ・コンテンツのウェブ・ページ・レイアウト情報10が前記ウェブ・ページ・レイアウト・データベース7に格納(保存)された状態になる。
次に、あらかじめ編集されたウェブ・ページ・レイアウト情報10を元に、前記ウェブ・コンテンツ生成システム1が、ウェブ・コンテンツを表示するまでの流れ、すなわち、Step7ないしStep17のプログラマーの作業範囲について図3を参照しながら説明する。
Step7 プログラマーが、前記画面描画ライブラリ9を利用するスクリプトを記述したHTML文書を作成する。
図5に、前記ウェブ・コンテンツ生成システム1により、ウェブ・コンテンツを実際に表示するHTMLコードを例示する。なお、このHTMLコードは、HTML5仕様書に準拠した記述になっている。また、図5における説明は、HTMLコードのうち、本発明に関連する部分のみとする。
図5の06行目は、jQueryライブラリを読み込んでいる。jQueryは、DOM(Document Object
Model)操作を簡単にするJavaScript(登録商標)言語で記述されたライブラリである。07行目は、前記画面描画ライブラリ9を読み込んでいる。11ないし16行目は、jQueryライブラリの機能を使い、DOMがロードされ操作、解析が可能になったタイミングで呼び出される関数を定義している。HTML5においては、言語指定であるtype属性を省略したscriptタグは、暗黙的にJavaScript(登録商標)コードと解釈される。
Model)操作を簡単にするJavaScript(登録商標)言語で記述されたライブラリである。07行目は、前記画面描画ライブラリ9を読み込んでいる。11ないし16行目は、jQueryライブラリの機能を使い、DOMがロードされ操作、解析が可能になったタイミングで呼び出される関数を定義している。HTML5においては、言語指定であるtype属性を省略したscriptタグは、暗黙的にJavaScript(登録商標)コードと解釈される。
12行目の“ux”は、前記画面描画ライブラリ9の関数群を定義した名前空間となるオブジェクトである。12ないし15行目の“ux.render()”は、前記画面描画ライブラリ9が提供するウェブ・コンテンツを生成、表示する関数である。13行目は、描画関数ux.renderの第1引数。保存された前記ウェブ・ページ・レイアウト情報10から、どのウェブ・ページを表示するかを指定している。ここではpublish_idとpage_idの組で一意にウェブ・ページを特定している。
14行目は、描画関数ux.renderの第2引数。プレースホルダー文字列と置き換えて表示する文字列を指定している。図5で示したように、従来のHTML文書で必要だった画面デザインの為のHTMLタグやスタイル定義の記述の大部分が不要となる。プログラマーは、このようなHTML文書を作成し、前記第三ウェブ・サーバー装置200の図示しないハードディスク等所定のコンテンツ・フォルダに格納する。
図3のフローチャートを参照しながら、作業工程の説明に戻る。
Step8 ウェブ・コンテンツのページを開く。Step7で作成したHTML文書で表現されるウェブ・コンテンツを閲覧したい一般ユーザーは、自身が所有する前記第一端末装置4にて前記Webブラウザ11を起動し、そのウェブ・コンテンツのアドレスを前記Webブラウザ11に入力する。すると前記Webブラウザ11は、前記第三処理装置201に対し当該HTML文書を送信するようリクエストを送信(図1参照)する。
Step8 ウェブ・コンテンツのページを開く。Step7で作成したHTML文書で表現されるウェブ・コンテンツを閲覧したい一般ユーザーは、自身が所有する前記第一端末装置4にて前記Webブラウザ11を起動し、そのウェブ・コンテンツのアドレスを前記Webブラウザ11に入力する。すると前記Webブラウザ11は、前記第三処理装置201に対し当該HTML文書を送信するようリクエストを送信(図1参照)する。
Step9 HTML文書を送信する。リクエストを受け取った前記第三処理装置201は、所定のコンテンツ・フォルダから当該HTML文書を読み込み、前記Webブラウザ11からのリクエストの応答として、Webブラウザ11にHTML文書を送信(図1参照)する。
Step10 HTML文書を解釈する。前記第三処理装置201からHTML文書を受信したWebブラウザ11は、字句解析器であるHTMLパーサーによりHTML文書の中身を解釈する。
Step11 前記画面描画ライブラリ9を要求する。HTML文書を解釈した結果、図5のHTMLコードの06行目及び07行目のような外部ファイルの参照を発見した場合、その外部ファイルをアドレスに指定されたサーバー装置に要求する。特に、このウェブ・コンテンツ生成システム1を利用するHTML文書の場合、外部ファイルとして前記画面描画ライブラリ9が必要になる。図5のHTMLコードの07行目に、前記画面描画ライブラリ9を読み込み要求するscriptタグの例を示す。HTMLパーサーにより、この07行目の記述を発見した前記Webブラウザ11は、前記第二処理装置6に対し、前記画面描画ライブラリ9のスクリプトファイルを送信するようにリクエスト(図1参照)する。
Step12 前記画面描画ライブラリ9を送信(図1参照)する。前記画面描画ライブラリ9のファイルを送信するようリクエストされた前記第二処理装置6は、前記記憶装置8の所定のコンテンツ・フォルダに格納された前記画面描画ライブラリ9のファイルを、リクエストに対する応答として、前記Webブラウザ11に送信する。本実施の形態では、前記画面描画ライブラリ9が第二ウェブ・サーバー装置3に保存された状態にした例を示したが、前記第三ウェブ・サーバー装置200に保存して、前記第三処理装置201が送信する実装でもよい。あるいはコンテンツデリバリネットワーク(Contents Delivery Network:CDN)にて配信する形でも良い。CDNを利用すれば、前記第二ウェブ・サーバー装置3または前記第三ウェブ・サーバー装置200への送信リクエストが減少し、サーバー装置の処理負荷が軽減する。
前記画面描画ライブラリ9は、前記ウェブ・コンテンツ生成システム1を利用するウェブ・ページ全てに組み込まれる共通のライブラリとして利用される。こうした場合、前記画面描画ライブラリ9の送信時の応答メッセージ中に含まれるファイルのキャッシュ寿命を1年間あるいはそれ以上に設定しておけば、ウェブ・コンテンツのページを開く度に前記画面描画ライブラリ9の送信リクエストが発生することがなくなり、画面描画完了までの時間を短縮することができる。こうした工夫は、送信リクエストを受けるサーバー装置の処理負荷を軽減するのに役立つ。
Step13 スクリプトを解釈する。HTMLパーサーは、scriptタグに囲まれたJavaScript(登録商標)コードを発見すると、JavaScript(登録商標)スクリプトエンジンにJavaScript(登録商標)コードの文字列を渡し、JavaScript(登録商標)コードの文字列をプログラムとして解釈、実行する。scriptタグにより外部から読み込まれたスクリプトも同様に、JavaScript(登録商標)スクリプトエンジンがプログラムとして解釈、実行する。そして外部ファイルの読み込みが終わり、DOM操作ができる状態になると、jQueryライブラリの機能により、図5の11ないし16行目のスクリプトが実行される。なお、DOMとは、JavaScript(登録商標)コードからHTML文書のドキュメント構造を参照、変更する為のオブジェクトモデル及びAPIである。
Step14 スクリプトが前記画面描画ライブラリ9のページ描画関数を呼び出す。図5の12ないし15行目は、前記画面描画ライブラリ9の描画関数ux.renderを呼び出すJavaScript(登録商標)コードである。描画関数ux.renderは、次のような動作をする。a)Web APIを呼び出し、前記ウェブ・ページ・レイアウト情報10を取得する。b)前記ウェブ・ページ・レイアウト情報10にもとづき、DOMを構築する。
まず、a)Web APIを呼び出し、前記ウェブ・ページ・レイアウト情報10を取得する動作を説明する。
Step15 ウェブ・ページ・レイアウト情報10を要求する。関数の第1引数である{publish_id:“1001”,page_id:“1”
}で特定されるウェブ・ページのウェブ・ページ・レイアウト情報10を取得するには、まず、ウェブ・ページ・レイアウト情報10を取得するWeb APIの要求先URLを求める。この場合、http://api.example.com/page_layout?pubish_id=1001&page_id=1となる。HTTPプロトコルのGET要求を上記アドレス宛にリクエストする。
Step15 ウェブ・ページ・レイアウト情報10を要求する。関数の第1引数である{publish_id:“1001”,page_id:“1”
}で特定されるウェブ・ページのウェブ・ページ・レイアウト情報10を取得するには、まず、ウェブ・ページ・レイアウト情報10を取得するWeb APIの要求先URLを求める。この場合、http://api.example.com/page_layout?pubish_id=1001&page_id=1となる。HTTPプロトコルのGET要求を上記アドレス宛にリクエストする。
“api.example.com”は、本実施の形態における前記第二ウェブ・サーバー装置3のドメイン名である。“/page_layout”は、前記第二ウェブ・サーバー装置3におけるウェブ・ページ・レイアウト情報10を取得するWeb APIのエントリーポイントとなるパス名である。なお、Web APIのドメイン名及びパスは実装パラメーターであり、自由に命名すれば良い。
Step16 ウェブ・ページ・レイアウト情報10を送信(図1参照)する。第二処理装置6は、ウェブ・ページ・レイアウト情報10を取得するWeb APIのエントリーポイントのパス名に対しGET要求があると、URLのクエリ部分“?publish_id=1001&page_id=1”を取り出す。クエリ部分の解析により、このGET要求は、パブリッシュID=1001、ページID=1のウェブ・ページに対応するウェブ・ページ・レイアウト情報10を要求してきていることが判明する。
前記第二処理装置6は、パブリッシュID=1001、ページID=1を検索条件にして、前記ウェブ・ページ・レイアウトデータベース7に問い合わせをする。この問い合わせに対し、前記ウェブ・ページ・レイアウトデータベース7は、該ウェブ・ページのウィジェット・レコードのリストを結果として返す。前記第二処理装置6は、前記ウェブ・ページ・レイアウトデータベース7から取得したウィジェット・レコードのリストを、JSONあるいはXML形式に変換し、GET要求の応答として送信(図1参照)する。
URLのクエリ部分が“?publish_id=1001&page_id=1&callback=cb”とcallback関数名(この場合“cb”)の指定があればJSONP形式の応答となり、JSON形式に変換したウィジェット・レコードのリストの前後に、更にcallback関数の呼び出しコード“cb(”と“);”をつけて応答とする。
次に、b)ウェブ・ページ・レイアウト情報10にもとづき、DOMを構築する動作を説明する。
Step17 ウェブ・ページ・レイアウト情報10から画面を生成、表示する。描画関数ux.renderは、Web APIから取得したウェブ・ページ・レイアウト情報10にもとづき、以下の手順で画面を生成、表示する。取得したJSON形式で表したウェブ・ページ・レイアウト情報10を図6に例示する。ウェブ・ページ・レイアウト情報10は、ウィジェット・レコードのリスト(配列)である。図6で例示した配列には、2つのウィジェット・レコード(ウィジェットの属性情報)が含まれる。
Step17 ウェブ・ページ・レイアウト情報10から画面を生成、表示する。描画関数ux.renderは、Web APIから取得したウェブ・ページ・レイアウト情報10にもとづき、以下の手順で画面を生成、表示する。取得したJSON形式で表したウェブ・ページ・レイアウト情報10を図6に例示する。ウェブ・ページ・レイアウト情報10は、ウィジェット・レコードのリスト(配列)である。図6で例示した配列には、2つのウィジェット・レコード(ウィジェットの属性情報)が含まれる。
図6の02ないし04行目は、1つ目のウィジェット・レコードである。テキスト型のウィジェットである。05ないし07行目は、2つ目のウィジェット・レコードである。チェックリスト型のウィジェットである。07行目で、“background−color”:“”と空文字列を指定しているのは、背景色を透明にする指定である。全て“属性名(key)”:“属性値(value)”という形式で、属性が定義してある。
ちなみに、属性名の説明を以下にする。“type”:は、ウィジェットの種別名である。“text”:は、テキスト属性である。“left”:は、左端のX座標である。“top”:は、上端のY座標である。“width”:は、横幅である。“height”:は、高さである。“color”:は、描画色である。“background−color”:は、背景色である。“font−size”:は、文字の大きさである。
数字の単位はpx(ピクセル)である。色はハッシュ(#)に続く3桁または6桁の16進カラーコード文字列で表現する。色の属性値が空文字列(“”)である場合は、透明色を示す。1つ目のウィジェット・レコードのテキスト属性の属性値は、プレースホルダー文字列を含んでいるので、プレースホルダー文字列の置換処理を行う必要がある。
描画関数ux.renderは、取得した前記ページ・レイアウト情報10のウィジェット・レコード各々に対して、そのウィジェットを画面に表示するのに必要なDOM要素を生成し、DOMに追加する。ここでは1つ目のウィジェットを例にとり、描画関数ux.renderがウィジェット・レコード(図6の02ないし03行目)からDOM要素を生成、追加する過程を、図7を参照し説明する。前記画面描画ライブラリ9ではウィジェット種別毎に、そのウィジェットを表示する為のDOM要素の生成手順をそれぞれ定義してある。
まず、ウィジェット・レコードからウィジェット種別名(この場合“text”:図6の02行目、type=“text”参照)を取得し、テキスト型のウィジェットであることが判明する。テキスト型のウィジェットでは、追加するDOM要素はdivタグで、そのコンテンツ部分はテキスト属性そのものだと定義してある。テキスト属性(“text”)はこの場合、“こんにちは、${name}さん!”である。テキスト属性にはプレースホルダー文字列が含まれている可能性がある為、後述するプレースホルダー文字列の置換処理を行う。その結果、最終的なテキスト属性は“こんにちは、加藤さん!”となる。このテキスト属性をdivタグのコンテンツ部分に挿入する。また、1番目のテキスト型のウィジェットであることから、divタグの識別名(id)は“text_1”となる。ここまでの手順で生成された追加すべきDOM要素は、<div id=“text_1”>こんにちは、加藤さん!</div>となる。
次に、ウィジェット・レコードの残りの属性から、divタグのstyle属性、すなわち描画関数ux.renderが追加するDOM要素のスタイル(表示スタイル、表示の仕方)を定義する手順を説明する。スタイルもウィジェット・レコード同様、属性名と属性値の組から構成されている。HTMLコード上ではstyle=“属性名: 属性値;”と表記される。“left”,“top”,“width”,“height”,“font−size”の単位は“px”(ピクセル)なので、各属性値の後ろに文字列“px”を連結する。色属性を表す“color”,“background−color”は、そのまま属性値として採用する。それからウィジェットを自由な位置に配置する為に必要な“position:absolute;”をスタイルに追加する。このスタイルは、親要素の左上隅を基準とした位置に、そのDOM要素を配置することを指示する。
こうして出来たDOM要素(divタグ)をHTMLコードで表記したものが、図7となる。描画関数ux.renderが、このdivタグをHTML本文(bodyタグ)の下に追加すると、指定された位置にdivタグで表された矩形と「こんにちは、加藤さん!」という文字が前記Webブラウザ11の画面に登場する(図9参照)。
次に、1つ目のウィジェット・レコードを例にしてプレースホルダー文字列の置換処理について、説明をする。正規表現エンジンを用いて、ウィジェット・レコードのテキスト属性(この場合“こんにちは、${name}さん!”:図6の02行目参照)からプレースホルダー開始記号“${“とプレースホルダー終了記号”}”に囲まれた部分文字列を検索する。検索した部分文字列のうち、プレースホルダー開始記号“${”とプレースホルダー終了記号“}”を含んだ部分文字列をプレースホルダー文字列と呼ぶ。例:“${name}”。プレースホルダー開始記号“${”とプレースホルダー終了記号“}”を含まない部分文字列をプレースホルダー名と呼ぶ。例:“name”。これらは正規表現エンジンを利用すれば、検索結果として同時に取得できる。
次に、見つかったプレースホルダー文字列各々に対し、その置換文字列を算出する。すなわち、描画関数ux.renderの第2引数として渡されたプレースホルダー連想配列を用いて、プレースホルダー名をキーにして、前記プレースホルダー連想配列から値を取得し、それを置換文字列とする。なお、連想配列とは、“dog”を“犬”などキーから値の組み合わせを記憶する辞書型のデータ構造である。キーを指定して値を設定、取得することができる。その置換文字列をプレースホルダー文字列があった部分と置換した結果が、テキスト属性にプレースホルダー処理を施した文字列(この場合“こんにちは、加藤さん!”)となる。
こうした手順により、1つ目のウィジェット・レコードから動的に構築したHTML文書は図7になる。また同様に、2つ目のウィジェット・レコードから動的に構築したHTML文書は図8になるが、詳細な手順は以下に述べる。
次に、2つ目のチェックリスト型のウィジェットを例に、図8を参照しながらサブ部品の生成手順を説明する。
まず、第2引数{name:“加藤”,age:34}をプレースホルダー連想配列として保存する。
まず、第2引数{name:“加藤”,age:34}をプレースホルダー連想配列として保存する。
続いて、識別名カウンタ={“checklist”:0,“checkbox”:0}のように、識別名カウンタ連想配列を0(ゼロ)で初期化する。そして、Web APIを通じて、該ウェブ・ページのウィジェット・レコードの配列Wsを取得する。その際、第1引数{publish_id:“1001”,page_id:“1”}でページを特定する。
続いて、配列Wsの先頭から終わりまで繰り返し処理し、ウィジェット・レコードにもとづいて、ウィジェットを生成、表示する。ウィジェットのtype属性(図6の05行目、type=“check−list”参照)を取得する。type属性で指定された種別のウィジェット描画処理を呼び出す。例として、チェックリスト型のウィジェット描画処理については、以下のようになる。
識別名カウンタ[“checklist”]+=1:カウンタのインクリメント処理。識別名(id)=“checklist_”+識別名カウンタ[“checklist”]すなわち、id=“checklist_1”となる。テキスト属性以外の属性からdivタグ801(図8の01ないし03行目参照)を生成し、bodyタグの下に子要素として追加する。テキスト属性の値を取得し、文字列Aとする。文字列Aにプレースホルダー処理を施す。すなわち、文字列Aを更新する。文字列Aを“,”で分割する。すなわち、部分文字列Bの配列となる。この例では“りんご,*みかん,ぶどう”が [“りんご”,“*みかん”,“ぶどう” ]となる。
そして、分割された部分文字列B各々に対し繰り返し処理して、サブ部品を生成する。部分文字列Bの先頭が“*”であるかを確認する。{Yes}ならchecked=trueとし、部分文字列Bから先頭の“*”を取り除き、部分文字列Cとする。{No}ならchecked=falseとし、部分文字列Bを部分文字列Cとする。部分文字列Cを、チェックボックスのラベル文字列(りんご、みかん、ぶどう)とする。
識別名カウンタ[“checkbox”]+=1:カウンタのインクリメント処理をする。識別名(id)=“checkbox_”+識別名カウンタ[“checkbox”]すなわち、id=“checkbox_1”,“checkbox_2”,“checkbox_3”となる。サブ部品のDOM要素:<input type=“checkbox”>タグ(図8の04,06,08行目参照)を生成し、divタグ801の下に子要素として追加する。部分文字列Cからlabelタグ(図8の05、07、09行目参照)を生成し、divタグ801の下に子要素として追加する。
2つのウィジェットの座標が重なったときは、後続するウィジェットを手前に表示する。HTML文書においても、より後ろに記述したDOM要素が手前に表示されるルールの為、配列の順番通りにHTML文書の本文(bodyタグ)直下にウィジェットに対応するDOM要素を追加していけば良い。このように構築されたウェブ・コンテンツの画面が図9となる。なお、図中に記載されているチェックリストの周りの破線は、実際には表示されない。
次に、繰り返し表示を含んだウェブ・コンテンツを例に、コンテナ・ウィジェットを描画する手順を説明する。コンテナ・ウィジェットを含んだウェブ・コンテンツのウェブ・ページ・レイアウト情報10を図10に例示する。このウェブ・ページは、大きく2つのウィジェットにより構成されている。図10の02ないし03行目が、1つ目のウィジェットの属性情報である。これはテキスト型のウィジェットであり、「書籍一覧」というページ見出しを表現している。
図10の04ないし17行目が、2つ目のウィジェットの属性情報である。これはタイル型のウィジェットで、1つのデザイン・パターン(繰り返しパターン)を横方向に繰り返し表示するタイプのコンテナ・ウィジェットである。この例ではタイル型のコンテナ・ウィジェットにより、書籍情報の一覧表示を実現しようとしている。
次に、コンテナ・ウィジェットを定義する属性の詳細を説明する。図10に示す04ないし05行目では、コンテナ・ウィジェットの表示位置(“left”,“top”)、縦横サイズ(“width”,“height”)、背景色(“background−color”)を保持する。そして、06ないし16行目の“pattern”キーで示されるサブ・ドキュメントでは繰り返しパターンを定義している。さらに、07行目のように繰り返しパターン自身もコンテナ・ウィジェットのものとは別に縦横サイズ(“width”,“height”)を保持する。“pattern”サブ・ドキュメントの“widgets”キーでは、繰り返しパターン内部のレイアウト情報を表すウィジェット・レコードを保持している。コンテナ・ウィジェットでは再帰的なレイアウト構造を保持する。
この繰り返しパターンには、3つのウィジェット・レコードが含まれている。09ないし10行目は、テキスト型の1つ目のサブ・ウィジェットの属性情報である。書籍のタイトルを差し込めるようにプレースホルダー文字列を含んでいる。11ないし12行目も、テキスト型の2つ目のサブ・ウィジェットの属性情報である。書籍の価格を差し込めるようにプレースホルダー文字列を含んでいる。13ないし14行目は、3つ目のサブ・ウィジェットの属性情報である。スター型のウィジェットである。
スター型のウィジェットとは、評価値などを表す星マーク(★)を表示する為のウィジェットである。テキスト属性に例えば“3/5”を設定すると、全部で5つの星のうち、3つを獲得した状態を表す。すなわち“★★★☆☆”となる。例示したウィジェット・レコードでは、分子の星の数を、プレースホルダー文字列を利用して可変にしている。繰り返しパターン内部のサブ・ウィジェットが保持している表示位置(“left”,“top”)(図10の10、12、14行目)は、コンテナ・ウィジェットないし繰り返しパターンの左上隅からの相対位置を表す。なお、このような階層構造を持つドキュメント・データを格納するには、リレーショナルデータベースよりCouchDBやMongoDBに代表されるドキュメント指向データベースの方が適している。
図11は、前述した図10の前記ウェブ・ページ・レイアウト情報10を読み込んで、ウェブ・コンテンツを表示するHTMLコードである。以下、JavaScript(登録商標)コードの部分を説明する。図5と同様、図11の12行目で描画関数ux.renderを呼び出す。関数の第1引数である{publish_id:“1001”,page_id:“2”}にて、図10のウェブ・ページ・レイアウト情報10を特定している。なお、第2引数のプレースホルダー文字列の為の連想配列は不要なので省略する。
図11の13ないし19行目では、繰り返し描画関数ux.repeatを呼び出す。13行目:関数の第1引数である“tile_1”で、どのウィジェットを繰り返し描画するか指定する。この場合、2番目のウィジェットであるタイル型のコンテナ・ウィジェットを指し示す。この“tile_1”という識別名は、前記ウェブ・コンテンツ生成システム1により自動的に付けられたものである。
図11の14ないし19行目は関数の第2引数である連想配列の配列である。配列には4つの要素が格納されている。これにより、コンテナ・ウィジェットが保持する繰り返しパターンを4回複製し、表示することを指示している。この例では、繰り返しパターン内部のサブ・ウィジェットにプレースホルダー文字列を含む為、連想配列の配列を第2引数としたが、プレースホルダー文字列を一切含まない場合、繰り返し表示する回数を整数値で指示すれば良い。また、この繰り返し回数を示す第2引数の内容は、ページ・レイアウトのデザイン時にコンテナ・ウィジェットのテキスト属性として指定しておくことも可能である。その場合には、繰り返し描画関数ux.repeatの呼び出しは不要となる。
次に、繰り返し描画関数ux.repeatで繰り返し表示を実現する手順を説明する。まず、第1引数の識別名からコンテナ・ウィジェットに対応するDOM要素“tile_1”を検索する。見つかったDOM要素“tile_1”から子要素liタグを全て削除し、図12の03ないし05行目で示されるulタグだけの状態に戻す。ulタグのstyle属性は描画関数ux.renderを呼び出した際に、前記ウェブ・ページ・レイアウト情報10のコンテナ・ウィジェットの属性(図10の04ないし05行目)から生成したものである。
コンテナ・ウィジェットの繰り返しパターンから、子要素liタグを再構築する。コンテナ・ウィジェットのpattern属性に格納されている繰り返しパターンを取り出す。繰り返しパターンの属性から、ひな形となるliタグを生成する。liタグのstyle属性は繰り返しパターンの属性(図10の07行目)から生成する(図12の07、16行目及び図13の25、34行目)。加えて、横方向に並べて表示するタイル型のコンテナ・ウィジェットを実現する為、style属性に“display:inline−block;”を指定する(図12の06、15行目及び図13の24、33行目)。“display:inline−block;”を省略した場合、縦方向に並べて表示するスタック型のコンテナ・ウィジェットを実現できる。
次に、ひな形のliタグの下に繰り返しパターンのウィジェット・レコードから、サブ・ウィジェットのひな形となるDOM要素を生成、追加する。繰り返し描画関数ux.repeatがサブ・ウェジェットのウェジェット・レコードからDOM要素を生成する手順と、描画関数ux.renderがウィジェット・レコードからDOM要素を生成する手順は、基本的に同じである。ひとまず、繰り返しパターン内のサブ・ウィジェットのウィジェット・レコードをwidgets属性から取り出す(図10の08ないし15行目)。
この例では、ウィジェット・レコードの配列は3つのウィジェット・レコードから構成されている。この3つのウィジェット・レコードを元に、ひな形のliタグの下に3つのdivタグを生成し、各divタグのstyle属性をウィジェット・レコード(図10の10、12、14行目)から生成する。各divタグのコンテンツ部分はテキスト属性(図10の09、11、13行目)から生成されるが、テキスト属性にプレースホルダー文字列を含む為、ここでプレースホルダー文字列の置換処理を呼び出す。
次に、繰り返し描画関数ux.repeatにおけるプレースホルダー文字列の置換処理を説明する。繰り返し描画関数ux.repeatの第2引数が連想配列の配列である場合、置換結果を保持する二次元配列resultを用意し、{配列の連想配列の数}×{繰り返しパターン内のサブ・ウィジェットの数}だけ置換処理を繰り返す。
第2引数の配列のi番目の連想配列に対し、j番目のサブ・ウィジェットのプレースホルダー文字列の置換処理は以下の通りである。j番目のサブ・ウィジェットのテキスト属性を取得し、正規表現エンジンを用いて、プレースホルダー文字列を検索する。見つかったプレースホルダー文字列各々に対し、プレースホルダー名をキーにして、i番目の連想配列から値を取得し、プレースホルダー文字列があった部分と置換する。j番目のサブ・ウィジェットのテキスト属性にて、全てのプレースホルダー文字列を置換した結果の文字列をresult[i][j]に格納する。結果として得られる二次元配列resultの内容を図15に示す。
最後に、ひな形のliタグとプレースホルダー文字列を置換した結果resultからコンテナ・ウィジェット部分のDOM構造を構築する手順を説明する。以下の繰り返しパターンの複製作業を繰り返し描画関数ux.repeatの第2引数でしてされた回数だけ繰り返す。ひな形のliタグを複製し、追加するliタグとする。更にliタグの子要素であるdivタグ各々に対し、各ウィジェットの生成処理を呼び出す。生成処理を呼び出す際のテキスト属性はプレースホルダー文字列を置換後のresult[i][j]とする。
テキスト型のウィジェットの場合、渡されたテキスト属性をそのままコンテンツ部分に採用する。スター型のウィジェットの場合、渡されたテキスト属性(“4/5”,“3/5”,“5/5”,“3/5”)からコンテンツ部分の星表記(“★★★★☆”,“★★★☆☆”,“★★★★★”,“★★★☆☆”)を生成する。こうして追加するliタグが出来上がったら、第1引数の識別名で特定したulタグの下に追加する。
ここまでの手順に従いウィジェット・レコードから動的に構築されたHTML文書を図12及び図13に示す。最終的なウェブ・コンテンツの画面が図14となる。
ページ・レイアウトを編集するウェブ・アプリで更新したウェブ・ページ・レイアウト情報10は、次のようなアクセス制限のバリエーションを持って、一般ユーザーに公開される。一つ目は、ウェブ・コンテンツにリアルタイムに反映する。二つ目は、明示的にパブリッシュすることで、ウェブ・コンテンツとして公開される。三つ目は、二つ目の前段階としてサンドボックス・モードを設ける。サンドボックス・モードでは開発者のみが公開前のウェブ・ページ・レイアウト情報10にアクセスすることができる。サンドボックス・モードはウェブ・コンテンツの開発作業や表示の確認作業に利用することができる。
前記Webブラウザ11から、HTML文書を取得した前記第三ウェブ・サーバー装置200とは異なる前記第二ウェブ・サーバー装置3にアクセスして情報を取得(クロスドメインアクセスという)しようとすると、Same Origin Policyというセキュリティ上の要請から他ドメインにアクセスできない問題にぶつかる。
このSame Origin Policyの回避技術としてはJSONPなどが存在するが、JSONPでのアクセスを許すと、第三者が誰でもWeb APIを通じてウェブ・ページ・レイアウト情報10を取得できる状態になってしまう。このような場合にWeb APIのセキュリティ性を確保する方法としては、次のような手法がある。
第一の方法としては、Web APIのアドレスとは別に認証(ログイン)ページを用意し、前記Webブラウザ11がセッション管理されたクッキーを保持する方法。セッション管理されたクッキーは、Web APIの呼び出し時にプロトコル・ヘッダーに書き込まれる為、Web APIの呼び出しを個別に認証できる。こうすることで認証ID及びパスワードを知っているユーザーしかWeb APIを利用できなくなる為、サンドボックス・モード向けの実装である。
第二の方法としては、前記Webブラウザ11がWeb APIを呼び出す際にリクエストに付与するリファラー(元文書のアドレス)を見て、あらかじめ登録しておいたドメインと同一かどうか確認する方法である。
1 ウェブ・コンテンツ生成システム
6 第二処理装置
7 ウェブ・ページ・レイアウト・データベース
9 画面描画ライブラリ
10 ウェブ・ページ・レイアウト情報
24 ウィジェット
202 プロプライエタリ・データベース
6 第二処理装置
7 ウェブ・ページ・レイアウト・データベース
9 画面描画ライブラリ
10 ウェブ・ページ・レイアウト情報
24 ウィジェット
202 プロプライエタリ・データベース
Claims (20)
- ウェブ・コンテンツを生成するウェブ・コンテンツ生成システム1であって、
ウェブ・ページのレイアウトを定義するウェブ・ページ・レイアウト・データベース7と、
前記ウェブ・ページ・レイアウト・データベースに格納されるウェブ・ページのレイアウト等の情報からなるウェブ・ページ・レイアウト情報10と、
前記ウェブ・ページ・レイアウト情報にもとづきウェブ・ブラウザ上でウェブ・コンテンツを生成する画面描画ライブラリ9と、
前記画面描画ライブラリの要求にもとづき前記ウェブ・ページ・レイアウト情報を出力する第二処理装置6と、で構成され、
前記画面描画ライブラリを備えることにより、非公開情報等を管理するプロプライエタリ・データベース202をシステム内に設ける必要がないことを特徴とするウェブ・コンテンツ生成システム。 - 前記ウェブ・ページ・レイアウト情報は、前記第二処理装置から出力する際にXML形式で表現されていることを特徴とする請求項1に記載のウェブ・コンテンツ生成システム。
- 前記ウェブ・ページ・レイアウト情報は、前記第二処理装置から出力する際にJSON形式で表現されていることを特徴とする請求項1に記載のウェブ・コンテンツ生成システム。
- 前記画面描画ライブラリの関数呼び出しにより、前記第二処理装置が前記ウェブ・ページ・レイアウト情報にもとづき、PDF文書ファイルを出力することを特徴とする請求項1に記載のウェブ・コンテンツ生成システム。
- 前記ウェブ・ページ・レイアウト情報は、ウィジェット24と呼ばれるウェブ部品の集合により構成されることを特徴とする請求項1に記載のウェブ・コンテンツ生成システム。
- 前記ウェブ部品は、テキスト属性を有し、そのテキスト属性の文字列中にプレースホルダー文字列を記述でき、画面描画ライブラリにてプレースホルダー文字列に具体的な文字列を動的に割り当てることを特徴とする請求項5に記載のウェブ・コンテンツ生成システム。
- 前記画面描画ライブラリの関数呼び出しにより、前記プレースホルダー文字列に具体的な文字列を動的に割り当てた後、前記第二処理装置が前記ウェブ・ページ・レイアウト情報にもとづき、PDF文書ファイルを出力することを特徴とする請求項6に記載のウェブ・コンテンツ生成システム。
- 前記ウェブ部品は、テキスト属性を有し、そのテキストの記法により、複数のサブ部品を表現及び生成することを特徴とする請求項5に記載のウェブ・コンテンツ生成システム。
- 前記ウェブ部品及び前記サブ部品に自動的に識別名が割り振られることを特徴とする請求項8に記載のウェブ・コンテンツ生成システム。
- 前記ウェブ部品はulタグを表し、サブ部品はliタグに展開されることを特徴とする請求項8に記載のウェブ・コンテンツ生成システム。
- 前記ウェブ部品はolタグを表し、サブ部品はliタグに展開されることを特徴とする請求項8に記載のウェブ・コンテンツ生成システム。
- 前記ウェブ部品はtableタグを表し、テキスト属性の各行がサブ部品のtrタグに、各行を区切り文字で分割した部分文字列がサブ部品のthタグ、tdタグに展開されることを特徴とする請求項8に記載のウェブ・コンテンツ生成システム。
- 前記ウェブ部品はselectタグを表し、サブ部品はoptionタグに展開されることを特徴とする請求項8に記載のウェブ・コンテンツ生成システム。
- 前記サブ部品は<input type=“radio”>タグに展開されることを特徴とする請求項8に記載のウェブ・コンテンツ生成システム。
- 前記サブ部品は<input type=“checkbox”>タグに展開されることを特徴とする請求項8に記載のウェブ・コンテンツ生成システム。
- 前記ウェブ部品は、複数のウィジェットをまとめて1つのウィジェットとして扱えるようにしたコンテナ・ウィジェットであることを特徴とする請求項5に記載のウェブ・コンテンツ生成システム。
- 前記コンテナ・ウィジェットは、複数のウィジェットが1つの繰り返しパターンを形成し、コンテナ・ウィジェットの縦横サイズと、繰り返しパターンの縦横サイズを、それぞれ保持し、一定の規則に従って繰り返しパターンを複数回、複製表示することを特徴とする請求項16に記載のウェブ・コンテンツ生成システム。
- 前記コンテナ・ウィジェットに含まれるウィジェットは、それぞれテキスト属性を有し、そのテキスト属性の文字列中にプレースホルダー文字列を記述でき、前記画面描画ライブラリに繰り返し回数分の連想配列の配列を渡すことで、 プレースホルダー文字列に対し繰り返しパターン毎にそれぞれ異なる文字列を動的に割り当てることを特徴とする請求項17に記載のウェブ・コンテンツ生成システム。
- 前記コンテナ・ウィジェットは、繰り返しパターンを横方向に並べて表示し、繰り返しパターンの横幅の合計がコンテナ・ウィジェットの横幅を超える場合に次の行に改行することを特徴とする請求項17に記載のウェブ・コンテンツ生成システム。
- 前記コンテナ・ウィジェットは、繰り返しパターンを縦方向に並べて表示することを特徴とする請求項17に記載のウェブ・コンテンツ生成システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014011916A JP2015138541A (ja) | 2014-01-26 | 2014-01-26 | ウェブ・コンテンツ生成システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014011916A JP2015138541A (ja) | 2014-01-26 | 2014-01-26 | ウェブ・コンテンツ生成システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015138541A true JP2015138541A (ja) | 2015-07-30 |
Family
ID=53769454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014011916A Pending JP2015138541A (ja) | 2014-01-26 | 2014-01-26 | ウェブ・コンテンツ生成システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2015138541A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018005344A (ja) * | 2016-06-28 | 2018-01-11 | 日本電信電話株式会社 | 機能拡張システム、機能拡張方法および機能拡張プログラム |
JP2018060340A (ja) * | 2016-10-05 | 2018-04-12 | 株式会社イプラ | プライスボード作成サービス提供サーバー |
KR20190037598A (ko) * | 2017-09-29 | 2019-04-08 | 이정민 | 풀 사이즈 웹 페이지 출력을 위한 콘텐츠 크기 제어 방법, 이를 이용한 장치 및 컴퓨터-판독가능 매체 |
JP2019061611A (ja) * | 2017-09-28 | 2019-04-18 | 京セラドキュメントソリューションズ株式会社 | 情報処理システム、画像形成装置、および情報処理方法 |
CN116893772A (zh) * | 2023-09-11 | 2023-10-17 | 中移(苏州)软件技术有限公司 | 一种组件控制方法、装置、电子设备及存储介质 |
-
2014
- 2014-01-26 JP JP2014011916A patent/JP2015138541A/ja active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018005344A (ja) * | 2016-06-28 | 2018-01-11 | 日本電信電話株式会社 | 機能拡張システム、機能拡張方法および機能拡張プログラム |
JP2018060340A (ja) * | 2016-10-05 | 2018-04-12 | 株式会社イプラ | プライスボード作成サービス提供サーバー |
JP2019061611A (ja) * | 2017-09-28 | 2019-04-18 | 京セラドキュメントソリューションズ株式会社 | 情報処理システム、画像形成装置、および情報処理方法 |
KR20190037598A (ko) * | 2017-09-29 | 2019-04-08 | 이정민 | 풀 사이즈 웹 페이지 출력을 위한 콘텐츠 크기 제어 방법, 이를 이용한 장치 및 컴퓨터-판독가능 매체 |
KR101987059B1 (ko) | 2017-09-29 | 2019-06-10 | 이정민 | 풀 사이즈 웹 페이지 출력을 위한 콘텐츠 크기 제어 방법, 이를 이용한 장치 및 컴퓨터-판독가능 매체 |
CN116893772A (zh) * | 2023-09-11 | 2023-10-17 | 中移(苏州)软件技术有限公司 | 一种组件控制方法、装置、电子设备及存储介质 |
CN116893772B (zh) * | 2023-09-11 | 2024-01-26 | 中移(苏州)软件技术有限公司 | 一种组件控制方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7460689B2 (ja) | スプレッドシートに基づくソフトウェアアプリケーション開発 | |
US8788935B1 (en) | Systems and methods for creating or updating an application using website content | |
JP2021028828A6 (ja) | スプレッドシートに基づくソフトウェアアプリケーション開発 | |
US8584009B2 (en) | Automatically propagating changes in document access rights for subordinate document components to superordinate document components | |
Khalili et al. | The rdfa content editor-from wysiwyg to wysiwym | |
KR101275871B1 (ko) | SaaS 환경에서의 홈페이지 제작 시스템 및 방법, 그 방법을 컴퓨터에서 실행하기 위한 컴퓨터 프로그램이 기록된, 컴퓨터로 판독 가능한 기록 매체 | |
JPWO2006121051A1 (ja) | 文書処理装置および文書処理方法 | |
Chadwick et al. | Programming ASP. NET MVC 4: Developing Real-World Web Applications with ASP. NET MVC | |
CN104252521A (zh) | 使用预定项目模板的Web内容管理的方法和系统 | |
US8239754B1 (en) | System and method for annotating data through a document metaphor | |
JP2015138541A (ja) | ウェブ・コンテンツ生成システム | |
US20170031877A1 (en) | Web Page Design System | |
CN102163193A (zh) | 超链接地图信息系统 | |
JP2016162184A (ja) | 情報処理システム、情報処理装置、制御方法、およびコンピュータプログラム | |
JP5474479B2 (ja) | 画像付きドキュメントの表示方法 | |
JPWO2005098658A1 (ja) | 文書処理装置及び文書処理方法 | |
JPWO2005098660A1 (ja) | 文書処理装置及び文書処理方法 | |
JP2008003944A (ja) | 帳票出力制御装置及び帳票出力制御方法及びコンピュータ読み取り可能なプログラム | |
Macaulay | Introduction to web interaction design: With Html and Css | |
JPWO2006051721A1 (ja) | 文書処理装置及び文書処理方法 | |
WO2010093063A1 (ja) | ホームページ作成装置、およびこれに用いるホームページ作成支援装置とホームページ作成のためのクライアント装置 | |
TW201337605A (zh) | 多用途網路編輯頁面自動轉檔技術 | |
JP2004326626A (ja) | 構造化文書ファイル管理装置および構造化文書ファイル管理方法 | |
US20110320927A1 (en) | Methods and Apparatus Utilizing XooML: Cross (X) Tool Markup Language | |
JP2007183849A (ja) | 文書処理装置 |