(58)【調査した分野】(Int.Cl.,DB名)
クライアント端末からの要求を受けて対応するビジネスロジックを呼び出し、処理結果を前記クライアント端末に対して応答することでサービスを提供するWebサーバシステムに対して辞書データを提供する辞書システムであって、
前記辞書データが適用される範囲について、適用範囲が広いものを上位とした階層構造を有する複数種類の辞書テーブルと、
指定された前記辞書テーブルから、指定されたキーに対応する前記辞書データを取得する辞書処理部とを有し、
前記辞書処理部は、前記辞書テーブルから前記辞書データを取得する際に、前記階層構造のいずれの階層の前記辞書テーブルを参照するかの指定を受け付け、指定された階層の前記辞書テーブルに、指定された前記キーに対応する前記辞書データが存在しない場合、さらに上位の前記辞書テーブルに対して順次、前記キーに対応する前記辞書データを有するか否かを問い合わせることを特徴とする辞書システム。
クライアント端末からの要求を受けて対応するビジネスロジックを呼び出し、処理結果を前記クライアント端末に対して応答することでサービスを提供するWebサーバシステムに対して辞書データを提供する辞書システムにおける辞書呼び出し方法であって、
前記辞書システムは、前記辞書データを呼び出すためのキー、および、前記辞書データが適用される範囲について適用範囲が広いものを上位とした複数種類の辞書テーブルからなる階層構造のうち、いずれの階層の前記辞書テーブルを参照するかの指定を受け付け、指定された階層の前記辞書テーブルから、指定された前記キーに対応する前記辞書データを取得する工程と、
指定された階層の前記辞書テーブルに、指定された前記キーに対応する前記辞書データが存在しない場合、さらに上位の前記辞書テーブルに対して順次、前記キーに対応する前記辞書データを有するか否かを問い合わせる工程とを実行することを特徴とする辞書呼び出し方法。
【発明を実施するための形態】
【0016】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。
【0017】
本発明の一実施の形態である辞書システムを有する多言語対応Webサーバシステムは、ソースコードを変更することなく複数の言語によるユーザインタフェースを提供することを可能とするため、言語環境毎に辞書を作成して保持する。当該辞書は、単に表示名称等のテキストデータを各言語によって翻訳したものを保持するだけではなく、データ辞書として項目の各種属性情報等も管理することができるものとする。すなわち、ユーザインタフェースにおいて各言語で固有となる情報を辞書データとして保持することができるものである。
【0018】
このような辞書を用いることにより、例えば、アプリケーションの開発を複数言語で同時並行的に行うことができ、また、対応言語の追加が容易となり拡張性を向上させることが可能となる。また、データ辞書として用いることで、システム内でデータ項目を標準化することができる。
【0019】
本実施の形態では、例えば、業務データベースにアクセスするCRUD(Create,Read,Update,Delete)型のWebアプリケーションプログラムにおいて、画面上の入出力項目(例えば、業務データベースからデータを取得するための検索条件の内容を指定する入力項目や、検索結果の内容を表示する出力項目)に係る内容を表示するために、標準的なコントロールオブジェクト(以下では単に“コントロール”と記載する場合がある)を直接用いるのではなく、後述するような、表示名称とコントロールの設定内容や制御処理および説明テキストの各データが一体となったパーツオブジェクトを用いるものとする。
【0020】
このパーツオブジェクトは、画面上にどのようなコントロールを表示するか(例えば、テキストコントロールのみ、(テキストコントロールと)入力フィールド、(テキストコントロールと)ドロップダウンリスト、…等)をパラメータとして指定することが可能である。また、コントロールの属性値(例えば、テキストコントロールに表示されるテキストの内容や、入力フィールドの長さ等)や、制御情報(例えば、入力データの妥当性チェックをどのように行うか等)などについても指定することができるものとし、指定された内容に従ってコントロールを表示および制御するよう実装されている。
【0021】
換言すると、パーツオブジェクトは、入力フィールドやドロップダウンリスト、テキストなどの、入出力項目のデータを取り扱う入出力コントロールと、入出力項目の名称等を表示するテキストコントロールであるラベルコントロールとを組み合わせて表示するよう構成されており、これらのコントロールの出力のパターンを指定可能であるという構成を有する。
【0022】
このとき、ラベルコントロールと入出力コントロールとを一括して整合性を持った形でコントロールの幅等の属性値を調整することができるため、ユーザが個別に整合性を持つように属性値等を指定するという煩雑な処理の必要がなく、表示されるコントロールの外観の調整を行うことができる。この調整には、例えば、表示可能領域に対して、ラベルコントロールが意図しない箇所で改行されたり、逆に意図した箇所で改行されなかったり等を防止するよう、ラベルコントロールと入出力コントロールの表示幅を一体的に調整することなどが含まれる。
【0023】
本実施の形態では、Webアプリケーションプログラムは、画面上の各入出力項目に係る内容について当該パーツオブジェクトを使用して表示するものとしてソースコードが作成されているものとする。すなわち、パーツオブジェクトを使用して間接的にコントロールを表示する(パーツオブジェクトがWebサーバシステム上での実行時に対象のコントロールを表示するHTML(HyperText Markup Language)データやスクリプト等を動的に生成する)。また、アクセスする対象のデータベースの各カラムと画面上の入出力項目とのマッピングに係る情報は、データベースの各カラムの識別情報(例えばカラム名称)と、対応するパーツオブジェクトの識別情報(例えばHTMLのID属性値)とのマッピング情報としてソースコード上に保持する。
【0024】
さらに、本実施の形態では、各パーツオブジェクトにおいてラベルコントロールに表示するテキスト、および入出力コントロールの属性値や制御処理に係る情報などについて、後述するように、一部を除き、ソースコード上で直接指定するのではなく、パーツオブジェクトのIDもしくは対応するデータベースのカラム名称等の識別情報と関連付けられた辞書データとして外出しにして保持するよう構成する。この辞書データの内容を言語環境毎に定義しておき、実行時に対象の言語環境に対応する辞書データを参照することで、いったん生成されたソースコードに対して変更を加えずに、パーツオブジェクトにより画面上に表示されるコントロールの外観や属性等を言語環境に応じて動的に変更可能とする。
【0025】
また、上記の辞書データへのアクセスなど、パーツオブジェクトが共通して有する機能を継承元のクラスに実装しておき、開発時には当該クラスを継承して各パーツオブジェクトを作成するようにすることで、開発者がパーツオブジェクトの機能を都度実装することなくWebアプリケーションプログラムを開発できるようにしている。
【0026】
<システム構成>
図1は、本発明の一実施の形態である多言語対応Webサーバシステムの構成例について概要を示した図である。多言語対応Webサーバシステム100は、例えば、サーバ機器やクラウドコンピューティング環境での仮想サーバなどのコンピュータ機器により構成され、図示しないOSやDBMS(DataBase Management System)、Webサーバプログラムなどのミドルウェアに加え、ユーザが作成したソースコード101もしくはそこから呼び出されるライブラリやオブジェクト等のソフトウェアプログラムにより実装される要求処理部110、辞書システム120、ビジネスロジック130、および応答処理部140などの各部を有する。
【0027】
また、多言語対応Webサーバシステム100は、インターネット等のネットワーク300を介して接続されるクライアント端末200上の図示しないWebブラウザ等のプログラムからの要求に対して、ビジネスロジック130により業務データベース(DB)131にアクセスして処理を行い、クライアント端末200に対してHTMLデータ102を出力して応答することによってサービスを提供する。
【0028】
要求処理部110は、クライアント端末200からの要求を受けて、対応するソースコード101に基づいてコンテンツ(ビジネスロジック130)を呼び出す機能を有し、ソフトウェアプログラムにより実装されるID変換部111、および入力チェック部112などの各部を有する。ID変換部111は、要求メッセージに含まれる、画面上の入力項目に対応するパーツオブジェクトの識別情報(ID)を、ソースコード101に保持されたマッピング情報に基づいて、入出力項目に対応する業務DB131のカラムの識別情報(カラム名称等)に変換する機能を有する。
【0029】
このマッピング情報は、画面上に表示されるパーツオブジェクトの識別情報(例えばHTMLのID属性値)と、アクセスする対象の業務DB131の各カラムの識別情報(カラム名等)との対応を保持する。これにより、後述するように、ソースコード101において画面上に配置された各パーツオブジェクトは、まずID変換部111によって自身のIDに対応するカラム名称を取得した後、当該カラム名称をキーとして、業務DB131へのアクセスや、後述する辞書テーブル122からの辞書データの取得等の後続の処理を行うことができる。
【0030】
従って、クライアント端末200に応答するHTMLデータ102上では、各パーツオブジェクト(によって表示されるコントロール)において、対応する業務DB131のカラム名称をキー等の情報として直接指定する必要がなく、自身のIDをキー等の情報とすることができるため、実際のカラム名称をHTMLデータ102上から隠蔽してセキュリティの強化を図ることが可能である。なお、このような変換を行わず、HTMLデータ102上で各パーツオブジェクト(によって表示されるコントロール)において対応する業務DB131のカラム名称をキー等の情報として直接指定するようにしてもよい。
【0031】
入力チェック部112は、要求メッセージに含まれる、画面上のパーツオブジェクト(によって表示されるコントロール)を介して指定された入力項目のデータの内容について一般的な妥当性チェックを行う機能を有する。妥当性チェックの種類としては、例えば、文字数や文字タイプ(数字やアルファベット、かな、全半角など)、使用可能文字の制限、日時や各種コード値などのフォーマットチェックなどが考えられる。
【0032】
妥当性チェックの内容は言語環境によって異なるものとなり得る。従って、本実施の形態では、入力チェック部112において言語毎のバリエーションも考慮した複数パターンの妥当性チェックのタイプを実装しておき、対象の入力項目についていずれのタイプを用いるかを、言語環境に応じて選択・決定するものとする。ここでは、後述する辞書システム120を介して、対象の言語の辞書テーブル122にアクセスし、対象の入力項目に対応する辞書データの内容から妥当性チェックのタイプの情報を取得して決定する。
【0033】
辞書システム120は、例えば、辞書処理部121、およびデータベースやファイルテーブル等により実装される辞書テーブル122を有する。辞書処理部121は、指定された言語の辞書テーブル122から、指定されたキー(本実施の形態では、例えば、対象の入出力項目(パーツオブジェクト)に対応する業務DB131のカラム名称)に対する辞書データを取得して出力する機能を有する。言語の指定は、例えば、クライアント端末200からの要求メッセージに含まれるWebブラウザの言語環境から取得してもよいし、多言語対応Webサーバシステム100上で稼働するWebサイト毎に言語を定義しておき、この値を取得してもよい。
図1の例では、日本語(“ja”)、英語(“en”)、中国語(“zh”)の各言語の辞書テーブル122を保持していることを示している。
【0034】
この辞書テーブル122は、後述するように、適用範囲や管理主体に応じた階層構造を有しており、これにより、Webサイト毎や画面毎などに異なる辞書テーブル122を最小限のリソースで実装することを可能としている。
【0035】
辞書テーブル122における辞書データの内容やフォーマットは特に限定されない。本実施の形態では、簡易な手法として、例えば後述するように、画面を介して業務DB131の対象のカラムへのデータの入出力処理を行うのに必要な種々のデータ(入出力を行うためのパーツオブジェクトの属性値や制御のために必要なパラメータ等)を所定の順序でカンマ区切り等により指定するものとする。具体的には、例えば、対応するパーツオブジェクトにおいてラベルコントロールを表示する際の内容である表示名称や、入出力コントロールとして入力フィールドを表示する際の長さ(文字数)、妥当性チェックの種別やIMEのモードなどの制御処理の内容に係る指定、出力データをテーブルに一覧表示する際の短縮されたテキストである短縮表示名称および表示幅、ドロップダウンリスト等により表示する際の値リストなどが考えられる。
【0036】
なお、
図1の例では、辞書システム120を多言語対応Webサーバシステム100上に実装する構成としているが、これに限らず、多言語対応Webサーバシステム100とは別のサーバ機器上に独立して構築してもよい。
【0037】
ビジネスロジック130は、業務DB131を利用して業務アプリケーションとしての処理を行う機能を有する。本実施の形態では、上述したように、業務DB131に対するCRUD型アプリケーションを対象とするが、特にこれに限定されるものではない。
【0038】
応答処理部140は、ソースコード101の内容に基づくビジネスロジック130等の処理結果に基づいてHTMLデータ102を生成し、クライアント端末200に対して応答する機能を有し、ソフトウェアプログラムにより実装される翻訳部141、および表示部142などの各部を有する。翻訳部141は、応答に含まれる各出力項目について、対応するパーツオブジェクトを対象の言語環境の下で表示するためのラベルコントロールのテキストや入出力コントロールの属性値、制御情報などのパラメータ値を取得する。ここでは、辞書システム120を介して対応する言語の辞書テーブル122にアクセスして、対象の出力項目(パーツオブジェクト)に対応する辞書データから表示名称や属性値等の各種パラメータ値を取得する。
【0039】
表示部142は、翻訳部141が取得した、各パーツオブジェクトについてのラベルコントロールのテキストや入出力コントロールの属性値、制御情報などのパラメータ値に基づいて、各パーツオブジェクトにより表示されるコントロールが配置された応答画面のHTMLデータ102を生成する機能を有する。
【0040】
<画面表示処理>
図2は、CRUD型アプリケーションにおいてパーツオブジェクトにより対応するカラムの入出力項目を画面上に表示する際の処理の例について概要を示した図である。
図2の例では、日本語環境において、業務DB131からデータを読み出す際の検索条件を入力する画面において、“顧客名”を指定する入力フィールドを表示する場合の例を抜粋して示している。
【0041】
図の上段に示しているWebアプリケーションプログラムのソースコード101では、“顧客名”を指定する入力フィールドを表示するためにパーツオブジェクト103を呼び出している。具体的には、まず、ソースコード101上に保持されているマッピング情報(
図2の例では、array()により対応関係を保持している)からID(“A01”)に対応するカラム名称(“customer_name”)の情報を取得する。
【0042】
その後、例えば、パーツオブジェクト103の機能を実装したクラスから継承したサブクラスについてインスタンスを作成する形で呼び出す(“CF_itemDic();”)。
図2の例では、パラメータの一部として、呼び出す辞書テーブル122のタイプ(“共通辞書”)、表示する入出力コントロールのタイプ(“入力フィールド”)、HTMLのID属性値(“A01”)などを指定して呼び出した状態を簡略化して示している。なお、HTMLのID属性値(“A01”)は、マッピング情報によりカラム名称(“customer_name”)に動的に変換される。
【0043】
このようなコードにより呼び出されたパーツオブジェクト103は、データとして、少なくとも表示名(ラベルコントロールのテキスト)と表示する入出力コントロールの内容に係る情報を含むデータを保持する。
図2に示すように、さらに説明テキストなどの他の情報を保持していてもよい。
図2の例では、パーツオブジェクト103の上記の3つの情報のうち、コントロールについては、ソースコード101において“入力フィールド”がパラメータとして指定されているため、これが設定される。
【0044】
呼び出されたパーツオブジェクト103は、さらに、所定の関数やメソッド等により辞書システム120の辞書処理部121を介して日本語環境(“ja”)における対象の辞書テーブル122(“共通辞書”)にアクセスして、カラム名称(“customer_name”)に対応する辞書データ(本実施の形態では“顧客名”、40文字、20文字、…などの複数の値の集合)を取得する。
【0045】
図2の例では、辞書テーブル122の辞書データとして、上から順に、名称(ラベルコントロールに表示するテキスト)、入力フィールドの場合の長さ(半角時の文字数)、入力フィールドの場合の最大長さ(文字数)、入力データの妥当性チェックのタイプ、IMEの初期モード、説明コメント、テーブルに一覧表示する場合のテキスト(表示名)、およびテーブルに一覧表示する場合の表示幅(ピクセル値)などの情報を保持するものとしている。なお、これらの辞書データを取得する際の出力フォーマットとしては、例えば、これらの値をカンマ等で区切った一連の文字列としてもよいし、連想配列等のアクセスしやすいデータとしてもよい。
【0046】
辞書テーブル122については、処理効率を考慮した場合、初期処理もしくは最初のアクセス時にメモリ上に辞書データの内容を展開するのが望ましい。この場合、全ての辞書データを展開するとメモリ使用量を圧迫したり、展開処理に時間を要したり等、却って処理効率が低下する場合がある。従って、実装上は、必要な時に必要な範囲の辞書データをメモリ上に展開できるようにするのが望ましい。
【0047】
そこで、本実施の形態では、適用範囲や管理主体が異なる複数の辞書テーブル122からなる階層構造を有し、これらを適宜選択して使用する構成をとる。
図3は、辞書テーブル122の階層構造の例について概要を示した図である。階層構造では、上位から順に、例えば、多言語対応Webサーバシステム100上で稼働するシステムやアプリケーションの言語環境毎に共通の辞書テーブル122である複数の共通辞書122_z、指定されたWebサイト内でのみ共通の複数のサイト辞書122_s、サブシステム内でのみ共通の複数のライブラリ辞書122_l、および画面単位での複数のコントローラ辞書122_cなどの、適用範囲や管理主体が異なる複数種類の辞書テーブル122を有するものとする(なお、階層構造の一部を抽出して示しており、他の部分は省略している)。
【0048】
この場合、例えば、下位層のコントローラ辞書122_cなどの適用範囲の狭い辞書を参照して該当する辞書データが得られなかった場合に、ライブラリ辞書122_l→サイト辞書122_s→共通辞書122_zと順に上位の(適用範囲が広い)辞書テーブル122に遡って参照できるようにしてもよい。このとき、階層毎に遡って参照を行うことの許否を定義できるようにしてもよいし、階層毎に辞書テーブル122の参照自体の許否を定義できるようにしてもよい。
【0049】
例えば、図中の“コントローラ辞書a”を参照して該当する辞書データが得られなかった場合に、ライブラリ辞書122_lに遡って参照することが許可されている場合は、上位の“ライブラリ辞書c”を参照する。このとき、対象のWebアプリケーションにおいてライブラリ辞書122_lの使用が許可されていない場合は、辞書データが得られなかったものとして、ライブラリ辞書122_lにおいてサイト辞書122_sに遡って参照することが許可されている場合は、上位の“サイト辞書a”を参照する。このように階層構造を遡っていっても最終的に辞書データが得られなかった場合は、デフォルト値を用いるようにしてもよいし、エラーとしてもよい。
【0050】
このような構成を採り、辞書テーブル122を使い分けることにより、メモリ上に展開する辞書データを必要なものだけの適切なサイズに維持することができる。また、共通辞書122_z以外に、例えば、サイト単位に共通の辞書データを設定できるサイト辞書122_sを有することで、Webサイトのオーナーや管理者は、他のサイトでの設定内容に関わらず、当該Webサイト内だけで固有の辞書データを自由かつ柔軟に作成することができる。また、このような階層構造を採ることにより、下位層の辞書テーブル122では上位層の辞書テーブル122に対する差分のみ定義しておけばよく、開発生産性を向上させることも可能である。
【0051】
図2に戻り、パーツオブジェクト103は、取得した辞書データから必要なデータを抽出して、コントロールを表示したり制御したりする際のパラメータとして設定する。例えば、入出力コントロールとして入力フィールドを表示する場合の属性値として、辞書データから取得したフィールドの長さを設定するとともに、妥当性チェックのタイプやIMEの初期モードなどの値、説明テキストの内容などを設定する。なお、入力データの妥当性チェックや、IMEのモード設定などの入出力コントロールの制御に係る処理は、入力チェック部112や表示部142の機能であるが、具体的な実装としては、例えば、パーツオブジェクト103の継承元のクラスにメソッドとして定義しておくなど、パーツオブジェクト103が有する、もしくはパーツオブジェクト103が呼び出すことができる機能として実装しておくものとする。
【0052】
これにより、
図2の下段の画面例に示すように、実行時に“顧客名”を指定するための入力フィールドのコントロールを表示するよう、パーツオブジェクト103がHTMLデータ102を生成することができる。このとき、例えば、パーツオブジェクト103の説明テキストの情報を当該入出力項目についてのヘルプ情報等として用いることができる。
【0053】
なお、入力フィールドを表示する場合、入力フィールドのコントロールだけを表示したのでは何を入力すべきかが不明であるため、本実施の形態では、
図2に示すように、当該パーツオブジェクト103に対応する入出力項目の表示名を表示するテキストコントロール(“顧客名”)を入力フィールドに隣接させてラベルとして表示する(ラベルコントロール)。当該テキストは、パーツオブジェクト103の保持データにおける表示名の情報、すなわちパーツオブジェクト103が辞書テーブル122から取得した辞書データの名称の値(“顧客名”)を設定する。
【0054】
このようなHTMLデータ102の生成に係る処理は、表示部142等の機能であるが、具体的な実装としては、例えば、パーツオブジェクト103の継承元のクラスにメソッドとして定義しておくなど、パーツオブジェクト103が有する、もしくはパーツオブジェクト103が呼び出すことができる機能として実装しておくものとする。なお、ここでは、上述したように、表示するラベルコントロールや入出力コントロール、および説明テキストの3つの要素について、一括して整合性を持った形で外観等に係る属性値を調整するものとする。
【0055】
このように、本実施の形態では、入出力項目をパーツオブジェクト103により表示するHTMLデータ102を生成することができる。従って、本実施の形態におけるCRUD型アプリケーションは、業務DB131の各カラムに対応する入出力項目としてパーツオブジェクト103を所定のルールに従って画面上に配置し、標準的な機能や動作の実装と組み合わせるようソースコード101を作成することで実現することができる。また、アプリケーションプログラムの開発支援システム等として、このようなソースコード101を自動的に生成する機能を実装することも可能である。
【0056】
例えば、業務DB131へのエントリーの登録(C:Create)を行うアプリケーションとしては、業務DB131の各カラムに対して登録するデータを指定する入力フィールドを画面上に表示するためのパーツオブジェクト103を、業務DB131のカラムの並び順に従って配置するようソースコード101を作成する。このとき、必要に応じて画面表示するコントロールのIDとカラムの名称との対応関係をマッピング情報として保持しておく。さらに、標準的な機能として業務DB131へのエントリーの登録を実行するための“登録”ボタンや“キャンセル”ボタンなどを配置する。さらに、言語環境毎の辞書テーブル122に、各パーツオブジェクト103についてコントロールを表示する際に用いる属性値や制御情報などの情報を辞書データとして保持しておく。このとき、各項目について特に指定がされない場合はそれぞれデフォルト値により設定する。
【0057】
また、例えば、業務DB131に対する検索(R:Read)を行うアプリケーションとしては、上記と同様に、業務DB131を検索するための条件を指定する入力フィールドを画面上に表示するためのパーツオブジェクト103を配置するようソースコード101を作成する。このとき、業務DB131の対象テーブルの全カラムについて検索条件として指定可能とすると過剰になることから、例えば、暫定的に先頭の5つのカラムについてだけ入力フィールドを表示するなどの簡略化を行ない、後から変更可能としてもよい。また、必要に応じて画面表示するコントロールのIDとカラムの名称との対応関係をマッピング情報として保持しておく。さらに、標準的な機能として業務DB131のエントリーの検索を行うための“検索”ボタンなどを配置する。
【0058】
また、例えば、検索条件を入力する領域の下部に、検索結果を表示するためのテーブル(表)コントロールを自動的に配置する。ここでは、例えば、テーブルコントロールのオブジェクトの項目定義配列に、業務DB131の各カラムに対応するパーツオブジェクト103の呼び出しに相当する内容を設定する。これにより、テーブルコントロールの各列に業務DB131の各カラムの内容が表示されるよう、表示部142もしくはパーツオブジェクト103を実装することが可能である。
【0059】
この状態で、ソースコード101の内容を変更せずに、Webアプリケーションを他の異なる言語に対応させるには、対象の言語の辞書テーブル122を用意すればよい。
図4は、パーツオブジェクト103により表示されるコントロールの外観等を他の言語に変更する際の処理の例について概要を示した図である。ここでは、
図2の例に示したソースコード101の内容は変更せずに、新たに英語環境(“en”)の辞書テーブル122を作成している。
【0060】
これにより、当該Webアプリケーションの実行時に、パーツオブジェクト103が英語環境(“en”)での対象の辞書テーブル122における当該エントリーの内容を参照し、その内容に応じて
図4の下段の画面例に示すように表示名としてのラベルコントロールのテキストデータだけでなく、入出力コントロールの属性等(
図4の例では入力フィールドの長さ(幅)や入力データの妥当性チェックの内容、IMEのモード等)についても英語環境に動的に変更することができる。
【0061】
また、
図5は、パーツオブジェクト103により表示されるコントロールの外観等について変更する際の処理の例について概要を示した図である。ここでは、
図2の例に示したソースコード101の内容に簡易な変更を加えている。具体的には、パーツオブジェクト103の呼び出しの際に、表示する入出力コントロールのタイプのパラメータを“入力フィールド”から“ドロップダウンリスト”に変更している。また、辞書テーブル122には、辞書データの末尾にドロップダウンリストに設定される値リストの内容(“田中:1,山本:2,…”)を追加定義している。
【0062】
これにより、当該Webアプリケーションの実行時に、パーツオブジェクト103が、指定された種類の入出力コントロールにより入出力項目の表示内容を変更するようHTMLデータ102を生成することができる。
図5の例では、同一のパーツオブジェクト103について、入出力コントロールを入力フィールドからドロップダウンリストに変更しているが、例えば、入出力コントロールのタイプのパラメータを“テキスト”と設定した場合は、パーツオブジェクト103は、値をテキストとして表示する。ラベルコントロールと入出力コントロールのいずれか一方のみ表示することも可能である。また、パラメータを“隠す”と設定した場合は、内部的にデータは保持するものの、画面表示上には当該入出力項目についてはコントロールを何も表示しないようにする。
【0063】
以上に説明したように、本発明の一実施の形態である辞書システム120を有する多言語対応Webサーバシステム100によれば、Webアプリケーションプログラムのユーザインタフェースにおいて各言語で固有となる情報(入出力項目の表示名称等のテキストデータだけでなく、各種属性情報等のデータ項目の値も含む)を、辞書データとして言語環境毎の辞書テーブル122に保持する。また、Webアプリケーションは、入出力項目を画面上に表示する際に、標準的なコントロールを直接使用するのではなく、パーツオブジェクト103を使用して間接的に標準的なコントロールを表示するものとする。
【0064】
このパーツオブジェクト103が、言語環境に対応した辞書テーブル122から対応する辞書データを取得し、その内容に基づいて画面上に入出力項目を表示するためのコントロールの外観や属性、制御処理などを含むユーザインタフェースを動的に変更する。これにより、アプリケーションのソースコード101を変更することなく、言語環境に応じてユーザインタフェースを動的に変更することが可能となる。
【0065】
また、辞書テーブル122を、適用範囲や管理主体に応じた階層構造として構成し使い分けることにより、メモリ上に展開する辞書データを必要な分だけの適切なサイズに維持することが可能となる。また、例えば、サイト毎に共通なサイト辞書122_sを有することで、Webサイトのオーナーや管理者は、他のサイトでの設定内容に関わらず、当該Webサイト内だけで固有の辞書データを自由かつ柔軟に作成することが可能となる。また、このような階層構造を採ることにより、下位層の辞書テーブル122では上位層の辞書テーブル122に対する差分のみ定義しておけばよく、例えば、基本的なサブシステム単位の定義に対して特定画面での例外設定を容易とするなど、開発生産性や管理の容易性を向上させることも可能である。以上のような効果により、SaaS(Software as a Service)のようなサービスの提供形態に対応することも容易となる。
【0066】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、本実施の形態では、標準的なCRUD型のWebアプリケーションを対象にしているがこれに限らない。ユーザが、辞書テーブル122とパーツオブジェクト103を組み合わせた形で、ユーザインタフェースやビジネスロジックなどの動作内容も含めて構築した独自のアプリケーション(Webアプリケーションに限らず、クライアント/サーバ型やスタンドアロン型などであってもよい)に対して、同様の概念により、言語環境毎の辞書テーブル122を定義して多言語対応することが可能である。
【0067】
また、本実施の形態では、言語環境に対応して共通辞書122_zを有するものとしているが、これに限らず、例えば、地域や業種等によって名称や意味が異なるデータ項目について、個別に共通辞書122_zを定義するというような使用方法であってもよい。また、本実施の形態では、辞書テーブル122において、データ辞書として入出力項目の各種属性情報等を保持する場合を例としているが、表示名称等のテキストデータについての各言語での翻訳テキストを保持する場合でも、階層構造を採ることよって上記と同様の効果を得ることができる。
【0068】
また、本実施の形態では、パーツオブジェクト103が、辞書システム120を呼び出して辞書テーブル122にアクセスする機能(メソッド)を有する構成とすることで、画面上の各コントロールが辞書テーブル122にアクセスするための共通のインタフェースを提供して開発生産性を向上させているが、辞書システム120の利用という観点では、このような構成に限られない。パーツオブジェクト103を用いずに、画面上の各コントロールについて、ソースコード101上で直接辞書システム120を呼び出して辞書データを取得するよう記述することも可能である。