以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。なお、図面において、同一または類似の部分には同一の参照番号を付して、重複する説明を省く場合がある。
図1は、データベースシステム100の一例を概略的に示す。本実施形態において、データベースシステム100は、データ管理装置102と、入出力装置104とを備える。データ管理装置102は、データ格納部110と、データ処理部120と、UI作成部130とを備える。入出力装置104は、キー名称入力部140と、出力部150と、バリュー入力部160とを備える。
データ管理装置102及びUI作成部130は、情報処理装置の一例であってよい。なお、本実施形態においては、UI作成部130が、データベースの入力処理若しくは更新処理、又は、照会若しくは検索処理に用いられるユーザインターフェース(UIと称する場合がある。)用の画面を作成する場合を例として、情報処理装置について説明する。しかしながら、情報処理装置は、本実施形態に限定されない。他の実施形態において、情報処理装置は、複数の文字列が入力されると、当該複数の文字列に含まれる複数の単語の一部を表形式に変換して出力する。
本実施形態において、データベースシステム100は、情報を管理する。例えば、本実施形態によれば、データ管理装置102が、ユーザにより入力された情報を格納する。データ管理装置102は、ユーザからの検索要求に応じて、当該要求に合致する情報を出力してもよい。また、本実施形態によれば、入出力装置104が、UIを介して、ユーザに情報を提示したり、ユーザからの入力を受け付けたりする。UI画面は、データベースシステム100がユーザに単に情報を提示するための画面であってもよく、ユーザがデータベースシステム100を操作したり、情報を入力したりするための画面であってもよい。UI画面は、ディスプレイ上に表示されてもよく、プロジェクタにより投影面に投影されてもよい。
データベースシステム100及びデータベースシステム100の各部は、ハードウェアにより実現されてもよく、ソフトウエアにより実現されてもよく、ハードウェア及びソフトウエアにより実現されてもよい。データベースシステム100及びデータベースシステム100の各部は、単一のサーバによって実現されてもよく、複数のサーバによって実現されてもよい。データベースシステム100の少なくとも一部は、仮想サーバ又はクラウドシステムにより実現されてよい。また、データベースシステム100の少なくとも一部の機能が、外部のアプリケーションインターフェースサービスにより代替されてもよい。
データベースシステム100及びデータベースシステム100の各部は、一般的な構成の情報処理装置において、データベースシステム100の各部の動作を規定したソフトウエア又はプログラムを起動することにより実現されてよい。上記の情報処理装置は、CPU等のプロセッサ、ROM、RAM、通信インターフェースなどを有するデータ処理装置と、キーボード、タッチパネル、マイクなどの入力装置と、表示装置、スピーカなどの出力装置と、メモリ、HDDなどの記憶装置とを備えてよい。上記の情報処理装置は、仮想サーバ又はクラウドシステムであってもよい。上記の情報処理装置において、データ処理装置又は記憶装置は、上記のソフトウエア又はプログラムを記憶してよい。上記のソフトウエア又はプログラムは、プロセッサによって実行されることにより、上記の情報処理装置に、当該ソフトウエア又はプログラムによって規定された動作を実行させる。上記のソフトウエア又はプログラムは、非一時的コンピュータ可読記憶媒体に格納されてもよい。
データ格納部110は、データベースを構成する1以上のデータ又はデータファイルを格納する。1以上のデータ又はデータファイルのそれぞれは、任意の型(データベースモデルと称される場合がある。)のデータベースを構成する。1以上のデータ又はデータファイルのそれぞれは、リレーショナルデータベースを構成してもよく、Key−Value型データベース(キーバリューストア、キーバリュー型データストアなどと称される場合がある。)を構成してもよい。データ格納部110、又は、データ格納部110に格納される1以上のデータ又はデータファイルのそれぞれは、データベースの一例であってよい。
上記のデータにおいて、各キーは、複数の識別記号を有してよい。例えば、各キーに対して、データ管理装置102の内部において各キーを一意に識別するための内部IDと、ユーザなどが各キーを識別するための名称とが付与される。各キーに対して、複数の名称が付与されてもよい。例えば、一実施形態において、各キーに対して、日本語の名称と、英語の名称とが付与される。他の実施形態において、各キーに対して、特定の部署における名称又は略称と、他の部署における名称又は略称とが付与される。なお、内部IDも、キー名称の一例であってよい。
データ処理部120は、各種のデータ処理を実行する。データ処理部120は、データベースシステム100を制御してもよい。例えば、データ処理部120は、データ格納部110へのアクセスを管理する。データ処理部120は、ユーザインターフェースを介したデータ格納部110へのアクセスを管理してよい。
一実施形態において、データ処理部120は、ユーザからの要求(ユーザ要求と称する場合がある。)を受信して、UI作成部130が作成した1以上のUI画面の中から、ユーザ要求に応じたUI画面を選択する。ユーザ要求としては、入力要求、照会要求、検索要求などを例示することができる。データ処理部120は、選択されたUI画面を出力部150に表示させる。データ処理部120は、ユーザがUI画面を介してバリュー入力部160に入力した情報と、複数のキーのそれぞれとを対応付けて、データ格納部110に格納する。
他の実施形態において、データ処理部120は、ユーザからの要求に応じて、データ格納部110を参照して、当該要求に合致するデータを出力部150に表示させる。データ処理部120は、当該要求に合致するデータを出力するためのUI画面を出力部150に表示させるときに、データ格納部110に格納されたデータの一部を、UI画面上の対応する位置に表示させてもよい。
UI作成部130は、UI画面を作成する。UI画面としては、入力画面、照会画面、検索画面などを例示することができる。本実施形態において、UI作成部130は、複数の文字列を解析して、各文字列を構成する要素間の関係を決定する。UI作成部130は、各文字列を構成する複数の要素のうち、一部の要素(代表要素と称する場合がある。)の間の関係を決定してもよい。キー名称は、文字列の一例であってよい。キー名称に含まれる単語は、要素又は代表要素の一例であってよい。例えば、「LAN01_IPアドレス」という文字列に含まれる「LAN」、「01」又は「IPアドレス」という単語は、当該文字列の要素である。
「文字列」は、ひらがな、カタカナ、漢字、アルファベット、キリル文字、アラビア文字、ギリシア文字などの「文字」だけでなく、「数字」、「記号」、「特殊文字」を含んでよい。「特殊文字」としては、改行、タブ、ヌル文字、制御記号などを例示することができる。「文字列」は、単一の文字、数字、記号又は特殊文字であってもよい。「代表要素」は、(i)名詞、動詞などの単語、(ii)当該単語の一部、(iii)当該単語と予め定められた文字列との結合、並びに、(iv)当該単語の修飾句及び(v)当該修飾句と当該単語との結合から選択される少なくとも1つであってよい。名詞は、数詞、助数詞、序数詞、動名詞などを含んでよい。
本実施形態において、UI作成部130は、複数のキー名称を構成する単語同士の関係に基づいて、UI画面を作成する。例えば、UI作成部130は、キー名称を構成する単語同士の関係に基づいて、各キーのバリューを入力するための入力欄を作成する。また、UI作成部130は、キー名称を構成する単語間の関係に基づいて、UI画面の構成要素のレイアウトを決定する。
一実施形態において、UI作成部130は、ツリー構造を構成する複数のノードのそれぞれと、複数の代表要素のそれぞれとの対応関係を決定することで、各文字列を構成する要素間の関係を決定する。例えば、UI作成部130は、「代表要素A、代表要素B1及び代表要素C1を含む文字列X1」と、「代表要素A、代表要素B1及び代表要素C2を含む文字列X2」と、「代表要素A、代表要素B2及び代表要素C1を含む文字列X3」と、「代表要素A、代表要素B2及び代表要素C2を含む文字列X4」とを解析して、ツリー構造の第1階層のノード(根ノードと称される場合がある。)と、「代表要素A」とを対応付ける。
また、UI作成部130は、ツリー構造の第2階層のノードのそれぞれと、「代表要素B1」及び「代表要素B2」のそれぞれとを対応づける。さらに、ツリー構造の第3階層のノードのうち、「代表要素B1」に対応付けられるノードの下位ノードのそれぞれと、「代表要素C1」及び「代表要素C2」とを対応付ける。同様に、ツリー構造の第3階層のノードのうち、「代表要素B2」に対応付けられるノードの下位ノードのそれぞれと、「代表要素C1」及び「代表要素C2」とを対応付ける。本実施形態における第3階層のノードは、葉ノードと称される場合がある。
UI作成部130は、複数の代表要素間の関係を示すツリー構造に関する情報を利用して、表形式の入出力UIを作成する。UI作成部130は、一部のキーについて、表形式の入出力UIを作成してよい。この場合、他のキーについては、単に、各キーに対応する入力欄が設けられてよい。
上記の入出力UIの表は、ツリー構造を構成する複数の葉ノードのそれぞれに対応する複数の行又は列を有してよい。UI画面において、表形式の入出力UIに対応する葉ノードの上位の根ルートが、当該入出力UIのタイトル又はラベルとして表示されてもよい。例えば、入出力UIは、複数の葉ノードのそれぞれに対応する複数の列(フィールドと称する場合がある。)を有する。なお、入出力UIのフィールド数は特に限定されるものではない。フィールド数は1つであってもよく、複数であってもよい。
一実施形態において、UI作成部130は、複数の文字列の集合を一度に解析して、当該解析により得られたツリー構造に関する情報を利用して、1以上の表形式の入出力UIを作成する。UI作成部130は、解析対象の文字列がなくなるまで、上記の処理を繰り返してもよい。上記の処理方式は、DOM方式と称される場合がある。
他の実施形態において、UI作成部130は、UI作成部130は、複数の文字列を順番に解析して、その都度、解析結果を反映しながら、1以上の表形式の入出力UIを作成する。この場合、UI作成部130は、複数の代表要素間の関係を示すツリー構造に関する情報を決定しなくてもよい。上記の処理方式は、SAX方式と称される場合がある。
さらに他の実施形態において、UI作成部130は、DOM方式及びSAX方式の任意の組み合わせにより、表形式の入出力UIを作成する。例えば、50個の文字列を解析して、UI画面を作成する場合において、UI作成部130は、第1番目から第20番目までの文字列をDOM方式で解析して、1以上の表形式の入出力UIを作成する。また、表形式の入出力UIに含まれない文字列を、表形式の入出力UIの外部に配置する。その後、第21番目から第50番目までの文字列をSAX方式で解析して、既成の表形式の入出力UIを更新したり、新たな表形式の入出力UIを作成したり、表形式の入出力UIに含まれない文字列を、表形式の入出力UIの外部に配置したりする。
キー名称入力部140は、ユーザから、key−Value型データを構成するキーの名称を取得する。キー名称入力部140は、ユーザから、キー名称の入力を受け付けてもよく、ユーザから、キー名称が記憶されたデータファイルを読み込むことを示す指示を受け付けてもよい。キー名称が記憶されたデータファイルは、データ格納部110に格納されたデータファイルであってもよい。出力部150は、各種の情報を出力する。例えば、出力部150は、UI作成部130が作成したUI画面を出力する。バリュー入力部160は、ユーザから、key−Value型データを構成するバリューを取得する。
キー名称入力部140及びバリュー入力部160としては、キーボード、ポインティングデバイス、タッチパネル、タッチパネルディスプレイ、音声入力装置、ジェスチャー入力装置などを例示することができる。出力部150としては、ディスプレイ、プロジェクタなどの表示装置、プリンタなどの印刷装置、スピーカなどの音声出力装置などを例示することができる。
図2は、データ管理装置102におけるデータの入力処理の一例を概略的に示す。本実施形態において、データ管理装置102は、複数のキー名称12を含むユーザ入力10に基づいて、入力画面20を作成する。入力画面20は、UI又はUI画面の一例であってよい。また、データ管理装置102は、ユーザが入力したバリュー34と、各キーとが対応付けられた出力データ30を出力する。
一実施形態によれば、データベースシステム100の構築時に、ユーザが、ユーザ入力10をデータベースシステム100に入力する。ユーザ入力10は、ユーザがキー名称入力部140に入力した情報であってもよく、データ格納部110に格納されたデータファイルに記録された情報であってもよい。ユーザ入力10は、例えば、テキストデータであってよい。ユーザ入力10は、XML文書などの構造化文書であってもよい。キー名称12は、データ管理装置102が管理するデータ又はデータファイルにおけるキーの名称(キー名称と称する場合がある。)であってよい。複数のキー名称12のそれぞれは、Key−Value型データを構成する複数のキーの名称の一例であってよい。
本実施形態において、入力画面20は、入力欄22と、入力欄22のタイトル24と、表形式の入力欄26と、入力欄26のタイトル28とを含む。入力画面20は、その他の情報を含んでもよい。入力欄22及び入力欄26はデータ格納部110の入出力を管理するための入出力UIの一例であってよい。入力欄26は、表形式の入出力UIの一例であってよい。
本実施形態において、UI作成部130は、キー名称12を構成する単語同士の関係に基づいて、入力欄22及び入力欄26を作成する。例えば、特定のキー名称に、他のキー名称と共通する単語が含まれる又は表形式の入出力UIを作成すべきことを示す記号が含まれる場合、UI作成部130は、入力欄26を作成する。一方、UI作成部130は、特定のキー名称に、他のキー名称と共通する単語が含まれない場合又は表形式の入出力UIを作成すべきではないことを示す記号が含まれる場合、UI作成部130は、入力欄22を作成する。
UI作成部130は、入力欄22、タイトル24、入力欄26及びタイトル28のレイアウトを決定し、入力画面20を作成する。UI作成部130は、キー名称を構成する単語間の関係に基づいて、レイアウトを決定してもよい。例えば、UI作成部130は、複数のキー名称を構成する複数の単語のツリー構造に基づいて、レイアウトを決定する。UI作成部130は、タイトル28を入力欄26の近傍に配置するか、タイトル28を入力欄26の内部に配置するかを決定してもよい。
一実施形態によれば、UI作成部130は、複数の代表要素間の関係を示すツリー構造に関する情報を利用して、表形式の入出力UIを作成する。本実施形態において、UI作成部130は、複数のキー名称を構成する複数の単語のツリー構造に基づいて、表形式の入出力UIを作成する。上記の表は、ツリー構造を構成する複数の葉ノードのそれぞれに対応する複数の行又は列を有してよい。例えば、入力欄26は、代表要素「IPアドレス」及び「LAN ID」に関する2つの葉ノードのそれぞれに対応する2つの列(フィールドと称する場合がある。)を有する。なお、入力欄26のフィールド数は特に限定されるものではない。フィールド数は1つであってもよく、複数であってもよい。
UI作成部130は、上記の葉ノードの上位に位置する根ルートを、上記の表形式の入出力UIのタイトルとして配置してよい。本実施形態においては、代表要素「IPアドレス」及び「LAN ID」の上位に位置する根ノードである代表要素「LAN」が、入力欄26のタイトル28として利用される。
入力画面20を介して、バリュー入力部160に入力された情報は、データ処理部120において、キーと対応付けられる。これにより、複数のキー名称12のそれぞれと、複数のバリュー34のそれぞれとが対応付けられた出力データ30が生成される。一実施形態において、データ処理部120は、出力データ30をUI作成部130に送信する。UI作成部130は、入力欄22及び入力欄26の適切な位置にバリュー34が配置された入力画面20を作成する。UI作成部130は、入力画面20を出力部150に入力画面20を出力させる。他の実施形態において、データ処理部120は、出力データ30をデータ格納部110に格納する。さらに他の実施形態において、データ処理部120は、出力データ30を外部の端末に送信してもよく、外部の記憶媒体に格納してもよい。
本実施形態においては、バリュー入力部160に入力された情報が、データ処理部120において、キーと対応付けられて、出力データ30が生成される場合について説明した。しかしながら、データ処理部120における処理は本実施形態に限定されない。他の実施形態において、データ処理部120は、入力画面20に配された複数の入力欄のそれぞれに入力された情報を、バリュー入力部160を介して取得し、当該情報を、データ格納部110に格納されているデータテーブルの対応するセルに格納する。このとき、入力画面20に配された複数の入力欄の少なくとも一部に、データ格納部110に格納されている情報が表示されてもよい。
入力画面20のレイアウトは特に限定されない。入力画面20のレイアウトとしては、画面上に配される1以上のUIのそれぞれの位置、大きさ、範囲、形状、色彩、模様などを例示することができる。ユーザ又はユーザの属性に応じて異なる入力画面20が用意されていてもよい。1以上の入出力箇所のうち、ユーザ又はユーザの属性に応じた箇所が強調表示されてもよい。また、入力画面20に配された複数の入力欄の少なくとも一部に関する入出力が制限されてもよい。入力画面20における1以上の入出力箇所に対して、ユーザ又はユーザの属性に応じた制限が設定されてもよい。
図3は、データテーブル300の一例を概略的に示す。データテーブル300は、データ格納部110に格納されるリレーショナルデータベースを構成するデータファイルの一例であってよい。データテーブル300は、1以上のレコードを格納する。本実施形態において、データテーブル300は、データテーブル300に格納される各レコードを識別するレコードIDに関するフィールド302と、各レコードを構成する具体的なデータが格納される1以上のフィールドとを対応付けて格納する。
図3に記載された例によれば、データテーブル300は、「サーバ名」に関するフィールド304と、「LAN01_IPアドレス」に関するフィールド306と、「LAN01_LAN ID」に関するフィールド308と、「LAN02_IPアドレス」に関するフィールド310と、「LAN02_LAN ID」に関するフィールド312と、「LAN03_IPアドレス」に関するフィールド314と、「LAN03_LAN ID」に関するフィールド316とを含む。各フィールドの名称は、キー名称の一例であってよい。
図4は、データテーブル400の一例を概略的に示す。データテーブル400は、データ格納部110に格納されるKey−Value型データベースを構成するデータファイルの一例であってよい。データテーブル400は、1以上のレコードを格納する。本実施形態において、データテーブル400は、各キーの内部IDに関するフィールド402と、各キーの第1の名称に関するフィールド404と、各キーの第2の名称に関するフィールド406と、バリューに関するフィールド408とを対応付けて格納する。
図4に記載された例によれば、フィールド404には、「サーバ名」、「LAN01_IPアドレス」、「LAN01_LAN ID」、「LAN02_IPアドレス」、「LAN02_LAN ID」、「LAN03_IPアドレス」、「LAN03_LAN ID」などの日本語のキー名称が格納されている。一方、フィールド406には、「Sever Name」、「LAN01_IP Adress」、「LAN01_LAN ID」、「LAN02_IP Adress」、「LAN02_LAN ID」、「LAN03_IP Adress」、「LAN03_LAN ID」などの英語のキー名称が格納されている。
各キーに対して複数の名称又は識別情報が付与されている場合、一実施形態によれば、UI作成部130は、複数のキー名称のうちの単一のキー名称に基づいて表形式の入出力UIを作成する。これにより、例えば、ユーザの使用する言語又は用語によって、異なる入出力UIを作成することができる。また、ユーザの使用する言語又は用語に依存しない入出力UIを作成することもできる。他の実施形態によれば、複数のキー名称のうちの2以上のキー名称に基づいて、表形式の入出力UIを作成する。例えば、第1のキー名称に基づいて決定したツリー構造と、第2のキー名称に基づいて決定したツリー構造とを比較して、階層のより多いツリー構造を採用する。また、第1のキー名称に基づいて決定したツリー構造と、第2のキー名称に基づいて決定したツリー構造とを比較して、一致する部分のみを採用してもよい。これにより、ツリー構造をより精密に解析することができる。
図5は、UI作成部130の内部構成の一例を概略的に示す。本実施形態において、UI作成部130は、名称取得部510と、構造解析部520と、格納部530と、画面作成部540とを備える。また、構造解析部520は、前処理部522と、分類部524と、名称分割部526と、構造決定部528とを有する。UI作成部130の各部は、互いに情報を送受するように構成されてよい。名称取得部510は、キー名称取得部の一例であってよい。名称分割部526は、キー名称分割部の一例であってよい。構造決定部528は、ツリー構造決定部の一例であってよい。画面作成部540は、表作成部又は画面作成装置の一例であってよい。
名称取得部510は、構造解析部520における構造解析処理の対象となる複数の文字列を取得する。本実施形態において、名称取得部510は、データ格納部110に格納されているデータファイルにおいて使用されている複数のキーの名称を取得する。
構造解析部520は、複数の文字列を解析して、各文字列を構成する要素間の関係を決定する。構造解析部520は、例えば、ツリー構造を構成する複数のノードのそれぞれと、複数の代表要素のそれぞれとの対応関係を決定することで、各文字列を構成する要素間の関係を決定する。
本実施形態において、構造解析部520は、名称取得部510が取得した複数のキー名称のそれぞれを1以上の単語に分割し、複数のキー名称に基づいて、1以上の単語のツリー構造を決定する。構造解析部520は、名称取得部510が取得した複数のキーの全てを、構造解析処理の対象としてもよく、名称取得部510が取得した複数のキーの一部を、構造解析処理の対象としてもよい。構造解析部520は、ツリー構造を構成する複数のノードと、上記の1以上の単語とが、一対一に対応するように、ツリー構造を決定してよい。構造解析部520は、複数のノードのそれぞれの名称を決定してよい。複数のノードの名称は、対応する単語であってもよく、対応する単語の一部を含む文字列であってもよい。
前処理部522は、分類部524、名称分割部526及び構造決定部528の少なくとも1つにおける処理の前処理を実行する。本実施形態において、前処理部522は、名称取得部510が取得した複数のキーの名称を受信し、全てのキーの名称について前処理を実施する。また、前処理部522は、前処理後の文字列を、分類部524に送信する。
前処理としては、(i)処理対象となる複数のキーのそれぞれについて、当該キーの名称に含まれる第1の文字列を、予め定められた第2の文字列に置換する処理、及び、(ii)処理対象となる複数のキーのそれぞれについて、当該キーの名称から、当該キーの名称に含まれる第1の文字列を除去する処理の少なくとも一方を例示することができる。なお、第2の文字列は、第1の文字列とは異なる文字列であってよい。
これにより、入力者、入力部署などが異なることによる表記の変動が、構造解析処理の精度に及ぼす影響を抑制することができる。また、各キー名称の代表要素の抽出が容易になる。例えば、数字などの連続性又は規則性のある文字列を、同一の文字列に置換したり、削除したりすることで、連続性又は規則性のある文字列を含む文字列を、同一の単語として認識することができる。これにより、キー名称の分割が容易になり、その結果、代表要素の抽出が容易になる。
一実施形態において、前処理部522は、削除すべき文字列を定義する情報に基づいて、前処理を実施してよい。削除すべき文字列は、文字列そのもの、及び、文字列の品詞の少なくとも一方により定義されてよい。上記の情報は、例えば、格納部530に格納される。他の実施形態において、前処理部522は、第1の文字列及び第2の文字列の対応関係を定義する情報(辞書情報と称する場合がある。)に基づいて、前処理を実施してよい。辞書情報は、例えば、格納部530に格納される。
辞書情報は、表記方法の変動を統一するための情報を含んでよい。表記方法の変動を統一するための情報としては、音便変化前の文字列と、音便変化後の文字列との対応関係に関する情報、全角の文字列と、半角の文字列との対応関係に関する情報、カタカナの文字列と、ひらがなの文字列との対応関係に関する情報などを例示することができる。表記方法の変動を統一するための情報は、長音、ハイフン、括弧などのように、複数の方法により表される記号を統一するための情報を含んでもよい。
辞書情報は、連続性又は規則性のある文字列を統一するための情報を含んでよい。連続性又は規則性のある文字列を統一するための情報は、置換前の文字列そのもの、及び、当該文字列の品詞の少なくとも一方と、置換後の文字列との対応関係に関する情報であってもよい。一実施形態によれば、1、2、3、01、02、03という文字列のそれぞれと、「?」又は「*」という文字列とが対応づけられる。他の実施形態によれば、数詞という品詞と、「?」又は「*」という文字列とが対応付けられる。
分類部524は、複数のキーの名称に基づいて、複数のキーを1以上のグループに分類する。例えば、分類部524は、同一の文字列を含むキーが同一のグループを構成するように、複数のキーを分類する。一実施形態において、分類部524は、キー名称の語頭に同一の文字列が配されるキーが同一のグループを構成するように、複数のキーを分類する。他の実施形態において、分類部524は、キー名称の語尾に同一の文字列が配されるキーが同一のグループを構成するように、複数のキーを分類する。
分類部524は、複数のキーをソートすることにより、同一の文字列を抽出してもよい。ソートのアルゴリズムとしては、交換ソート、選択ソート、挿入ソート、マージソート、非比較ソート、並行ソート、混成ソートなどの任意のアルゴリズムを利用することができる。任意のアルゴリズムの組み合わせによりソートが実行されてもよい。また、ソートの方向は、キー名称の語頭から語尾に向かう方向(前方と称する場合がある。)であってもよく、キー名称の語尾から語頭に向かう方向(前方と称する場合がある。)であってもよい。ソート結果の並び順は、昇順であってもよく、降順であってもよい。
分類部524は、複数のキーを、構造解析処理の対象となるキーのグループと、構造解析処理の対象とならないキーのグループとに分類してもよい。例えば、分類部524は、複数のキーを、キー名称中に表作成処理の対象となることを示す文字列が含まれるキーのグループと、キー名称中に表作成処理の対象となることを示す文字列が含まれないキーのグループとに分類する。
分類部524は、特定のキーの識別情報(例えば、キー名称である。)が予め定められた条件を満足するか否かによって、当該特定のキーが構造解析処理の対象となるか否かを決定してよい。これにより、上記の特定のキーを表形式の入出力UIに含めるか否かを制御することができる。予め定められた条件としては、キー名称に特定の文字列が含まれるという条件を例示することができる。予め定められた条件は、表形式の入出力UIに含めることを希望する文字列のリストであってもよく、表形式の入出力UIに含めることを希望しない文字列のリストであってもよい。予め定められた条件を定義したファイルが、格納部530に格納されていてもよい。
本実施形態において、分類部524は、前処理部522から、前処理後の複数のキー名称を受信する。分類部524は、受信した複数のキーを、それらのキー名称に基づいて、構造解析処理の対象となるグループと、構造解析処理の対象とならないグループとに分類する。また、分類部524は、構造解析処理の対象となるグループを構成するキーの前処理後の名称を、名称分割部526に送信する。
しかしながら、分類部524は、本実施形態に限定されない。他の実施形態において、分類部524は、名称取得部510が取得した複数のキーの名称を受信し、受信した複数のキーを、構造解析処理の対象となるキーのグループと、構造解析処理の対象とならないキーのグループとに分類する。また、分類部524は、構造解析処理の対象となるキーのグループを構成するキーの名称を、前処理部522に送信する。その後、前処理部522は、受信したキー名称の前処理を実施して、前処理後のキー名称を名称分割部526に送信する。
名称分割部526は、複数のキーのそれぞれを1以上の単語に分割する。本実施形態において、名称分割部526は、前処理部522により第1の文字列が置換又は除去されたキーの名称を、1以上の単語に分割する。名称分割部526は、分割位置に関する情報を構造決定部528に送信する。例えば、名称分割部526は、各キーを識別するキーIDと、各キーに含まれる1以上の単語とが対応付けられた情報を、構造決定部528に送信する。
一実施形態において、名称分割部526は、処理対象となる複数のキーの名称に基づいて、各キーを1以上の単語に分割する。例えば、名称分割部526は、処理対象となる複数のキーの名称のうちの2以上のキーの名称の語頭又は語尾において、当該2以上のキーの名称に共通する共通文字列を抽出する。名称分割部526は、共通文字列を有するキーの名称を、当該共通文字列の位置で分割する。共通文字列の位置は、当該共通文字列の直前であってもよく、当該共通文字列の直後であってもよい。
他の実施形態において、名称分割部526は、処理対象となる複数のキーのそれぞれについて、当該キーの名称が予め定められた文字列(分割記号と称する場合がある。)を含むか否かを判定する。名称分割部526は、キーの名称が分割記号を含む場合、分割記号の位置で当該キーの名称を分割する。分割記号の位置は、当該分割記号の直前であってもよく、当該分割記号の直後であってもよい。分割記号は、数字又は記号であってよい。分割記号は、第3の文字列の一例であってよい。
さらに他の実施形態において、名称分割部526は、処理対象となる複数のキーのそれぞれについて、当該キーが、複数の種類の文字列を含むか否かを判定する。文字列の種類としては、文字、数字、記号、特殊文字などを例示することができる。名称分割部526は、キーの名称が複数の種類の文字列を含む場合、当該文字列の種類が変更する位置で当該キーの名称を分割する。文字列の種類が変更する位置は、当該変更位置の直前であってもよく、当該変更位置の直後であってもよい。
構造決定部528は、複数のキーの名称を構成する複数の単語同士の関係を決定する。本実施形態において、構造決定部528は、複数のキーの名称を構成する複数の単語のツリー構造を決定する。構造決定部528は、名称取得部510が取得した全てのキーの名称に基づいて、ツリー構造を決定してもよく、名称取得部510が取得したキーのうち、一部のキーの名称に基づいて、ツリー構造を決定してもよい。
例えば、構造決定部528は、分類部524により分類されたグループのうち、2以上のキーを含むグループの少なくとも1つを構成するキーの名称に含まれる単語について、ツリー構造を決定する。構造決定部528は、分類部524により構造解析処理の対象となるグループに分類されたキーの名称に含まれる単語について、ツリー構造を決定してよい。構造決定部528は、分類部524によりキー名称中に表作成処理の対象となることを示す文字列を含むキーのグループに分類されたキーの名称に含まれる単語について、ツリー構造を決定してもよい。
構造決定部528は、予め定められた条件に基づいて、キー名称に含まれる特定の単語の階層を決定してよい。予め定められた条件としては、特定の単語と、ツリー構造における階層とを対応付けた条件を例示することができる。これにより、一の単語と、他の単語との階層を一致させることができる。その結果、ユーザは、表形式のUIを意図したとおりに作成することができる。予め定められた条件を定義したファイルが、格納部530に格納されていてもよい。
本実施形態において、構造決定部528は、名称分割部526から、複数のキーの少なくとも一部について、当該キー名称の分割位置に関する情報を取得する。上述のとおり、名称分割部526は、複数のキーのそれぞれの名称に基づいて、各キー名称の分割位置を決定している。構造決定部528は、複数のキーの少なくとも一部について、分割後の文字列に関する情報を取得してもよい。構造決定部528は、名称分割部526から取得した情報に基づいて、各キーの名称を構成する単語を決定する。構造決定部528は、例えば、各キー名称を分割位置で分割して得られた複数の文字列を、各キーの名称を構成する単語として決定する。
一実施形態において、構造決定部528は、複数のキーの少なくとも一部について、語頭に配された単語を根ノードとし、語頭に近い単語ほど上位のノードとなるように、1以上の単語のツリー構造を決定する。他の実施形態において、構造決定部528は、処理対象となる複数のキーの少なくとも一部について、語尾に配された単語を根ノードとし、語尾に近い単語ほど上位のノードとなるように、1以上の単語のツリー構造を決定する。
さらに他の実施形態において、構造決定部528は、処理対象となる複数のキーの少なくとも一部について、当該キーの名称に含まれる文字列の言語の種類、又は、データベースシステム100において主に使用される言語の種類に基づいて、1以上の単語のツリー構造を決定してよい。例えば、上記の言語の種類が日本語又は韓国語である場合、構造決定部528は、語頭に配された単語を根ノードとし、語頭に近い単語ほど上位のノードとなるように、1以上の単語のツリー構造を決定する。一方、上記の言語の種類が英語である場合、構造決定部528は、語尾に配された単語を根ノードとし、語尾に近い単語ほど上位のノードとなるように、1以上の単語のツリー構造を決定する。
構造決定部528は、ツリー構造を構成する1以上のノードのそれぞれの名称を決定してもよい。ノードの名称は、対応する単語であってもよく、対応する単語の一部を含む文字列であってもよい。
格納部530は、UI作成部130により使用される情報を格納する。格納部530は、UI作成部130により作成された情報を格納してもよい。
画面作成部540は、UI画面を作成する。本実施形態において、画面作成部540は、構造決定部528が決定した構造に基づいて画面を作成する。例えば、画面作成部540は、構造決定部528が決定したツリー構造が複数の葉ノードを有する場合に、複数の葉ノードのそれぞれに対応する複数の行又は列を有する表形式の入出力UIを作成する。また、画面作成部540は、入力画面20に配されるUIのレイアウトなどを決定し、入力画面20を作成する。
画面作成部540は、上記の表の適切な位置に、データ格納部110へのアクセスを制御する命令を配置して、入力欄26を作成する。一実施形態によれば、画面作成部540は、表に含まれる複数のセルの少なくとも一部に、当該セルに対するユーザからの入力を受け付けて、データベースに格納するための命令を配置する。他の実施形態によれば、画面作成部540は、表に含まれる複数のセルの少なくとも一部に、データベースを参照して、当該セルに対応するバリューを表示するための命令を配置する。
画面作成部540は、予め定められた条件に基づいて、表における複数のキー名称の順番を決定してよい。予め定められた条件としては、表において、特定の単語を含むキー名称を、他のキー名称よりも上位に表示させることを示す条件であってもよく、表において、特定の単語を含むキー名称を、他のキー名称よりも下位に表示させることを示す条件であってもよい。予め定められた条件を定義したファイルが、格納部530に格納されていてもよい。
画面作成部540は、特定のキーの識別情報(例えば、キー名称である。)及びバリューの少なくとも一方が予め定められた条件を満足する場合、当該バリューをスクランブル表示又はマスク表示することを決定してもよい。例えば、画面作成部540は、特定のセルに対応するバリューの値を表示する代わりに、当該バリューの値とは異なる他の文字列又は記号に置き換えて表示する。予め定められた条件としては、特定のセルに対応するバリューの値が秘密情報又は機密情報である場合を例示することができる。
予め定められた条件としては、キー名称又はバリューに特定の文字列が含まれるという条件を例示することができる。例えば、キー名称に、パスワード又は個人情報に関連する文字列が含まれる場合、又は、バリューに個人情報に関する文字列が含まれる場合である。個人情報に関連する文字列としては、性別、住所、氏名、年齢、職業などを例示することができる。予め定められた条件を定義したファイルが、格納部530に格納されていてもよい。
本実施形態においては、構造解析部520が、複数のキーの名称に基づいて、当該複数のキーに含まれる複数の単語同士の関係を、ツリー構造を用いて決定する場合について説明した。しかしながら、構造解析部520は本実施形態に限定されない。構造解析部520は、キー名称以外の文字列(主文字列と称する場合がある。)に含まれる文字列(サブ文字列と称する場合がある。)を対象として、構造解析処理を実行してもよい。例えば、構造解析部520は、複数の主文字列に基づいて、当該複数の主文字列を構成する複数のサブ文字列の関係を決定してよい。また、UI作成部130は、サブ文字列の関係に基づいて、表を作成してもよい。さらに他の実施形態において、構造解析部520は、複数のキーの名称に基づいて、当該複数のキーに含まれる複数の単語同士の関係を、ツリー構造を用いて決定しなくてもよい。
図6は、名称分割部526の内部構成の一例を概略的に示す。本実施形態において、名称分割部526は、分割記号検出部610と、種類変更検出部620と、共通文字列検出部630と、分割位置決定部640とを備える。また、共通文字列検出部630は、前方ソート部632と、後方ソート部634とを有する。
一実施形態において、名称分割処理の対象となるキーは、分割記号検出部610、種類変更検出部620及び共通文字列検出部630の少なくとも2つにおいて、並列に処理される。例えば、名称分割処理の対象となるキーは、分割記号検出部610、種類変更検出部620及び共通文字列検出部630において並列に処理される。名称分割処理の対象となるキーは、分割記号検出部610及び種類変更検出部620において並列に処理された後、共通文字列検出部630において処理されてもよい。この場合、共通文字列検出部630は、分割記号検出部610及び種類変更検出部620の結果を利用してよい。
他の実施形態において、名称分割処理の対象となるキーは、分割記号検出部610、種類変更検出部620及び共通文字列検出部630において、順番に処理される。処理の順番は特に限定されるものではないが、共通文字列検出部630における処理は、分割記号検出部610及び種類変更検出部620の少なくとも一方における処理の後で実行されてよい。
分割記号検出部610は、処理対象となるキーのそれぞれについて、当該キーの名称が分割記号を含むか否かを判定する。分割記号検出部610は、キー名称中に分割記号が含まれる場合、その旨を分割位置決定部640に通知する。分割記号検出部610は、分割記号の位置でキー名称を分割して、分割後の文字列を分割位置決定部640に通知してもよい。分割記号検出部610は、分割後の文字列から分割記号を削除して、分割記号を含まない文字列を分割位置決定部640に通知してもよい。
種類変更検出部620は、処理対象となるキーのそれぞれについて、当該キーの名称を構成する文字列において、文字列の種類が変化する箇所(変更箇所と称する場合がある。)を検出する。種類変更検出部620は、キー名称中で文字列の種類が変化する場合、その旨を分割位置決定部640に通知する。種類変更検出部620は、文字列の種類が変化する位置でキー名称を分割して、分割後の文字列を分割位置決定部640に通知してもよい。
共通文字列検出部630は、処理対象となる複数のキーの名称のうちの2以上のキーの名称の語頭又は語尾において、当該2以上のキーの名称に共通する第1の共通文字列を抽出する。例えば、共通文字列検出部630は、前方ソート部632による前方ソート処理、後方ソート部634による後方ソート処理、及び、これらの組み合わせの少なくとも1つを含む処理を実行することで、共通文字列を抽出する。分類部524において、既にソート処理が実行されている場合、共通文字列検出部630は、分類部524からソート結果を受信してもよい。
前方ソート部632は、各キーの名称を、語頭から語尾に向かう方向に沿って解析して、複数のキー名称を昇順又は降順に並べ替える。後方ソート部634は、各キーの名称を、語尾から語頭に向かう方向に沿って解析して、複数のキー名称を昇順又は降順に並べ替える。ソートのアルゴリズムとしては、交換ソート、選択ソート、挿入ソート、マージソート、非比較ソート、並行ソート、混成ソートなどの任意のアルゴリズムを利用することができる。任意のアルゴリズムの組み合わせによりソートが実行されてもよい。
共通文字列の抽出処理の実行回数は特に限定されない。共通文字列検出部630は、共通文字列の抽出処理を繰り返してもよい。一実施形態において、共通文字列検出部630は、第1の共通文字列を有するキーの名称のそれぞれについて、第1の共通文字列を除去する。その後、共通文字列検出部630は、第1の共通文字列が除去されたキーの名称のうちの2以上のキーの名称の語頭又は語尾において、当該2以上のキーの名称に共通する第2の共通文字列を抽出する。
共通文字列検出部630は、共通文字列が抽出できなくなるまで、上記の処理を繰り返してよい。共通文字列検出部630は、予め定められた回数だけ、上記の処理を繰り返してもよい。予め定められた回数は、キーの名称に含まれる文字列の言語の種類、又は、データベースシステム100において主に使用される言語の種類に基づいて、決定されてよい。
共通文字列検出部630は、複数のキー名称に共通する共通文字列を検出した場合、その旨を分割位置決定部640に通知する。例えば、共通文字列検出部630は、共通文字列を示す情報と、当該共通文字列を含む複数のキーのキーIDとを対応付けて、分割位置決定部640に送信する。共通文字列検出部630は、共通文字列の位置でキー名称を分割して、分割後の文字列を分割位置決定部640に通知してもよい。
分割位置決定部640は、名称分割処理の対象となる複数のキー名称のそれぞれについて、分割位置を決定する。本実施形態において、分割位置決定部640は、分割記号検出部610から、各キー名称における分割記号の位置を取得する。分割位置決定部640は、種類変更検出部620から、各キー名称において文字列の種類が変化する位置を取得する。また、分割位置決定部640は、共通文字列検出部630から、各キー名称における共通文字列の位置を取得する。分割位置決定部640は分割記号の位置、文字列の種類が変化する位置及び共通文字列の位置の少なくとも1つの位置で、キー名称を分割することを決定する。
分割位置決定部640は、決定された分割位置でキー名称を分割してよい。一実施形態によれば、分割位置決定部640は、決定された分割位置の直前でキー名称を分割する。他の実施形態によれば、分割位置決定部640は、決定された分割位置の直後でキー名称を分割する。
分割位置決定部640は、各キー名称の分割位置に関する情報を、構造決定部528に送信する。分割位置決定部640は、同一の共通文字列を含む複数のキー名称に関する情報を、構造決定部528に送信してもよい。分割位置決定部640は、分割処理後の文字列を構造決定部528に送信してもよい。
本実施形態においては、名称分割部526が、分割記号、文字列の種類の変更、及び、共通文字列の少なくとも1つを検出することで、分割位置を検出する場合について説明した。しかしながら、名称分割部526は本実施形態に限定されない。他の実施形態において、名称分割部526は、形態素解析により各キー名称を解析して、当該解析結果に基づいて、各キー名称の分割位置を決定してもよい。さらに他の実施形態において、名称分割部526は、辞書情報を利用して、各キー名称の分割位置を決定してもよい。
図7は、格納部530の内部構成の一例を概略的に示す。本実施形態において、格納部530は、辞書情報格納部710と、構造情報格納部720と、画面情報格納部730とを備える。
辞書情報格納部710は、辞書情報を格納する。構造情報格納部720は、構造決定部528が決定したツリー構造に関する情報(構造情報と称する場合がある。)を格納する。例えば、構造情報格納部720は、各ツリー構造のIDと、当該ツリー構造に関連する複数のキーのIDと、当該ツリー構造を構成する複数のノードに関する情報とを対応付けて格納する。ノードに関する情報としては、各ノードのID、各ノードの名称、各ノードの階層、各ノードの上位ノードのID又は各ノードの下位ノードのIDなどを例示することができる。画面情報格納部730は、画面作成部540が作成したUI画面に関する情報を格納する。UI画面に関する情報は、HTMLファイルであってもよい。
図8は、UI作成部130における情報処理の一例を概略的に示す。本実施形態によれば、まず、ステップ802(ステップをSと省略して表現する場合がある。)において、名称取得部510が、複数のキー名称12を含むユーザ入力10を取得する。次に、S804において、構造解析部520が、複数のキー名称に基づいて、各キー名称を構成する文字列同士の関係を解析する。構造解析部520は、各キー名称を構成する複数の文字列のそれぞれと、ツリー構造を構成する複数のノードのそれぞれとを対応づけることで、各キー名称を構成する文字列同士の関係を決定する。その後、S806において、画面作成部540が、構造解析部520の解析結果に基づいて、表形式の入力欄26を含む入力画面20を作成する。
図9は、構造解析部520における情報処理の一例を概略的に示す。本実施形態によれば、まず、S902において、前処理部522が、名称取得部510から複数のキー名称を取得する。また、前処理部522は、複数のキー名称のそれぞれに対して前処理を実行する。前処理部522は、前処理後のキー名称を、分類部524に送信する。
S904において、分類部524が、前処理部522から受信した複数のキー名称を、1以上のグループに分類する。また、分類部524は、1以上のグループのうち、構造解析処理の対象となるグループを決定する。分類部524は、構造解析処理の対象となるグループに含まれる複数のキーに関する情報を、名称分割部526に送信する。
S910において、分割記号検出部610及び種類変更検出部620のそれぞれが、分類部524から受信した複数のキー名称のそれぞれについて、分割記号及び文字列の種類の変更箇所を検出する。S910において分割記号及び文字列の種類の変更箇所が検出されなかった場合(S912のNOの場合)、分類部524から受信した複数のキー名称が、共通文字列検出部630に送信され、S920の処理が実行される。
一方、S910において分割記号が検出された場合(S912のYESの場合)、S914において、分割記号検出部610が、分割記号を含むキー名称を、分割記号の位置で分割する。その後、各キーに関するID及び分割後の文字列が共通文字列検出部630に送信され、S920の処理が実行される。また、S910において変更箇所が検出された場合(S912のYESの場合)、S914において、種類変更検出部620が、変更箇所を含むキー名称を、変更箇所の位置で分割する。その後、各キーに関するID及び分割後の文字列が共通文字列検出部630に送信され、S920の処理が実行される。
S920において、共通文字列検出部630が、処理対象となる複数の文字列の少なくとも2つが、共通の文字列を含むか否かを判定する。これにより、共通文字列の有無を検出する。S920において共通文字列が検出されなかった場合(S922のNOの場合)、共通文字列検出部630は、共通文字列の検出処理を終了して、各キー名称の分割位置に関する情報を、構造決定部528に送信する。
一方、S920において共通文字列が検出された場合(S922のYESの場合)、S924において、共通文字列検出部630が、当該共通文字列を含む文字列を、当該共通文字列の位置で分割する。また、S926において、共通文字列検出部630が、当該共通文字列を含む文字列から、当該共通文字列を削除する。その後、共通文字列検出部630は、共通文字列が削除された文字列について、再度、共通文字列の検出処理を実行する。共通文字列検出部630は、共通文字列が検出されなくなるまで、S920、S922、S924及びS926の処理を繰り返す。
その後、S930において、構造決定部528が、ツリー構造を決定する。構造決定部528は、決定されたツリー構造の構造情報を構造情報格納部720に格納する。
本実施形態においては、分割記号検出部610及び種類変更検出部620における処理が並列に実行された後、共通文字列検出部630における処理が実行される場合について説明した。しかしながら、構造解析部520における情報処理は本実施形態に限定されない。他の実施形態において、分割記号検出部610における処理、種類変更検出部620における処理、及び、共通文字列検出部630における処理がこの順に実行される。さらに他の実施形態において、分割記号検出部610における処理、種類変更検出部620における処理、及び、共通文字列検出部630における処理が並列に実行される。
また、本実施形態においては、分割記号又は変更箇所の検出されたキー名称が分割された後、共通文字列の検出処理が実行される場合について説明した。しかしながら、構造解析部520における情報処理は本実施形態に限定されない。他の実施形態において、分割記号又は変更箇所の検出されたキー名称が分割されることなく、共通文字列の検出処理が実行されてもよい。
図10は、構造解析部520における情報処理の一例を概略的に示す。本実施形態によれば、まず、構造解析部520に、「サーバ名」、「LAN01_IPアドレス」、「LAN01_LAN ID」、「LAN02_IPアドレス」、「LAN02_LAN ID」、「LAN03_IPアドレス」、及び、「LAN03_LAN ID」という7個のキー名称を含むインプット1010が入力される。インプット1010は、ユーザ入力10の一例であってよい。
次に、前処理部522が、各キーの名称に含まれる数字を「*」という文字列に置換し、各キーの名称に含まれる「_」という文字列を削除する。前処理部522は、前処理後のキー名称を、分類部524に出力する。分類部524は、入力された複数のキーのうち、キー名称に「LAN*」という文字列を含むキーのグループと、「サーバ名」とに分類して、アウトプット1020を出力する。また、分類部524は、前処理後のキー名称に「LAN*」という文字列を含むキーのグループを、名称分割部526のインプット1030として選択する。
名称分割部526は、インプット1030に含まれる前処理後のキー名称を、1以上の単語に分割して、アウトプット1040を出力する。例えば、前方ソート部632は、インプット1030に含まれる前処理後のキー名称をソートして、各キー名称の語頭に、「LAN*」という共通文字列が検出されたことを示すアウトプット1042を出力する。また、後方ソート部634は、インプット1030に含まれる前処理後のキー名称をソートして、一部のキー名称の語尾に、「*LAN ID」という共通文字列が検出され、他の一部のキー名称の語尾に、「*IPアドレス」という共通文字列が検出されたことを示すアウトプット1044を出力する。
構造決定部528は、名称分割部526のアウトプットに基づいて、インプット1030に含まれるキー名称を構成する複数の単語の構造を解析する。本実施形態において、データベースシステム100において使用される主な言語は、日本語に設定されている。そこで、構造決定部528は、語頭に配された単語を根ノードとし、語頭に近い単語ほど上位のノードとなるように、1以上の単語のツリー構造を決定する。その結果、「LAN」という名称の根ノードの下位に、「LAN ID」及び「IPアドレス」という葉ノードが配されたツリー構造を示すアウトプット1050を出力する。
図11は、データテーブル1100の一例を概略的に示す。データテーブル1100は、構造情報格納部720に格納される構造情報の一例であってよい。本実施形態において、データテーブル1100は、キーID1102と、キー名称1104と、リスト化の要否1106と、ツリーID1108と、ノードID1110と、ノード名称1112と、上位ノード1114とを対応付けて格納する。
ツリーID1108には、各キー名称に関連するツリー構造のIDが格納される。ノードID1110及びノード名称1112のそれぞれには、各キー名称に含まれる単語に対応するノードのID及び名称が格納される。上位ノード1114には、例えば、各ノードの上位ノードのIDが格納される。
図12は、UI画面の少なくとも一部を構成する表1200の一例を概略的に示す。表1200は、複数のキーの名称に含まれる複数の文字列が3階層のツリー構造を構成する場合に、画面作成部540により作成される表の一例であってよい。表1200は、画面作成部540により作成される表形式の入力欄の一例であってよい。
本実施形態において、表1200は、表タイトル1210と、表本体1220とを含む。また、表本体1220は、表本体1220に格納される各レコードを識別するレコードIDが格納されるフィールド1230と、各レコードを構成する具体的なデータが格納されるフィールド1240及びフィールド1250とを含む。本実施形態において、フィールド1240は、フィールド1242及びフィールド1244を含み、フィールド1250は、フィールド1252及びフィールド1254を含む。
図12に記載された例によれば、表タイトル1210として、ツリー構造の第1階層の名称が割り当てられる。フィールド1240及びフィールド1250のそれぞれの名称として、ツリー構造の第2階層のそれぞれの名称が割り当てられる。また、フィールド1242及びフィールド1244のそれぞれの名称として、フィールド1240に対応する第2階層の下位に位置する第3階層のそれぞれの名称が割り当てられる。同様に、フィールド1252及びフィールド1254のそれぞれの名称として、フィールド1250に対応する第2階層の下位に位置する第3階層のそれぞれの名称が割り当てられる。
表本体1220の複数のセルの少なくとも一部には、当該セルに対するユーザからの入力を受け付けて、データ格納部110に格納するための命令が配されてよい。また、表本体1220の複数のセルの少なくとも一部には、データ格納部110を参照して、当該セルに対応するバリュー又はデータを表示するための命令が配されてよい。ユーザ又はユーザの属性に応じて、特定のセルが強調して表示されるように、当該特定のセルの表示態様が調整されてもよい。
図13、図14及び図15を用いて、UI作成部130における情報処理の他の例を概略的に示す。本実施形態によれば、UI作成部130は、SAX方式でデータを解析する。UI作成部130は、複数のキーの名称のうちの一部を受け付け、解析結果を、順次、表形式の入出力UIに反映させながら、UI画面を作成する。UI作成部130は、複数のキーの名称を1つずつ受け付けて、解析結果を、順次、表形式の入出力UIに反映させながら、UI画面を作成してもよい。
図8及び図9に関連した情報処理方法によれば、構造決定部528は、複数のキーに含まれる複数の単語同士の関係を、ツリー構造を用いて決定した。これに対して、本実施形態によれば、構造決定部528が、解析対象となる文字列と、既に解析済の複数の文字列のそれぞれとを比較して、両者に共通する文字列の有無を判断する点で、図8及び図9に関連した情報処理方法と相違する。本実施形態において、構造決定部528は、キー名称取得部、又は、共通文字列抽出部の一例であってよい。
本実施形態によれば、まず、S1302において、前処理部522が、名称取得部510から複数のキー名称を取得する。また、前処理部522は、複数のキー名称のそれぞれに対して前処理を実行する。前処理部522は、前処理後のキー名称を、順番に、構造決定部528に送信する。S1304において、構造決定部528は、前処理後のキー名称のうち、少なくとも、第1のキー名称及び第2のキー名称を取得する。S1306において、構造決定部528は、第1のキー名称及び第2のキー名称を比較して、両者に共通する文字列である第1の共通文字列を抽出する。
第1の共通文字列が抽出された場合(S1306のYES)、構造決定部528は、解析結果として、第1の共通文字列を示す情報を画面作成部540に送信する。この場合、S1308において、画面作成部540は、第1のキー名称から第1の共通文字列を削除した文字列に対応する行又は列と、第2のキー名称から第1の共通文字列を削除した文字列に対応する行又は列とを有する表を含む画面を作成する。上記の表は、表形式の入出力UIであってもよい。その後、図14のAの処理に進む。
図14のS1402において、構造決定部528は、前処理後のキー名称のうち、少なくとも第3のキー名称を取得する。S1404において、構造決定部528は、第3のキー名称と、第1のキー名称及び第2のキー名称とを比較して、第1のキー名称、第2のキー名称及び第3のキー名称に共通する文字列である第2の共通文字列を抽出する。
第2の共通文字列が抽出された場合(S1404のYES)、構造決定部528は、解析結果として、第2の共通文字列を示す情報を画面作成部540に送信する。この場合、S1406において、画面作成部540は、S1308において作成された表に、第3のキー名称に対応する行又は列を追加する。次に、S1408において、第1の共通文字列及び第2の共通文字列を比較して、両者が同一であるか否かを判定する。
第1の共通文字列及び第2の共通文字列が同一の文字列である場合(S1408のYES)、画面作成部540は、第1のキー名称から第1の共通文字列を削除した文字列に対応する行又は列、第2のキー名称から第1の共通文字列を削除した文字列に対応する行又は列、及び、第3のキー名称から第1の共通文字列を削除した文字列に対応する行又は列を有する表を作成する。その後、複数のキー名称の全てに対して、図14と同様の処理を繰り返した後、処理を終了する。
第1の共通文字列は、例えば、図12に関連して説明した表1200における第1階層の名称に相当する。第1のキー名称から第1の共通文字列を削除した文字列、第2のキー名称から第1の共通文字列を削除した文字列、及び、第3のキー名称から第1の共通文字列を削除した文字列のそれぞれは、第2階層の名称に相当する。
第1の共通文字列及び第2の共通文字列が同一の文字列でない場合(S1408のNO)、S1410において、画面作成部540は、第1のキー名称から、第1の共通文字列及び第2の共通文字列を削除した文字列に対応する行又は列、第2のキー名称から、第1の共通文字列及び第2の共通文字列を削除した文字列に対応する行又は列、並びに、第3のキー名称から第2の共通文字列を削除した文字列に対応する行又は列を有する表を作成する。その後、複数のキー名称の全てに対して、図14と同様の処理を繰り返した後、処理を終了する。
第2の共通文字列は、例えば、図12に関連して説明した表1200における第1階層の名称に相当する。第1の共通文字列は、第2階層の名称に相当する。第3のキー名称から第2の共通文字列を削除した文字列は、第2階層の名称に相当する。第1のキー名称から、第1の共通文字列及び第2の共通文字列を削除した文字列、及び、第2のキー名称から第1の共通文字列及び第2の共通文字列を削除した文字列のそれぞれは、第3階層の名称に相当する。
また、第2の共通文字列が抽出されなかった場合(S1404のNO)、S1412において、画面作成部540は、画面作成部540は、S1308において作成された表の外部に、第3のキー名称に対応する文字列が配置された画面を作成する。その後、複数のキー名称の全てに対して、図14と同様の処理を繰り返した後、処理を終了する。
一方、第1の共通文字列が抽出されなかった場合(S1306のNO)、構造決定部528は、解析結果として、第1の共通文字列が抽出されなかったことを示す情報を画面作成部540に送信する。この場合、S1310において、画面作成部540は、第1のキー名称から第1共通文字列を削除した文字列に対応する行又は列と、第2のキー名称から第1共通文字列を削除した文字列に対応する行又は列とを有する表を含まない画面を作成する。その後、図15のBの処理に進む。
図15のS1502において、構造決定部528は、前処理後のキー名称のうち、少なくとも第3のキー名称を取得する。S1504において、構造決定部528は、第3のキー名称及び第1のキー名称を比較して、両者に共通する文字列である第3の共通文字列を抽出する。
第3の共通文字列が抽出された場合(S1504のYES)、S1506において、画面作成部540は、S1308と同様の方法により、第1のキー名称から第3の共通文字列を削除した文字列に対応する行又は列と、第3のキー名称から第3の共通文字列を削除した文字列に対応する行又は列とを有する表を含む画面を作成する。上記の表は、表形式の入出力UIであってもよい。その後、複数のキー名称の全てに対して、図14と同様の処理を繰り返した後、処理を終了する。
第3の共通文字列が抽出されなかった場合(S1504のNO)、S1508において、構造決定部528は、第3のキー名称及び第2のキー名称を比較して、両者に共通する文字列である第4の共通文字列を抽出する。第4の共通文字列が抽出された場合(S1508のYES)、S1510において、画面作成部540は、S1308と同様の方法により、第2のキー名称から第4の共通文字列を削除した文字列に対応する行又は列と、第3のキー名称から第4の共通文字列を削除した文字列に対応する行又は列とを有する表を含む画面を作成する。上記の表は、表形式の入出力UIであってもよい。その後、複数のキー名称の全てに対して、図14と同様の処理を繰り返した後、処理を終了する。
第4の共通文字列が抽出されなかった場合(S1508のNO)、S1512において、画面作成部540は、S1310と同様にして、表を含まない画面を作成する。その後、複数のキー名称の全てに対して、図15又は図14と同様の処理を繰り返した後、処理を終了する。
図16は、データ管理装置102におけるデータの更新処理の一例を概略的に示す。本実施形態によれば、ユーザ入力60に含まれる複数のキー名称12で識別されるキーのうち、一部のキーに対応するバリュー64が既に入力されている点で、図2に関連して説明したユーザ入力10と相違する。ユーザ入力60は、例えば、データ格納部110に格納されているデータ又はデータファイルであってよい。本実施形態によれば、UI作成部130は、ユーザの指示に応じて、データ格納部110から、ユーザ入力60を読み込む。そして、UI作成部130は、入力画面20の入力欄22及び入力欄26の適切な位置に、バリュー64が記載された入力画面20を作成する。その他の点については、図2に関連した実施形態と同様の構成を有してよい。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。また、技術的に矛盾しない範囲において、特定の実施形態について説明した事項を、他の実施形態に適用することができる。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
[付記]
本願明細書には下記の事項が記載されている。
[項目1]
表を含む画面を作成する画面作成装置であって、
複数のKey−Value型データを構成する複数のキーの名称を取得するキー名称取得部と、
上記複数のキーの名称に基づいて、上記複数のキーの名称を構成する複数の単語のツリー構造を決定するツリー構造決定部と、
上記ツリー構造が複数の葉ノードを有する場合に、上記複数の葉ノードのそれぞれに対応する複数の行又は列を有する上記表を作成する表作成部と、
を備える、画面作成装置。
[項目2]
上記複数のキーのそれぞれを1以上の単語に分割して、上記複数の単語を生成するキー名称分割部をさらに備える、
項目1に記載の画面作成装置。
[項目3]
上記キー名称分割部は、
上記複数のキーのそれぞれについて、当該キーの名称が予め定められた第3の文字列を含むか否かを判定し、
当該キーの名称が予め定められた第3の文字列を含む場合、上記第3の文字列の位置で当該キーの名称を分割する、
項目2に記載の画面作成装置。
[項目4]
上記キー名称分割部は、
上記複数のキーのそれぞれについて、当該キーの名称を構成する文字列において、文字列の種類が変化する箇所を検出し、
上記文字列の種類が変化する位置で当該キーの名称を分割する、
項目2又は項目3に記載の画面作成装置。
[項目5]
上記キー名称分割部は、
上記複数のキーの名称のうちの2以上のキーの名称の語頭又は語尾において、当該2以上のキーの名称に共通する第1の共通文字列を抽出し、
上記第1の共通文字列を有するキーの名称を、上記第1の共通文字列の位置で分割する、
項目2から項目4までの何れか一項に記載の画面作成装置。
[項目6]
上記キー名称分割部は、
上記第1の共通文字列を有するキーの名称のそれぞれについて、上記第1の共通文字列を除去し、
上記第1の共通文字列が除去されたキーの名称のうちの2以上のキーの名称の語頭又は語尾において、当該2以上のキーの名称に共通する第2の共通文字列を抽出し、
上記第2の共通文字列を有するキーの名称を、上記第2の共通文字列の位置で分割する、
項目5に記載の画面作成装置。
[項目7]
上記ツリー構造決定部は、
上記複数のキーの少なくとも一部について、
語頭に配された単語を根ノードとし、語頭に近い単語ほど上位のノードとなるように、又は、
語尾に配された単語を根ノードとし、語尾に近い単語ほど上位のノードとなるように、
上記1以上の単語のツリー構造を決定する、
項目1から項目6までの何れか一項に記載の画面作成装置。
[項目8]
上記複数のキーの名称に基づいて、上記複数のキーを1以上のグループに分類する分類部をさらに備え、
上記ツリー構造決定部は、2以上のキーを含むグループの少なくとも1つを構成するキーの名称に含まれる単語について、上記ツリー構造を決定する、
項目1から項目7までの何れか一項に記載の画面作成装置。
[項目9]
上記複数のキーを、名称中に表作成処理の対象となることを示す文字列を含むキーと、名称中に表作成処理の対象となることを示す文字列を含まないキーとに分類する分類部をさらに備え、
上記ツリー構造決定部は、名称中に表作成処理の対象となることを示す文字列を含むキーの名称に含まれる単語について、上記ツリー構造を決定する、
項目1から項目8までの何れか一項に記載の画面作成装置。
[項目10]
表を含む画面を作成する画面作成装置であって、
複数のKey−Value型データを構成する複数のキーのうちの少なくとも第1キー及び第2キーの名称を取得するキー名称取得部と、
上記第1キーの名称及び上記第2キーの名称に共通する第1共通文字列を抽出する共通文字列抽出部と、
上記共通文字列抽出部が上記第1共通文字列を抽出した場合に、上記第1キーの名称から上記第1共通文字列を削除した文字列に対応する行又は列、及び、上記第2キーの名称から上記第1共通文字列を削除した文字列に対応する行又は列を有する上記表を作成する表作成部と、
を備える、画面作成装置。
[項目11]
上記キー名称取得部は、上記複数のキーのうちの第3キーの名称を取得し、
上記共通文字列抽出部は、上記第1キーの名称、上記第2キーの名称及び上記第3キーの名称に共通する第2共通文字列を抽出し、
上記表作成部は、
(i)上記第1共通文字列及び上記第2共通文字列が同一の文字列である場合、上記第1キーの名称から上記第1共通文字列を削除した文字列に対応する行又は列、上記第2キーの名称から上記第1共通文字列を削除した文字列に対応する行又は列、及び、上記第3キーの名称から上記第1共通文字列を削除した文字列に対応する行又は列を有する上記表を作成し、
(ii)上記第1共通文字列及び上記第2共通文字列が異なる文字列である場合、上記第1キーの名称から、上記第1共通文字列及び上記第2共通文字列を削除した文字列に対応する行又は列、上記第2キーの名称から、上記第1共通文字列及び上記第2共通文字列を削除した文字列に対応する行又は列、並びに、上記第3キーの名称から上記第2共通文字列を削除した文字列に対応する行又は列を有する上記表を作成する、
項目10に記載の画面作成装置。
[項目12]
上記表作成部は、
(iii)上記第2共通文字列が抽出されなかった場合、上記第1キーの名称から上記第1共通文字列を削除した文字列に対応する行又は列、及び、上記第2キーの名称から上記第1共通文字列を削除した文字列に対応する行又は列を有する上記表、並びに、上記第3キーの名称に対応する文字列を作成する、
項目11に記載の画面作成装置。
[項目13]
上記画面は、データベースのユーザインターフェース画面であり、
上記複数のKey−Value型データは、上記データベースに格納される複数のデータであり、
上記複数のキーの名称のそれぞれは、上記データベースに格納される複数のデータのそれぞれのキーの名称である、
項目1から項目12までの何れか一項に記載の画面作成装置。
[項目14]
上記表作成部は、上記表に含まれる複数のセルの少なくとも一部に、当該セルに対するユーザからの入力を受け付けて、入力された情報を、上記複数のKey−Value型データを格納するデータベースに格納するための命令が配された表を作成する、
項目1から項目13までの何れか一項に記載の画面作成装置。
[項目15]
上記表作成部は、上記表に含まれる複数のセルの少なくとも一部に、上記複数のKey−Value型データを格納するデータベースを参照して、各セルに対応するバリューを表示するための命令が配された表を作成する、
項目1から項目14までの何れか一項に記載の画面作成装置。
[項目16]
上記表作成部は、上記バリューが予め定められた条件を満足する場合、当該バリューをスクランブル表示又はマスク表示する、
項目1から項目15までの何れか一項に記載の画面作成装置。
[項目17]
上記複数のキーのそれぞれについて、当該キーの名称に含まれる第1の文字列を、予め定められた第2の文字列に置換する又は除去する前処理部をさらに備え、
上記キー名称分割部は、上記前処理部により上記第1の文字列が置換又は除去されたキーの名称のそれぞれを、上記1以上の単語に分割し、
上記第2の文字列は、上記第1の文字列とは異なる、
項目1から項目16までの何れか一項に記載の画面作成装置。
[項目18]
コンピュータを、項目1から項目17までの何れか一項に記載の画面作成装置として機能させるためのプログラム。