(57)【要約】【課題】入力値チェックの信頼性を向上させる。【解決手段】サーバ１は、入力値の許容範囲を定義した定義情報４を記憶する。端末装置２は、サーバ１から定義情報４を受信する。次に端末装置２は、入力値の入力領域６を含む画面５を表示する。次に端末装置２は、入力領域６に入力値が入力されると、サーバ１から受信した定義情報４に基づいて、入力値が許容範囲内か否かを判断する。入力値が許容範囲内と判断した場合、端末装置２は、入力値を含む処理要求８をサーバ１に送信する。サーバ１は、入力値を含む処理の処理要求８に応じて、処理要求８に含まれる入力値を利用した処理を実行する。【選択図】図１
2019191931.tif 000002
【特許請求の範囲】
【請求項１】
入力値の許容範囲を定義した定義情報を記憶する記憶部と、取得要求に応じて前記定義情報を応答出力し、前記入力値を含む処理要求に応じて、前記処理要求に含まれる前記入力値を利用した処理を実行する第１処理部とを有するサーバと、
前記サーバに前記取得要求を送信することで、前記サーバから前記定義情報を受信し、前記入力値の入力領域を含む画面を表示し、前記入力領域に前記入力値が入力されると、前記サーバから受信した前記定義情報に基づいて、前記入力値が前記許容範囲内か否かを判断し、前記入力値が前記許容範囲内と判断した場合、前記入力値を含む前記処理要求を前記サーバに送信する第２処理部を有する端末装置と、
を有する情報処理システム。
【請求項２】
前記サーバの前記第１処理部は、前記処理要求を受信すると、前記定義情報に基づいて、前記処理要求に含まれる前記入力値が前記許容範囲内か否かを判断し、前記入力値が前記許容範囲内と判断した場合、前記入力値を利用して前記処理を実行する、
請求項１記載の情報処理システム。
【請求項３】
前記端末装置の前記第２処理部は、前記入力領域に１文字入力されるごとに、入力された前記１文字が前記許容範囲内か否かを判断する、
請求項１または２に記載の情報処理システム。
【請求項４】
前記サーバの前記記憶部は、複数のストレージ装置それぞれに対応する装置別の定義情報を記憶しており、前記サーバの前記第１処理部は、操作対象のストレージ装置を指定した前記取得要求に応じて、前記操作対象のストレージ装置に対応する前記装置別の定義情報を応答出力し、
前記端末装置の前記第２処理部は、前記操作対象のストレージ装置の選択入力に応じて、前記操作対象のストレージ装置を指定した前記取得要求を前記サーバに送信し、前記サーバから、前記操作対象のストレージ装置に対応する前記装置別の定義情報を受信する、
請求項１ないし３のいずれかに記載の情報処理システム。
【請求項５】
前記サーバの前記第１処理部は、前記複数のストレージ装置の状態を監視し、状態が変化した一ストレージ装置を検出した場合、前記一ストレージ装置から、前記一ストレージ装置に対する前記入力値の前記許容範囲を定義する前記装置別の定義情報を取得し、取得した前記装置別の定義情報を、前記一ストレージ装置に対応付けて前記記憶部に格納する、
請求項４記載の情報処理システム。
【請求項６】
コンピュータに、
入力値の許容範囲を定義した定義情報を記憶部に記憶し、
取得要求に応じて前記定義情報を要求元装置に応答出力し、
前記入力値を含む処理要求の受信に応じて、前記処理要求に含まれる前記入力値を利用した処理を実行する、
処理を実行させる入力値検証支援プログラム。
【請求項７】
コンピュータに、
入力値の許容範囲を定義した定義情報を記憶するサーバから前記定義情報を受信し、
前記入力値の入力領域を含む画面を表示し、
前記入力領域に前記入力値が入力されると、前記サーバからの前記定義情報に基づいて、前記入力値が前記許容範囲内か否かを判断し、
前記入力値が前記許容範囲内と判断した場合、前記入力値を含む処理要求を前記サーバに送信する、
処理を実行させる入力値検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、入力値検証支援プログラム、および入力値検証プログラムに関する。
【背景技術】
【０００２】
情報処理システムでは、ユーザが使用する端末装置とサーバとで連携した処理が行われる。例えば端末装置では、Ｗｅｂブラウザを用いて画面制御を行い、サーバでは、Ｗｅｂブラウザが表示した画面への入力内容に基づくデータの管理や操作を行う。
【０００３】
端末装置とサーバとの連携処理を情報処理システムに実装する場合、端末装置とサーバそれぞれ用のソフトウェアコンポーネント（以下、「コンポーネント」と呼ぶ）が作成される。端末装置とサーバとの連携処理用のコンポーネントは、例えば、ＲＥＳＴ（REpresentational State Transfer）−ＡＰＩ（Application Programming Interface）を用いて作成することができる。
【０００４】
端末装置とサーバとの連携処理には、ユーザが入力した入力値（例えば文字列）を端末装置からサーバに送信し、その入力値に応じた処理をサーバが実行する連携処理がある。このような連携処理において、サーバで処理可能な入力値に制限がある場合、サーバでは入力値チェック（バリデーション：validation）が行われる。入力値チェックにおいて、サーバは、入力値が、入力が許容された値の範囲内かどうかをチェックする。
【０００５】
端末装置とサーバとの連携処理に関する技術としては、例えば、トラフィックディレクタまたは他のタイプのサーバ環境におけるサーバ構成を管理するためのシステムがある。また既存システムのＲＥＳＴ−ＡＰＩ化手法として、各種プロトコルに汎用的に対応可能な変換処理技術も考えられている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１７−０６２８４０号公報
【特許文献２】特開２０１７−０５４４１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
入力値チェックは、端末装置で行うことも可能である。例えば端末装置とサーバとの両方で入力値チェックを適切に行えば、信頼性の高い入力値チェックとなる。端末装置においても入力値チェックを行う場合、サーバ側の入力値チェック用のコンポーネントとは別に、端末装置側の入力値チェック用のコンポーネントが作成される。そのため、端末装置側で行う入力値チェックの内容が、サーバにおける入力値チェックの内容と統一されていない場合が有り得る。チェック内容が統一されていないと、例えば、ユーザがサーバ側の仕様に適合した入力を行ったにもかかわらず、端末装置において、入力値が不適切であると誤判定される可能性がある。そのため、入力値のチェックの内容と不統一の場合は、システムを用いて提供されるサービスの品質の低下を招く。
【０００８】
１つの側面では、本件は、入力値チェックの信頼性を向上させることを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、以下に示すサーバと端末装置とを有する情報処理システムが提供される。
サーバは、記憶部と第１処理部とを有する。記憶部は、入力値の許容範囲を定義した定義情報を記憶する。第１処理部は、取得要求に応じて定義情報を応答出力する。また第１処理部は、入力値を含む処理要求に応じて、処理要求に含まれる入力値を利用した処理を実行する。
【００１０】
端末装置は、第２処理部を有する。第２処理部は、サーバに取得要求を送信することで、サーバから定義情報を受信する。次に第２処理部は、入力値の入力領域を含む画面を表示する。さらに第２処理部は、入力領域に入力値が入力されると、サーバから受信した定義情報に基づいて、入力値が許容範囲内か否かを判断する。そして第２処理部は、入力値が許容範囲内と判断した場合、入力値を含む処理要求をサーバに送信する。
【発明の効果】
【００１１】
１態様によれば、入力値チェックの信頼性が向上する。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態に係る入力値チェック方法の一例を示す図である。
【図２】第２の実施の形態のシステム構成例を示す図である。
【図３】ストレージ運用管理サーバのハードウェアの一構成例を示す図である。
【図４】各装置の機能を示すブロック図である。
【図５】静的定義ファイルの一例を示す図である。
【図６】動的定義ＤＢの一例を示す図である。
【図７】アカウント作成画面の表示例を示す図である。
【図８】ログイン画面の一例を示す図である。
【図９】ストレージ管理画面の一例を示す図である。
【図１０】プール作成画面の一例を示す図である。
【図１１】入力値チェック処理の一例を示す図である。
【図１２】ストレージ運用管理サーバにおける定義情報の生成例を示す図である。
【図１３】端末装置における入力値チェック例を示す図である。
【図１４】端末装置における入力値チェック例を示す図である。
【図１５】ストレージ運用管理サーバにおける入力値チェック例を示す図である。
【図１６】画面表示に伴う定義情報の取得処理の手順の一例を示すシーケンス図である。
【図１７】ストレージ運用管理サーバにおける定義情報提供処理の手順の一例を示すフローチャートである。
【図１８】端末装置における入力値チェック処理の手順の一例を示すシーケンス図である。
【図１９】１文字ずつの入力値チェック処理の手順の一例を示すフローチャートである。
【図２０】ストレージ装置の操作手順の一例を示すシーケンス図である。
【図２１】動的定義ＤＢ更新処理の手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
まず第１の実施の形態について説明する。第１の実施の形態は、サーバと端末装置との両方で入力値チェックを行う情報処理システムである。
【００１４】
図１は、第１の実施の形態に係る入力値チェック方法の一例を示す図である。情報処理システムには、サーバ１と端末装置２とが含まれる。
サーバ１は、第１記憶部１ａと第１処理部１ｂとを有する。サーバ１は、第１記憶部１ａと第１処理部１ｂを用いて、自身が入力値チェックを実行するとともに、端末装置２による入力値チェックを支援する。例えばサーバ１は、入力値チェック支援処理が記述された入力値検証支援プログラムを第１処理部１ｂに実行させることにより、端末装置２に対する入力値検証支援方法を実現する。第１記憶部１ａは、例えばサーバ１が有するメモリまたはストレージ装置である。第１処理部１ｂは、例えばサーバ１が有するプロセッサまたは演算回路である。
【００１５】
端末装置２は、第２記憶部２ａと第２処理部２ｂとを有する。端末装置２は、第２記憶部２ａと第２処理部２ｂを用いて、入力値チェックを実行する。例えば端末装置２は、入力値チェック処理が記述された入力値検証プログラムを第２処理部２ｂに実行させることにより、入力値検証方法を実現する。第２記憶部２ａは、例えば端末装置２が有するメモリまたはストレージ装置である。第２処理部２ｂは、例えば端末装置２が有するプロセッサまたは演算回路である。
【００１６】
このようなサーバ１と端末装置２との連携処理により、入力値チェックが行われる。具体的には以下の通りである。
サーバ１の第１記憶部１ａは、入力値の許容範囲を定義した定義情報４を、予め記憶している。定義情報４には、例えば処理要求８に含めることが許容される許容文字が定義されている。端末装置２の第２処理部２ｂは、サーバ１との連携処理を行う際に、サーバ１から定義情報４を取得する。例えば端末装置２の第２処理部２ｂは、サーバ１に、定義情報４の取得要求３を送信する。サーバ１の第１処理部１ｂは、取得要求３に応じて定義情報４を応答送信する。例えば第１処理部１ｂは、第１記憶部１ａから定義情報４を読み出し、読み出した定義情報４を端末装置２に送信する。端末装置２の第２処理部２ｂは、サーバ１から送信された定義情報４を受信する。端末装置２の第２処理部２ｂは、受信した定義情報４を第２記憶部２ａに格納する。
【００１７】
その後、端末装置２の第２処理部２ｂは、入力値の入力領域６を含む画面５を、表示装置に表示する。ユーザにより、入力領域６に文字列などの入力値が入力されると、第２処理部２ｂは、サーバ１から受信した定義情報４に基づいて、入力値が許容範囲内か否かを判断する。例えば第２処理部２ｂは、入力領域６に１文字入力されるごとに、入力された１文字が、処理要求８に含めることが許容される許容文字に該当するか否かを判断する。第２処理部２ｂは、入力された１文字が許容文字に該当しない場合、例えば入力が不適切であることを説明するメッセージ７を画面５に表示させる。
【００１８】
例えば図１の例では、定義情報４において、半角の英数字と記号「#$%&」が許容文字であることが示されている。このとき入力領域６に記号「-」が入力されると、第２処理部２ｂは、入力された文字が許容文字に該当しないと判断する。そして第２処理部２ｂは、入力が許される文字種を説明するメッセージ７を表示させる。これにより、ユーザは、記号「-」の入力が誤りであることを認識できる。その後、ユーザは、例えば記号「-」の削除操作を行い、別の文字を入力する。
【００１９】
そして第２処理部２ｂは、入力値が許容範囲内と判断した場合、入力値を含む処理要求８をサーバ１に送信する。すると、サーバ１の第１処理部１ｂは、入力値を含む処理要求８に応じて、処理要求８に含まれる入力値を利用した処理を実行する。
【００２０】
なお第１処理部１ｂは、処理要求８に応じた処理を実行する前に、入力値チェック（妥当性検証）を行ってもよい。例えば、第１処理部１ｂは、処理要求８を受信すると、定義情報４に基づいて、処理要求８に含まれる入力値が許容範囲内か否かを判断する。そして第１処理部１ｂは、入力値が許容範囲内と判断した場合、文字列を利用して処理を実行する。
【００２１】
このようにして、端末装置２において、サーバ１と共通の定義情報４を用いて、入力値チェックを行うことができる。その結果、端末装置２とサーバ１との入力値チェックの内容に齟齬が生じることが抑止され、入力値チェックの信頼性が向上する。
【００２２】
なお、サーバ１で管理する定義情報４の内容は、システム管理者などによって変更される場合がある。端末装置２は定義情報４をサーバ１から取得するため、定義情報４の内容が変更された場合であっても、端末装置２側で実行するソフトウェアに変更を加えずに済む。そのため、端末装置２で入力値チェックを行うためのソフトウェアの開発が容易となる。
【００２３】
なお、図１の例では、第１記憶部１ａに１つの定義情報４のみが格納されているが、サーバ１は、複数の定義情報を第１記憶部１ａに格納しておくこともできる。この場合、サーバ１の第１処理部１ｂは、端末装置２からの取得要求３に応じて、適切な定義情報を選択し、選択した定義情報を端末装置２に提供する。
【００２４】
例えば、サーバ１が複数のストレージ装置を管理している場合、第１記憶部１ａは、複数のストレージ装置それぞれに対応する装置別の定義情報を記憶する。この場合、端末装置２の第２処理部２ｂは、操作対象のストレージ装置の選択入力に応じて、操作対象のストレージ装置を指定した取得要求３をサーバ１に送信する。サーバ１の第１処理部１ｂは、操作対象のストレージ装置を指定した取得要求３に応じて、操作対象のストレージ装置に対応する装置別の定義情報を端末装置２に送信する。端末装置２は、サーバ１から送信された、操作対象のストレージ装置に対応する装置別の定義情報を受信する。
【００２５】
このようにストレージ装置ごとに用意された装置別の定義情報を用いることで、端末装置２とサーバ１では、操作対象のストレージ装置に対応する定義情報により、入力値チェックを行うことができる。これにより、例えば設定操作において設定可能な文字がストレージ装置ごとに異なる場合であっても、操作対象のストレージ装置に応じた適切な入力値チェックを行うことができる。
【００２６】
また、サーバ１の第１記憶部１ａが複数のストレージ装置それぞれに対応する装置別の定義情報を記憶しているとき、第１処理部１ｂは、ストレージ装置の状態の変化に応じて、装置別の定義情報を自動で更新することもできる。例えば第１処理部１ｂは、複数のストレージ装置の状態を監視し、状態が変化した一ストレージ装置を検出した場合、一ストレージ装置から、一ストレージ装置に対する操作において使用可能な文字を定義する装置別の定義情報を取得する。状態の変化としては、例えばストレージ装置内の環境設定ファイルの更新である。第１処理部１ｂは、取得した装置別の定義情報を、一ストレージ装置に対応付けて第１記憶部１ａに格納する。
【００２７】
このように、定義情報を動的に更新することにより、定義情報４を最新の状態に維持することができる。その結果、入力値チェックの信頼性が向上する。
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、ストレージ装置の利用管理を、サーバと端末装置とで連携して行うシステムにおいて、入力値チェックの信頼性を向上させるものである。
【００２８】
図２は、第２の実施の形態のシステム構成例を示す図である。ネットワーク２０を介して、ストレージ運用管理サーバ１００、端末装置２００、および複数のストレージ装置３００，４００，５００が接続されている。ストレージ運用管理サーバ１００は、端末装置２００からの要求に応じてストレージ装置３００，４００，５００を管理する。例えばストレージ運用管理サーバ１００は、端末装置２００からの要求に応じて、ストレージ装置３００，４００，５００を用いたストレージプールを作成する。ストレージプールは、１以上の物理的な記憶装置の集まりを、仮想的に１台のディスクとして扱えるようにしたものである。
【００２９】
図３は、ストレージ運用管理サーバのハードウェアの一構成例を示す図である。ストレージ運用管理サーバ１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１がプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００３０】
メモリ１０２は、ストレージ運用管理サーバ１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に利用する各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００３１】
バス１０９に接続されている周辺機器としては、ストレージ装置１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００３２】
ストレージ装置１０３は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置１０３は、コンピュータの補助記憶装置として使用される。ストレージ装置１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置１０３としては、例えばＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）を使用することができる。
【００３３】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、有機ＥＬ（Electro Luminescence）を用いた表示装置や液晶表示装置などがある。
【００３４】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３５】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００３６】
機器接続インタフェース１０７は、ストレージ運用管理サーバ１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００３７】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００３８】
ストレージ運用管理サーバ１００は、以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。端末装置２００も、図３に示したストレージ運用管理サーバ１００と同様のハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。さらに、第１の実施の形態に示したサーバ１および端末装置２も、図３に示したストレージ運用管理サーバ１００と同様のハードウェアにより実現することができる。
【００３９】
ストレージ運用管理サーバ１００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。ストレージ運用管理サーバ１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、ストレージ運用管理サーバ１００に実行させるプログラムをストレージ装置１０３に格納しておくことができる。プロセッサ１０１は、ストレージ装置１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。またストレージ運用管理サーバ１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ストレージ装置１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４０】
次にストレージ運用管理サーバ１００、端末装置２００、およびストレージ装置３００，４００，５００それぞれが有する機能について説明する。
図４は、各装置の機能を示すブロック図である。端末装置２００は、ブラウザ２１０を有する。ブラウザ２１０は、ＨＴＭＬ（HyperText Markup Language）などで記述された文書データを解釈し、その文書データに示される情報を端末装置２００のモニタに表示する。ブラウザ２１０は、プラグインなどの技術を用いて、機能を追加することができる。例えばブラウザ２１０は、ストレージ運用管理サーバ１００と連携した処理を実行するために、ＧＵＩ（Graphical User Interface）２１１と入力支援部２１２との機能が追加されている。
【００４１】
ＧＵＩ２１１は、ストレージ運用管理サーバ１００に対してユーザが入力を行うためのインタフェースである。ＧＵＩ２１１は、例えばストレージ運用管理サーバ１００に対する操作の入力画面を、ブラウザ２１０に表示させる。
【００４２】
入力支援部２１２は、ＧＵＩ２１１に対するユーザからの入力の支援を行う。例えば入力支援部２１２は、ユーザが文字を入力するごとに、入力された文字が、ストレージ運用管理サーバ１００において許容されている文字かどうかのチェック（入力値チェック）を行う。また入力支援部２１２は、ＧＵＩ２１１を介して入力された文字列などのデータを、ストレージ運用管理サーバ１００に送信する。入力支援部２１２は、例えばＧＵＩ２１１用のフレームワーク（ＦＷ）として用意されたコンポーネントによって実現される。
【００４３】
ストレージ運用管理サーバ１００は、記憶部１１０、Ｗｅｂサーバ部１２０、要求処理部１３０、要求処理支援部１４０、およびストレージ管理部１５０を有する。
記憶部１１０は、静的定義ファイル１１１と動的定義データベース（ＤＢ）１１２とを記憶する。静的定義ファイル１１１は、ユーザによる入力項目と、該当項目についての入力値チェック用の定義が示されたレコードとの対応関係を示すデータファイルである。動的定義ＤＢ１１２は、ストレージ装置３００，４００，５００を操作するための入力値チェックの内容を具体的に示す情報が、レコード単位で格納されたデータベースである。
【００４４】
Ｗｅｂサーバ部１２０は、端末装置２００のブラウザ２１０に、ＨＴＭＬ形式の文書など、各種のコンテンツを提供する。例えばＷｅｂサーバ部１２０は、ブラウザ２１０に対して、ＧＵＩ２１１および入力支援部２１２を実現するためのコンポーネント（プログラムを含むファイル）を送信する。またＷｅｂサーバ部１２０は、端末装置２００から処理要求を受信すると、その処理要求を要求処理部１３０に転送する。端末装置２００からの処理要求には、定義情報の取得を要求する定義情報取得要求や、入力された文字列に応じたデータ操作を要求する操作要求が含まれる。
【００４５】
要求処理部１３０は、Ｗｅｂサーバ部１２０から受信した処理要求に応じて、ストレージ装置３００，４００，５００の運用に関する処理を実行する。要求処理部１３０は、実行する処理のうち、要求処理支援部１４０で提供されている汎用的な処理については、要求処理支援部１４０に処理を依頼する。要求処理部１３０は、例えばＲＥＳＴ−ＡＰＩによって実現される。
【００４６】
要求処理支援部１４０は、要求処理部１３０からの依頼に従って、ストレージ装置３００，４００，５００の運用に関する汎用的な処理を行う。例えば要求処理支援部１４０は、定義情報取得要求に応じて、静的定義ファイル１１１と動的定義ＤＢ１１２とに基づいて、静的定義と動的定義とを統合した定義情報を生成する。また要求処理支援部１４０は、操作内容が文字列で指定された操作要求に応じて、静的定義ファイル１１１と動的定義ＤＢ１１２とに基づいて、文字列に含まれる各文字の入力値チェックを行う。要求処理支援部１４０は、入力値チェックにおいてすべての文字のチェックが完了すると、操作要求に応じたストレージ装置３００，４００，５００の操作を、ストレージ管理部１５０に指示する。要求処理支援部１４０は、例えばＲＥＳＴ−ＡＰＩフレームワークを用いて実現される。
【００４７】
ストレージ管理部１５０は、要求処理支援部１４０からの指示に従って、ストレージ装置３００，４００，５００に対する操作を行う。ストレージ管理部１５０は、例えば、ＲＥＳＴに従った処理要求をストレージ装置３００，４００，５００に送信することにより、ストレージ装置３００，４００，５００を操作する。
【００４８】
ストレージ装置３００は、要求処理部３１０、要求処理支援部３２０、記憶装置管理部３３０、および複数の記憶装置３４１，３４２，・・・を有している。
要求処理部３１０は、ストレージ運用管理サーバ１００から受信した処理要求に応じて、記憶装置３４１，３４２，・・・に対する操作を行う。要求処理部３１０は、実行する処理のうち、要求処理支援部３２０で提供されている汎用的な処理については、要求処理支援部３２０に処理を依頼する。要求処理部３１０は、例えばＲＥＳＴ−ＡＰＩによって実現される。
【００４９】
要求処理支援部３２０は、要求処理部３１０からの依頼に従って、記憶装置３４１，３４２，・・・の操作に関する汎用的な処理を行う。要求処理支援部３２０は、例えばＲＥＳＴ−ＡＰＩフレームワークを用いて実現される。
【００５０】
記憶装置管理部３３０は、記憶装置３４１，３４２，・・・を管理する。例えば記憶装置管理部３３０は、記憶装置３４１，３４２，・・・を用いたストレージプールの作成、記憶装置３４１，３４２，・・・へのデータの入出力などを行う。
【００５１】
記憶装置３４１，３４２，・・・は、ＨＤＤまたはＳＳＤである。
ストレージ装置４００，５００も、ストレージ装置３００と同様の処理機能および記憶装置を有する。
【００５２】
なお、図４に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図４に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【００５３】
次に図５、図６を参照し、静的定義ファイル１１１と動的定義ＤＢ１１２とについて詳細に説明する。
図５は、静的定義ファイルの一例を示す図である。静的定義ファイル１１１には、ＡＰＩ識別子に対応付けて、パラメタ名とパラメタ値との１以上の組が設定されている。図５の例では、静的定義ファイル１１１内にＡＰＩ識別子「v1/auth/tokens」、「v1/mail/server」が設定されている。例えば、ＡＰＩ識別子「v1/auth/tokens」には、パラメタ名「user_name」、パラメタ値「token_user_name」との組が設定されている。
【００５４】
図６は、動的定義ＤＢの一例を示す図である。動的定義ＤＢ１１２には、ＡＰＩ識別子に対応付けて、静的定義のパラメタ値に関する定義情報を示すレコードが設定されている。例えば、ＡＰＩ識別子「v1/auth/tokens」のパラメタ値「token_user_name」の定義情報に関するレコードにおいて、「validate_type => "format", :value => "ascii"」と定義されている。これは、入力文字のコード体系が「ＡＳＣＩＩ」であることを定めたものである。なお１つのパラメタ値に対して、定義情報に関するレコードを複数登録することもできる。
【００５５】
このような静的定義ファイル１１１と動的定義ＤＢ１１２とを用いて、ストレージ運用管理サーバ１００と端末装置２００とにおいて、統一した入力値チェックが行われる。
端末装置２００は、入力値チェックの最新の定義情報を、適宜、ストレージ運用管理サーバ１００から取得する。例えば端末装置２００は、ＧＵＩ２１１に基づいて入力フィールドを含む画面を表示したときに、その画面に設けられた入力フィールドへの入力値に関する入力値チェック用の定義情報を取得する。そして入力支援部２１２が、取得した定義情報に基づいて、入力値チェックを行う。例えばアカウント作成画面が表示された場合、入力支援部２１２は、ユーザ名に入力された文字が、ユーザ名に使用可能な文字かどうかをチェックする。
【００５６】
図７は、アカウント作成画面の表示例を示す図である。アカウント作成画面４０には、ユーザ名とパスワードとの入力フィールド４１，４２が設けられている。アカウント作成画面４０の内容は、入力支援部２１２内に記述されている。例えば入力支援部内記述２１２ａにおいてアカウント作成画面４０の内容が定義されている。例えば入力支援部内記述２１２ａには、入力フィールド４１のパラメタnameのＡＰＩ識別子が「v1/pools」であることが示されている。また入力支援部内記述２１２ａには、入力フィールド４１への入力値のパラメタ名が「name」であることが示されている。
【００５７】
このように入力支援部２１２のプログラムモジュールでは、パラメタのＡＰＩ識別子とパラメタ名のみを指定すれば入力値チェックが可能となる。なお、図７には、比較例として、入力値チェック内容をＧＵＩ２１１で定義した場合の記述例を示している。入力値チェック内容をＧＵＩ２１１で定義した場合、入力値チェックの内容（どのような文字の入力を許容するのか）を、入力支援部２１２内で記述することとなる。このように、入力値チェックの内容を入力支援部２１２内で記述すると、ストレージ運用管理サーバ１００における入力値チェック内容との齟齬が生じる可能性がある。それに対して、第２の実施の形態では、入力支援部内記述２１２ａのように、入力支援部２１２では、パラメタのＡＰＩ識別子とパラメタ名のみを指定すればよい。そのため、入力値チェック内容の齟齬が生じることを抑止できるとともに、入力支援部２１２のプログラムモジュールの開発が容易となる。
【００５８】
端末装置２００の入力支援部２１２は、このようなアカウント作成画面４０を表示する際に、入力支援部内記述２１２ａに基づいて、各入力フィールド４１，４２への入力値に関する入力値チェック用の定義情報を、ストレージ運用管理サーバ１００から取得する。そして入力支援部２１２は、取得した定義情報に基づいて、入力値チェックを行う。
【００５９】
アカウントが作成されると、端末装置２００にログイン画面が表示される。
図８は、ログイン画面の一例を示す図である。ログイン画面５０には、ユーザ名とパスワードとの入力フィールド５１，５２が設けられている。ユーザが、入力フィールド５１，５２それぞれにユーザ名とパスワードとを正しく入力すると、ストレージ運用管理サーバ１００によりユーザ認証が行われ、ストレージ管理画面が表示される。
【００６０】
図９は、ストレージ管理画面の一例を示す図である。ストレージ管理画面６０には、ストレージ選択ボタン６１〜６４、プール一覧６５、およびアクションボタン６６が設定されている。ストレージ選択ボタン６１〜６４は、ストレージプールを作成するストレージ装置を指定するためのボタンである。ストレージ選択ボタン６１は、ストレージプールの作成対象を限定しない場合に押下するボタンである。ストレージ選択ボタン６２〜６４は、それぞれには、そのボタンが選択されたときにストレージプールを作成するストレージ装置が対応付けられている。
【００６１】
プール一覧６５には、既に作成されているストレージプールのリストが表示されている。ストレージプールを作成する場合、ユーザは、アクションボタン６６を押下する。アクションボタンが押下されると、プルダウンメニューが表示される。プルダウンメニューには作成コマンド６７が含まれている。ユーザがプルダウンメニューから作成コマンド６７を選択すると、ストレージ選択ボタン６１〜６４によって選択されたストレージ装置によりストレージプールが作成される。ストレージ選択ボタン６１がユーザにより選択されている場合、ストレージ運用管理サーバ１００が、各ストレージ装置の空き容量などを考慮して、適切なストレージ装置を用いてストレージプールを作成する。ストレージ選択ボタン６２〜６４のいずれかがユーザにより選択されている場合、ストレージ運用管理サーバ１００は、選択されたストレージ選択ボタンに対応するストレージ装置を用いてストレージプールを作成する。
【００６２】
ストレージプールの作成コマンド６７が選択された場合、端末装置２００にはプール作成画面が表示される。
図１０は、プール作成画面の一例を示す図である。プール作成画面７０には、プール名入力用の入力フィールド７１が設けられている。ユーザがこの入力フィールド７１にストレージプールの名称を入力すると、端末装置２００とストレージ運用管理サーバ１００との両方で、入力値チェックが行われる。
【００６３】
図１１は、入力値チェック処理の一例を示す図である。例えばユーザが端末装置２００を用いてストレージ運用管理サーバ１００にアクセスすると、ブラウザ２１０によりＧＵＩ２１１と入力支援部２１２が起動される。ストレージ運用管理用に起動されたＧＵＩ２１１には、例えばストレージ運用に関する設定画面（例えばプール作成画面７０）が表示される。
【００６４】
入力支援部２１２は、設定画面内の入力フィールド（例えばプール作成画面７０の入力フィールド７１）に入力可能な文字に関する定義情報３１を、ストレージ運用管理サーバ１００から取得する。例えば入力支援部２１２は、ストレージ運用管理サーバ１００に定義情報取得要求３０を送信する。定義情報取得要求３０には、例えばＡＰＩ識別子「v1/pools」とパラメタ名「name」とが含まれる。またユーザが、操作対象のストレージ装置を選択した場合、選択されたストレージ装置の識別子が定義情報取得要求に含まれる。
【００６５】
定義情報取得要求３０はＷｅｂサーバ部１２０で受け取られる。Ｗｅｂサーバ部１２０は、取得した定義情報３１を要求処理部１３０に転送する。要求処理部１３０は、要求処理支援部１４０に定義情報３１の取得要求を転送する。要求処理支援部１４０は、静的定義ファイル１１１と動的定義ＤＢ１１２とに基づいて、設定画面内の入力フィールド４１，４２に入力された文字列の入力値チェックに関する定義情報３１を生成する。
【００６６】
要求処理支援部１４０は、生成した定義情報３１を、要求処理部１３０に送信する。要求処理部１３０は、取得した定義情報３１を、Ｗｅｂサーバ部１２０に転送する。Ｗｅｂサーバ部１２０は、取得した定義情報３１を、定義情報取得要求に対する応答として、端末装置２００に送信する。
【００６７】
端末装置２００の入力支援部２１２は、定義情報３１を取得すると、取得した定義情報３１をメモリに格納する。その後、入力支援部２１２は、ユーザが設定画面内の入力用のフィールドに文字を１文字入力するごとに、入力された文字が、定義情報３１に適合するか否か（妥当性）を検証する。入力された文字が定義情報３１に不適合な場合、入力支援部２１２は、文字が不適合である旨をＧＵＩ２１１に通知する。ＧＵＩ２１１は、入力された文字が不適合な場合、その旨をブラウザ２１０の画面で表示する。
【００６８】
入力された文字がすべて定義情報３１に適合した状態で、ユーザが入力文字列を確定する操作を行うと、ＧＵＩ２１１から入力支援部２１２へ操作実行依頼が送信される。入力支援部２１２は、操作実行依頼に応じた処理要求をストレージ運用管理サーバ１００に送信する。
【００６９】
ストレージ運用管理サーバ１００ではＷｅｂサーバ部１２０が操作要求を受信する。Ｗｅｂサーバ部１２０は、受信した操作要求を要求処理部１３０に転送する。要求処理部１３０は、操作要求を要求処理支援部１４０に転送する。要求処理支援部１４０は、静的定義ファイル１１１と動的定義ＤＢ１１２とに基づいて操作要求に示される文字列の入力値チェック（妥当性の検証）を行う。
【００７０】
図１２は、ストレージ運用管理サーバにおける定義情報の生成例を示す図である。図１２の例では、定義情報取得要求３０には、ＡＰＩ識別子「v1/pools」、パラメタ名「name」、ストレージ装置識別子「１」の情報が含まれている。この場合、要求処理支援部１４０は、静的定義ファイル１１１を参照し、ＡＰＩ識別子「v1/pools」のパラメタ名「name」に対応するパラメタ値「pool_name」を取得する。次に要求処理支援部１４０は、動的定義ＤＢ１１２内のレコード１１２ａ，１１２ｂ，・・・のうち、パラメタ値「pool_name」に対応するレコード１１２ａから、タイプ「permit_symbol」、値「#$%&」を取得する。なおレコード１１２ａには、ストレージ装置ごとのパラメタ値「pool_name」に関するレコードの検索キー（m_info）として「pool_name_sym」と設定されている。そこで、要求処理支援部１４０は、「pool_name_sym」をキーとして含むレコードを検索する。要求処理支援部１４０は、検索でヒットしたレコード１１２ｂ〜１１２ｄのうちの、定義情報取得要求３０に示されるストレージ装置識別子「１」のレコード１１２ｂから、タイプ「permit_symbol」、値「=~|-^」を取得する。
【００７１】
そして要求処理支援部１４０は、取得したデータに基づいて、端末装置２００に送信する定義情報３１を生成する。例えば図１２の例では、定義情報３１には、操作対象のストレージ装置を指定していない操作に関する入力値については、許容される記号が「#$%&」であることが示されている。また定義情報３１には、操作対象がストレージ識別番号「１」のストレージ装置に対する操作に関する入力値については、許容される記号が「=~|-^」であることが示されている。
【００７２】
図１３は、端末装置における入力値チェック例を示す図である。図１３の例では、ストレージ識別番号「１」のストレージ装置を用いたストレージプールの名前入力用の入力フィールド７１に「pool-01」と入力されている。ＧＵＩ２１１は、入力フィールド７１に１文字入力されるごとに、入力された文字の入力値チェック依頼を、入力支援部２１２に送信する。入力支援部２１２は、定義情報３１を参照し、入力値チェックを行う。図１３の例では、定義情報３１において、ストレージ識別番号「１」のストレージ装置に対する操作では、アルファベットや数字の半角文字と記号「=~|-^」とが入力可能であることが定義されている。そこで、入力支援部２１２は、入力されたいずれの文字も適切な文字であると判断する。
【００７３】
なお、プール作成画面７０での入力項目としては、ストレージプールのサイズのように、数字の入力が行われる場合もある。数字が入力される場合、１桁ごとの数ではなく、入力フィールドに入力された数値について、入力値チェックが行われる。例えばストレージプールのサイズ入力用の入力フィールドに「1024」（ＴＢ）と入力されたものとする。ＧＵＩ２１１は、その入力フィールドに１文字入力されるごとに、入力された文字の入力値チェック依頼を、入力支援部２１２に送信する。入力支援部２１２は、定義情報３１を参照し、その時点で入力フィールドに設定されている数値についての入力値チェックを行う。例えば定義情報３１において、設定可能なストレージプールのサイズの上限として、１０２４ＴＢより大きい値が示されているものとする。この場合、入力支援部２１２は、入力されたサイズが妥当であると判断する。
【００７４】
その後、ユーザが設定ボタン４４を押下すると、ＧＵＩ２１１は、設定実行依頼を入力支援部２１２に送信する。すると入力支援部２１２は、操作要求８１をストレージ運用管理サーバ１００に送信する。操作要求８１には、ＡＰＩ識別子「v1/pools」、パラメタ名「name」の入力文字列「pool-01」、ストレージ装置識別子「１」などが含まれる。
【００７５】
なお図１３の例では、設定可能な文字が入力された場合を示しているが、設定が許容されていない文字が入力される場合もある。その場合、端末装置２００では、エラーメッセージが表示される。
【００７６】
図１４は、端末装置における入力値チェック例を示す図である。例えばユーザが、入力フィールド７１に記号「!」を入力したものとする。この記号は、ストレージ装置識別子「１」のストレージ装置を操作する場合に入力が許される記号「=~|-^」に含まれていない。そこで入力支援部２１２により、不適合と判定される。そして入力支援部２１２は、不適合の判定結果をＧＵＩ２１１に通知する。不適合の判定結果には、例えば、不適合となった理由を示すエラーメッセージが含まれる。ＧＵＩ２１１は、エラーメッセージを、例えばポップアップメニュー７２でプール作成画面７０に表示する。
【００７７】
ユーザは、ポップアップメニュー７２で表示されたエラーメッセージを参照し、入力した文字が不適切であったことを認識する。そしてユーザは、不適切な文字を削除後、設定値として許容される文字を、入力フィールド７１に再入力する。
【００７８】
ここで、図１３に示したように正しい値が入力されると、操作要求８１がストレージ運用管理サーバ１００に送信される。ストレージ運用管理サーバ１００では、操作要求８１に応じたストレージ装置３００，４００，５００の操作を行う前に、入力値チェックを行う。
【００７９】
図１５は、ストレージ運用管理サーバにおける入力値チェック例を示す図である。端末装置２００からの操作要求８１を受信したストレージ運用管理サーバ１００では、要求処理部１３０が、操作要求８１を解読する。そして要求処理部１３０は、操作要求８１から、例えばＡＰＩ識別子、パラメタ名、入力文字列を抽出する。要求処理部１３０は、抽出した情報を、要求処理支援部１４０に送信する。
【００８０】
要求処理支援部１４０は、まず静的定義ファイル１１１を参照する。そして要求処理支援部１４０は、パラメタ名を検索キーとして、静的定義ファイル１１１内の情報を検索する。図１５の例では、要求処理支援部１４０がパラメタ名「name」で検索し、そのパラメタ名に対応する定義名「pool_name」を取得する。
【００８１】
次に、要求処理支援部１４０は、定義名「pool_name」を検索キーとして、動的定義ＤＢ１１２を検索する。すると、レコード１１２ａがヒットする。要求処理支援部１４０は、レコード１１２ａから、許可記号「permit_symbol」の値「#$%&」を取得する。操作要求にストレージ装置識別子が含まれていなければ、要求処理支援部１４０は、取得した値「#$%&」以外の記号が、操作要求８１においてパラメタ値として入力された文字列「pool-01」に含まれるか否かの判断処理（入力値チェック）を行うこととなる。
【００８２】
図１５の例では操作要求にストレージ装置識別子「１」が含まれている。そこで要求処理支援部１４０は、最初の検索でヒットしたレコード１１２ａに検索キー（m_info）として設定された「pool_name_sym」をキーに含む、ストレージ装置識別子「１」のレコード１１２ｂを、動的定義ＤＢ１１２から取得する。レコード１１２ｂには、使用可能な記号が「=~|-^」であることが示されている。入力値「pool-01」には、使用可能な記号「=~|-^」以外の記号は含まれないため、要求処理支援部１４０は、入力値が正しいと判断する。
【００８３】
このように、端末装置２００とストレージ運用管理サーバ１００との両方で、共通の定義情報を用いて入力値チェックを行うことができる。以下、図１６〜図２１を参照して、入力値チェックを伴うストレージ装置３００，４００，５００の操作手順を詳細に説明する。
【００８４】
図１６は、画面表示に伴う定義情報の取得処理の手順の一例を示すシーケンス図である。例えばユーザ８２は、端末装置２００に対して、ストレージ運用管理サーバ１００へのアクセス指示を入力する（ステップＳ１１）。端末装置２００のブラウザ２１０は、ストレージ運用管理サーバ１００に対して、ＧＵＩ２１１と入力支援部２１２とを実行するためのファイルの取得要求を送信する（ステップＳ１２）。ストレージ運用管理サーバ１００のＷｅｂサーバ部１２０は、ファイル取得要求に従って、例えば内部のストレージ装置１０３からＧＵＩ２１１と入力支援部２１２用の実行ファイルを読み出し、端末装置２００に送信する（ステップＳ１３）。
【００８５】
端末装置２００のブラウザ２１０は、入力支援部２１２の初期化処理を行う（ステップＳ１４）。例えばブラウザ２１０は、入力支援部用の実行ファイルを実行することで、入力支援部２１２を起動する。すると入力支援部２１２が、自身の初期化処理を開始する。入力支援部２１２は、初期化処理において、定義情報取得要求をストレージ運用管理サーバ１００に送信する（ステップＳ１５）。この時点では、ユーザ８２によるストレージ装置の選択は行われていないため、ストレージ装置に依存しない共通の定義情報についての定義情報取得要求が行われる。
【００８６】
定義情報取得要求を受信したストレージ運用管理サーバ１００のＷｅｂサーバ部１２０は、定義情報取得要求を受信すると、その定義情報取得要求を要求処理部１３０に転送する（ステップＳ１６）。要求処理部１３０は、受信した定義情報取得要求を、要求処理支援部１４０に転送する（ステップＳ１７）。要求処理支援部１４０は、記憶部１１０内の静的定義ファイル１１１から、静的定義情報を取得する（ステップＳ１８）。さらに要求処理支援部１４０は、記憶部１１０内の動的定義ＤＢ１１２から、動的定義情報を取得する（ステップＳ１９）。要求処理支援部１４０は、取得した静的定義情報と動的定義情報とを統合した定義情報を生成し、生成した定義情報を要求処理部１３０に送信する（ステップＳ２０）。要求処理部１３０は、受信した定義情報をＷｅｂサーバ部１２０に送信する（ステップＳ２１）。Ｗｅｂサーバ部１２０は、受信した定義情報を、端末装置２００に送信する（ステップＳ２２）。
【００８７】
端末装置２００では、定義情報を入力支援部２１２が受信する。そして入力支援部２１２は、受信した定義情報を、メモリなどの記憶装置に格納する（ステップＳ２３）。その後、入力支援部２１２は、初期化終了をブラウザに通知する（ステップＳ２４）。ブラウザ２１０は、入力支援部２１２の初期化が終了すると、ＧＵＩ２１１の初期化処理を行う（ステップＳ２５）。例えばブラウザ２１０は、ＧＵＩ用の実行ファイルを実行することで、ＧＵＩ２１１を起動する。するとＧＵＩ２１１が、自身の初期化処理を開始する。ＧＵＩ２１１は、初期化処理によって初期の操作画面を生成する。ブラウザ２１０は、ＧＵＩ２１１の初期化が終了すると、ＧＵＩ２１１が生成した操作画面をモニタに表示する（ステップＳ２６）。ユーザ８２は、表示された操作画面に対して、文字入力などの操作を行う。
【００８８】
なお、図９、図１０に示したように、ユーザ８２は、操作対象のストレージ装置を指定した操作を行うことができる。この場合、ユーザ８２が操作対象のストレージ装置を選択すると、端末装置２００は、ストレージ運用管理サーバ１００から、操作対象のストレージ装置に対応する動的定義情報を取得する。この際の動的定義情報の取得の手順は、図１６のステップＳ１５〜Ｓ２３の処理と同様である。ただし、要求処理支援部１４０による動的定義情報の取得処理（ステップＳ１９）では、操作対象のストレージ装置に対応するレコードから、動的定義情報を取得する。
【００８９】
図１７は、ストレージ運用管理サーバにおける定義情報提供処理の手順の一例を示すフローチャートである。以下、図１７に示す処理をステップ番号に沿って説明する。
［ステップＳ１０１］ストレージ運用管理サーバ１００は、定義情報取得要求を受信する。定義情報取得要求は、Ｗｅｂサーバ部１２０と要求処理部１３０とを介して、要求処理支援部１４０に転送される。
【００９０】
［ステップＳ１０２］要求処理支援部１４０は、静的定義ファイル１１１内の、定義情報取得要求に示されるＡＰＩ識別子に対応する静的定義から、動的定義の検索キーを取得する。
【００９１】
［ステップＳ１０３］要求処理支援部１４０は、定義情報取得要求において、操作対象のストレージ装置が指定されているか否かを判断する。要求処理支援部１４０は、ストレージ装置が指定されていない場合、処理をステップＳ１０４に進める。また要求処理支援部１４０は、ストレージ装置が指定されている場合、処理をステップＳ１０５に進める。
【００９２】
［ステップＳ１０４］要求処理支援部１４０は、動的定義ＤＢ１１２内のストレージ装置識別子を含まないレコード群の中から、取得した検索キー（例えば「pool_name」）を含むレコードを検索する。
【００９３】
［ステップＳ１０５］要求処理支援部１４０は、操作対象の指定されたストレージ装置の識別子を含む、動的定義ＤＢ１１２内のレコード群の中からレコードを検索する。例えば要求処理支援部１４０は、まず、動的定義ＤＢ１１２内のストレージ装置識別子を含まないレコード群の中から、取得した検索キー（例えば「pool_name」）を含むレコードを検索する。次に要求処理支援部１４０は、該当するレコードに示されるストレージ装置ごとの定義の検索キー（例えば「pool_name_sym」）を含むレコードのうち、操作対象を示すストレージ装置識別子（例えば「stg_id: 1」）を含むレコードを検索する。
【００９４】
［ステップＳ１０６］要求処理支援部１４０は、取得した静的定義と動的定義とから、定義情報を生成する。
［ステップＳ１０７］要求処理支援部１４０は、生成した定義情報を、要求処理部１３０へ送信する。要求処理部１３０は、受信した定義情報をＷｅｂサーバ部１２０へ転送する。そしてＷｅｂサーバ部１２０が、定義情報を端末装置２００に送信する。
【００９５】
このようにして送信された定義情報は、端末装置２００において保持される。そして端末装置２００では、ＧＵＩ２１１によって表示された設定画面に文字が１文字入力されるごとに、入力された文字の入力値チェックを実行する。
【００９６】
図１８は、端末装置における入力値チェック処理の手順の一例を示すシーケンス図である。ユーザ８２が端末装置２００へ文字入力を行う（ステップＳ４１）。端末装置２００では、ブラウザ２１０が入力された文字を認識し、その文字をＧＵＩ２１１に設定する（ステップＳ４２）。ＧＵＩ２１１は、入力された文字の入力値チェックを、入力支援部２１２に依頼する（ステップＳ４３）。入力支援部２１２は、予め取得してある定義情報に基づいて、入力値チェックを行う（ステップＳ４４）。そして、入力支援部２１２は、入力値チェックの結果をＧＵＩ２１１に応答する（ステップＳ４５）。ＧＵＩ２１１は、入力値チェック結果に応じて表示するメッセージ（例えばエラーメッセージ）がある場合、その表示をブラウザ２１０に指示する（ステップＳ４６）。ブラウザ２１０は、モニタにメッセージを表示する（ステップＳ４７）。
【００９７】
図１８に示すような処理が、１文字入力されるごとに繰り返される。入力支援部２１２は、例えば定義情報に合致しない文字が入力された場合にはエラーメッセージを表示し、その文字の修正を促す。そして入力支援部２１２は、定義情報に適合する文字の文字入力が確定すると、操作要求をストレージ運用管理サーバ１００へ操作要求を送信する。
【００９８】
図１９は、１文字ずつの入力値チェック処理の手順の一例を示すフローチャートである。以下、図１９に示す処理を、ステップ番号に沿って説明する。
［ステップＳ１１１］入力支援部２１２は、入力フィールドへの文字入力が行われたか否かを判断する。入力支援部２１２は、入力フィールドに文字が１文字入力された場合、処理をステップＳ１１２に進める。また入力支援部２１２は、入力フィールドへ文字が入力されていなければ、処理をステップＳ１１６に進める。
【００９９】
［ステップＳ１１２］入力支援部２１２は、定義情報に基づいて、入力された文字が妥当か否かを判断する。入力支援部２１２は、入力された文字が妥当な場合、処理をステップＳ１１６に進める。また入力支援部２１２は、入力された文字が妥当ではない場合、処理をステップＳ１１３に進める。
【０１００】
［ステップＳ１１３］入力支援部２１２は、ブラウザ２１０にエラーメッセージを表示させる。例えば入力支援部２１２は、入力された文字が不適当であることを示すエラーメッセージを、ＧＵＩ２１１に送信する。ＧＵＩ２１１は、受信したエラーメッセージを含むポップアップメニューの表示をブラウザ２１０に指示する。するとブラウザ２１０が、エラーメッセージを示すポップアップメニューを画面表示する。
【０１０１】
［ステップＳ１１４］入力支援部２１２は、不適当な文字が、入力フィールドから消去されたか否かを判断する。入力支援部２１２は、該当文字が消去された場合、処理をステップＳ１１５に進める。また入力支援部２１２は、該当文字が消去されていなければ、消去されるまでステップＳ１１４の処理を繰り返す。
【０１０２】
［ステップＳ１１５］入力支援部２１２は、エラーメッセージの表示を停止する。例えば入力支援部２１２は、エラーメッセージの表示停止指示をＧＵＩ２１１に指示する。ＧＵＩ２１１は、エラーメッセージのポップアップメニューの表示の停止を、ブラウザ２１０に指示する。ブラウザ２１０は、画面からポップアップメニューを消去する。その後、入力支援部２１２は、処理をステップＳ１１１に進める。
【０１０３】
［ステップＳ１１６］入力支援部２１２は、ユーザにより、操作実行を依頼する操作入力が行われたか否かを判断する。入力支援部２１２は、操作実行依頼が入力された場合、入力フィールドの文字列を確定して、処理をステップＳ１１７に進める。また入力支援部２１２は、操作実行依頼が入力されていなければ、処理をステップＳ１１１に進める。
【０１０４】
［ステップＳ１１７］入力支援部２１２は、入力フィールドの文字列に応じた操作要求を、ストレージ運用管理サーバ１００に送信する。
このようにして、定義情報に従った適切な文字のみを含む文字列を含む操作要求が、端末装置２００からストレージ運用管理サーバ１００に送信される。ストレージ運用管理サーバ１００においても入力値チェックを行った上で、操作要求に応じたストレージ装置への操作が実行される。
【０１０５】
図２０は、ストレージ装置の操作手順の一例を示すシーケンス図である。ユーザ８２が、操作実行を依頼する操作入力を行う（ステップＳ６１）。すると端末装置２００のブラウザ２１０は、操作実行依頼をＧＵＩ２１１に送信する（ステップＳ６２）。ＧＵＩ２１１は、入力支援部２１２に操作実行依頼を転送する（ステップＳ６３）。入力支援部２１２は、操作実行依頼に応じて、操作要求をストレージ運用管理サーバ１００に送信する（ステップＳ６４）。
【０１０６】
ストレージ運用管理サーバ１００では、Ｗｅｂサーバ部１２０が操作要求を受信する。そしてＷｅｂサーバ部１２０は、操作要求に応じた操作実行指示を要求処理部１３０に送信する（ステップＳ６５）。要求処理部１３０は、操作実行指示を要求処理支援部１４０に送信する（ステップＳ６６）。
【０１０７】
要求処理支援部１４０は、操作実行指示を受信すると、入力値チェック処理を開始する（ステップＳ６７）。要求処理支援部１４０は、入力値チェック処理において、まず、静的定義ファイル１１１から静的定義情報を取得する（ステップＳ６８）。次に要求処理支援部１４０は、動的定義ＤＢ１１２から動的定義情報を取得する（ステップＳ６９）。そして要求処理支援部１４０は、静的定義情報と動的定義情報とに基づいて、入力された文字の妥当性をチェックする（ステップＳ７０）。入力された文字が妥当な場合、要求処理支援部１４０は、操作対象のストレージ装置に対して、操作実行指示に従った操作を実行する（ステップＳ７１）。例えば要求処理支援部１４０は、ストレージ装置を用いたストレージプール作成をストレージ管理部１５０に指示する。ストレージ管理部１５０は、ストレージプールに利用するストレージ装置に対して、ストレージプールの設定を行う。
【０１０８】
操作実行が完了すると、要求処理支援部１４０は、操作実行の完了応答を要求処理部１３０に送信する（ステップＳ７２）。要求処理部１３０は、操作実行の完了応答をＷｅｂサーバ部１２０に送信する（ステップＳ７３）。Ｗｅｂサーバ部１２０は、操作要求に応じた操作の実行結果を、端末装置２００に送信する（ステップＳ７４）。端末装置２００では、実行結果を入力支援部２１２が受信する。そして入力支援部２１２は、操作実行結果をＧＵＩ２１１に送信する（ステップＳ７５）。ＧＵＩ２１１は、操作実行結果の表示をブラウザ２１０に指示する（ステップＳ７６）。ブラウザ２１０は、操作実行結果を画面に表示する（ステップＳ７７）。
【０１０９】
このようにして、ストレージ運用管理サーバ１００においても、端末装置２００と統一した定義情報に基づいて、入力値チェックが行われる。
なお動的定義ＤＢ１１２内のデータは、システム内のストレージ装置３００，４００，５００の構成の変更に伴って、動的に更新される。動的定義ＤＢ１１２内のデータの更新は、例えば要求処理支援部１４０によって実行される。
【０１１０】
図２１は、動的定義ＤＢ更新処理の手順の一例を示すフローチャートである。以下、図２１に示す処理をステップ番号に沿って説明する。なお、動的定義ＤＢ更新処理は、要求処理支援部１４０により定期的に実行される。
【０１１１】
［ステップＳ１３１］要求処理支援部１４０は、ストレージ装置が新たにシステムに登録されたか否かを判断する。例えば、ストレージ管理部１５０が、システム内のストレージ装置の構成を示す構成情報を管理する。ストレージ管理部１５０は、定期的にシステムの構成をチェックする。システムに新たなストレージ装置が接続されると、ストレージ管理部１５０は、接続されたストレージ装置から情報を取得し、取得した情報に基づいて、管理している構成情報を更新する。要求処理支援部１４０は、ストレージ管理部１５０が新たなストレージ装置を検知して、構成情報にそのストレージ装置の情報を登録した場合、ストレージ装置が登録されたと判断する。
【０１１２】
要求処理支援部１４０は、ストレージ装置が登録された場合、処理をステップＳ１３２に進める。また要求処理支援部１４０は、ストレージ装置が登録されていなければ、処理をステップＳ１３３に進める。
【０１１３】
［ステップＳ１３２］要求処理支援部１４０は、新たに登録されたストレージ装置から、動的定義情報を取得する。例えば要求処理支援部１４０は、ストレージ管理部１５０に対して、新たに登録されたストレージ装置からの動的定義情報の取得を指示する。ストレージ管理部１５０は、指示に従って、ストレージ装置から動的定義情報を取得し、取得した動的定義情報を要求処理支援部１４０に送信する。要求処理支援部１４０は、取得した動的定義情報を示すレコードを、動的定義ＤＢ１１２に追加登録する。
【０１１４】
［ステップＳ１３３］要求処理支援部１４０は、ストレージ装置の状態に変化があったか否かを判断する。例えば、ストレージ管理部１５０が、登録されているストレージ装置の状態（動的定義情報を含む）を定期的にチェックする。ストレージ管理部１５０は、ストレージ装置の状態に変化があると、このことを検知し、その旨を要求処理支援部１４０に通知する。要求処理支援部１４０は、ストレージ装置の状態が変化した旨の通知を受け取った場合、ステップＳ１３３において、ストレージ装置の状態に変化ありと判断する。
【０１１５】
要求処理支援部１４０は、いずれかのストレージ装置の状態が変化した場合、処理をステップＳ１３４に進める。また要求処理支援部１４０は、いずれのストレージ装置の状態も変化していなければ、動的定義更新処理を終了する。
【０１１６】
［ステップＳ１３４］要求処理支援部１４０は、ストレージ管理部１５０を介して、状態が変化したストレージ装置の動的定義情報を、そのストレージ装置から取得する。そして要求処理支援部１４０は、動的定義ＤＢ１１２内の該当ストレージ装置の動的定義情報を示すレコードを、取得した動的定義情報に基づいて更新する。
【０１１７】
動的定義ＤＢ情報を適宜更新することにより、動的定義ＤＢ１１２内のデータが、常に最新の状態に維持される。
このように第２の実施の形態によれば、端末装置２００とストレージ運用管理サーバ１００とにおいて、統一した定義情報に基づいて、入力値チェックを行うことができる。その結果、端末装置２００での入力値チェックの内容と、ストレージ運用管理サーバ１００での入力値チェックの内容とで不整合（仕様の齟齬）が生じることを抑止できる。その結果、システムのサービスの品質が向上する。
【０１１８】
しかも端末装置２００では、ＧＵＩ２１１や入力支援部２１２を実現するためのファイルをストレージ運用管理サーバ１００から取得しており、これらのコンポーネントの開発を、端末装置２００側で個別に行わずに済む。そのため、端末装置２００とストレージ運用管理サーバ１００との双方での入力値チェック処理用のソフトウェアコンポーネントの重複した開発（２重開発）による無駄な作業の発生を抑止できる。
【０１１９】
〔その他の実施の形態〕
第２の実施の形態では、アカウント作成時またはストレージプールの作成時に入力された文字の入力値チェックを行う例を示したが、他の用途で入力された文字についても、同様に、統一した定義情報による入力値チェックが可能である。
【０１２０】
またストレージ運用管理サーバ１００の記憶部１１０、Ｗｅｂサーバ部１２０、要求処理部１３０、および要求処理支援部１４０を、各ストレージ装置３００，４００，５００内に設けることもできる。この場合、端末装置２００は、ストレージプールの作成などのストレージ装置に関する操作を、ストレージ運用管理サーバ１００を介さずに、ストレージ装置３００，４００，５００に対して直接行うことが可能となる。そして、ストレージ装置３００，４００，５００を端末装置２００から直接操作する場合であっても、端末装置２００と操作対象のストレージ装置との間で統一した入力値チェックが行われる。
【０１２１】
第２の実施の形態では、入力値チェックの例として、入力が許容される文字の種別の妥当性を判断する例を示したが、他の入力値チェックも可能である。例えば端末装置２００とストレージ運用管理サーバ１００とは、ストレージ運用管理サーバ１００と端末装置２００との両方で、入力された数値が、予め設定された許容数値範囲内に入っているか否かをチェックすることができる。
【０１２２】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１２３】
１  サーバ
１ａ  第１記憶部
１ｂ  第１処理部
２  端末装置
２ａ  第２記憶部
２ｂ  第２処理部
３  取得要求
４  定義情報
５  画面
６  入力領域
７  メッセージ
８  処理要求
【図１】
2019191931.tif 000003
【図２】
2019191931.tif 000004
【図３】
2019191931.tif 000005
【図４】
2019191931.tif 000006
【図５】
2019191931.tif 000007
【図６】
2019191931.tif 000008
【図７】
2019191931.tif 000009
【図８】
2019191931.tif 000010
【図９】
2019191931.tif 000011
【図１０】
2019191931.tif 000012
【図１１】
2019191931.tif 000013
【図１２】
2019191931.tif 000014
【図１３】
2019191931.tif 000015
【図１４】
2019191931.tif 000016
【図１５】
2019191931.tif 000017
【図１６】
2019191931.tif 000018
【図１７】
2019191931.tif 000019
【図１８】
2019191931.tif 000020
【図１９】
2019191931.tif 000021
【図２０】
2019191931.tif 000022
【図２１】
2019191931.tif 000023