(57)【要約】サーバを使用して関数を実行する方法およびシステムであって、データを処理するための少なくとも１つの処理機能を提供する方法およびシステムが開示されており、同方法は、シェル関数を使用して関数の引数をクライアントにて受け取るステップと、受け取った引数をサーバに位置する関数に提供するステップと、受け取った引数を用いて関数の実行から結果データを取得するステップと、を含み、シェル関数は、前記関数の関数パラメータを表す対応する関数パラメータを有する宣言関数を含み、さらに宣言関数は、前記関数にマッピングされた対応する関数名を有する。
2019505932.tif 000002
【特許請求の範囲】
【請求項１】
サーバを使用して関数を実行する方法であって、データを処理するための少なくとも１つの処理機能を提供する方法において、前記方法は、
リモート処理ユニットからシェル関数をクライアントに提供するステップと、
前記シェル関数を使用して関数の引数をクライアントにて受け取るステップと、
受け取った関数引数を前記サーバに位置する関数に提供するステップと、
受け取った引数を用いて前記関数の実行から結果データを前記サーバで取得するステップと、
結果データをクライアントに提供するステップと、
を含み、
前記シェル関数は、前記関数の関数パラメータを表す対応する関数パラメータを有する宣言関数を含み、前記宣言関数は、前記関数にマッピングされた対応する関数名を有する方法。
【請求項２】
前記シェル関数を前記クライアントに提供するステップが、ユーザからのイベントに応答して実行される、請求項１に記載の方法。
【請求項３】
前記シェル関数は、前記サーバにおいて自動的に生成される、請求項１に記載の方法。
【請求項４】
前記リモート処理ユニットが前記サーバを含む、請求項１乃至３のいずれか一項に記載の方法。
【請求項５】
対応する関数名が前記関数と同等である、請求項１乃至４のいずれか一項に記載の方法。
【請求項６】
対応する関数名が前記関数と異なり、サーバに配置されたシェルマネージャをさらに含み、前記シェルマネージャは、対応する関数名を前記関数にマッピングするように適合される、請求項１乃至４のいずれか一項に記載の方法。
【請求項７】
シェルマネージャは、対応する関数パラメータのサブセットを関数パラメータにマッピングするようにさらに適合される、請求項６に記載の方法。
【請求項８】
前記ユーザからの前記イベントは、処理される前記データに関連する、請求項２に記載の方法。
【請求項９】
前記シェルマネージャは、所与の関数引数を別のサーバに位置する所与の関数に中継することができる、請求項６に記載の方法。
【請求項１０】
前記シェルマネージャは、対応する関数引数および対応する関数名を別のサーバに位置する所与の関数に中継することができる、請求項６に記載の方法。
【請求項１１】
前記関数は複数の処理機能を提供し、さらに、前記サーバは、前記処理機能のそれぞれを基準に従って対応するサブ関数にディスパッチするためのキューマネージャを含む、請求項１乃至９のいずれか一項に記載の方法。
【請求項１２】
少なくとも１つのサブ関数がリモートサーバに配置されている、請求項１１に記載の方法。
【請求項１３】
前記基準は、所与の関数に関連する優先度、サーバで利用可能な処理、サーバで利用可能なリソース、サーバにて所与の関数に関連するサブ関数を同期させること、サーバと少なくとも１つのユーザ定義の基準でシェル関数の引数のロード・バランシング処理関数の実行に対するレートを管理すること、からなる群より選択される、請求項１１に記載の方法。
【請求項１４】
前記結果データは、前記シェル関数を介して前記クライアントに提供される、請求項１乃至１３のいずれか一項に記載の方法。
【請求項１５】
データを処理するための関数が、グラフィカルユーザインタフェースの少なくとも一部を提供するために使用される、請求項１乃至１４のいずれか一項に記載の方法。
【請求項１６】
データを処理する関数は、前記グラフィカルユーザインタフェースにおけるスライダの実装に関連する関数を含む、請求項１５に記載の方法。
【請求項１７】
サーバを使用して関数を実行する方法であって、データを処理するために少なくとも１つの処理機能を提供する方法において、前記方法は、
シェル関数を使用して関数の引数をクライアントにて受け取るステップと、
受け取った引数をサーバに位置する関数に提供するステップと、
受け取った引数を使用して関数の実行から結果データを取得するステップと、を含み、
前記シェル関数は、前記関数の関数パラメータを表す対応する関数パラメータを有する宣言関数を含み、さらに、前記宣言関数は、前記関数にマッピングされた対応する関数名を有する、方法。
【請求項１８】
対応する関数名が前記関数と異なり、サーバに位置するシェルマネージャをさらに含み、前記シェルマネージャは、対応する関数名を前記関数にマッピングするように適合される請求項１７に記載の方法。
【請求項１９】
前記関数は複数の処理機能を提供し、さらに、前記処理機能のそれぞれを基準に従って対応するサブ関数にディスパッチするためのキューマネージャを含む、請求項１７に記載の方法。
【請求項２０】
前記基準は、所与の関数に関連する優先度、サーバで利用可能な処理、サーバで利用可能なリソース、サーバにて所与の関数に関連するサブ関数を同期させること、サーバと少なくとも１つのユーザ定義の基準でシェル関数の引数のロード・バランシング処理関数の実行に対するレートを管理すること、からなる群より選択される、請求項１９に記載の方法。
【請求項２１】
サーバを使用して関数を実行するための処理デバイスであって、データを処理するための少なくとも１つの処理機能を提供する処理デバイスにおいて、前記処理デバイスは、
中央処理ユニットと；
表示デバイスと；
通信ポートと、
サーバを使用して関数を実行するアプリケーションを含むメモリユニットであって、データを処理するための少なくとも１つの処理機能を提供するメモリユニットと、
前記中央処理ユニット、前記表示デバイス、前記通信ポート及び前記メモリユニットを相互接続するためのデータバスと、
を含み、
前記アプリケーションは、
シェル関数を使用して関数の引数をクライアントで受け取るための命令と、
受け取った引数をサーバに位置する関数に提供するための命令と、
受け取った引数を使用して関数の実行から結果データを取得するための命令と、を含み、前記シェル関数は、前記関数の関数パラメータを表す対応する関数パラメータを有する宣言関数を含み、さらに前記宣言関数は、前記関数にマッピングされた対応する関数名を有する、処理デバイス。
【請求項２２】
実行時に、処理デバイスに、サーバを使用して関数を実行する方法を実行させるコンピュータ実行可能命令を記憶するための非一時的なコンピュータ読み取り可能な記憶媒体であって、データを処理するための少なくとも１つの処理機能を提供する、非一時的なコンピュータ読み取り可能な記憶媒体において、前記方法は、
シェル関数を使用して関数の引数をクライアントにて受け取るステップと、
受け取った引数をサーバに位置する関数に提供するステップと、
受け取った引数を使用して関数の実行から結果データを取得するステップと、
を含み、
前記シェル関数は、前記関数の関数パラメータを表す対応する関数パラメータを有する宣言関数を含み、さらに前記宣言関数は、前記関数にマッピングされた対応する関数名を有する、非一時的なコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理に関する。より正確には、本発明は、サーバを使用してデータを処理するための関数を実行するための方法およびシステムに関する。
【背景技術】
【０００２】
ソフトウェアインタフェースを設計するには、グラフィカルユーザインタフェース（ＧＵＩ）への視覚的および時間的挙動の合成が必要である。Ｗｉｋｉｐｅｄｉａ（ｈｔｔｐ：／／ｅｎ．ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／Ｇｒａｐｈｉｃａｌ＿ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅおよびｈｔｔｐ：／／ｅｎ．ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／Ｇｒａｐｈｉｃａｌ＿ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｅｌｅｍｅｎｔｓ）で定義されているように、これはヒューマン・コンピュータ・インタラクションの分野におけるソフトウェアアプリケーションプログラミングの重要な部分である。その目的は、基本的なストアド・プログラムの論理設計、ユーザビリティとして知られている設計規律、の効率と使いやすさを向上させることである。
【０００３】
対話のＷＩＭＰパラダイム（「ウィンドウ、アイコン、メニュー、ポインティングデバイス」）は、仮想入力デバイスを使用してポインタ（ほとんどの場合はマウス）の位置を制御し、ウィンドウで構成され、アイコンで表される情報を提示する。使用可能なコマンドはメニューでまとめられ、ポインティングデバイスを用いてジェスチャを行ってアクションが実行される。
【０００４】
得られるＧＵＩレイアウトは、アクションを開始するコントロールウィジェット（アイコン、メニュー、ボタン）、および、ビューポートとしても知られ、コンテンツに対して対話型アクションを提供するコンテンツウィジェット（２Ｄ画像、３Ｄボリューム）、を含むパネルで構成される。例えば、医療用アプリケーションは通常、主制御ウィジェットおよび複数のビューポートを含み、後において、生のＣＴスキャナ画像としても知られる３Ｄ臓器、３Ｄ臓器のＤスライス（それらに限定されるものではないが）などのデータの視覚的表現を可能にする。
【０００５】
スライダの例
スライダは、一般的にハンドル付きのレクタングル（ｒｅｃｔａｎｇｌｅ）である。ハンドルは１つの軸に沿ってドラッグできる。スライダはアプリケーションの他のオブジェクトにハンドルの位置を通知し、それにより、関連するオブジェクトが動的に変更される。
【０００６】
先行技術の最小の例は、その位置がオペレータに提示するために画像スタック（３Ｄ）内の画像スライス（２Ｄ）を表すスライダを考慮することである。確定的な例を図１に示す。
【０００７】
従来技術のアプリケーションは、少なくとも５つ（５）のコンポーネント、（１）アプリケーションの一般的なコンテナ、（２）２Ｄ画像を表示する画像コンテナ、（３）画像スライスを抽出する画像スタック操作プロセス、（４）スライダオブジェクト、（５）スライダファンクション（ｆｕｎｃｔｉｏｎ）、を定義する。上述したように、この従来技術のアプリケーションの主要部は、２Ｄスライスを抽出するためにスライダ位置を画像スタックに結合することである。
【０００８】
このような先行技術のシステムおよび方法の限界の明確な例は、スライダの位置を２Ｄスライスの抽出、３Ｄ画像スタックの特異性（すなわち、画像の線形スタック、異なる座標の複数の画像モダリティから生じる１つの画像による複合スタックなど）に結合するファンクションを調整する必要性である。実際、クライアント／サーバ・アーキテクチャでは、クライアントは、それが接続可能なサーバ、そして、より具体的には、サーバ上にて起こり得る「スライダ結合ファンクション」を先験的に知ることをクライアントが知らない場合、進化することが可能であるべき動作のセット全体を事前に決定することができない。
【０００９】
言い換えれば、従来の方法のクライアントアプリケーションは、それらのＧＵＩを動的に更新することができる能力を有していても、可能性のある更新セット全体の知識をなくしてサーバを通じて提供されるいくつかのデータに基づいてＧＵＩをコンテキスト更新することができない。
【００１０】
ここで図２を参照すると、インプリメンテーションがローカルにすなわちクライアント側で実行される必要がある場合にオペレータにスライダを提示するグラフィカルユーザインタフェースのインプリメンテーションを表す例示的なコードスニペットが示されている。
【００１１】
コードの５／６はレイアウトの管理に関するものであり、１／６はスライダの動作の管理に関するものであり、具体的にどの値を軸に沿ったどのスライダの位置に関連付けるべきかに関するものであり、この場合はテキスト出力フィールドにおいて、この値を別のオブジェクトにさらに関連づける。
【００１２】
結果として、関数ｕｐｄａｔｅＰｏｓ（）は、最終的なアプリケーションの必要性に合わせて調整される（すなわち、テキストフィールドを介してオペレータに表示される数を決定する）ことが分かる。
【００１３】
言い換えれば、対話性を提供しているコンポーネントに対するスライダの挙動を定義するための先験的な情報が必要である。
このような先行技術の状況では、具体的には、クライアントは、グラフィカル要素オブジェクトとそれが結合されているデータとの間で予想される対話型挙動の種類を認識しないであろうことから、クライアントが、オペレータに提示されたコンテキスト情報の性質に動的に応答するように進化することができないことが理解される。
【００１４】
それにもかかわらず、ビューポート内に一組の機能を直接提供することは、ボタン、アイコン、およびメニューなど（これに限定されるものではない）のグラフィカルユーザインタフェース要素の効率的な統合を提供することが可能であることが従来のシステムにおいて受容されている。具体的には、制御ウィジェットの関連するアクションを関連するコンテンツウィジェット中に直接転送することが推奨される。そのような例は、２０００年に公開されたもので、「ＰＵＩのウィジェットレンダリングはＯｐｅｎＧＬ呼び出しを使用して実行される、ＧＵＩがいくつかの３Ｄレンダリングを（しばしば透過的に）オーバーレイする必要があるゲームや他の対話型プログラムにいくつかの単純なＧＵＩ要素を追加する作業に適している」としてそれ自体を記載する、ＰＵＩ：Ｐｉｃｏｓｃｏｐｉｃ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ（ｈｔｔｐ：／／ｐｌｉｂ．ｓｏｕｒｃｅｆｏｒｇｅ．ｎｅｔ／ｐｕｉ／）および２０００年１０月１８日における関連する刊行物（ｈｔｔｐ：／／ｐｌｉｂ．ｓｏｕｒｃｅｆｏｒｇｅ．ｎｅｔ／ｐｕｉ／ＢａｓｉｃＰＵＩ．ｈｔｍｌ）に示されるオープンソースプロジェクトのようなＯｐｅｎＧＬを使用して、広範に設計されている。
【００１５】
ここで図３を参照すると、ビューポート内のボタンおよびアイコンを示すソフトウェアソリューションのユーザインタフェースが示されている。このようなコンテキストアプローチにより、ユーザはビューポートにどのアクションが属しているのかを直接理解することができ、ソリューション全体のいくらかのスペースを解放する。
【００１６】
その結果、動作の呼び出しを表すツールがコンテンツ・ステータスに適応している状況であっても、ビューポート内に表示されるレイアウトは、ウェブおよびモバイルアプリケーションなどの先行技術における広範なアプリケーションに適用される異なるソフトウェアインタフェースに統合されている。実際、モバイルアプリケーションは、潜在的なコンテンツのアクションを以下に示すようにユーザに表示するために、広範に利用される状況を有している。
【００１７】
最後に、特定の処理方法であっても、所与のタイプのデータに対して特定の組のツールを開くことは、現在、先行技術を通じて広く使用されている。そのような例は、Ｗｉｎｄｏｗｓ（登録商標）システム（ｈｔｔｐ：／／ｅｎ．ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／Ｃｏｎｔｅｘｔ−ｓｅｎｓｉｔｉｖｅ＿ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ、２００８年に最初に書かれている）提示されており、「テキスト文書をクリックすると、文書がワードプロセッシング環境で自動的に開く。ユーザはどの種類のプログラムが標準的な条件でファイルを開くかを特定する必要はない。ユーザインタフェースは、マウスポインタまたはカーソルの外観を変更する、メニューの色を変更する、または適用可能な聴覚または触覚のフィードバックを用いる、などの状況に応じて感知できるフィードバックを提供することもできる。最も単純なレベルでは、考えられる各アクションは、最も起こりうる１つのアクションに低減される。実行されるアクションは、単一の変数（ファイル拡張子など）に基づいている。より複雑な実装では、ユーザの以前の動作、ファイルのサイズ、現在使用中のプログラム、メタデータなど、複数のファクタを評価することができる。この方法は、必須のボタン押下やマウスクリックに対する応答に限らず、ポップアップメニューのプルーニングおよび／または変更が可能であり、また、Ｗｅｂ検索で以前の検索結果に基づいて結果をプルーニングすることもできる。」とある。さらなる例は、Ａｌａｎ  Ｄｉｘ他の非特許文献１（デスクトップおよびウェブ上のインテリジェントな文脈依存型対話（Ｉｎｔｅｌｌｉｇｅｎｔ  ｃｏｎｔｅｘｔ−ｓｅｎｓｉｔｉｖｅ  ｉｎｔｅｒａｃｔｉｏｎｓ  ｏｎ  ｄｅｓｋｔｏｐ  ａｎｄ  ｔｈｅ  ｗｅｂ））に示されている。
【００１８】
前述のように、ＥｉｔａｎＭ．Ｇｌｉｎｅｒｔの修士の学位のためにコンピュータサイエンス電気工学科に提出された２００８年の論文：「Ｔｈｅ  Ｈｕｍａｎ  Ｃｏｎｔｒｏｌｌｅｒ：Ｕｓａｂｉｌｉｔｙ  ａｎｄ  Ａｃｃｅｓｉｂｉｌｉｔｙ  ｉｎ  Ｖｉｄｅｏ  Ｇａｍｅ  Ｉｎｔｅｒｆａｃｅｓ（ヒューマン・コントローラ：ビデオゲームインタフェースのユーザビリティおよびアクセシビリティ）」で示されており、すでにゲーム業界からＧｏｏｇｌｅの検索エンジンや広告に実装されているように文脈依存（ｃｏｎｔｅｘｔ  ｓｅｎｓｉｔｉｖｉｔｙ）は当技術分野で周知である。「ヒューマン・コントローラ：ビデオゲームインタフェースのユーザビリティおよびアクセシビリティ」の第４章で実証されているように、ゲームのエクスペリエンスに関しては、ユーザインタフェースのみならず、ゲームエンジン自体も十分なエクスペリエンスを提供するためにユーザに状況に応じて適合するように設計されている。
【００１９】
医療分野に特異的であり、特許文献１（以下において、「’４５９号」と記載）および特許文献２（以下において、「’９４７号」と記載）に示されているように、現在の最先端のシステムおよび方法は、あらかじめ定義された処理ワークフローを使用してサーバ側で受信された所定の画像データを先験的に前処理することにより、コヒーレントエンドユーザエクスペリエンスのための単一のユーザインタフェースを提供し、さらにエンドユーザが予め決定された後処理の結果の少なくとも１つを選択することを可能にする必要性に取り組んでいる。この目的のために、文献「’９４７号」は、ワークフローの選択を「患者ＩＤおよびプロシージャＩＤに基づくアイコンのセット」からあらかじめ決定することを特許請求している。具体的には、予め確立されたワークフローは、「アイコンのセット」が「特定の種類の医療診断またはプロセスに関連するワークフロー段階の所定のシーケンス」から派生する「画像処理ツール」を表す参考文献「’４５９号」に開示されている。
【００２０】
それにもかかわらず、上記のシステムおよび方法のそれぞれは、提示されたデータに関してエンドユーザの目的を先験的に知らずに、クライアント／サーバアプリケーションにおいて、コンテンツウィジェットを介して、このようなエンドユーザエクスペリエンス、文脈依存フィードバックを可能にするために必要とされるアーキテクチャに関して深刻な制限を有する。複数のサーバが特定のクライアント側のデバイスとやり取りして、エンドユーザのエクスペリエンスを送達する場合には、単一のエクスペリエンス、または共同作業のエクスペリエンスに関わらず、これはさらに問題になる。
【先行技術文献】
【特許文献】
【００２１】
【特許文献１】米国特許出願公開第２０１３／０１２４４５９号明細書
【特許文献２】米国特許第８９０８９４７Ｂ２号明細書
【非特許文献】
【００２２】
【非特許文献１】Ａｌａｎ  Ｄｉｘ他、「Ｉｎｔｅｌｌｉｇｅｎｔ  ｃｏｎｔｅｘｔ−ｓｅｎｓｉｔｉｖｅ  ｉｎｔｅｒａｃｔｉｏｎｓ  ｏｎ  ｄｅｓｋｔｏｐ  ａｎｄ  ｔｈｅ  ｗｅｂ」２００６年、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｈｃｉｂｏｏｋ．ｃｏｍ／ａｌａｎ／ｐａｐｅｒｓ／ａｖｉ２００６−ｃｏｎｔｅｘｔ／＞
【発明の概要】
【発明が解決しようとする課題】
【００２３】
したがって、上記の欠点の少なくとも１つを解決する方法およびシステムが必要とされている。
【課題を解決するための手段】
【００２４】
本発明の特徴は、以下の本発明の開示、図面および説明を検討することから明らかになるであろう。
広範な態様によれば、サーバを使用して関数（ｆｕｎｃｔｉｏｎ）を実行する方法であって、データを処理するための少なくとも１つの処理機能（ｐｒｏｃｅｓｓｉｎｇ  ｆｕｎｃｔｉｏｎａｌｉｔｙ）を提供する方法において、同方法は、クライアントにリモート処理ユニットからシェル関数を提供するステップと、クライアントにて、シェル関数を使用して関数の引数を受け取るステップと、受け取った関数引数を前記サーバに位置する関数に提供するステップと、受け取った引数を用いて前記関数の実行から結果データを前記サーバで取得するステップと、結果データをクライアントに提供するステップと、を含み、シェル関数は、関数の関数パラメータを表す対応する関数パラメータを有する宣言関数（ｄｅｃｌａｒａｔｉｖｅ  ｆｕｎｃｔｉｏｎ）を含み、さらに、前記宣言関数は、前記関数にマッピングされた対応する関数名を有する。
【００２５】
一実施形態によれば、クライアントへのシェル関数の提供は、ユーザからのイベントに応答して実行される。
一実施形態によれば、シェル関数はサーバにおいて自動的に生成される。
【００２６】
一実施形態によれば、リモート処理ユニットはサーバを備える。
一実施形態によれば、対応する関数名は関数と同等で（ｅｑｕｉｖａｌｅｎｔ）ある。
一実施形態によれば、対応する関数名は関数とは異なり、シェルマネージャはサーバに配置され、シェルマネージャは対応する関数名を関数にマッピングするように適合される。
【００２７】
一実施形態によれば、シェルマネージャは、対応する関数パラメータのサブセットを関数パラメータにマッピングするようにさらに適合される。
一実施形態によれば、ユーザからのイベントは、処理されるデータに関連付けられる。
【００２８】
一実施形態によれば、シェルマネージャは、所与の関数引数を別のサーバ上に位置する所与の関数に中継する（ｒｅｌａｙｉｎｇ）ことができる。
一実施形態によれば、シェルマネージャは、対応する関数引数および対応する関数名を別のサーバ上に位置する所与の関数に中継することができる。
【００２９】
一実施形態によれば、関数は複数の処理機能を提供し、サーバは、基準に従って、処理機能のそれぞれを対応するサブ関数にディスパッチする（ｄｉｓｐａｔｃｈｉｎｇ）ためのキューマネージャをさらに含む。
【００３０】
一実施形態によれば、少なくとも１つのサブ関数がリモートサーバに配置される。
一実施形態によれば、基準は、所与の関数に関連する優先度、サーバで利用可能な処理、サーバで利用可能なリソース、サーバにて所与の関数に関連するサブ関数を同期させること、サーバと少なくとも１つのユーザ定義の基準でシェル関数の引数のロード・バランシング処理関数の実行に対するレート（ｓｈｅｌｌ  ｆｕｎｃｔｉｏｎ  ａｒｇｕｍｅｎｔｓ  ｒａｔｅ  ｔｏ  ｌｏａｄ  ｂａｌａｎｃｅ  ｐｒｏｃｅｓｓｉｎｇ  ｆｕｎｃｔｉｏｎ  ｅｘｅｃｕｔｉｏｎ）を管理すること、からなる群より選択される。
【００３１】
一実施形態によれば、結果データは、シェル関数を介してクライアントに提供される。
一実施形態によれば、データを処理するための関数は、グラフィカルユーザインタフェースの少なくとも一部を提供するために使用される。
【００３２】
一実施形態によれば、データを処理するための関数は、グラフィカルユーザインタフェース内のスライダの実装に関連する関数を含む。
広範な態様によれば、サーバを使用して関数を実行するための方法であって、データを処理するための少なくとも１つの処理機能を提供する方法が開示されており、同方法は、シェル関数を使用してクライアントにて関数引数を受け取るステップと、受け取った引数をサーバに位置する関数に提供するステップと、受け取った引数を使用して関数の実行から結果データを取得するステップと、を含み、前記シェル関数は、前記関数の関数パラメータを表す対応する関数パラメータを有する宣言関数を含み、前記宣言関数は、前記関数にマッピングされた対応する関数名を有する。
【００３３】
一実施形態によれば、対応する関数名は関数と異なり、シェルマネージャはサーバに配置され、シェルマネージャは、対応する関数名を関数にマッピングするように適合される。
【００３４】
一実施形態によれば、関数は複数の処理機能を提供し、サーバは、基準に従って対応するサブ関数に処理機能の各々をディスパッチするためのキューマネージャを含む。
一実施形態によれば、基準は、所与の関数に関連する優先度、サーバで利用可能な処理、サーバで利用可能なリソース、サーバにて所与の関数に関連するサブ関数を同期させること、サーバと少なくとも１つのユーザ定義の基準でシェル関数の引数のロード・バランシング処理関数の実行に対するレートを管理すること、からなる群より選択される。
【００３５】
広範な態様によれば、サーバを使用して関数を実行するための処理デバイスであって、データを処理するための少なくとも１つの処理機能を提供する処理デバイスが開示されており、同処理デバイスは、中央処理ユニットと、表示デバイスと、通信ポートと、メモリユニットと、前記中央処理ユニット、前記表示デバイス、前記通信ポート及び前記メモリユニットを相互接続するためのデータバスと、を含み、メモリユニットは、サーバを使用して関数を実行し、データを処理するための少なくとも１つの処理機能を提供するアプリケーションを含み、同アプリケーションは、シェル関数を使用してクライアントにて関数引数を受け取るための命令と、受け取った引数をサーバに位置する関数に提供するための命令と、受け取った引数を使用して関数の実行から結果データを取得するための命令と、を含み、前記シェル関数は、前記関数の関数パラメータを表す対応する関数パラメータを有する宣言関数を含み、前記宣言関数は、前記関数にマッピングされた対応する関数名を有する。
【００３６】
広範な態様によれば、実行されると、処理デバイスに、サーバを使用して関数を実行させる方法であって、データを処理するための少なくとも１つの処理機能を提供するための方法を実行させるコンピュータ実行可能命令を記憶するための非一時的なコンピュータ可読記憶媒体が開示されており、前記方法は、シェル関数を使用してクライアントにて関数引数を受け取るステップと、受け取った引数をサーバに位置する関数に提供するステップと、受け取った引数を使用して関数の実行から結果データを取得するステップと、を含み、前記シェル関数は、前記関数の関数パラメータを表す対応する関数パラメータを有する宣言関数を含み、さらに前記宣言関数は、前記関数にマッピングされた対応する関数名を有する。
【００３７】
開示された方法の利点は、それがサーバのプロセッサからのリソースを使用してクライアント上のデータを処理するための関数の実行を可能にすることである。
開示された方法の別の利点は、メンテナンスが主にクライアント側ではなくサーバ側で実行されるので、複数のクライアントおよびサーバを含むシステムのメンテナンスを改善することである。
【００３８】
開示された方法の別の利点は、それが、サーバ側でデータ特有の処理を可能にし、クライアント側で提供する同等の機能を可能にすることである。
他の利点は、以下に提供される説明から当業者に明らかになるであろう。
【図面の簡単な説明】
【００３９】
【図１】医療用画像を表示するために使用されるグラフィカルユーザインタフェースにおけるスライダの一例を示す図である。
【図２】実装がローカルで実行される必要がある場合にオペレータにスライダを提示するグラフィカルユーザインタフェースの実装を表す例示的なコードスニペット（ｓｎｉｐｐｅｔ）である。
【図３】ビューポート内のボタンおよびアイコンを示すソフトウェアソリューションのユーザインタフェースを示す図である。
【図４】サーバを使用してデータを処理する関数を実行するための方法の第１の実施形態を示すフローチャートである。
【図５】サーバを使用してデータを処理する関数を実行するための方法の第２の実施形態を示すフローチャートである。
【図６】サーバを使用してデータを処理するための関数を実行する方法が実装される実施形態を示すブロック図である。
【図７】サーバ側およびクライアント側に配置されたコンポーネントの第１の実施形態と、サーバを使用してデータを処理する関数を実行するためにそれらがどのように使用されるかを示すブロック図である。
【図８】サーバ側およびクライアント側に配置されたコンポーネントの第２の実施形態を示し、サーバを使用してデータを処理する関数を実行するためにそれらがどのように使用されるかを示すブロック図である。
【図９】クライアントを実装するために使用される処理デバイスの一実施形態を示すブロック図である。
【図１０】本発明の一実施形態に従うグラフィカルユーザインタフェースの実装を表す例示的なコードスニペットである。
【発明を実施するための形態】
【００４０】
本発明が容易に理解されるように、本発明の実施形態は、例として添付の図面に示されている。
本発明のさらなる詳細およびその利点は、以下に含まれる詳細な説明から明らかになるであろう。
【００４１】
実施形態の以下の記載において、添付の図面は、本発明を実施することができる一例を示すものである。
用語
「発明」等の用語は、他に明示的に指定されていない限り、「本出願で開示された１つ以上の発明」を意味する。
【００４２】
「態様」、「（１つの）一実施形態」、「実施形態」、「複数の実施形態」、「同実施形態」、「同複数の実施形態」、「１つ以上の実施形態」、「いくつかの実施形態」、「特定の実施形態」、「一実施形態」、「別の実施形態」等の用語は、他に明示的に指定されていない限り、「開示された発明の１つ以上の（ただし全てではない）実施形態」を意味する。
【００４３】
ある実施形態を説明する際の「別の実施形態」または「別の態様」への言及は、他に明示的に指定されていない限り、別の実施形態（例えば、参照された実施形態の前に記載された実施形態）と相いれないものであることを意味するものではない。
【００４４】
用語「含む（ｉｎｃｌｕｄｉｎｇ）」、「含む（ｃｏｍｐｒｉｓｉｎｇ）」およびそれらの変形は、他に明示的に指定されていない限り、「含むがこれに限定されない」を意味する。
【００４５】
用語「１つの（ａ）」、「１つの（ａｎ）」および「その（ｔｈｅ）」は、他に明示的に指定されていない限り、「１つまたは複数」を意味する。
用語「複数」は、他に明示的に指定されていない限り、「２つ以上」を意味する。
【００４６】
「本明細書中の」という用語は、他に明示的に指定されていない限り、「本出願において、参照により組み込まれ得るものを含めて」を意味する。
「によって（ｗｈｅｒｅｂｙ）」という用語は、本明細書では、以前に明示的に記載されたものの意図された結果、目的または結論のみを表す節または他の単語のセットに先行するためにのみ使用される。したがって、「によって」という用語が請求項に使用されるとき、「によって」という用語が修飾する節または他の単語を、請求項の特定のさらなる限定を確立するものではなく、そうでなければ請求項の意味および範囲を制限するものではない。
【００４７】
用語「例えば（ｅ．ｇ．）」は、「例えば」を意味し、従って、それが説明する用語および節を制限することはない。例えば、「コンピュータがインターネットを介してデータ（例えば、命令、データ構造）を送る」という文では、用語「例えば」は、「命令」はコンピュータがインターネットを介して送信することができる「データ」の一例であることを説明し、そしてまた、「データ構造」は、コンピュータがインターネットを介して送信する「データ」の一例であることを説明する。しかしながら、「命令」および「データ構造」は「データ」の単なる例であり、「命令」や「データ構造」以外のものも「データ」であり得る。
【００４８】
「すなわち（ｉ．ｅ．）」という用語は、「即ち（ｔｈａｔ  ｉｓ）」を意味し、したがってそれらが説明する用語または節を限定する。
用語「シェル関数」および同様の用語は、サーバ位置で実行されるべき少なくとも１つの関数の宣言表現（ｄｅｃｌａｒａｔｉｖｅ  ｒｅｐｒｅｓｅｎｔａｔｉｏｎ）を意味し、少なくとも１つの関数の宣言表現は、関連する処理機能コードから空（ｅｍｐｔｙ）であり、サーバ位置で少なくとも１つの関数の実行に関連する関数パラメータおよび関数名を有する。当業者には明らかになるであろうが、少なくとも１つのサーバ関数の実行は、シェルの関数と関数の引数および名前が似ている場合には直接行うことができる。そして、それらが異なっているが互いに関連したままである場合には、以下に提示されるシェルマネージャを介して、行うことができる。
【００４９】
「関数引数（ｆｕｎｃｔｉｏｎ  ａｒｇｕｍｅｎｔｓ）」という用語および同様の用語は、関数に渡される（および関数によって受け取られる）実際の値を意味する。
用語「関数パラメータ」および同様の用語は、関数定義に列挙された名前を意味する。
【００５０】
用語「宣言関数（ｄｅｃｌａｒａｔｉｖｅ  ｆｕｎｃｔｉｏｎ）」および同様の用語は、プログラミング言語で定義されている関数を意味し、プログラムが実行すべきものを記述したもので、プログラムの実行方法は記述していない。
【００５１】
用語「処理機能（ｐｒｏｃｅｓｓｉｎｇ  ｆｕｎｔｉｏｎａｌｉｔｙ）」および同様の用語は、出力関数の引数を生成するために入力関数の引数を処理する処理関数のソースコードを意味する。処理機能の非限定的な例は、スライダであるグラフィカルユーザインタフェース要素が「スライド処理機能」に対して軸方向座標を提供する「スライド伝達関数（ｓｌｉｄｉｎｇ  ｔｒａｎｓｆｅｒ  ｆｕｎｃｔｉｏｎ）」の例であり、同スライド処理機能は、医療用画像で従来受け入れられているように、そのような軸座標を複数の画像のボリューム（ｖｏｌｕｍｅ）内の画像位置に変換する。
【００５２】
「データイベント要求（ｄａｔａ  ｅｖｅｎｔ  ｒｅｑｕｅｓｔ）」という用語は、ユーザがグラフィックユーザインタフェースなどのコンテンツと対話することを可能にするヒューマンインタフェースデバイスを介して生成された、ジェスチャ入力およびコンピュータマウスまたはタッチスクリーンなどのデバイス入力を含むユーザ入力を意味する。
【００５３】
上記定義から理解されるように、関数パラメータは、メソッドのシグネチャ（メソッド宣言）の一部である変数である。引数は、メソッドを呼び出すときに使用される式（ｅｘｐｒｅｓｓｉｏｎ）であり、即ち、関数引数が関連する関数パラメータの値に関連するメソッドをプログラムで呼び出す。
【００５４】
たとえば、次のコードでは：
【００５５】
【数１】
2019505932.tif 000003
【００５６】
ｉとｆはパラメータであり、ａｎＩｎｔと２．０は引数である。
発明の名称または要約のいずれも、開示された発明の範囲としていかなる様式においても限定するものとしてみなされるものではない。本出願の発明の名称および本出願で提供されるセクションの見出しは、便宜上のみのものであり、いかなる様式においても開示を限定するものとしてみなされるものではない。
【００５７】
多くの実施形態が本出願に記載されており、例示のためにのみ提示されている。記載された実施形態は、いかなる意味でも限定するものではなく、限定することを意図するものではない。現在開示されている発明は、本開示から容易に明らかなように、多くの実施形態に広く適用可能である。当業者であれば、開示された発明は、構造的および論理的改変のような様々な改変および変更を用いて実施され得ることを認識するであろう。開示された発明の特定の特徴は、１つまたは複数の特定の実施形態および／または図面を参照して説明することができるが、そのような特徴は、他に明示的に指定されていない限り、それらが記載されるものに関連する１つまたは複数の特定の実施形態または図面の使用に限定されない。
【００５８】
このことを念頭において、本発明は、サーバを使用してデータを処理するための関数を実行するための方法およびシステムに関する。
ここで図４を参照すると、サーバを使用してデータを処理する関数を実行するための方法の一実施形態が示されている。
【００５９】
データを処理するための関数は、様々なタイプのものであってもよいことが理解されよう。
例えば、一実施形態において、データを処理するための関数は、グラフィカルユーザインタフェースの提供に関連する。そのような場合、関数は、一実施形態において、グラフィカルユーザインタフェース上のズームの実装に関連する関数であってもよい。別の実施形態において、この関数は、グラフィカルユーザインタフェース内のスライダの実装に関連する。
【００６０】
スライダの一例が図１に示されている。この実施形態において、スライダは、医療用画像を表示するためのグラフィカルユーザインタフェースで使用される。
ユーザとスライダ要素との対話（ｉｎｔｅｒａｃｔｉｏｎ）に応じて、画像スタック内の所与の画像がグラフィカルユーザインタフェースに表示される。したがって、ユーザは、スライダ要素との対話を使用して複数の画像を検索することができる。
【００６１】
本明細書で開示される方法は、クライアント−サーバソフトウェアアーキテクチャで実装されることが理解されるであろう。
クライアント／サーバ環境
このようなクライアント−サーバソフトウェアアーキテクチャは、図６に示されている。クライアント−サーバソフトウェアアーキテクチャは、クライアントとも称されるクライアントシステムと、サーバとも称されるサーバシステムとからなる。
【００６２】
例えば、図６に開示された実施形態において、クライアントシステムはクライアント３０４を含む。サーバシステムはサーバ３００を含む。サーバ３００は、データネットワーク３０２を介してクライアント３０４に動作可能に接続される。図６に示される実施形態は単一のクライアント３０４を示しているが、複数のクライアントが提供されてもよいことは当業者には理解されよう。
【００６３】
さらに、クライアント３０４は、様々なタイプの処理デバイス上に実装されてもよいことが理解されよう。
一実施形態において、クライアント３０４は、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータなどからなる群から選択される処理デバイスに実装される。
【００６４】
同様に、サーバ３００は、様々なタイプの処理デバイス上に実装されてもよいことが理解されよう。
一実施形態において、サーバ３００は、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、ＶＭＷａｒｅ（登録商標）などによって市販されているようなコンピュータの仮想イメージからなる群から選択される処理デバイス上に実装される。
【００６５】
ここで図９を参照すると、クライアント３０４を実装するために使用される処理デバイスの実施形態が示されている。
この実施形態において、処理デバイス７００は、マイクロプロセッサとも称される中央処理ユニット（ＣＰＵ）７０２と、表示デバイス７０４と、入力デバイス７０６と、通信ポート７０８と、データバス７１０と、メモリユニット７１２とを含む。
【００６６】
ＣＰＵ７０２は、コンピュータ命令を処理するために使用される。当業者であれば、ＣＰＵ７０２の様々な実施形態を提供することができることを理解するであろう。
表示デバイス７０４は、ユーザにデータを表示するために使用される。当業者であれば、様々なタイプの表示デバイスを使用できることを理解するであろう。
【００６７】
一実施形態において、表示デバイス７０４は、標準的な液晶ディスプレイ（ＬＣＤ）モニタである。
通信ポート７０８は、処理デバイス７００とデータを共有するために使用される。
【００６８】
通信ポート７０８は、例えば、キーボード及びマウスをデジタルコンピュータ２０２に接続するためのユニバーサルシリアルバス（ＵＳＢ）ポートを含むことができる。
通信ポート７０８は、データネットワーク３０２を介して処理デバイス７００とサーバ３００を実装するもののような他の処理デバイスとの接続を可能にするＩＥＥＥ８０２．３（イーサネット（登録商標））ポートなどのデータネットワーク通信ポートをさらに含むことができる。
【００６９】
当業者であれば、通信ポート７０８の様々な代替実施形態を提供することができることを理解するであろう。
一実施形態において、通信ポート７０８は、イーサネット（登録商標）ポートおよびマウスポート、例えばＬｏｇｉｔｅｃｈ（商標）を含む。
【００７０】
メモリユニット７１２は、コンピュータ実行可能命令を記憶するために使用される。
メモリユニット７１２は、一実施形態において、オペレーティングシステムモジュール７１４を含むことが理解されよう。
【００７１】
当業者であれば、オペレーティングシステムモジュール７１４は様々なタイプのものであってもよいことが理解されよう。
ＣＰＵ７０２、表示デバイス７０４、入力デバイス７０６、通信ポート７０８、およびメモリユニット７１２の各々は、データバス７１０を介して相互に接続されている。
【００７２】
メモリユニット７１２は、サーバ７１６を使用してデータを処理するための処理関数を実行するためのクライアントアプリケーションをさらに含む。
メモリユニット７１２は、サーバ７１６を使用してデータを処理する処理関数を実行するためにクライアントアプリケーションによって使用されるデータ７１８をさらに含むことができる。
【００７３】
クライアントでの関数の実行
一実施形態において、サーバ７１６を使用してデータを処理するための処理関数を実行するためのクライアントアプリケーションは、クライアントにて、シェル関数を使用して関数引数を受け取る命令を含む。
【００７４】
サーバ７１６を使用してデータを処理する処理関数を実行するためのクライアントアプリケーションは、受け取った引数をサーバに位置する関数に提供するための命令をさらに含む。
【００７５】
一実施形態において、サーバにおける関数を表すシェル関数は、類似の関数名および類似の関数パラメータを有することによって定義される。
別の実施形態において、サーバにおける関数を表すシェル関数は、サーバにて、シェル関数マネージャと通信するシェル関数のように定義され（以下においては、シェルマネージャと称される）、シェルマネージャはシェル関数名およびシェル関数パラメータを使用し、前記少なくとも１つの関連する関数パラメータに関連するシェル関数引数のうちの少なくとも１つを使用して、サーバ位置で少なくとも１つの関連する関数を実行する。
【００７６】
サーバ７１６を使用してデータを処理するための処理関数を実行するためのクライアントアプリケーションは、受け取った引数を使用して関数の実行から結果データを取得するための命令をさらに含む。シェル関数は、関数の関数パラメータを表す対応する関数パラメータを有する宣言関数を含むことが理解されよう。宣言関数は、関数にマッピングされた対応する関数名を有することがさらに理解されるであろう。
【００７７】
また、非一時的なコンピュータ読み取り可能な記憶媒体が開示されていることも理解されよう。非一時的なコンピュータ読み取り可能な記憶媒体は、実行されると、処理デバイスに、サーバを使用して関数を実行する方法を実行させ、データを処理するための少なくとも１つの処理機能を提供するコンピュータ実行可能命令を記憶するために使用され、同方法は、シェル関数を使用して関数の引数をクライアントで受け取るステップと、受け取った引数をサーバに位置する関数に提供するステップと、受け取った引数を使用して関数の実行から結果データを取得するステップと、を含み、シェル関数は、前記関数の関数パラメータを表す対応する関数パラメータを有する宣言関数を含み、さらに前記宣言関数は、前記関数にマッピングされた対応する関数名を有する。
【００７８】
ここで図７を参照すると、サーバ側およびクライアント側に配置されたコンポーネントの第１の実施形態、およびサーバを使用してデータを処理する関数を実行するためにそれらがどのように使用されるかが示されている。
【００７９】
図７に示されるように、少なくとも１つのシェル関数３０６がクライアント側に配置されている。
図７に開示された実施形態において、少なくとも１つのシェル関数３０６は、第１のシェル関数ｆ（ｘ）３０８、第２のシェル関数ｇ（ｘ）３１０および第３のシェル関数ｈ（ｘ）３１２を含む。
【００８０】
各シェル関数は、少なくとも１つの対応する入力関数パラメータを受け取り、少なくとも１つの対応する出力関数パラメータを提供することが理解されよう。
さらに図７を参照すると、少なくとも１つの関数３１４がサーバ側に配置されていることが理解されよう。
【００８１】
実際、少なくとも１つの関数３１４の各々は、クライアント側の少なくとも１つのシェル関数３０６の所与のシェル関数に対応することが理解されよう。
より正確には、これは、少なくとも１つのシェル関数３０６の所与のシェル関数の各々が、少なくとも１つの関数３１４の対応する所与の関数と同じ名前を有することを意味する。さらに、少なくとも１つの関数３１４の所与の関数の各々は、少なくとも１つのシェル関数３０６の対応する所与のシェル関数よりも、同じ関数パラメータ、換言すれば入力および出力を含む。
【００８２】
したがって、シェル関数とその対応する処理機能（ｆｕｎｃｔｉｏｎａｌｉｔｙ）との間の相違点は、シェル関数が期待される結果に関連するコードを実行しないことである。実際、シェル関数は、関連する関数引数を、サーバ側にある対応する処理関数に伝える。シェル関数は、サーバ側関数と同様の関数パラメータを有する。異なる実施形態において、シェル関数は、関連する関数引数をサーバ側のシェルマネージャに転送する。シェルマネージャは、関連する関数引数を関連する処理関数にさらにディスパッチする。
【００８３】
より詳細には、そして図７に開示された実施形態において、少なくとも１つの関数３１４は、第１の関数ｆ（ｘ）３１８、第２の関数ｇ（ｘ）３２０および第３の関数ｈ（ｘ）３２２を含む。第１の関数ｆ（ｘ）３１８、第２の関数ｇ（ｘ）３２０および第３の関数ｈ（ｘ）３２２の各々は、所定の処理を実行するために使用される。
【００８４】
少なくとも１つのシェル関数３０６の各々は、少なくとも１つの関数３１４の所与の１つを表すので、関数およびその代表的なシェル関数が類似の関数パラメータおよび関数名を有することは当業者には理解されるであろう。
【００８５】
シェル関数の提供
ここで図４に戻って説明すると、処理ステップ１００によれば、シェル関数が、クライアント−サーバソフトウェアアーキテクチャのリモート処理ユニットからクライアントに提供される。
【００８６】
一実施形態において、リモート処理ユニットはサーバを備える。
一実施形態において、シェル関数は、ユーザからのイベントに応答して提供される。
一実施形態において、イベントは、処理されるデータに関連付けられる。
【００８７】
一実施形態において、シェル関数は、ユーザからのイベントに応答してサーバによって提供され、イベントは処理されるデータに関連付けられ、処理されるデータはシェル関数と共にサーバによって提供される。
【００８８】
一実施形態において、シェル関数はサーバで自動的に生成される。
一実施形態において、イベントは、クライアント−サーバソフトウェアアーキテクチャにおいてクライアントとして機能する処理デバイスとのユーザの対話を含む。
【００８９】
処理ステップ１０２によれば、関数引数は、シェル関数を使用してクライアント３０４で受け取られる。シェル関数は、所望の処理機能を実行するためにサーバ側に存在する少なくとも１つの関数パラメータに関連する関数パラメータを有することが理解されよう。
【００９０】
関数引数は、様々な実施形態に従うシェル関数を使用してクライアント３０４で受け取られることがさらに理解されるであろう。
一実施形態において、関数引数は、別の既存の関数によって提供される。
【００９１】
例えば、少なくとも１つのシェル関数３０６のシェル関数ｆ（ｘ）３０８は関数引数を受け取る。
処理ステップ１０４によれば、受け取った関数引数はサーバ３００に位置する関数に提供される。シェル関数はサーバ関数を表す。
【００９２】
例えば、少なくとも１つの関数３１４の関数ｆ（ｘ）３１８は、関数引数を受け取る。
図７に示す実施形態において、関数ｆ（ｘ）３１８の関数引数の受け取りは、シェルマネージャ３１６を介して実行される。より正確には、シェルマネージャ３１６は、シェル関数３０８の関数引数を受け取り、関数ｆ（ｘ）３１８へ関数引数を提供する。
【００９３】
当業者であれば、様々な代替実施形態が可能であることが理解されよう。
例えば、図８に示すように、キューマネージャ５００を使用して、少なくとも１つの関数３１４の所与の関数に関数引数を提供することができる。
【００９４】
実際、関数は複数の処理機能を提供することができ、キューマネージャは、処理機能のそれぞれを基準に従って対応するサブ関数にディスパッチするために使用される。
この基準は、所与の関数に関連する優先度、サーバで利用可能な処理、サーバで利用可能なリソース、サーバにて所与の関数に関連するサブ関数を同期させること、サーバと少なくとも１つのユーザ定義の基準でシェル関数の引数のロード・バランシング処理関数の実行に対するレートを管理すること、からなる群より選択される。
【００９５】
さらに、一実施形態において、少なくとも１つのサブ関数をリモートサーバに配置することができることを理解されたい。
処理ステップ１０６によれば、結果データは、受け取った関数引数を使用して関数の実行から得られる。
【００９６】
受け取った関数引数を使用する関数の実行からの結果データは、関数によって出力されることが理解されよう。
別の実施形態において、受け取った関数引数を使用する関数の実行からの結果データは、同関数とは異なる少なくとも１つの関数によって出力され、それにより、少なくとも１つの異なる関数が、プログラムによって呼び出され、関数によって実行されることが理解されよう。
【００９７】
別の実施形態において、受け取った関数引数を使用する関数の実行からの結果データは、同関数とは異なる少なくとも１つの関数によって出力され、少なくとも１つの異なる関数はシェルマネージャによってプログラムによって呼び出される。
【００９８】
例えば、関数ｆ（ｘ）３１８は出力を提供する。
処理ステップ１０８によれば、結果データが提供される。
結果データは、関数によって対応するシェル関数に提供される。
【００９９】
例えば、関数ｆ（ｘ）３１８は、その出力をシェル関数ｆ（ｘ）３０８に提供する。
シェル関数は、関数の関数パラメータを表す対応する関数パラメータを有する宣言関数を含み、宣言関数は、関数にマッピングされる対応する関数名を有することが理解されよう。
【０１００】
一実施形態において、対応する関数名は関数と同等である。
ここで図５を参照すると、サーバを使用してデータを処理するための関数を実行するための方法の別の実施形態が示されている。
【０１０１】
処理ステップ２００によれば、関数引数は、シェル関数を使用してクライアントで受け取られる。
関数引数は、様々な実施形態によるシェル関数を使用してクライアント３０４で受け取られることが理解されよう。
【０１０２】
一実施形態において、関数引数は、別の既存の関数によって提供される。
例えば、少なくとも１つのシェル関数３０６のシェル関数ｆ（ｘ）３０８は関数引数を受け取る。
【０１０３】
処理ステップ２０２によれば、受け取られた引数は、サーバに位置する関数に提供される。シェル関数がその関数を表すことは理解されよう。
図７に示す実施形態において、関数ｆ（ｘ）３１８の関数引数の受け取りは、シェルマネージャ３１６を介して実行される。より正確には、シェルマネージャ３１６は、シェル関数３０８の関数引数を受け取り、関数引数を関数ｆ（ｘ）３１８へ提供する。
【０１０４】
当業者であれば、様々な代替実施形態が可能であることが理解されよう。
例えば、そして図８に示されるように、キューマネージャ５００を使用して、少なくとも１つの関数３１４の所与の関数に関数引数を提供することができる。
【０１０５】
キューマネージャ５００による関数引数の提供は、基準に従って実行することができる。
この基準は、所与の関数に関連する優先度、サーバで利用可能な処理、サーバで利用可能なリソース、サーバにて所与の関数に関連するサブ関数を同期させること、サーバ、ユーザ定義の基準等でシェル関数の引数のロード・バランシング処理関数の実行に対するレートを管理することなど、からなる群より選択される。
【０１０６】
処理ステップ２０４によれば、結果データは、受け取った引数を使用する関数の実行から得られる。結果データは、シェル関数に関連するデータと、シェル関数に関連するデータを提供するデータの処理ユニットに関連するデータとを含むことが理解されよう。
【０１０７】
一実施形態において、シェル関数は、スライダ位置に対応する処理機能を表し、サーバ関数によって出力されるスライダ位置は、画像ボリュームからの単一画像の抽出およびレンダリングをトリガし、レンダリングされた画像およびスライダ位置出力は、それぞれクライアントアプリケーションおよびシェル関数に提供される。そのような実施形態において、レンダリングされた画像は、シェル関数に関連するデータを提供するデータの処理ユニットに関連するデータと考えられる。
【０１０８】
シェル関数の引数に関連するデータを提供するデータの処理ユニットに関連するデータからシェル関数の引数を切り離すことは、先行技術のシステムおよび方法に対して大きな利点であることが理解されよう。
【０１０９】
さらに別の実施形態において、クライアントアプリケーションがサーバ上の特定のデータ情報にアクセスすることを要求すると、サーバは、関連する少なくとも１つのシェル関数と対応する少なくとも１つのシェル関数グラフィカルユーザインタフェース要素とに沿って要求されたデータを提供し、同要求されたデータを操作および検査し、クライアントに送信する。
【０１１０】
また、当業者であれば、本発明は、所与のシェル関数から得られる最終的なユーザエクスペリエンスに大きな影響を与えることなく、関数ソースコードを機密的にサーバに保存し、決してクライアントに転送されないことを保証し、それは先行技術のシステムおよび方法に対する大きな利点である。
【０１１１】
シェルマネージャ
シェルマネージャは、１つのサーバ関数の全単射表現から１つのシェル関数へ、複数のサーバ関数に対応する１つのシェル関数への移行を可能にし、それにより、シェルマネージャは関数引数とシェル関数引数が互換性があり、関数名とシェル関数名が複数の関連するサーバ関数からの少なくとも１つのサーバ関数からシェル関数へのさらなる通信を保証するために、シェルマネージャによって適切にマッピングされることを確実にする。
【０１１２】
一実施形態において、シェルマネージャは、異なる基準に基づいて、クライアントに結合されたネットワーク全体にわたって別個に配置されたサーバにシェル関数の引数を動的に中継する（ｒｅｌａｙ）ことができる。基準は、例えば、ネットワーク帯域幅の負荷分散、異なるサーバ処理能力の負荷分散、サーバとクライアントとの間のトポロジカル距離および応答時間の最適化、単一サーバ障害点の克服、特定のクライアント特性（例えば、モバイル、タブレット、コンピュータ、ウェブブラウザなど）に特化したサーバへシェル関数の引数を中継すること、といった目的を備えて選択される。
【０１１３】
一実施形態において、シェルマネージャは、対応する関数パラメータのサブセットを関数パラメータにマッピングするように適合される。
別の実施形態において、シェルマネージャは、シェル関数の引数を受け取り、限定しない例としてトレードオフとして完了するために必要な関数処理時間に基づいて、シェル関数の引数を予め定義されたルールに基づいて、中継する代表関数を、前記クライアントと前記サーバとの間のネットワークトポロジに起因する情報遅延を伴って決定する。
【０１１４】
別の実施形態において、クライアントグラフィカルユーザインタフェースは、ウェブブラウザ内のクライアントデバイスによって提供される。シェルマネージャは、シェル関数が関連する処理コードから空であるという事実を考慮して、互換性のある関数引数を有するサーバ関数がシェル関数を表すことができるかを選択することによって、限定されるものではないが例えばクロスドメイン違反、クッキーの制限、ＪａｖａＳｃｒｉｐｔ（登録商標）エンジンブラウザ固有のセキュリティなどの一般的なウェブブラウザを制限することなく、ユーザ・データがどのように処理されるかを動的に変更することを可能にすることを当業者は理解するであろう。
【０１１５】
シェル関数の自動生成
一実施形態において、少なくとも１つのシェル関数がサーバで自動的に生成され、それによって、サーバは、ローカル処理関数ヘッダファイル、または関連する処理機能および関連する処理機能に必要なサブ関数を表す方法、クラスおよび関数の他の宣言表現を使用して、関連する処理関数名および処理関数パラメータを自動的に抽出して、前記処理関数に関連する宣言シェル関数を生成する。
【０１１６】
開示された方法のスライダへの適用
ここで図１０を参照すると、本発明の一実施形態によるグラフィカルユーザインタフェースの実装を表すコードスニペットが示されている。
【０１１７】
当業者には、このクライアントには４つのエレメントがあることが理解されよう。
ＧＵＩ全体のコンテナであるｒｅｃｔａｎｇｌｅ、通信リンクであるＣａｄｅｎｓＲｐｃ、ＳｌｉｃｅＳｌｄｉｅｒがサーバからスライダプロパティ（即ち、軸に沿った位置）を送受信できるようにすること、およびオペレータに提示される画像スタックからの画像スライスのためのコンテナであるＷｅｂｓｏｃｋｅｔＣａｎｖａｓ、ここで、スライス番号（ｓｌｉｃｅ  ｎｕｍｂｅｒ）は、画像のサイズ、性質、およびスタックのボリュームに応じて線形またはより複雑であるスライダ位置の関数である。
【０１１８】
この実施形態において、ＳｌｉｃｅＳｌｉｄｅｒは、画像スタックにプログラム的に直接結合されておらず、スライダの位置を画像スタックの位置に関連付ける位置関数も有していないことは理解されよう。実際、この知識を有し、クライアントＳｌｉｃｅＳｌｉｄｅｒによって受け取られた入力情報を処理するのはサーバである。
【０１１９】
さらに、ＳｌｉｃｅｓｌｉｄｅｒはネイティブのＱｔオブジェクトではない。その結果、クライアントはサーバに接続する前にこのオブジェクトの知識を有してはいない。サーバでアクセス可能な宣言シェル関数にアクセスしてダウンロードすると、クライアントはこのオブジェクトを動的にインスタンス化し、スライドのグラフィック要素がオペレータに提示される。
【０１２０】
上記の説明は、本願の発明者が現在考えている特定の好ましい実施形態に関するものであるが、本発明の広範な態様は、本明細書に記載された要素の機能的等価物を含むことが理解される。
【０１２１】
条項（Ｃｌａｕｓｅｓ）：
条項１．サーバを使用して関数を実行する方法であって、データを処理するための少なくとも１つの処理機能を提供する方法において、同方法は、
リモート処理ユニットからシェル関数をクライアントに提供するステップと、
前記シェル関数を使用して関数の引数をクライアントにて受け取るステップと、
前記受け取った関数引数を前記サーバに位置する関数に提供するステップと、
受け取った引数を用いて前記関数の実行から結果データを前記サーバで取得するステップと、
結果データをクライアントに提供するステップと、
を含み、
前記シェル関数は、前記関数の関数パラメータを表す対応する関数パラメータを有する宣言関数を含み、前記宣言関数は、前記関数にマッピングされた対応する関数名を有する方法。
【０１２２】
条項２．前記シェル関数を前記クライアントに提供することが、ユーザからのイベントに応答して実行される、条項１に記載の方法。
条項３．前記シェル関数は、前記サーバにおいて自動的に生成される、条項１に記載の方法。
【０１２３】
条項４．前記リモート処理ユニットが前記サーバを含む、条項１乃至３のいずれか１つに記載の方法。
条項５．対応する関数名が前記関数と同等である、条項１乃至４のいずれか１つに記載の方法。
【０１２４】
条項６．対応する関数名が前記関数と異なり、サーバに配置されたシェルマネージャをさらに含み、シェルマネージャは、対応する関数名を前記関数にマッピングするように適合される、条項１乃至４のいずれか１つに記載の方法。
【０１２５】
条項７．シェルマネージャは、対応する関数パラメータのサブセットを関数パラメータにマッピングするようにさらに適合される、条項６に記載の方法。
条項８．前記ユーザからの前記イベントは、処理される前記データに関連する、条項２に記載の方法。
【０１２６】
条項９．シェルマネージャは、所与の関数引数を別のサーバ上に位置する所与の関数に中継することができる、条項６に記載の方法。
条項１０．前記シェルマネージャは、対応する関数引数および対応する関数名を別のサーバ上に位置する所与の関数に中継することができる、条項６に記載の方法。
【０１２７】
条項１１．前記関数は複数の処理機能を提供し、さらに、前記サーバは、前記処理機能のそれぞれを基準に従って対応するサブ関数にディスパッチするためのキューマネージャを含む、条項１乃至９のいずれか１つに記載の方法。
【０１２８】
条項１２．少なくとも１つのサブ関数がリモートサーバに配置されている、条項１１に記載の方法。
条項１３．前記基準は、所与の関数に関連する優先度、サーバで利用可能な処理、サーバで利用可能なリソース、サーバにて所与の関数に関連するサブ関数を同期させること、サーバと少なくとも１つのユーザ定義の基準でシェル関数の引数のロード・バランシング処理関数の実行に対するレートを管理すること、からなる群より選択される、条項１１に記載の方法。
【０１２９】
条項１４．前記結果データは、前記シェル関数を介して前記クライアントに提供される、条項１乃至１３のいずれか１つに記載の方法。
条項１５．データを処理するための関数が、グラフィカルユーザインタフェースの少なくとも一部を提供するために使用される、条項１乃至１４のいずれか１つに記載の方法。
【０１３０】
条項１６．データを処理する関数は、前記グラフィカルユーザインタフェース内のスライダの実装に関連する関数を含む、条項１５に記載の方法。
条項１７．サーバを使用して関数を実行する方法であって、データを処理するために少なくとも１つの処理機能を提供する方法において、前記方法は、
シェル関数を使用して関数の引数を受け取るステップと、
受け取った引数をサーバに位置する関数に提供するステップと、
受け取った引数を使用して関数の実行から結果データを取得するステップと、を含み、
前記シェル関数は、前記関数の関数パラメータを表す対応する関数パラメータを有する宣言関数を含み、前記宣言関数は、前記関数にマッピングされた対応する関数名を有する、方法。
【０１３１】
条項１８．対応する関数名が前記関数と異なり、サーバに位置するシェルマネージャをさらに含み、シェルマネージャは、対応する関数名を前記関数にマッピングするように適合される条項１７に記載の方法。
【０１３２】
条項１９．前記関数は、複数の処理機能を提供し、さらに、前記処理機能のそれぞれを基準に従って対応するサブ関数にディスパッチするためのキューマネージャを含む、条項１７に記載の方法。
【０１３３】
条項２０．前記基準は、所与の関数に関連する優先度、サーバで利用可能な処理、サーバで利用可能なリソース、サーバにて所与の関数に関連するサブ関数を同期させること、サーバと少なくとも１つのユーザ定義の基準でシェル関数の引数のロード・バランシング処理関数の実行に対するレートを管理すること、からなる群より選択される、条項１９に記載の方法。
【０１３４】
条項２１．サーバを使用して関数を実行するための処理デバイスであって、データを処理するための少なくとも１つの処理機能を提供する処理デバイスにおいて、前記処理デバイスは、
中央処理ユニットと；
表示デバイスと；
通信ポートと、
サーバを使用して関数を実行するアプリケーションを含むメモリユニットであって、データを処理するための少なくとも１つの処理機能を提供するメモリユニットと、
前記中央処理ユニット、表示デバイス、通信ポート及びメモリユニットを相互接続するためのデータバスと、
を含み、
前記アプリケーションは、
シェル関数を使用して関数の引数をクライアントで受け取るための命令と、
受け取った引数をサーバに位置する関数に提供するための命令と、
受け取った引数を使用して関数の実行から結果データを取得するための命令と、を含み、前記シェル関数は、前記関数の関数パラメータを表す対応する関数パラメータを有する宣言関数を含み、前記宣言関数は、前記関数にマッピングされた対応する関数名を有する、処理デバイス。
【０１３５】
条項２２．実行時に、処理デバイスに、サーバを使用して関数を実行する方法を実行させるコンピュータ実行可能命令を記憶するための非一時的なコンピュータ読み取り可能な記憶媒体であって、データを処理するための少なくとも１つの処理機能を提供する、非一時的なコンピュータ読み取り可能な記憶媒体において、前記方法は、
シェル関数を使用して関数の引数を受け取るステップと、
受け取った引数をサーバに位置する関数に提供するステップと、
受け取った引数を使用して関数の実行から結果データを取得するステップと、
を含み、
前記シェル関数は、前記関数の関数パラメータを表す対応する関数パラメータを有する宣言関数を含み、さらに前記宣言関数は、前記関数にマッピングされた対応する関数名を有する、非一時的なコンピュータ読み取り可能な記憶媒体。
【図１】
2019505932.tif 000004
【図２】
2019505932.tif 000005
【図３】
2019505932.tif 000006
【図４】
2019505932.tif 000007
【図５】
2019505932.tif 000008
【図６】
2019505932.tif 000009
【図７】
2019505932.tif 000010
【図８】
2019505932.tif 000011
【図９】
2019505932.tif 000012
【図１０】
2019505932.tif 000013
【国際調査報告】
2019505932.tif 000014
2019505932.tif 000015