以下、本発明による入力画面生成装置について、実施の形態を用いて説明する。なお、以下の実施の形態において、同じ符号を付した構成要素及びステップは同一または相当するものであり、再度の説明を省略することがある。本実施の形態による入力画面生成装置は、帳票の表形式データから、その帳票の入力画面を自動的に生成するものである。
図1は、本実施の形態による入力画面生成装置1の構成を示すブロック図である。本実施の形態による入力画面生成装置1は、記憶部11と、検知部12と、警告出力部13と、生成部14と、出力部15と、入力画面記憶部16と、受付部17と、表示部18とを備える。
記憶部11では、複数のセルを有する帳票の表形式のデータである表形式データが記憶される。表形式データは、例えば、スプレッドシート(表計算ソフト)などのアプリケーションソフトウェアによって作成されたデータであってもよい。その表形式データは、複数のセルにそれぞれ設定されたフィールドと、そのフィールドのフィールド名との組を1以上有する表形式データである。その表形式データでは、所望の入力画面と同様のレイアウトが、罫線の設定やセルへの文字入力によって構成されていることが好適である。表形式データにおいて、あらかじめ決められた条件を満たすセル(例えば、罫線で枠囲みがなされた空欄のセルや、後述するデータ型の設定のなされた空欄のセル等)がフィールドに対応していてもよく、あらかじめ決められた位置のセル(例えば、左から2番目の列(B列)のセル等)がフィールドに対応していてもよい。そのフィールドに対応するフィールド名を示す文字列は、フィールドのセルに隣接するセルに入力されていることが好適である。そのような場合には、例えば、表形式データの各セルについて、文字列の入力されているセルがフィールド名のセルとなり、そのフィールド名のセルに隣接している、あらかじめ決められた条件を満たすセルや、あらかじめ決められた位置のセルが、そのフィールド名に対応するフィールドのセルであることになる。そのようにして、フィールド名と、フィールドとの対応関係が一意に特定できるように、表形式データが構成されていることが好適である。また、入力画面の入力フィールドに対応するフィールドにおいては、データ型が設定されていてもよい。そのデータ型は、例えば、数値データ型、金額データ型、テキストデータ型、日付データ型、時刻データ型、日付・時刻データ型、チェックボックス、ラジオボタン、セレクトボックス等から選ばれる少なくとも二以上を有するデータ型の集合に含まれるいずれかであってもよい。なお、データ型がセレクトボックスの場合には、選択対象の各値も設定されてもよい。また、それら以外のデータ型をフィールドに設定することができてもよい。表形式データにおけるデータ型の設定は、例えば、スプレッドシートのアプリケーションで行われているように、セルに対応するデータ型を設定することによって行われてもよく、または、セルに対してあらかじめ決められた文字列を入力することによって行われてもよい。前者の場合には、表示されているセルは空欄であり、そのセルの識別子と、そのセルに対応するデータ型とを対応付ける情報が別途、管理されていてもよい。また、後者の場合には、例えば、「データ型:数値」などの文字列がセルに入力されることによって、そのセルに数値データ型が設定されてもよい。この場合には、表示されているセルに、その文字列が表示されることになる。また、表形式データにおいて、フィールド名ではない文字列、すなわちフィールドと対応していないセルに入力された文字列が存在してもよい。その文字列は、例えば、入力画面のタイトルや、注意書き等であってもよい。
また、表形式データにおいて情報の入力されているセルには、入力画面の生成に用いられないセルがあってもよく、またはそうでなくてもよい。前者の場合には、例えば、情報が入力されているセルのうち、あらかじめ決められた条件を満たすセルは、入力画面の生成で用いられる帳票の領域に含まれなくてもよい。そのあらかじめ決められた条件は、例えば、特定の文字列(例えば、「#」「//」など)から始まるという条件であってもよく、特定の文字列の組(例えば、「<!−−」と「−−>」の組や、「/*」と「*/」の組など)で括られているという条件であってもよい。入力画面の生成に用いられないセルは、例えば、表形式データの作成者が、覚書などのコメントを記載するために用いられるセルであってもよい。
記憶部11に表形式データが記憶される過程は問わない。例えば、記録媒体を介して表形式データが記憶部11で記憶されるようになってもよく、通信回線等を介して送信された表形式データが記憶部11で記憶されるようになってもよく、または、入力デバイスを介して入力された表形式データが記憶部11で記憶されるようになってもよい。記憶部11での記憶は、RAM等における一時的な記憶でもよく、または、長期的な記憶でもよい。記憶部11は、所定の記録媒体(例えば、半導体メモリや磁気ディスクなど)によって実現されうる。
検知部12は、表形式データにおける帳票の領域を検知する。検知部12は、表形式データにおいて情報の入力されているセルのうち、最小範囲の領域を、帳票の領域として検知してもよい。具体的には、検知部12は、表形式データにおいて、情報の入力されている最も左側の列から、情報の入力されている最も右側の列までの列の範囲であって、かつ、情報の入力されている最も上側の行から、情報の入力されている最も下側の行までの行の範囲である領域を帳票の領域と検知してもよい。また、検知部12は、表形式データに含まれる、情報が入力されているセルのうち、あらかじめ決められた条件を満たすセルは帳票の領域に含めなくてもよい。そのあらかじめ決められた条件については、上記のとおりである。
警告出力部13は、検知部12によって検知された帳票の領域があらかじめ決められた大きさを超えている場合に、警告を出力する。警告出力部13は、例えば、検知された帳票の領域の幅が、あらかじめ決められた閾値を超えている場合に、警告を出力してもよく、検知された帳票の領域の縦方向の長さが、あらかじめ決められた閾値を超えている場合に、警告を出力してもよく、両方であってもよい。例えば、幅方向の閾値は、通常のディスプレイの幅(例えば、1280ピクセル等)に応じて設定されてもよい。より具体的には、その幅方向の閾値は、通常のディスプレイの幅と同程度であってもよい。入力画面を通常のディスプレイに表示した場合に、横方向にスクロールする必要がないようにするためである。また、例えば、縦方向の閾値は、通常のディスプレイの上下方向の長さ(例えば、800ピクセル等)に応じて設定されてもよい。より具体的には、その縦方向の閾値は、通常のディスプレイの上下方向の長さと同程度であってもよい。入力画面を通常のディスプレイに表示した場合に、上下方向にスクロールする必要がないようにするためである。そのあらかじめ決められた閾値は、例えば、画素数によって示されてもよく、その他の長さの基準によって示されてもよい。
ここで、この出力は、例えば、表示デバイス(例えば、液晶ディスプレイや有機ELディスプレイなど)への表示でもよく、所定の機器への通信回線を介した送信でもよく、プリンタによる印刷でもよく、スピーカによる音声出力でもよく、記録媒体への蓄積でもよく、他の構成要素への引き渡しでもよい。なお、警告出力部13は、出力を行うデバイス(例えば、表示デバイスやスピーカなど)を含んでもよく、または含まなくてもよい。また、警告出力部13は、ハードウェアによって実現されてもよく、または、それらのデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
生成部14は、表形式データを用いて、入力フィールドと、その入力フィールドのフィールド名とを有する帳票の入力画面を生成する。その入力画面は、入力フィールドと、その入力フィールドのフィールド名との組を1または2以上有するものであってもよい。表形式データのフィールドが入力画面の入力フィールドに対応し、そのフィールドのフィールド名が、入力フィールドのフィールド名に対応することになる。入力画面を生成するとは、厳密には、入力画面の情報を生成することである。入力画面は、例えば、入力フィールドとフィールド名との組を指定する構造の情報、及び、その入力フィールド及びフィールド名の配置位置(表示位置)を示すレイアウト情報によって構成されてもよい。構造の情報は、例えば、HTMLやXML等のマークアップ言語によって記述された情報であってもよい。また、レイアウト情報は、例えば、カスケーディング・スタイル・シートなどのスタイルシートであってもよい。なお、そのような構造の情報と、レイアウト情報とによって入力画面を構成することはすでに公知であり、その詳細な説明を省略する。
生成部14は、検知部12によって検知された帳票の領域に対応する入力画面を生成するものとする。具体的には、生成部14は、検知部12によって検知された領域において、文字列の入力されているフィールド名のセルを特定し、そのフィールド名のセルの上下左右のいずれかの隣接したセルのうち、あらかじめ決められた条件を満たすセルや、あらかじめ決められた位置のセルである、特定したフィールド名に対応するフィールドのセルを特定してもよい。このようにして、表形式データにおいて、フィールドと、そのフィールドのフィールド名との組を特定することができる。あらかじめ決められた条件を満たすセルは、上記のように、例えば、罫線で枠囲みがなされた空欄のセルや、後述するデータ型の設定のなされた空欄のセルなどであってもよい。また、あらかじめ決められた条件を満たすセルは、例えば、フィールド名のセルに対する枠囲みの罫線と連続している罫線によって枠囲みがなされた空欄のセルであってもよい。また、フィールド名のセルに対して、2以上のフィールドのセルが対応している場合には、生成部14は、1個のフィールド名のセルと、そのフィールド名に対応する複数のフィールドのセルとの組を特定してもよい。例えば、フィールド名「商品名」のセルに連続して、そのフィールド名のセルと連続した罫線の枠囲みがなされている複数の空欄のセルが一方向に連続している場合には、生成部14は、そのフィールド名「商品名」のセルと、それに連続する複数の空欄のセルであるフィールドのセルとの組を特定してもよい。生成部14は、表形式データにおいて、フィールドと、そのフィールドのフィールド名との組を特定した後に、その組に対応する入力フィールドとフィールド名とに関する情報を、入力画面の構造の情報に追記してもよい。このように、表形式データにおけるフィールド及びフィールド名の組を特定することと、その組に対応する情報を入力画面の構造の情報に追加することとが繰り返されることによって、表形式データに対応する入力画面の構造の情報が生成されることになる。また、表形式データにおいて、フィールド名ではない文字列、すなわちフィールドと対応していないセルに入力された文字列が存在する場合に、生成部14は、その文字列を入力画面にそのまま含めるようにしてもよい。例えば、入力画面のタイトルや、入力画面の入力に関する注意書き等の文字列を含むセルが表形式データに含まれる場合には、それらの文字列がそのまま入力画面に反映されることが好適だからである。
表形式データのフィールドにデータ型の設定がなされている場合に、生成部14は、入力画面に含まれる入力フィールドのデータ型を、その入力フィールドに対応する表形式データのフィールドに設定されているデータ型に設定してもよい。例えば、表形式データのあるフィールドに数値データ型が設定されている場合には、生成部14は、入力画面における、そのフィールドに対応する入力フィールドのデータ型を、数値データ型に設定してもよい。そして、入力画面のある入力フィールドにデータ型が設定されている場合には、その入力画面を用いたデータ入力において、その入力フィールドでは、設定されているデータ型のデータのみが受け付けられてもよい。例えば、数値データ型の設定されている入力フィールドには、数値のみが入力できるようになっていてもよい。入力画面の入力フィールドへのデータ型の設定は、例えば、入力画面の構造の情報に対して行われてもよく、または、後述するデータベーススキーマに対して行われてもよい。
また、生成部14は、入力画面の各入力フィールドに対応するデータベーススキーマを、入力フィールドに対応する表形式データにおけるフィールド及びフィールド名の少なくとも一方を用いて生成してもよい。データベーススキーマは、例えば、入力フィールドに対応する属性名と、データ型と、サイズとを対応付けるものであってもよい。属性名に対応付けられるデータ型及びサイズは、その属性名によって名称の示されている属性のデータ型及びサイズである。そして、生成部14は、そのデータベーススキーマに含まれる少なくとも一部の情報を、表形式データに含まれるフィールド及び/またはフィールド名を用いて生成してもよい。生成部14は、例えば、データベーススキーマにおいて、入力フィールドに対応する属性名を、その入力フィールドに対応する表形式データにおけるフィールドのフィールド名に設定してもよい。また、生成部14は、データベーススキーマにおいて、入力フィールドに対応するデータ型を、その入力フィールドに対応する表形式データにおけるフィールドのデータ型に設定してもよい。また、生成部14は、データベーススキーマにおいて、入力フィールドに対応する入力フィールドに対応するサイズを、その入力フィールドに対応する、表形式データにおけるフィールドの長さに応じて設定してもよい。フィールドの長さは、例えば、フィールドの幅であってもよい。フィールドの長さに応じて設定するとは、その長さが長いほど、より大きなサイズに設定することであってもよい。フィールドの長さに応じたサイズは、例えば、フィールドの長さを引数として、入力フィールドに対応するサイズを算出するために用いられる関数や、フィールドの長さと、入力フィールドに対応するサイズとを対応付けるテーブル等を用いて特定されてもよい。そのサイズは、例えば、データ量(バイト数)であってもよく、文字数や数字の桁数などであってもよい。また、データベーススキーマも生成する場合には、生成部14は、入力画面における各入力フィールドと、データベーススキーマにおける各レコードとの対応関係が分かるようにしてもよい。例えば、生成部14は、対応関係にある入力画面における入力フィールドと、データベーススキーマにおけるレコードとに同じIDを付与してもよい。
また、生成部14は、入力画面に含まれる入力フィールドのデータ型に応じて、その入力フィールドがフォーカスされたときに出力される入力補助ツールを設定してもよい。具体的には、生成部14は、入力画面に含まれる入力フィールドのデータ型が日付データ型である場合には、その入力フィールドがフォーカスされたときに出力される入力補助ツールとして、カレンダーの入力補助ツールを設定してもよい。カレンダーの入力補助ツールとは、表示されたカレンダーにおいて日付を選択することによって、選択した日付を入力できる入力補助ツールである。また、生成部14は、入力画面に含まれる入力フィールドのデータ型が金額データ型または数値データ型である場合には、その入力フィールドがフォーカスされたときに出力される入力補助ツールとして、テンキーの入力補助ツールを設定してもよい。テンキーの入力補助ツールとは、表示されたテンキーにおいて数値ボタンを選択することによって、選択した数値ボタンに対応する数値を入力できる入力補助ツールである。そのテンキーの入力補助ツールは、例えば、数値の入力のみに用いられてもよく、数値の計算機能を有していてもよい。後者の場合には、その入力補助ツールは、電卓であると考えてもよい。入力フィールドがフォーカスされるとは、例えば、ポインティングデバイスや指でのタップ等によって入力フィールドが選択されたり、入力のために、入力フィールドにポインタやカーソルが配置されたりすることであってもよい。また、入力画面の所定の入力フィールドに入力補助ツールを設定するとは、例えば、その入力補助ツールのモジュール等を入力画面に組み込むことであってもよく、または、別途管理されている入力補助ツールのモジュール等を入力画面から読み出すように設定することであってもよい。
また、生成部14は、表形式データのレイアウトに応じた入力画面を生成する。すなわち、生成部14は、表形式データのレイアウトと同様のレイアウトとなるように、入力画面のレイアウト情報を生成してもよい。そのため、生成部14は、例えば、表形式データにおいて特定したフィールドやフィールド名の位置やサイズ等を表形式データから取得し、その取得した位置やサイズを用いて、入力画面のレイアウト情報を構成してもよい。より具体的には、生成部14は、その取得した位置やサイズ等を用いて、入力画面の入力フィールドやフィールド名が、表形式データにおけるフィールドやフィールド名と同様の位置関係、サイズとなるように、入力画面のレイアウト情報を生成してもよい。なお、生成部14は、表形式データのレイアウトに応じた入力画面を生成する際に、例えば、厳密に同じレイアウトとなるように入力画面を生成してもよく、順序や並び等が同じレイアウトとなるように入力画面を生成してもよい。後者の場合には、生成部14は、例えば、入力フィールドの幅などを、データ型などに応じて決定してもよい。具体的には、数値データ型に対応する入力フィールドの幅や、金額データ型に対応する入力フィールドの幅などがあらかじめ決められており、生成部14は、各入力フィールドの幅が、データ型に応じた幅となるように入力画面を生成してもよい。
また、生成部14は、あらかじめ決められた構成要素を入力画面に含めるようにしてもよい。例えば、あらかじめ「OK」ボタンと「キャンセル」ボタンとを右下に含めることが決まっている場合には、生成部14は、入力画面を生成する際に、それらのボタンを含む入力画面を生成してもよい。
生成部14は、表形式データのレイアウトと関係しない、モバイル機器用の入力画面をも生成してもよい。近年、デスクトップパソコンなどのように、通常のディスプレイで表示するための入力画面と、スマートフォンやタブレット端末などのように、通常のディスプレイよりも狭小なディスプレイで表示するための入力画面との両方を準備しておき、アクセス元の機器の種類に応じて、表示する入力画面を切り換えることが行われている。そのため、表形式データのレイアウトに応じた、デスクトップパソコン用の入力画面と、モバイル機器用の入力画面との両方を自動的に生成することは好適である。なお、モバイル機器用の入力画面では、表示対象の入力フィールドとフィールド名とを選択できるようにしてもよい。より小さな画面で入力する場合には、重要度の低い情報の入力を省略するようにしてもよいからである。したがって、生成部14は、表形式データに含まれるフィールド及びフィールド名のうち、あらかじめ選択されているものに対応する入力フィールドやフィールド名を有するモバイル機器用の入力画面を生成してもよい。そのモバイル機器用の入力画面では、入力フィールドやフィールド名が、例えば、上下方向のみに並ぶように構成されていてもよい。また、そのモバイル機器用の入力画面において、入力フィールドやフィールド名の表示順序をユーザがあらかじめ設定できてもよい。入力フィールドやフィールド名の表示の有無や表示の順序に関する設定情報は、例えば、記憶部11で記憶されており、生成部14は、それらの情報を読み出すことによって、その設定情報に応じたモバイル機器用の入力画面を生成してもよい。モバイル機器用の入力画面を生成する場合には、生成部14は、表形式データのレイアウトと関係なく、あらかじめ決められたレイアウト情報や、上記のようにユーザによって設定された表示順序や表示の有無に応じたレイアウト情報を用いてもよく、モバイル機器において表示や入力が容易になるようにレイアウト情報を構成してもよい。なお、モバイル機器用の入力画面に関する入力フィールドとフィールド名との組を指定する構造の情報は、通常の入力画面のものがそのまま用いられてもよく、または、通常の入力画面と同様に、その構造の情報が生成されてもよい。
出力部15は、生成部14によって生成された入力画面を出力する。また、データベーススキーマも生成された場合には、出力部15は、生成部14によって生成されたデータベーススキーマを蓄積してもよい。ここで、この出力は、例えば、所定の機器への通信回線を介した送信でもよく、記録媒体への蓄積でもよく、他の構成要素への引き渡しでもよい。本実施の形態では、出力部15が、入力画面やデータベーススキーマを入力画面記憶部16に蓄積する場合について主に説明する。なお、出力部15は、出力を行うデバイス(例えば、通信デバイスなど)を含んでもよく、または含まなくてもよい。また、出力部15は、ハードウェアによって実現されてもよく、または、それらのデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
入力画面記憶部16では、入力画面やデータベーススキーマが記憶される。入力画面記憶部16での記憶は、RAM等における一時的な記憶でもよく、または、長期的な記憶でもよい。入力画面記憶部16は、所定の記録媒体(例えば、半導体メモリや磁気ディスクなど)によって実現されうる。入力画面記憶部16において記憶されている入力画面やデータベーススキーマは、入力画面生成装置1の外部に出力されてもよい。
受付部17は、情報や指示等の入力を受け付ける。その受け付けられた情報によって、例えば、記憶部11で記憶されている表形式データや、モバイル機器用の入力画面に関する設定情報が構成されてもよい。また、受け付けられた情報によって、例えば、入力画面の生成が指示されてもよい。また、受付部17は、例えば、入力デバイス(例えば、キーボードやマウス、タッチパネルなど)から入力された情報や指示を受け付けてもよく、有線または無線の通信回線を介して送信された情報や指示を受信してもよく、所定の記録媒体(例えば、光ディスクや磁気ディスク、半導体メモリなど)から読み出された情報を受け付けてもよい。なお、受付部17は、受け付けを行うためのデバイス(例えば、モデムやネットワークカードなど)を含んでもよく、または含まなくてもよい。また、受付部17は、ハードウェアによって実現されてもよく、または所定のデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
表示部18は、記憶部11で記憶されている表形式データ等を表示する。なお、表示部18は、それらの表示を行う表示デバイス(例えば、液晶ディスプレイや有機ELディスプレイなど)を含んでもよく、または含まなくてもよい。また、表示対象の表示は、別の装置においてなされてもよい。その場合には、表示部18は、装置の外部に対して表示対象の情報を送信するものであってもよい。また、表示部18は、ハードウェアによって実現されてもよく、または表示デバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
なお、記憶部11と、入力画面記憶部16とは、同一の記録媒体によって実現されてもよく、または、別々の記録媒体によって実現されてもよい。前者の場合には、例えば、表形式データを記憶している領域が記憶部11となり、入力画面を記憶している領域が入力画面記憶部16となる。
また、図1では明記していないが、入力画面生成装置1は、スプレッドシート(表計算ソフト)のアプリケーションソフトウェアを実行する構成を有していてもよい。そのアプリケーションソフトウェアは、記憶部11等で記憶されており、図示しない実行部がそのソフトウェアを実行してもよい。また、そのソフトウェアが実行されている際に、受付部17によってスプレッドシートへの入力が指示等が受け付けられ、それに応じた処理が図示しない実行部によって実行され、また、その結果が表示部18によって表示されてもよい。
次に、入力画面生成装置1の動作について図2のフローチャートを用いて説明する。このフローチャートでは、表形式データのフィールドに対応するセルには、文字列が入力されていないものとする。
(ステップS101)生成部14は、入力画面の生成を行うかどうか判断する。そして、入力画面の生成を行う場合には、ステップS102に進み、そうでない場合には、入力画面の生成を行うと判断するまで、ステップS101の処理を繰り返す。生成部14は、例えば、入力画面を生成する旨の指示が受付部17で受け付けられた場合に、入力画面を生成すると判断してもよい。なお、その指示に、入力画面の生成で用いる表形式データを識別する情報が含まれていてもよい。
(ステップS102)検知部12は、入力画面の生成で用いる表形式データにおける帳票の領域を検知する。
(ステップS103)警告出力部13は、ステップS102で検知された領域が、あらかじめ決められた大きさ以内であるのか、その大きさを超えているのかを判断する。そして、あらかじめ決められた大きさ以内であれば、ステップS104に進み、あらかじめ決められた大きさ超えていれば、ステップS115に進む。
(ステップS104)生成部14は、表形式データにおいて、文字列の入力されているセルを特定する。なお、ステップS112からステップS104に戻った場合には、生成部14は、それまでに特定していない、文字列の入力されているセルを特定するものとする。
(ステップS105)生成部14は、ステップS104で特定した文字列の入力されているセルに対応するフィールドがあるかどうか判断する。生成部14は、例えば、そのセルに隣接する、あらかじめ決められた条件を満たすセルがある場合に、その文字列のセルに対応するフィールドがあると判断してもよい。そして、文字列の入力されているセルに対応するフィールドがある場合には、そのフィールドのセルを特定してステップS106に進み、そうでない場合には、ステップS114に進む。
(ステップS106)生成部14は、ステップS105で特定したフィールドのセルに設定されているデータ型を取得する。
(ステップS107)生成部14は、ステップS105で特定したフィールドの長さに応じたサイズを特定する。
(ステップS108)生成部14は、ステップS104で特定したセルの文字列である属性名と、ステップS106で取得したデータ型と、ステップS107で特定したサイズとを有するデータベーススキーマを設定する。その設定は、表形式データのフィールドに対応するデータベーススキーマを蓄積することによって行われてもよい。
(ステップS109)生成部14は、ステップS104で特定したセルの文字列であるフィールド名と、ステップS105で特定したフィールドとにそれぞれ対応する、入力画面におけるフィールド名と、入力フィールドとを設定する。その設定は、ステップS105で特定したフィールドに対応する入力画面における位置に、入力フィールドを設定し、ステップS104で特定したフィールド名に対応する入力画面における位置に、フィールド名を設定することによって行われてもよい。より具体的には、生成部14は、そのフィールド名と入力フィールドとに対応する構造を、構造の情報に追加し、それらの表示位置に応じた設定を、レイアウト情報に追加してもよい。なお、入力画面にフィールド等を初めて設定する際には、生成部14は、ステップS102で検知された領域に対応するブランクの入力画面をまず生成し、そのブランクの入力画面に、フィールド等の設定を行ってもよい。
(ステップS110)生成部14は、ステップS108で設定したデータベーススキーマに含まれるデータ型が、入力補助ツールの設定対象となる特定のデータ型であるかどうか判断する。そして、特定のデータ型である場合には、ステップS111に進み、そうでない場合には、ステップS112に進む。なお、生成部14は、例えば、ステップS108で設定したデータベーススキーマに含まれるデータ型が、日付データ型、金額データ型、及び数値データ型のいずれかである場合に、入力補助ツールの設定対象となる特定のデータ型であると判断してもよい。
(ステップS111)生成部14は、ステップS109で入力画面に追加した入力フィールドに、データ型に応じた入力補助ツールを設定する。上記のように、生成部14は、例えば、入力フィールドのデータ型が日付データ型である場合には、カレンダーの入力補助ツールを設定し、入力フィールドのデータ型が金額データ型または数値データ型である場合には、テンキーの入力補助ツールを設定してもよい。
(ステップS112)生成部14は、それまでに特定していない、文字列の入力されているセルが存在するかどうか判断する。そして、そのようなセルが存在する場合には、ステップS104に戻り、そうでない場合には、ステップS113に進む。
(ステップS113)出力部15は、生成部14によって生成された入力画面と、データベーススキーマとを出力する。なお、生成された入力画面は、ステップS109における入力フィールド等の生成や、ステップS114における文字列の生成が繰り返して行われた入力画面であってもよい。また、生成されたデータベーススキーマとは、ステップS108でのデータベーススキーマの設定が繰り返して行われたデータベーススキーマであってもよい。そして、入力画面を生成する一連の処理は終了となる。
(ステップS114)生成部14は、ステップS104で特定したセルの文字列を、入力画面に設定する。その設定は、ステップS104で特定したセルの文字列に対応する入力画面における位置に、その文字列を追加することによって行われてもよい。なお、入力画面にフィールド等を初めて設定する際には、生成部14は、ステップS102で検知された領域に対応するブランクの入力画面をまず生成し、そのブランクの入力画面に、文字列を追加してもよい。このように、表形式データに含まれる文字列をそのまま入力画面に設定する場合には、生成部14は、例えば、表形式データに含まれる文字列の属性(例えば、下線、斜体、太字、色等の文字の修飾や、フォントの種類、サイズ等)をそのまま入力画面に設定する文字列に反映してもよく、または、そうでなくてもよい。
(ステップS115)警告出力部13は、表形式データにおける帳票の領域が、あらかじめ決められた大きさを超えている旨の警告を出力する。
(ステップS116)受付部17は、入力画面の生成の処理を継続する旨の指示を受け付けたかどうか判断する。そして、継続の指示を受け付けた場合には、ステップS104に進み、そうでない場合には、入力画面の生成の処理を終了する。そのようにして入力画面の生成の処理が終了された場合には、ユーザは、表形式データにおける帳票の領域を修正し、再度、入力画面を生成する旨の指示を入力してもよい。
なお、図2のフローチャートには、スプレッドシートのアプリケーションソフトウェアを用いてユーザが帳票の表形式データを作成する処理は含まれていないが、受付部17は、表形式データに対する入力を受け付け、その受け付けた入力に応じて、記憶部11で記憶されている表形式データを変更してもよい。また、表示部18は、記憶部11で記憶されている表形式データや、スプレッドシートのアプリケーションソフトウェアで用いられるツール等を表示してもよい。また、表示部18は、生成された入力画面を表示してもよい。その表示は、生成された入力画面が適切であるかどうかのチェックのために行われてもよい。また、図2のフローチャートにおける処理の順序は一例であり、同様の結果を得られるのであれば、各ステップの順序を変更してもよい。
次に、本実施の形態による入力画面生成装置1の動作について、具体例を用いて説明する。
この具体例において、ユーザは、入力画面生成装置1において、スプレッドシートのアプリケーションソフトウェアを起動し、受付部17を介した入力等を行うことによって、図3で示される表形式データ「spreadsheet001」を生成し、その表形式データを記憶部11に保存したとする。なお、図3で示される表形式データは、物品調達依頼書の帳票に対応するものである。例えば、セルB5には、フィールド名「購入先」が設定されており、そのセルB5に隣接するセルB6に、フィールド名「購入先」に対応するフィールドが設定されている。他のフィールド及びフィールド名についても同様である。また、フィールド名「購入先」「事業所名」「氏名」「商品名(型番)」「備考(色、サイズ、メーカー等)」「納品先」に対応するフィールドには、テキストデータ型が設定されており、フィールド名「申請日」に対応するフィールドには、日付データ型が設定されており、フィールド名「数量」に対応するフィールドには、数値データ型が設定されており、フィールド名「金額」に対応するフィールドには、金額データ型が設定されているものとする。
その後、ユーザが、表形式データ「spreadsheet001」に対応する入力画面を生成する旨の指示を入力したとする。すると、その指示が受付部17によって受け付けられ、生成部14に渡される。そして、生成部14は、入力画面を生成すると判断し、検知部12に対して、表形式データ「spreadsheet001」における帳票の領域を検知する旨の指示を渡す(ステップS101)。その指示を受け取ると、検知部12は、記憶部11で記憶されている表形式データ「spreadsheet001」にアクセスし、情報が入力されたり、罫線が設定されたりしている最小の範囲を帳票の領域として検知する。この場合には、図3で示される表形式データ「spreadsheet001」において、検知部12は、行方向は2行から20行までの範囲であり、列方向はB列からG列までの範囲である帳票の領域を検知する(ステップS102)。そして、検知部12は、その検知した領域の幅と、上下方向の長さとを示す情報を警告出力部13に渡す。それらの情報を受け取ると、警告出力部13は、検知された幅と、上下方向の長さとがそれぞれあらかじめ決められている閾値TH1,TH2以下であるかどうか判断する。この場合には、両者ともに閾値以下であったとする。すると、警告出力部13は、検知された領域があらかじめ決められた大きさ以内であると判断し、その旨を生成部14に渡す(ステップS103)。
次に、生成部14は、まず、図3で示される表形式データにおいて、文字列「物品調達依頼書」の入力されているセルB2を特定する(ステップS104)。なお、そのセルB2に対応するフィールドは存在しないため(ステップS105)、生成部14は、検知部12によって検知された帳票の領域に応じた大きさを有するブランクの入力画面の情報を生成し、表形式データにおける文字列「物品調達依頼書」に対応する入力画面の位置に、文字列「物品調達依頼書」を追加する(ステップS114)。また、その際に、生成部14は、文字列のフォントの大きさや文字の修飾(この場合には下線)については、表形式データにおける設定と同じにする。
次に、生成部14は、次の文字列「購入先」の入力されているセルB5を特定する(ステップS112,S104)。この場合には、その文字列に対応するフィールドであるセルB6が存在するため(ステップS105)、生成部14は、そのフィールドに設定されているデータ型「テキストデータ型」を取得し、また、そのフィールドの幅「288ピクセル」を特定する(ステップS106,S107)。そして、生成部14は、そのフィールド(属性)に対応する属性名「購入先」、データ型「テキストデータ型」、フィールドの幅「288ピクセル」に応じた、文字数であるサイズ「20」を含むデータベーススキーマのレコードを作成する(ステップS108)。なお、文字数であるサイズは、フィールドの幅であるピクセル数を14で除算し、小数点以下を切り捨てた値である。生成部14は、特定した文字列のセルB5に応じたフィールド名と、そのセルB5に対応するフィールドのセルB6に応じた入力フィールドとを入力画面の情報に追加する(ステップS109)。また、生成部14は、セルB6のフィールドに設定されたデータ型が「テキストデータ型」であるため、そのフィールドに応じた入力フィールドについては、入力補助ツールの設定は行わない(ステップS110)。
その後、生成部14は、他のフィールド名とフィールドとの組についても同様に、データベーススキーマの設定や、入力画面における入力フィールド等の生成等を順次行う。なお、フィールド名「申請日」に対応するフィールドのデータ型は、「日付データ型」であるため、生成部14は、それに対応する入力フィールドには、カレンダーの入力補助ツールを設定する(ステップS111)。また、フィールド名「数量」「金額」に対応するフィールドのデータ型はそれぞれ「数値データ型」「金額データ型」であるため、生成部14は、それらに対応する入力フィールドには、電卓の入力補助ツールを設定する(ステップS111)。また、フィールド名「商品名(型番)」「数量」「金額」「備考(色、サイズ、メーカー等)」については、各フィールド名に対応するフィールドが9個存在するため、生成部14は、その9個の入力フィールドをそれぞれ生成する。
表形式データに含まれる各文字列に対応する処理が終了すると(ステップS112)、出力部15は、生成部14から入力画面とデータベーススキーマとを受け取り、入力画面記憶部16に蓄積する(ステップS113)。図4は、そのようにして蓄積された入力画面の情報が解釈、実行されて表示された入力画面の一例を示す図である。図4で示されるように、図3の表形式データから、その表形式データと同様の入力画面が自動的に生成されることになる。また、図5は、そのようにして蓄積されたデータベーススキーマの一例を示す図である。図5で示されるように、データベーススキーマには、各属性の属性名と、データ型と、サイズとが含まれている。また、図4のように表示された入力画面において、申請日に対応する入力フィールドがフォーカスされた場合、例えば、その入力フィールドがマウスポインタやタップによって選択された場合には、図6で示されるように、入力補助ツールであるカレンダーが表示される。そして、ユーザは、そのカレンダーを用いることによって、所望の日付を容易に入力することができる。また、図4のように表示された入力画面において、数量や金額に対応する入力フィールドがフォーカスされた場合には、図7で示されるように、入力補助ツールである電卓が表示される。そして、ユーザは、その電卓を用いることによって、所望の数値を容易に入力することができる。この電卓では、「=」のキーが選択された場合に、その計算結果の数値が入力されるものとする。
なお、図3の表形式データから、図4の入力画面を生成するのは一例であり、そうでなくてもよい。例えば、図3の表形式データにおいては、フィールド名「商品名(型番)」「数量」等に対応するフィールドがそれぞれ複数存在している。したがって、生成部14は、その複数のフィールドに対応する入力フィールドを有する図4で示されるような入力画面を作成する代わりに、図8で示される、入力フィールドを追加することができる入力画面を作成してもよい。図8の入力画面では、プラス(+)のマークを選択することによって、フィールド名「商品名(型番)」「数量」等に対応する入力フィールドが追加されるようになっている。より具体的には、プラスのマークが選択されることによって、入力フィールドを追加するモジュールが起動され、入力フィールドを追加するように構造の情報とレイアウト情報とが変更されてもよい。このようにして、ユーザは、必要な範囲において入力フィールドを増やすことができる。
次に、生成部14が、通常の入力画面に加えて、モバイル機器用の入力画面をも生成する場合について説明する。その場合には、図9で示されるように、モバイル機器用の入力画面に含めるフィールド名とフィールドとをユーザがあらかじめ選択できてもよい。例えば、生成部14は、表形式データからフィールド名とフィールドとの複数の組を特定した後に、その特定した各フィールド名や各フィールドの一覧と、それらを表示するかどうかの選択結果とを表示部18に表示してもよい。その表示は、例えば、図9で示されるようなされてもよい。そして、その表示において、ユーザが、表示の欄のチェックを外すことによって、特定のフィールド名や、特定の入力フィールドが、モバイル機器用の入力画面に含まれないように設定することができる。なお、図9では、すべてのフィールド名や入力フィールドに表示の欄のチェックが入っているため、すべてのフィールド名や入力フィールドが、モバイル機器用の入力画面に表示されることになる。また、図9の表示において、ユーザが、フィールド名等の順序を入れ替えることができるようになっていてもよい。
なお、図9の画面において、ユーザが「プレビュー」ボタンを選択すること、その時点の表示の設定に応じたモバイル機器用の入力画面が生成部14によって生成され、図示しない経路を介して、図10で示されるように、表示部18に表示されてもよい。そのようなプレビューの表示が行われることによって、モバイル機器用の入力画面の状況を知ることができ、それに応じて、モバイル機器用の設定を変更することもできるようになる。
以上のように、本実施の形態による入力画面生成装置1によれば、スプレッドシート等のアプリケーションを用いて作成された表形式データを用いて、帳票のデータの入力画面を生成できるようになる。したがって、帳票のデータの入力画面を生成するスキルのないユーザであっても、表形式データを作ることによって、それに応じた入力画面を容易に作成できるようになる。また、表形式データに設定されているデータ型に応じて、自動的に入力画面の入力フィールドにデータ型が設定されることによって、ユーザが入力画面においてそのようなデータ型の設定を手動で行う必要がなくなり、ユーザの利便性を向上させることができる。特に、入力画面等の設定を専門家でない者が行うことは困難であるが、表形式データにおいてデータ型の設定を行うことは、より容易である。したがって、このようにすることで、入力画面の入力フィールドにデータ型を設定するためのハードルを低くすることができる。また、表形式データに応じて、入力画面に対応するデータベーススキーマが自動生成されることにより、そのデータベーススキーマを手動で作成する場合と比較して、ユーザの負担を軽減することができる。また、入力画面に含まれる入力フィールドのデータ型に応じて、その入力フィールドがフォーカスされた際に出力される入力補助ツールが自動的に設定されることによって、そのような設定を手動で行う必要がなくなり、ユーザの負担が軽減されることになる。
なお、本実施の形態では、入力画面生成装置1が警告出力部13を備える場合について説明したが、そうでなくてもよい。入力画面生成装置1は、警告出力部13を備えていなくてもよい。
また、本実施の形態では、入力画面生成装置1が検知部12を備える場合について説明したが、そうでなくてもよい。入力画面生成装置1は、検知部12を備えていなくてもよい。入力画面生成装置1が検知部12を備えていない場合には、生成部14は、例えば、表形式データにおけるあらかじめ決められた領域に対応する入力画面を生成してもよい。
また、本実施の形態では、生成部14がデータベーススキーマも生成する場合について主に説明したが、そうでなくてもよい。生成部14は、データベーススキーマを生成しなくてもよい。また、生成部14は、入力画面の入力フィールドに対するデータ型の設定を行わなくてもよい。また、生成部14は、入力画面への入力補助ツールの設定を行わなくてもよい。
また、本実施の形態において、既存のデータベースを用いて、入力画面の入力フィールドに表示される選択肢を設定するようにしてもよい。その選択肢は、その入力フィールドへの入力のために表示されるものである。したがって、入力を行うユーザは、その選択肢の一つを選択することによって、容易に入力を行うことができるようになる。以下、その場合の構成について説明する。その場合には、生成部14は、既存のデータベースにアクセスできるものとする。そのデータベースは、入力画面生成装置1において記憶されていてもよく、または、入力画面生成装置1の外部に存在してもよい。後者の場合には、生成部14は、例えば、ネットワークを介してデータベースにアクセスしてもよい。そして、生成部14は、そのデータベースにアクセスし、入力画面に含まれるフィールド名に対応するフィールドが、そのデータベースに存在するかどうか確認する。その確認は、例えば、入力フィールドに対応するフィールド名と部分一致するフィールド名の設定されているフィールドが、そのデータベースに存在するかどうか判断することによって行われてもよい。例えば、入力画面に含まれるフィールド名が「氏名」である場合に、データベースに、フィールド名「氏名」や「従業員氏名」「ユーザ氏名」などのフィールド名の設定されているフィールドが存在する場合には、生成部14は、入力画面に含まれるフィールド名に対応するフィールドが、そのデータベースに存在すると判断してもよい。また、部分一致ではなく、完全一致するフィールド名の設定されているフィールドが検索されてもよい。また、入力画面に含まれるフィールド名に対応する、データベースに存在するフィールドは、ユーザによって手動で指定されてもよい。そのような手動の指定がなされた場合にも、生成部14は、入力画面に含まれるフィールド名に対応するフィールドが、そのデータベースに存在すると判断してもよい。
そして、そのようなフィールドがデータベースに存在する場合には、生成部14は、入力画面において、そのフィールド名に対応する入力フィールドに、データベースに存在する、そのフィールド名に対応するフィールドの各情報が入力のための選択肢として表示されるように設定してもよい。選択肢としての表示は、例えば、プルダウンメニューなどのセレクトボックスによってなされてもよく、選択肢のその他の表示方法によって行われてもよい。また、生成部14は、各選択肢を、既存のデータベースから読み出して入力画面の入力フィールドに設定してもよく、または、既存のデータベースのフィールドと、入力画面の入力フィールドとの対応付けのみを行ってもよい。後者の場合には、入力画面の選択肢が表示される際に、既存のデータベースの対応するフィールドから各情報が読み出されて入力フィールドに選択肢として表示されてもよい。そのようにすることによって、既存のデータベースの内容が変更された場合には、入力画面の入力フィールドに選択肢として表示される情報も自動的に変更されることになる。例えば、生成部14が、図11で示される人事データベースにアクセス可能である場合には、上記具体例において説明した入力画面を生成する際に、生成部14は、フィールド名「氏名」が、人事データベースにおけるフィールド名「従業員氏名」に部分一致するため、入力画面におけるフィールド名「氏名」の入力フィールドに、人事データベースにおけるフィールド名「従業員氏名」のフィールドが対応していると判断し、入力画面におけるフィールド名「氏名」の入力フィールドに、人事データベースにおけるフィールド名「従業員氏名」のフィールドの各情報「山田太郎」「鈴木次郎」「田中三郎」…がプルダウンメニューで表示されるように設定してもよい。そのような設定の行われた入力画面では、フィールド名「氏名」に対応する入力フィールドをユーザが指定した場合に、例えば、図12で示されるように、人事データベースに含まれている各情報が選択肢として表示されることになり、ユーザがその選択肢のいずれかを選択することによって、容易に入力フィールドへの情報の入力を行うことができるようになる。なお、氏名以外の入力フィールド、例えば、部署や役職等の入力フィールドについても、同様の処理を行うことができる。また、既存のデータベースのあるフィールドから取得した各情報に重複が存在する場合(例えば、図11の部署情報のフィールドから各情報を取得した場合など)には、ユニーク処理を行ってから選択肢としても表示を行うようにしてもよい。
また、上記実施の形態では、入力画面生成装置1がスタンドアロンである場合について説明したが、入力画面生成装置1は、スタンドアロンの装置であってもよく、サーバ・クライアントシステムにおけるサーバ装置であってもよい。後者の場合には、出力部や受付部は、通信回線を介して入力を受け付けたり、情報を出力したりしてもよい。
また、上記実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよく、または、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
また、上記実施の形態において、各構成要素間で行われる情報の受け渡しは、例えば、その情報の受け渡しを行う2個の構成要素が物理的に異なるものである場合には、一方の構成要素による情報の出力と、他方の構成要素による情報の受け付けとによって行われてもよく、または、その情報の受け渡しを行う2個の構成要素が物理的に同じものである場合には、一方の構成要素に対応する処理のフェーズから、他方の構成要素に対応する処理のフェーズに移ることによって行われてもよい。
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりした情報や、各構成要素が処理で用いる閾値や数式、アドレス等の情報等は、上記説明で明記していなくても、図示しない記録媒体において、一時的に、または長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、または、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、または、図示しない読み出し部が行ってもよい。
また、上記実施の形態において、各構成要素等で用いられる情報、例えば、各構成要素が処理で用いる閾値やアドレス、各種の設定値等の情報がユーザによって変更されてもよい場合には、上記説明で明記していなくても、ユーザが適宜、それらの情報を変更できるようにしてもよく、または、そうでなくてもよい。それらの情報をユーザが変更可能な場合には、その変更は、例えば、ユーザからの変更指示を受け付ける図示しない受付部と、その変更指示に応じて情報を変更する図示しない変更部とによって実現されてもよい。その図示しない受付部による変更指示の受け付けは、例えば、入力デバイスからの受け付けでもよく、通信回線を介して送信された情報の受信でもよく、所定の記録媒体から読み出された情報の受け付けでもよい。
また、上記実施の形態において、入力画面生成装置1に含まれる2以上の構成要素が通信デバイスや入力デバイス等を有する場合に、2以上の構成要素が物理的に単一のデバイスを有してもよく、または、別々のデバイスを有してもよい。
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、または、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現されうる。その実行時に、プログラム実行部は、記憶部や記録媒体にアクセスしながらプログラムを実行してもよい。なお、上記実施の形態における入力画面生成装置1を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、複数のセルにそれぞれ設定されたフィールドとフィールドのフィールド名との組を1以上有する帳票の表形式のデータである表形式データが記憶される記憶部にアクセス可能なコンピュータを、表形式データを用いて、入力フィールドと、入力フィールドのフィールド名とを有する帳票の入力画面を生成する生成部、生成部によって生成された入力画面を出力する出力部として機能させるためのプログラムである。
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。例えば、情報を受け付ける受付部や、情報を出力する出力部などにおけるモデムやインターフェースカードなどのハードウェアでしか実現できない機能は、上記プログラムが実現する機能には少なくとも含まれない。
また、このプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記録媒体(例えば、CD−ROMなどの光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、または分散処理を行ってもよい。
図13は、上記プログラムを実行して、上記実施の形態による入力画面生成装置1を実現するコンピュータの外観の一例を示す模式図である。上記実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムによって実現されうる。
図13において、コンピュータシステム900は、CD−ROMドライブ905を含むコンピュータ901と、キーボード902と、マウス903と、モニタ904とを備える。
図14は、コンピュータシステム900の内部構成を示す図である。図14において、コンピュータ901は、CD−ROMドライブ905に加えて、MPU(Micro Processing Unit)911と、ブートアッププログラム等のプログラムを記憶するためのROM912と、MPU911に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するRAM913と、アプリケーションプログラム、システムプログラム、及びデータを記憶するハードディスク914と、MPU911、ROM912等を相互に接続するバス915とを備える。なお、コンピュータ901は、LANやWAN等への接続を提供する図示しないネットワークカードを含んでいてもよい。
コンピュータシステム900に、上記実施の形態による入力画面生成装置1の機能を実行させるプログラムは、CD−ROM921に記憶されて、CD−ROMドライブ905に挿入され、ハードディスク914に転送されてもよい。これに代えて、そのプログラムは、図示しないネットワークを介してコンピュータ901に送信され、ハードディスク914に記憶されてもよい。プログラムは実行の際にRAM913にロードされる。なお、プログラムは、CD−ROM921、またはネットワークから直接、ロードされてもよい。また、CD−ROM921に代えて他の記録媒体(例えば、DVD等)を介して、プログラムがコンピュータシステム900に読み込まれてもよい。
プログラムは、コンピュータ901に、上記実施の形態による入力画面生成装置1の機能を実行させるオペレーティングシステム(OS)、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能やモジュールを呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム900がどのように動作するのかについては周知であり、詳細な説明は省略する。
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。