(58)【調査した分野】(Int.Cl.,DB名)
クライアント端末からの要求を受けて対応するビジネスロジックを呼び出す要求処理部と、前記ビジネスロジックによる処理結果を前記クライアント端末に対して応答する応答処理部とを有し、
複数の種類のデバイスからなる前記クライアント端末に対してサービスを提供するアプリケーションプログラムを稼働させるマルチデバイス対応Webサーバシステムであって、
さらに、前記クライアント端末からの要求に基づいて、前記クライアント端末のデバイスの種類に係る情報を取得するデバイス取得部を有し、
前記応答処理部は、ソースコードに含まれる、前記クライアント端末の画面上に表示する1つ以上の入出力項目についてのラベルコントロールのテキストを示す表示名の情報と前記入出力項目を入力もしくは出力するために表示する入出力コントロールに係る情報とを少なくとも有するパーツオブジェクトについて、前記デバイス取得部により取得した前記クライアント端末のデバイスの種類に応じた、前記パーツオブジェクトの承継元の上位クラスに実装された、前記ラベルコントロールおよび/または前記入出力コントロールを表示する際の第1の調整内容に基づいて、前記クライアント端末の画面上に対応する前記ラベルコントロールおよび/または前記入出力コントロールを表示させるHTMLデータを生成することを特徴とするマルチデバイス対応Webサーバシステム。
複数の種類のデバイスからなるクライアント端末からの要求を受けて対応するビジネスロジックを呼び出し、前記ビジネスロジックによる処理結果を前記クライアント端末に対して応答するアプリケーションプログラムを稼働させるWebサーバシステムにおけるマルチデバイス対応方法であって、
前記Webサーバシステムが、前記クライアント端末からの要求に基づいて、前記クライアント端末のデバイスの種類に係る情報を取得する第1の手順と、
前記Webサーバシステムが、ソースコードに含まれる、前記クライアント端末の画面上に表示する1つ以上の入出力項目についてのラベルコントロールのテキストを示す表示名の情報と前記入出力項目を入力もしくは出力するために表示する入出力コントロールに係る情報とを少なくとも有するパーツオブジェクトについて、前記第1の手順により取得した前記クライアント端末のデバイスの種類に応じた、前記パーツオブジェクトの承継元の上位クラスに実装された、前記ラベルコントロールおよび/または前記入出力コントロールを表示する際の調整内容に基づいて、前記クライアント端末の画面上に対応する前記ラベルコントロールおよび/または前記入出力コントロールを表示させるHTMLデータを生成する第2の手順とを有することを特徴とするWebサーバシステムにおけるマルチデバイス対応方法。
【背景技術】
【0002】
IT技術の進歩により携帯型端末の性能が大きく向上したことから、インターネット等を介したWebサイトへのアクセスは、従来のPC(Personal Computer)等に限らず、携帯電話やスマートフォン、タブレット型端末など種々のデバイスから行われるようになっている。これらのデバイスは、Webサイトの画面を表示するためのディスプレイのサイズや解像度がそれぞれ異なる。そこで、WebサイトやWebアプリケーションの構築においては、開発・保守の負荷増大を防止しつつ、これら複数のデバイスに対して画面表示を最適化するマルチデバイス対応が考慮される。
【0003】
このようなマルチデバイス対応の手法としては、例えば、従来から行われているものとして、同一内容について各デバイスのディスプレイのサイズや解像度毎にそれぞれ調整・最適化された個別のコンテンツを予め用意しておき、ユーザが使用するデバイス等に応じてこれらを自動もしくは手動で選択して使用するという手法がある。また、同一のソースコードについてこれを変更することなく、アプリケーションプログラムにおいてコンテンツを動的に変更・生成することで複数のデバイスに対応することも検討されている。
【0004】
コンテンツを動的に変更することに関連して、例えば、特開2001−51821号公報(特許文献1)に記載された技術では、ページテンプレートに、表示エリア特定情報と、表示属性とをパラメータとして有しているサーブレットを定義し、サーブレットがウエブサーバで認識されると、表示エリア特定情報に関連付けられている複数のパーツBeanを特定する。パーツは、その表示エリアに埋め込むオブジェクトのイメージデータ、リンク先のURL(Uniform Resource Locator)情報がプロパティとして設定され、また、スケジュール情報等の表示条件情報が関連付けられている。表示エリア特定情報に関連付けられている複数のパーツBeanのそれぞれで、表示条件が調べられ、表示条件を満たすプロパティであるリンク情報をもとに、表示エリアに埋めこむオブジェクトを形成するイメージデータや、リンク先のURL情報を取得し、HTMLを生成する。これにより、サーバプログラムの修正をすることなく、ページテンプレートに埋めこむコンテンツの内容をダイナミックに変更することを可能とする。
【0005】
また、例えば、特開2009−76099号公報(特許文献2)に記載された技術では、サービス提供装置は、表示装置と、通信部と、通信部を介してサービス提供のための実行コードを取得する取得部と、入手した実行コードを記憶する実行コード記憶部と、実行コードの実行時に表示される画面の構成を定める画面構成情報を記憶する画面構成情報記憶部とを有する。また、サービスの提供時までに、サービスの提供に必要な実行コード及び画面構成情報が実行コード記憶部及び画面構成情報記憶部に記憶されているよう、各部を管理し、サービスの提供の指示を受けたことに応答して、実行コード記憶部に記憶された実行コードを、画面構成情報記憶部に記憶された画面構成情報を用いて実行する管理部とを有する。これにより、サービス提供のために必要なときに、最新の実行コードまたは画面構成情報を入手し、装置内に記憶された実行コード及び画面構成情報を効果的に管理しながら、最新のサービスを提供することを可能とする。
【0006】
また、例えば、特開2002−132646号公報(特許文献3)に記載された技術では、ウェブプロキシサーバは、クライアント機器によって生成されるクライアント要求を処理することによりクライアントタイプを決定し、クライアント要求において識別されるウェブコンテンツを検索する。また、ウェブコンテンツと特定のクライアントタイプとに関連する1つまたは複数のオーグメンテーションファイルを検索して、これによりウェブコンテンツを変更し、変更したウェブコンテンツをクライアント機器に配信する。これにより、ウェブプロキシサーバの所有または制御をする必要なく、効率的に異なるクライアントをサポートするために、ウェブコンテンツを変換・補完することを可能とする。
【発明を実施するための形態】
【0019】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。
【0020】
本発明の一実施の形態であるマルチデバイス対応Webサーバシステムは、ソースコードを変更することなく複数種類のデバイスからなるクライアント端末に対してユーザインタフェースを提供することを可能とする。ここでは、画面自体および/または画面上に表示するコントロールを表示する機能において、後述するように、表示するデバイス毎に入出力項目の表示方法を調整し、最適化して表示することができる機能を有している。これにより、例えば、アプリケーションの開発を複数のデバイスを対象として同時並行的に行うことができ、また、対応するデバイスの追加が容易となり拡張性を向上させることが可能となる。
【0021】
本実施の形態では、例えば、業務データベースにアクセスするCRUD(Create,Read,Update,Delete)型のWebアプリケーションプログラムにおいて、画面上の入出力項目(例えば、業務データベースからデータを取得するための検索条件の内容を指定する入力項目や、検索結果の内容を表示する出力項目)に係る内容を表示するために、標準的なコントロールオブジェクト(以下では単に“コントロール”と記載する場合がある)を直接用いるのではなく、後述するような、表示名称とコントロールの設定内容や制御処理および説明テキストの各データが一体となったパーツオブジェクトを用いるものとする。
【0022】
このパーツオブジェクトは、画面上にどのようなコントロールを表示するか(例えば、テキストコントロールのみ、(テキストコントロールと)入力フィールド、(テキストコントロールと)ドロップダウンリスト、…等)をパラメータとして指定することが可能である。また、コントロールの属性値(例えば、テキストコントロールに表示されるテキストの内容や、入力フィールドの長さ等)や、制御情報(例えば、入力データの妥当性チェックをどのように行うか等)などについても指定することができるものとし、指定された内容に従ってコントロールを表示および制御するよう実装されている。
【0023】
換言すると、パーツオブジェクトは、入力フィールドやドロップダウンリスト、テキストなどの、入出力項目のデータを取り扱う入出力コントロールと、入出力項目の名称等を表示するテキストコントロールであるラベルコントロールとを組み合わせて表示するよう構成されており、これらのコントロールの出力のパターンを指定可能であるという構成を有する。
【0024】
このとき、ラベルコントロールと入出力コントロールとを一括して整合性を持った形でコントロールの幅等の属性値を調整することができるため、ユーザが個別に整合性を持つように属性値等を指定するという煩雑な処理の必要がなく、表示されるコントロールの外観の調整を行うことができる。この調整には、例えば、表示可能領域に対して、ラベルコントロールが意図しない箇所で改行されたり、逆に意図した箇所で改行されなかったり等を防止するよう、ラベルコントロールと入出力コントロールの表示幅を一体的に調整することや、ラジオボタンなどデバイスやOS(Operating System)等によって外観が異なる入出力コントロールについて、ラベルコントロールと一体的に表示位置や幅等を調整することなどが含まれる。
【0025】
本実施の形態では、Webアプリケーションプログラムは、画面上の各入出力項目に係る内容について当該パーツオブジェクトを使用して表示するものとしてソースコードが作成されているものとする。すなわち、パーツオブジェクトを使用して間接的にコントロールを表示する(パーツオブジェクトがWebサーバシステム上での実行時に対象のコントロールを表示するHTML(HyperText Markup Language)やスクリプト等を動的に生成する)。また、アクセスする対象のデータベースの各カラムと画面上の入出力項目とのマッピングに係る情報は、データベースの各カラムの識別情報(例えばカラム名称)と、対応するパーツオブジェクトの識別情報(例えばHTMLのID属性値)とのマッピング情報としてソースコード上に保持する。
【0026】
さらに、本実施の形態では、各パーツオブジェクトにおいてラベルコントロールに表示するテキスト、および入出力コントロールの属性値や制御処理に係る情報などについて、後述するように、一部を除き、ソースコード上で直接指定するのではなく、パーツオブジェクトのIDもしくは対応するデータベースのカラム名称等の識別情報と関連付けられた辞書データとして外出しにして保持するよう構成する。また、パーツオブジェクトの機能を実装したクラスの継承元の上位クラスにおいて、コントロールの表示方法を上述したようにデバイス毎に最適化する処理を実装するとともに、画面全体を描画する機能を有するオブジェクトにおいて、個別のコントロールではなく画面全体の表示方法をデバイス毎に最適化する処理を実装する。
【0027】
これらにより、いったん生成されたソースコードに対して変更を加えずに、画面の表示方式や、パーツオブジェクトにより画面上に表示されるコントロールの外観や属性等をクライアント端末のデバイスに応じて動的に変更可能とする。
【0028】
<システム構成>
図1は、本発明の一実施の形態であるマルチデバイス対応Webサーバシステムの構成例について概要を示した図である。マルチデバイス対応Webサーバシステム100は、例えば、サーバ機器やクラウドコンピューティング環境での仮想サーバなどのコンピュータ機器により構成され、図示しないOSやDBMS(DataBase Management System)、Webサーバプログラムなどのミドルウェアに加え、ユーザが作成したソースコード101もしくはそこから呼び出されるライブラリやオブジェクト等のソフトウェアプログラムにより実装される要求処理部110、辞書処理部120、ビジネスロジック130、および応答処理部140などの各部を有する。また、データベースやファイルテーブル等により実装される辞書テーブル121を有する。
【0029】
また、マルチデバイス対応Webサーバシステム100は、インターネット等のネットワーク300を介して接続されるクライアント端末200上の図示しないWebブラウザ等のプログラムからの要求に対して、ビジネスロジック130により業務データベース(DB)131にアクセスして処理を行い、クライアント端末200に対してHTMLデータ102を出力して応答することによってサービスを提供する。なお、本実施の形態では、クライアント端末200として例えば、PCや、携帯電話、スマートフォン、タブレット型端末など、ディスプレイのサイズや解像度、タッチパネルの有無などが異なる複数種類のデバイスが利用可能である。
【0030】
要求処理部110は、クライアント端末200からの要求を受けて、対応するソースコード101に基づいてコンテンツ(ビジネスロジック130)を呼び出す機能を有し、ソフトウェアプログラムにより実装されるID変換部111、およびデバイス取得部112などの各部を有する。ID変換部111は、要求メッセージに含まれる、画面上の入力項目に対応するパーツオブジェクトの識別情報(ID)を、ソースコード101に保持されたマッピング情報に基づいて、入出力項目に対応する業務DB131のカラムの識別情報(カラム名称等)に変換する機能を有する。
【0031】
このマッピング情報は、画面上に表示されるパーツオブジェクトの識別情報(例えばHTMLのID属性値)と、アクセスする対象の業務DB131の各カラムの識別情報(カラム名等)との対応を保持する。これにより、後述するように、ソースコード101において画面上に配置された各パーツオブジェクトは、まずID変換部111によって自身のIDに対応するカラム名称を取得した後、当該カラム名称をキーとして、業務DB131へのアクセスや、後述する辞書テーブル121からの辞書データの取得等の後続の処理を行うことができる。
【0032】
従って、クライアント端末200に応答するHTMLデータ102上では、各パーツオブジェクト(によって表示されるコントロール)において、対応する業務DB131のカラム名称をキー等の情報として直接指定する必要がなく、自身のIDをキー等の情報とすることができるため、実際のカラム名称をHTMLデータ102上から隠蔽してセキュリティの強化を図ることが可能である。なお、このような変換を行わず、HTMLデータ102上で各パーツオブジェクト(によって表示されるコントロール)において対応する業務DB131のカラム名称をキー等の情報として直接指定するようにしてもよい。
【0033】
デバイス取得部112は、要求メッセージに基づいて、クライアント端末200のデバイスの種類に係る情報を取得する。この情報には、例えば、機器の種別を特定する情報や、OS、Webブラウザやそのバージョン等を識別する情報などが含まれ得る。この情報は、例えば、要求メッセージのUser−Agentヘッダから取得するなど、公知の技術により取得することができる。なお、ここで得られたデバイスの情報からディスプレイの大きさや解像度の情報が判別できないような場合も生じ得るため、例えば、デバイスの種類と解像度等との対応関係をデバイステーブル104として保持し、新たなデバイスの追加等に対して柔軟に定義の追加や変更を可能とするようにしてもよい。
【0034】
なお、要求処理部110は、この他に例えば、画面上のパーツオブジェクトを介して指定された入力項目のデータの内容について一般的な妥当性チェックを行う機能を有していてもよい。妥当性チェックの種類としては、例えば、文字数や文字タイプ(数字やアルファベット、かな、全半角など)、使用可能文字の制限、日時や各種コード値などのフォーマットチェックなど種々のものが考えられ、その内容も異なり得る。
【0035】
従って、本実施の形態では、パーツオブジェクト等において複数パターンの妥当性チェックのタイプを予め実装しておき、対象の入力項目についていずれのタイプを用いるかを動的に選択・決定するものとする。ここでは、後述する辞書処理部120を介して辞書テーブル121にアクセスし、対象の入力項目に対応する辞書データの内容から妥当性チェックのタイプとして指定されている情報を取得して決定する。
【0036】
辞書処理部120は、辞書テーブル121から、指定されたキー(本実施の形態では、例えば、対象の入出力項目(パーツオブジェクト)に対応する業務DB131のカラム名称)に対する辞書データを取得して出力する機能を有する。辞書テーブル121における辞書データの内容やフォーマットは特に限定されない。本実施の形態では、簡易な手法として、例えば後述するように、画面を介して業務DB131の対象のカラムへのデータの入出力処理を行うのに必要な種々のデータ(入出力を行うためのパーツオブジェクトの属性値や制御のために必要なパラメータ等)を所定の順序でカンマ区切り等で指定するものとする。
【0037】
具体的には、例えば、対応するパーツオブジェクトにおいてラベルコントロールを表示する際の内容である表示名称や、入出力コントロールとして入力フィールドを表示する際の長さ(文字数)、妥当性チェックの種別やIMEのモードなどの制御処理の内容に係る指定、出力データをテーブルに一覧表示する際の短縮されたテキストである短縮表示名称および表示幅、ドロップダウンリスト等により表示する際の値リストなどが考えられる。
【0038】
ビジネスロジック130は、業務DB131を利用して業務アプリケーションとしての処理を行う機能を有する。本実施の形態では、上述したように、業務DB131に対するCRUD型アプリケーションを対象とするが、特にこれに限定されるものではない。
【0039】
応答処理部140は、ソースコード101の内容に基づくビジネスロジック130等の処理結果に基づいてHTMLデータ102を生成し、クライアント端末200に対して応答する機能を有し、ソフトウェアプログラムにより実装される表示変更部141、および表示部142などの各部を有する。
【0040】
表示変更部141は、応答に含まれる各出力項目について、対応するパーツオブジェクトをクライアント端末200の画面上に表示する際のラベルコントロールのテキストや入出力コントロールの属性値、制御情報などのパラメータ値を取得する。ここでは、辞書処理部120を介して辞書テーブル121にアクセスして、対象の出力項目(パーツオブジェクト)に対応する辞書データから表示名称や属性値等の各種パラメータ値を取得する。また、デバイス取得部112によって取得したデバイスの種類もしくはディスプレイの解像度等の情報に基づいて、画面表示の方式や、パーツオブジェクトが表示するコントロールの表示方法についての調整内容を取得する。
【0041】
表示部142は、表示変更部141が取得した、各パーツオブジェクトについてのラベルコントロールのテキストや入出力コントロールの属性値、制御情報などのパラメータ値に基づいて、各パーツオブジェクトにより表示されるコントロールが配置された応答画面のHTMLデータ102を生成する機能を有する。このとき、表示変更部141によって取得した調整内容に基づいて、画面表示の方式やコントロールの表示方法を、対象のデバイスに対して最適となるよう調整する。
【0042】
<画面表示処理>
図2は、CRUD型アプリケーションにおいてパーツオブジェクトにより対応するカラムの入出力項目を画面上に表示する際の処理の例について概要を示した図である。
図2の例では、業務DB131からデータを読み出す際の検索条件を入力する画面において、“顧客名”を指定する入力フィールドを表示する場合の例を抜粋して示している。
【0043】
図の上段に示しているWebアプリケーションプログラムのソースコード101では、“顧客名”を指定する入力フィールドを表示するためにパーツオブジェクト103を呼び出している。具体的には、まず、ソースコード101上に保持されているマッピング情報(
図2の例では、array()により対応関係を保持している)からID(“A01”)に対応するカラム名称(“customer_name”)の情報を取得する。
【0044】
その後、例えば、パーツオブジェクト103の機能を実装したクラスから継承したサブクラスについてインスタンスを作成する形で呼び出す(“CF_itemDic();”)。
図2の例では、パラメータの一部として、呼び出す辞書テーブル121のタイプ(“共通辞書”)、表示する入出力コントロールのタイプ(“入力フィールド”)、HTMLのID属性値(“A01”)などを指定して呼び出した状態を簡略化して示している。なお、HTMLのID属性値(“A01”)は、マッピング情報によりカラム名称(“customer_name”)に動的に変換される。
【0045】
このようなコードにより呼び出されたパーツオブジェクト103は、データとして、少なくとも表示名(ラベルコントロールのテキスト)と表示する入出力コントロールの内容に係る情報を含むデータを保持する。
図2に示すように、さらに説明テキストなどの他の情報を保持していてもよい。
図2の例では、パーツオブジェクト103の上記の3つの情報のうち、コントロールについては、ソースコード101において“入力フィールド”がパラメータとして指定されているため、これが設定される。
【0046】
呼び出されたパーツオブジェクト103は、さらに、所定の関数やメソッド等により辞書処理部120を介して辞書テーブル121(“共通辞書”)にアクセスして、カラム名称(“customer_name”)に対応する辞書データ(本実施の形態では“顧客名”、40文字、20文字、…などの複数の値の集合)を取得する。
【0047】
図2の例では、辞書テーブル121の辞書データの例として、上から順に、名称(ラベルコントロールに表示するテキスト)、入力フィールドの場合の長さ(半角時の文字数)、入力フィールドの場合の最大長さ(文字数)、入力データの妥当性チェックのタイプ、IMEの初期モード、説明コメント、テーブルに一覧表示する場合のテキスト(表示名)、およびテーブルに一覧表示する場合の表示幅(ピクセル値)などの情報を保持するものとしている。なお、これらの辞書データを取得する際の出力フォーマットとしては、例えば、これらの値をカンマ等で区切った一連の文字列としてもよいし、連想配列等のアクセスしやすいデータとしてもよい。
【0048】
辞書テーブル121については、処理効率を考慮した場合、初期処理もしくは最初のアクセス時にメモリ上に辞書データの内容を展開するのが望ましい。この場合、全ての辞書データを展開するとメモリ使用量を圧迫したり、展開処理に時間を要したり等、却って処理効率が低下する場合がある。従って、実装上は、必要な時に必要な範囲の辞書データをメモリ上に展開できるようにするのが望ましい。
【0049】
そこで、本実施の形態では、適用範囲が異なる複数の辞書テーブル121からなる階層構造を有し、これらを適宜選択して使用する構成をとる。例えば、マルチデバイス対応Webサーバシステム100上で稼働するシステムやアプリケーション全体で共通の辞書(“共通辞書”)や、指定されたWebサイト内でのみ共通の辞書(“サイト辞書”)、サブシステム内でのみ共通の辞書(“ライブラリ辞書”)、画面単位での辞書(“コントローラ辞書”)などの、適用範囲が異なる複数種類の辞書テーブル121を有するものとする。
【0050】
この場合、例えば、“コントローラ辞書”などの適用範囲の狭い辞書を参照して該当する辞書データが得られなかった場合に、“ライブラリ辞書”→“サイト辞書”→“共通辞書”と順に上位の(適用範囲が広い)辞書テーブル121に遡って参照できるようにしてもよい。また、辞書データが得られなかったとしてデフォルト値を用いるようにしたりエラーとしたりしてもよい。
【0051】
パーツオブジェクト103は、取得した辞書データから必要なデータを抽出して、コントロールを表示したり制御したりする際のパラメータとして設定する。例えば、入出力コントロールとして入力フィールドを表示する場合の属性値として、辞書データから取得したフィールドの長さを設定するとともに、妥当性チェックのタイプやIMEの初期モードなどの値、説明テキストの内容などを設定する。なお、入力データの妥当性チェックや、IMEのモード設定などの入出力コントロールの制御に係る処理は、要求処理部110や表示部142等の機能であるが、具体的な実装としては、例えば、パーツオブジェクト103の継承元のクラスにメソッドとして定義しておくなど、パーツオブジェクト103が有する、もしくはパーツオブジェクト103が呼び出すことができる機能として実装しておくものとする。
【0052】
これにより、
図2の下段の画面例に示すように、実行時に“顧客名”を指定するための入力フィールドのコントロールを表示するよう、パーツオブジェクト103がHTMLデータ102を生成することができる。このとき、例えば、パーツオブジェクト103の説明テキストの情報を当該入出力項目についてのヘルプ情報等として用いることができる。
【0053】
なお、入力フィールドを表示する場合、入力フィールドのコントロールだけを表示したのでは何を入力すべきかが不明であるため、本実施の形態では、
図2に示すように、当該パーツオブジェクト103に対応する入出力項目の表示名を表示するテキストコントロール(“顧客名”)を入力フィールドに隣接させてラベルとして表示する(ラベルコントロール)。当該テキストは、パーツオブジェクト103の保持データにおける表示名の情報、すなわちパーツオブジェクト103が辞書テーブル121から取得した辞書データの名称の値(“顧客名”)を設定する。
【0054】
このようなHTMLデータ102の生成に係る処理は、表示部142等の機能であるが、具体的な実装としては、例えば、パーツオブジェクト103の継承元のクラスにメソッドとして定義しておくなど、パーツオブジェクト103が有する、もしくはパーツオブジェクト103が呼び出すことができる機能として実装しておくものとする。なお、ここでは、上述したように、表示するラベルコントロールや入出力コントロール、および説明テキストの3つの要素について、一括して整合性を持った形で外観等に係る属性値を調整するものとする。
【0055】
また、
図2の例では、入出力コントロールとして入力フィールドを表示する場合を示しているが、他のコントロールを表示することも可能である。ソースコード101において表示する入出力コントロールのタイプを“入力フィールド”ではなく、例えば、“ドロップダウンリスト”などを指定することで、ドロップダウンリストを表示するようなHTMLデータ102を生成するようパーツオブジェクト103を実装することができる。
【0056】
このように、本実施の形態では、入出力項目をパーツオブジェクト103により表示するHTMLデータ102を生成することができる。従って、本実施の形態におけるCRUD型アプリケーションは、業務DB131の各カラムに対応する入出力項目としてパーツオブジェクト103を所定のルールに従って画面上に配置し、標準的な機能や動作の実装と組み合わせるようソースコード101を作成することで実現することができる。また、アプリケーションプログラムの開発支援システム等として、このようなソースコード101を自動的に生成する機能を実装することも可能である。
【0057】
例えば、業務DB131へのエントリーの登録(C:Create)を行うアプリケーションとしては、業務DB131の各カラムに対して登録するデータを指定する入力フィールドを画面上に表示するためのパーツオブジェクト103を、業務DB131のカラムの並び順に従って配置するようソースコード101を作成する。このとき、必要に応じて画面表示するコントロールのIDとカラムの名称との対応関係をマッピング情報として保持しておく。さらに、標準的な機能として業務DB131へのエントリーの登録を実行するための“登録”ボタンや“キャンセル”ボタンなどを配置する。さらに、辞書テーブル121に各パーツオブジェクト103についてコントロールを表示する際に用いる属性値や制御情報などの情報を辞書データとして保持しておく。このとき、各項目について特に指定がされない場合はそれぞれデフォルト値により設定する。
【0058】
また、例えば、業務DB131に対する検索(R:Read)を行うアプリケーションとしては、上記と同様に、業務DB131を検索するための条件を指定する入力フィールドを画面上に表示するためのパーツオブジェクト103を配置するようソースコード101を作成する。このとき、業務DB131の対象テーブルの全カラムについて検索条件として指定可能とすると過剰になることから、例えば、暫定的に先頭の5つのカラムについてだけ入力フィールドを表示するなどの簡略化を行ない、後から変更可能としてもよい。また、必要に応じて画面表示するコントロールのIDとカラムの名称との対応関係をマッピング情報として保持しておく。さらに、標準的な機能として業務DB131のエントリーの検索を行うための“検索”ボタンなどを配置する。
【0059】
また、例えば、検索条件を入力する領域の下部に、検索結果を表示するためのテーブル(表)コントロールを自動的に配置する。ここでは、例えば、テーブルコントロールのオブジェクトの項目定義配列に、業務DB131の各カラムに対応するパーツオブジェクト103の呼び出しに相当する内容を設定する。これにより、テーブルコントロールの各列に業務DB131の各カラムの内容が表示されるよう、表示部142もしくはパーツオブジェクト103を実装することが可能である。
【0060】
図3は、パーツオブジェクト103により表示されるコントロールの外観等をクライアント端末200のデバイスに応じて変更する際の処理の例について概要を示した図である。ここでは、
図2の例に示したソースコード101の内容は変更せずに、パーツオブジェクト103の継承元の上位クラスにおいて、予め、デバイスの種別毎にコントロールの表示方法を調整する際の定義とその処理を実装しておくものとする(
図3の例では、説明の便宜上、パーツオブジェクト103において“デバイスA”と“デバイスB”と“解像度C”用の調整内容を定義した形として示している)。調整内容としては、例えば、入力フィールドやボタン等のコントロールを表示する場合の幅や高さの調整等とすることができる。
【0061】
また、画面全体を描画する画面描画オブジェクト105においても、予め、デバイスの種別毎に画面表示の方式を調整する際の定義とその処理を実装しておくものとする(
図3の例では、“デバイスA”と“解像度C”用の調整内容を定義した形で示している)。調整内容としては、例えば、画面全体の背景色等の配色の調整や、サイドメニューの表示方法、各コントロールの配置ポリシー等とすることができる。
【0062】
図3の例に示すように、デバイス取得部112によって取得したクライアント端末200のデバイスの種別が“デバイスC”である場合、デバイス取得部112がデバイステーブル104を参照して対応する解像度等の情報の有無を確認する。
図3の例では、“デバイスC”に対して解像度の情報として“解像度C”が得られることを示している。
【0063】
パーツオブジェクト103は、表示変更部141の機能により、“解像度C”についてのコントロールを表示する際の調整内容の情報(
図3の例では、“入力フィールドを表示する場合は高さを15ピクセルプラスする”)を取得し、表示部142の機能により、調整内容に基づいて表示する入出力コントロールの外観等を“デバイスC”に最適となるよう調整する。例えば、“顧客名”の入力フィールドについて、
図2の画面例と比べて高さを高くしている。
【0064】
また、画面描画オブジェクト105(すなわち、表示部142の一部)は、表示変更部141の機能により、“解像度C”についての画面全体を表示する際の調整内容の情報(
図3の例では、“サイドメニューを隠す”)を取得し、表示部142の機能により、画面表示の方式をこれに基づいて調整する。例えば、
図2の画面例で展開して表示されていたサイドメニューを畳み込んで“メニュー”というリンクとして表示している。
【0065】
PCなどと比べて、タブレット型端末やスマートフォンでは、解像度は高くてもディスプレイのサイズが小さく、さらにタッチパネルを用いて入出力が行われる場合が多い。このとき、例えば、入力フィールドの高さが低かったり、ボタンが小さかったりすると、指で触れて操作することが困難になる場合があるため、このようなタッチパネルを有するデバイスでは、入力フィールド等の大きさを大きく(特に高さを高く)したり、縦に並んで配置されるコントロール間の間隔を空けるなどにより指で触れる場合に誤操作を回避するよう表示の最適化を行う。
【0066】
また、ディスプレイのサイズが小さいことから、効率的にコントロールを配置するため、サイドメニュー等のメニューを畳み込んだり、横に並べて配置していた各コントロールを縦に並べるようにしたりなど、配置のルールを変更するよう画面全体の表示の方式を変更するよう実装することも可能である。
【0067】
上記のように、パーツオブジェクト103の承継元の上位クラスや、画面描画オブジェクト105においてデバイス毎に表示を最適化する処理を実装しておくことで、アプリケーションプログラムの開発の際には、クライアント端末200のデバイスの種類を特に意識することなく、ソースコード101を作成することができる。また、対応するデバイスの種類を追加したり、表示方式を変更する場合にも、パーツオブジェクト103の承継元の上位クラスや画面描画オブジェクト105の処理内容を追加・修正するだけで対応することができ、ソースコード101の修正を不要とすることができる。
【0068】
以上に説明したように、本発明の一実施の形態であるマルチデバイス対応Webサーバシステム100によれば、Webアプリケーションプログラムのユーザインタフェースにおいて入出力項目に対応するコントロールを表示するためのパーツオブジェクト103および/または画面全体の表示を行う画面描画オブジェクト105が、クライアント端末200のデバイスの種類、特にディスプレイの大きさや解像度に基づいて、画面自体および/または画面上に入出力項目を表示するためのコントロールの外観や属性等を含むユーザインタフェースを動的に変更する。これにより、アプリケーションのソースコード101を変更することなく、クライアント端末200のデバイスに応じてユーザインタフェースを動的に最適化することが可能となる。
【0069】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、本実施の形態では、標準的なCRUD型のWebアプリケーションを対象にしているがこれに限らない。ユーザが、辞書テーブル121とパーツオブジェクト103を組み合わせた形で、ユーザインタフェースやビジネスロジックなどの動作内容も含めて構築した独自のアプリケーション(Webアプリケーションに限らず、クライアント/サーバ型やスタンドアロン型などであってもよい)に対して、同様の概念によりパーツオブジェクト103や画面描画オブジェクト105を実装してマルチデバイス対応することが可能である。
【0070】
また、本実施の形態では、マルチデバイス対応として、クライアント端末200のデバイス毎のディスプレイのサイズや解像度、タッチパネルの有無に対応して表示画面を最適化するように、パーツオブジェクト103や画面描画オブジェクト105を実装しているが、同様の仕組みを用いて、OSやWebブラウザ、そのバージョン等が異なるマルチプラットフォームに対応するように、パーツオブジェクト103や画面描画オブジェクト105の実装を行うことも当然可能である。