(57)【要約】【課題】DOMStorageをデータベースとしてスキーマを定義して活用するための技術を提供する。【解決手段】ユーザ端末装置２は、プログラムデータ構造・文字列データ変換処理手段２３により、データ構造をもったデータを文字列としてDOMStorageに格納できるようになり、データベース言語処理手段２５によりSQLコマンドにより自由にデータ構造を構成し、アクセス可能とすることができ、文字列のみ記述できるDOMStorageに格納されているデータをデータベースのようにSQLを用いて扱うことが可能となる。【選択図】図１
2011022949.tif 000002
【特許請求の範囲】
【請求項１】
文字列のみ記憶するドキュメントオブジェクト型の記憶領域をデータベースとして利用するためのデータ処理装置であって、
Ｗｅｂページを端末画面に表示するための処理を行うＷｅｂブラウザ処理手段と、
前記Ｗｅｂブラウザ処理手段の中で実行され、前記Ｗｅｂページ内において、スクリプト言語で記述されたスクリプトプログラムを実行するスクリプト言語処理手段と、
前記スクリプト言語処理手段の中で実行され、前記スクリプトプログラム内に記述されたプログラムデータをプログラムデータ構造とデータの双方を文字列データとして表現したものに変換する処理を行うプログラムデータ構造・文字列データ変換処理手段と、
前記プログラムデータ構造・文字列データ変換処理手段により変換された文字列データを前記スクリプト言語処理手段の中で実行されるプログラムデータ構造へ変換する文字列データ・プログラムデータ構造変換処理手段とを備えたことを特徴とするデータ処理装置。
【請求項２】
前記スクリプトプログラム内に記述されたプログラムデータ構造をデータベース記述言語により処理を記述した記述を含む前記スクリプトプログラム処理するデータベース処理手段を備えたことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
文字列のみ記憶するドキュメントオブジェクト型の記憶領域をデータベースとして利用するためのデータ処理装置であって、
Ｗｅｂページを端末画面に表示するための処理を行うＷｅｂブラウザ処理ステップと、
前記Ｗｅｂブラウザ処理ステップの中で実行され、前記Ｗｅｂページ内において、スクリプト言語で記述されたスクリプトプログラムを実行するスクリプト言語処理ステップと、
前記スクリプト言語処理ステップの中で実行され、前記スクリプトプログラム内に記述されたプログラムデータをプログラムデータ構造とデータの双方を文字列データとして表現したものに変換する処理を行うプログラムデータ構造・文字列データ変換処理ステップと、
前記プログラムデータ構造・文字列データ変換処理ステップにより変換された文字列データを前記スクリプト言語処理ステップの中で実行されるプログラムデータ構造へ変換する文字列データ・プログラムデータ構造変換処理ステップとを備えたことを特徴とするデータ処理方法。
【請求項４】
文字列のみ記憶するドキュメントオブジェクト型の記憶領域をデータベースとして利用するためのデータ処理装置であって、
Ｗｅｂページを端末画面に表示するための処理を行うＷｅｂブラウザ処理ステップと、
前記Ｗｅｂブラウザ処理ステップの中で実行され、前記Ｗｅｂページ内において、スクリプト言語で記述されたスクリプトプログラムを実行するスクリプト言語処理ステップと、
前記スクリプト言語処理ステップの中で実行され、前記スクリプトプログラム内に記述されたプログラムデータをプログラムデータ構造とデータの双方を文字列データとして表現したものに変換する処理を行うプログラムデータ構造・文字列データ変換処理ステップと、
前記プログラムデータ構造・文字列データ変換処理ステップにより変換された文字列データを前記スクリプト言語処理ステップの中で実行されるプログラムデータ構造へ変換する文字列データ・プログラムデータ構造変換処理ステップとを備えたことを特徴とするデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｗｅｂブラウザが保有するドキュメントオブジェクト形式の記憶領域に記憶されたデータをデータベース記述言語（SQL）でアクセスする装置に関する。
【背景技術】
【０００２】
Ｗｅｂサービスの普及に伴い、ユーザのＷｅｂページ閲覧等に関する情報を保存しておき、様々なＷｅｂ上のサービスに利用するニーズが高まってきている。この保存機能は、Ｗｅｂブラウザの機能として提供されており、Cookieが一般的に利用されている。しかしCookieは数キロバイト(KB)のデータしか保存できず、より高度なサービスを実現するためには、容量が不足してきている。
一方、新しいHTMLの仕様として、DOMStorageという領域に保存する方法も提案され、このDOMStorageは数メガバイト(MB)の容量でデータを保存しておくことが可能となる。
【０００３】
この大容量の記憶域であるDOMStorageを活用することにより、ユーザ毎の情報を活用した様々なサービス展開が可能となる。
【０００４】
従来、データベースをXMLなどのドキュメント記述言語で扱う手法は提案されているが（たとえば、特許文献１参照）、その逆のXML、HTMLなどのドキュメント記述言語で記述されたドキュメントを扱うためのDOMStorageなどの文字列データをSQLなどのデータベース記述言語で扱う手法は提案されていなかった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２００４−５１９７５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、このDOMStorageなどの文字列データをSQLなどのデータベース記述言語で扱うためには、それぞれの文字列をプログラムで扱うことができるデータの情報構造を付加する必要があるため、文字列データごとにプログラム内で定義する処理等が必要となり、プログラムが煩雑になり、容易にデータベース化できないという問題があった。
【０００７】
そこで、本発明では、DOMStorage等の文字列のみで記述されたデータを、容易にSQLなどのデータベース記述言語で扱えるようにし、データベースとしてスキーマを定義して活用するための技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記の課題を解決するため、本発明は以下のように構成されている。
【０００９】
（１）本発明の一様態は、文字列のみ記憶するドキュメントオブジェクト型の記憶領域をデータベースとして利用するためのデータ処理装置であって、
Ｗｅｂページを端末画面に表示するための処理を行うＷｅｂブラウザ処理手段と、
前記Ｗｅｂブラウザ処理手段の中で実行され、前記Ｗｅｂページ内において、スクリプト言語で記述されたスクリプトプログラムを実行するスクリプト言語処理手段と、
前記スクリプト言語処理手段の中で実行され、前記スクリプトプログラム内に記述されたプログラムデータをプログラムデータ構造とデータの双方を文字列データして表現したものに変換する処理を行うプログラムデータ構造・文字列データ変換処理手段と、
前記プログラムデータ構造・文字列データ変換処理手段により変換された文字列データを前記スクリプト言語処理手段の中で実行されるプログラムデータ構造へ変換する文字列データ・プログラムデータ構造変換処理手段とを備えたことを特徴とする。
【００１０】
このようなデータ処理装置によれば、Ｗｅｂブラウザが保持するドキュメントオブジェクト型の記憶領域に格納されているデータをSQL言語のスキーマ構造を持った形式で処理することが可能となり、データ管理が容易になる。
【００１１】
（２）本発明の他の様態は、前記スクリプトプログラム内に記述されたプログラムデータ構造をデータベース記述言語により処理を記述した記述を含む前記スクリプトプログラム処理するデータベース処理手段を備えたことを特徴とする（１）に記載のデータ処理装置であることを特徴とする。
【００１２】
（３）文字列のみ記憶するドキュメントオブジェクト型の記憶領域をデータベースとして利用するためのデータ処理装置であって、
Ｗｅｂページを端末画面に表示するための処理を行うＷｅｂブラウザ処理ステップと、
前記Ｗｅｂブラウザ処理ステップの中で実行され、前記Ｗｅｂページ内において、スクリプト言語で記述されたスクリプトプログラムを実行するスクリプト言語処理ステップと、
前記スクリプト言語処理ステップの中で実行され、前記スクリプトプログラム内に記述されたプログラムデータをプログラムデータ構造とデータの双方を文字列データして表現したものに変換する処理を行うプログラムデータ構造・文字列データ変換処理ステップと、
前記プログラムデータ構造・文字列データ変換処理ステップにより変換された文字列データを前記スクリプト言語処理ステップの中で実行されるプログラムデータ構造へ変換する文字列データ・プログラムデータ構造変換処理ステップとを備えたことを特徴とするデータ処理方法。
【００１３】
（４）文字列のみ記憶するドキュメントオブジェクト型の記憶領域をデータベースとして利用するためのデータ処理装置であって、
Ｗｅｂページを端末画面に表示するための処理を行うＷｅｂブラウザ処理ステップと、
前記Ｗｅｂブラウザ処理ステップの中で実行され、前記Ｗｅｂページ内において、スクリプト言語で記述されたスクリプトプログラムを実行するスクリプト言語処理ステップと、
前記スクリプト言語処理ステップの中で実行され、前記スクリプトプログラム内に記述されたプログラムデータをプログラムデータ構造とデータの双方を文字列データして表現したものに変換する処理を行うプログラムデータ構造・文字列データ変換処理ステップと、
前記プログラムデータ構造・文字列データ変換処理ステップにより変換された文字列データを前記スクリプト言語処理ステップの中で実行されるプログラムデータ構造へ変換する文字列データ・プログラムデータ構造変換処理ステップとを備えたことを特徴とするデータ処理プログラム。
【発明の効果】
【００１４】
本発明のドキュメントオブジェクト・スキーマ定義間データ処理装置によれば、文字列のみ格納できるDOMStorageにおいて、データベースの記述言語であるSQLコマンドにより事由にデータ構造を構成し、アクセス可能とすることができ、ツリー構造のみ記述できるDOMStorageに格納されているデータをデータベースのようにSQLを用いて扱うことが可能となり、Ｗｅｂシステムのプログラミングを容易にすることが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態にかかるドキュメントオブジェクト・スキーマ定義間データ処理装置の構成例を示す図である。
【図２】作成されるデータベース例を示す図である。
【図３】JSONの記述例を示す図である。
【図４】作成されるデータベース例を示す図である。
【図５】本発明の特徴を概念的に表した構成を示す図である。
【図６】本実施形態の処理例を示すフローチャートを示す図である。
【発明を実施するための形態】
【００１６】
次に、本発明を実施するための形態（「実施形態」と呼ぶ）について、図に沿って説明する。なお、背景技術や課題などで既に述べた内容と共通の前提事項については適宜省略する。
【００１７】
［全体構成］
図１は、本発明の一実施形態にかかるシステムの構成例を示す。
【００１８】
ユーザ端末装置２は、ユーザ端末のＷｅｂブラウザ上でのアプリケーションとして構成され、インターネット等のネットワーク１を介して、複数のＷｅｂアプリケーションサーバ３と接続されている。
【００１９】
ユーザ端末装置２は、制御部を構成するCPU（Central  Processing  Unit）や、記憶部を構成するROM（Read  Only  Memory）やRAM（Random  Access  Memory）、通信部を構成する通信I/F（インターフェイス）等のハードウェア資源上で実行されるコンピュータプログラムによって実現される。
【００２０】
このユーザ端末装置２は、Ｗｅｂブラウザ処理手段２１、スクリプト言語処理手段２２、プログラムデータ構造・文字列データ変換処理手段２３、文字列データ・プログラムデータ構造変換処理手段２４、データベース言語処理手段２５、記憶手段２６、ブラウザ記憶領域５１により構成される。
【００２１】
Ｗｅｂブラウザ処理手段２１は、インターネットの標準プロトコルであるＨＴＴＰ（Hyper  Text  Transfer  Protocol）等に従い、HTML（Hyper  Text  Markup  Language）等の言語で記述されたページデータの要求、取得、表示およびフォームデータの送信等を行う機能を備えインターネットエクスプローラやモジラファイアフォックス（登録商標）といったＷｅｂブラウザソフトにより実現される。
【００２２】
スクリプト言語処理手段２２は、上記Ｗｅｂブラウザ処理手段２１が提供する機能の１つであり、HTML内に記述されたスクリプト言語（JavaScript等）を処理する。
【００２３】
プログラムデータ構造・文字列データ変換処理手段２３はJavaScriptのようなプログラム言語で記述されたデータの構造情報をもったデータを、構造情報をもたず文字列データのみで記述されたデータに変換する処理を行う。この変換された文字列データは、例えば、JSON（JavaScript  Object  Notation）形式等で表現されたものである。
【００２４】
文字列データ・プログラムデータ構造変換処理手段２４は、上記プログラムデータ構造・文字列データ変換処理手段２３と反対の変換処理を行うものであり、文字列データのみで記述されたデータをプログラム言語で記述されたデータの構造情報をもったデータに変換する処理を行う。
【００２５】
データベース言語処理手段２５は、データベースの定義、操作、および制御機能を記述するための言語、例えばSQL（Structured  Query  Language）等を処理する。
【００２６】
記憶手段２６はプログラム言語の命令により処理されるものであり、ブラウザ記憶領域５１に上記プログラムデータ構造・文字列データ変換処理手段２３により変換された文字列データを記憶する。この記憶手段２６は、例えばJavaScriptによって記述される。詳細については、後述する。
【００２７】
一方、アプリケーションサーバ３は、ユーザ端末装置２にHTMLで記述されたページやJavaScriptで記述されたプログラムを送信したり、ユーザ端末装置２からインターネット１を介してドキュメントデータを受信したりする。
【００２８】
アプリケーションサーバ３は、コンテンツ送信手段３１、文字列データ受信手段３２、文字列データ・プログラムデータ構造変換処理手段３３、データベース言語処理手段３４、データベース５２とを備える。
【００２９】
アプリケーションサーバ３は、制御部、記憶部等を備えたコンピュータ（単一あるいは複数）により構成される。具体的には、制御部を構成するCPU、記憶部を構成するROMやRAMやHDD（Hard  Disc  Drive）、通信部を構成する通信I/F（インターフェイス）、表示部を構成するディスプレイ装置、入力部を構成するキーボードやマウス等の入力装置などのハードウェア資源から構成される。
【００３０】
アプリケーションサーバ３が備える各手段は、前述したコンピュータの制御部や記憶部等のハードウェア資源上で実行されるコンピュータプログラムによって実現されるものである。なお、これらの手段は、単一のコンピュータ上に配置される必要はなく、必要に応じて分散される形態であってもよい。
【００３１】
また、アプリケーションサーバ３が参照するデータベース５２が設けられているが、これらのデータベースは、各データベースを保持するコンピュータ内のHDD等の記憶媒体上に所定のデータを体系的に保持するものである。
【００３２】
コンテンツ送信手段３１は、ユーザ端末装置２に対して、HTMLで記述されたドキュメントファイルを送信する。このHTMLは、JavaScriptのようなスクリプト言語で記述されたプログラムを含む。
【００３３】
文字列データ受信手段３２は、ユーザ端末装置２において、プログラムデータ構造・文字列データ変換処理手段２３により文字列に変換されたデータを受信する処理を行う。
【００３４】
文字列データ・プログラムデータ構造変換処理手段３３は、文字列データ受信手段３２で受信した文字列データを、サーバ内で起動するプログラムで利用できるプログラムデータ構造情報を含む形式に変換する処理を行う。
【００３５】
データベース言語処理手段３４は、文字列データ・プログラムデータ構造を変換処理手段３３で変換されたデータをデータベース５２に格納する処理を行う。
【００３６】
［動作］
次に図６のフローに基づき、さらに詳細なプログラムレベルでの処理手順を示しながら、動作の概要を述べる。
【００３７】
最初に本発明の実行環境となるＷｅｂブラウザを起動し（Ｓ１０１）、スクリプト言語処理（Ｓ１０２）を実行させる。このときのスクリプト言語処理が以下の記述となる。
【００３８】
（１）DOMStorage上にデータベースとして利用する記憶領域を定義する。JavaScriptでの記述は下記のようになる。
var  LS  =  window.localStorage||window.globalStorage[location.hostname];
これは、Ｓ１０４のブラウザデータ記憶処理において利用する記憶領域を確保するための定義部分となる記述である。
上記ローカルストレージ領域は、ドメイン毎にアクセス制限がかけられるので、http://www.aaaaa.comは、http://www.bbbbb.comのローカルストレージ領域にアクセス出来ない。ドメインがDBのスキーマの働きをする事になる。
このDOMStorageは、例えば下記のプロパティ（属性）やメソッド（操作処理）を持つ。
(a)clearメソッド
DOMStorageからすべてのキーと値のペアを削除する。
(b)constructorプロパティ
オブジェクトのコンストラクターを指す参照を返す。
(c)getItemメソッド
DOMStorageキーに関連付けられた現在値を取得する。
(d)keyメソッド
コレクションから、指定されたインデックスのキーを取得する。
(e)lengthプロパティ
キーと値一覧の長さを取得する。
(f)remainingSpaceプロパティ
記憶域オブジェクトに使用する、残りのメモリスペースをバイトで返す。
(g)removeItemメソッド
DOMStorageコレクションからキーと値のペアを削除する。
(h)setItemメソッド
キーと値のペアを設定する。
【００３９】
（２）テーブルの定義
（１）で用意したドメインごとに用意されるローカルストレージ領域に対して、
LS.テーブル名={};
として、テーブル領域を作成する。（LS.user、LS.ob_info等、複数のテーブルを作成可能）。
【００４０】
また、この作成した領域に格納するデータは下記のようにJavaScriptで記述する。
var  データ  =  {
カラム名１  :  [データ１-１,データ１-２,データ１-３,・・・・・],
カラム名２  :  [データ２-１,データ２-２,データ２-３,・・・・・],
カラム名３  :  [データ３-１,データ３-２,データ３-３,・・・・・]
};
【００４１】
ここで、データ１−１やデータ１−２等のデータ部分以外の部分、例えば、「カラム名１」や「カラム名２」等の記述がプログラムデータ構造の記述部分である。
【００４２】
このデータ記述形式は、JSON形式と呼ばれるものであり、JavaScriptから派生した、データ交換を行うためのデータ記述形式の一種である。2006年7月にRFC  4627として策定された。JSONはＷｅｂアプリケーションの記述のために適したデータ交換形式であるとされ、特にAjaxなどでの活用が注目されている。
【００４３】
このJSON形式でのデータの記述例を図３に示す。これは、図４に示すような住所録のデータベースをJSON形式として記述したものである。
【００４４】
ここで、「：」の後ろに記述されているデータ「佐藤」や「六本木１２３」等以外の部分、例えば、「住所」や「郵便番号」等の記述がプログラムデータ構造の記述部分である。
【００４５】
（３）データの保存
ブラウザを閉じた後もデータをローカルに記憶しておくが、ローカルストレージ領域は文字列しか格納できない為、（２）までで作成したDB構造のデータを文字列として記憶する必要があり、文字列化された状態のJSON形式で格納することが必要となる。
【００４６】
しかし、JSONオブジェクトとして定義したデータを文字列化してしまうと、データの構造情報が失われてしまうが、以下の手順で復元が可能となる。
【００４７】
JavaScriptでの記述は下記のようになる。
LS.テーブル名  =  uneval(データ);
ここで「uneval」はJavaScriptの持つ関数であり、JavaScriptの構文を文字列として返す関数である。このようにすることで、図２のようなテーブル構造を作成する事が出来る。この記述で実行されるuneval関数の処理がＳ１０３の処理に対応し、そのデータをLS.テーブル名に代入する処理がＳ１０４に対応する。
【００４８】
上記のようにする事で、文字列化したJSONデータを格納する。これを再度取出し構造情報を復元する為に、
テーブル格納データ  =  eval(LS.テーブル名.value);
とする。ここで「eval」はJavaScriptの持つ関数であり、文字列をJavaScriptの構文として返す関数である。このeval関数の処理がＳ１０５、Ｓ２０３に対応する。
【００４９】
（４）SQL
さらに一旦DOMStorageとして格納されたデータをデータベースとしてアクセスできるようにするために、下記の処理を行う。
【００５０】
DBを扱う為に、一般的にSQLが用いられるが、ローカルストレージに対しても同様にSQLを独自実装する事で、DBと変わらない扱いが可能となる。以下ではSELECTに関して具体例を挙げる。
【００５１】
入力されたSQLというSQLに対して、SELECTの判別を行う。JavaScriptでの記述は下記のようになる。
var  res  =  SQL.match(/^select\s(.*)/i);
,tkn  =  res[1].match(/^(.+?)\sfROM\s(.+?)(\s(.*))?$/i);
ここで、下記の文字は正規表現であり、それぞれ下記の条件を満たす文字にマッチングする。
「/」は正規表現の開始を示す。
「^」は行の最初にマッチする。
「\s」は空白文字。
「*」は直前の表現が０個以上あることを示す。
「+」は前の表現が1個以上あることを示す。
「?」は直前の表現が0個か1個あることを示す。
「.」は任意の文字にマッチする。
「$」は文字列の最後にマッチする。
「/」は正規表現の終わりを示す。
「/」の後の「i」は大文字小文字を区別しないこと示す。
【００５２】
上記のマッチによりSELECTであることを判別し、tkn[1]が取得カラム名、tkn[2]が取得対象テーブル名、tkn[4]が取得条件として確認出来る。ここで、「SELECT」とは、SQL言語の中の１つの処理で、データベースの中に格納されているデータを取り出す処理を示す。
【００５３】
例えば最も簡単な以下のSQL
selectカラム名１fROMテーブル名;
を処理すると。
tkn[1]  =  カラム名１
tkn[2]  =  テーブル名
となる。実際にテーブルからデータを取得するには、
//  対象テーブルデータ取得
var  trgt_table  =  eval(LS.テーブル名.value);
//  カラムのデータを取得(※取得カラムが1つの場合)
var  data  =  trgt_table[カラム名１];
上記のようにアクセス、取得を行う。他のSQLに関しても、データへのアクセス方法は基本的に同様の流れを追う。上記ＳＱＬの処理がＳ１０６、Ｓ２０４に対応する。
【００５４】
［概念構成］
図５に上記記述の本発明の特徴を表す概念図を示す。
【００５５】
本発明の変換処理部７は上記eval関数７３、uneval関数７２によりJSONデータ７１をそれぞれ、プログラムデータ６として利用できる形式にし、SQL文６１に引き渡す処理と、文字列データとして、DOMStorage領域８に保存する処理を表している。
【００５６】
［効果］
本発明のドキュメントオブジェクト・スキーマ定義間データ処理装置によれば、文字列のみ格納できるDOMStorageにおいて、データベースの記述言語であるSQLコマンドにより事由にデータ構造を構成し、アクセス可能とすることができ、ツリー構造のみ記述できるDOMStorageに格納されているデータをデータベースのようにSQLを用いて扱うことが可能となり、Ｗｅｂシステムのプログラミングを容易にすることが可能となる。
【００５７】
［他の実施形態］
なお、上記実施形態はJavaScriptやＳＱＬなど、特定のプログラミング言語で、例示したが、その他のプログラミング言語においても同様の処理を実現することは可能であり、本発明は、他の実施態様も含むものである。また、本発明において、各手段などの要素は、コンピュータの演算制御部に限らず、ワイヤードロジック等に基づく電子回路で実現してもよい。また、各構成図、データの図、フローチャートの図などは例示に過ぎず、各要素の有無、その順序や具体的内容などは、本発明の範囲で適宜変更可能である。
【００５８】
また、本発明の実施形態に記述された効果は、本発明の実施形態から生じる好適な効果を列挙したものであって、本発明による効果は、本発明の実施形態に記述されたものに限定されるものではない。
【符号の説明】
【００５９】
１    インターネット
２    ユーザ端末装置
３    アプリケーションサーバ
６    プログラムデータ
７    変換処理部
８    DOMStorage領域
２１  Ｗｅｂブラウザ処理手段
２２  スクリプト言語処理手段
２３  プログラムデータ構造・文字列データ変換処理手段
２４  文字列データ・プログラムデータ構造変換処理手段
２５  データベース言語処理手段
２６  記憶手段
３１  コンテンツ送信手段
３２  文字列データ受信手段
３３  文字列データ・プログラムデータ構造変換処理手段
３４  データベース言語処理手段
５１  ブラウザ記憶領域
５２  データベース
６１  SQL文
７１  JSONデータ
７２  uneval関数
７３  eval関数
【図１】
2011022949.tif 000003
【図２】
2011022949.tif 000004
【図３】
2011022949.tif 000005
【図４】
2011022949.tif 000006
【図５】
2011022949.tif 000007
【図６】
2011022949.tif 000008