特許第5773443号(P5773443)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ NECエンジニアリング株式会社の特許一覧

特許5773443クライアント装置、クライアント制御方法、及びプログラム
<>
  • 特許5773443-クライアント装置、クライアント制御方法、及びプログラム 図000002
  • 特許5773443-クライアント装置、クライアント制御方法、及びプログラム 図000003
  • 特許5773443-クライアント装置、クライアント制御方法、及びプログラム 図000004
  • 特許5773443-クライアント装置、クライアント制御方法、及びプログラム 図000005
  • 特許5773443-クライアント装置、クライアント制御方法、及びプログラム 図000006
  • 特許5773443-クライアント装置、クライアント制御方法、及びプログラム 図000007
  • 特許5773443-クライアント装置、クライアント制御方法、及びプログラム 図000008
  • 特許5773443-クライアント装置、クライアント制御方法、及びプログラム 図000009
  • 特許5773443-クライアント装置、クライアント制御方法、及びプログラム 図000010
  • 特許5773443-クライアント装置、クライアント制御方法、及びプログラム 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5773443
(24)【登録日】2015年7月10日
(45)【発行日】2015年9月2日
(54)【発明の名称】クライアント装置、クライアント制御方法、及びプログラム
(51)【国際特許分類】
   G06F 15/00 20060101AFI20150813BHJP
   G06F 13/00 20060101ALI20150813BHJP
【FI】
   G06F15/00 420A
   G06F13/00 540A
【請求項の数】9
【全頁数】12
(21)【出願番号】特願2012-140625(P2012-140625)
(22)【出願日】2012年6月22日
(65)【公開番号】特開2014-6628(P2014-6628A)
(43)【公開日】2014年1月16日
【審査請求日】2014年2月13日
(73)【特許権者】
【識別番号】303013763
【氏名又は名称】NECエンジニアリング株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】小川 義明
【審査官】 井上 宏一
(56)【参考文献】
【文献】 特開2001−101052(JP,A)
【文献】 特開2011− 22856(JP,A)
【文献】 特開平11−328134(JP,A)
【文献】 特開2002− 41293(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 15/00
G06F 13/00
(57)【特許請求の範囲】
【請求項1】
ウェブサーバから供給された第1クライアントアプリケーション及び第2クライアントアプリケーションを同時実行するブラウザを有するクライアント装置であって、
前記第1クライアントアプリケーションの実行時に前記ブラウザが送信した前記ウェブサーバへの送信メッセージ内に前記第2クライアントアプリケーションとのデータやり取りを示すダイレクト通信フラグがあるか否かを判定し、前記ダイレクト通信フラグが設定されている場合には前記送信メッセージを前記ウェブサーバに送信することなく前記第2クライアントアプリケーションを実行する前記ブラウザに引き渡すダイレクト通信制御部、を有するクライアント装置。
【請求項2】
前記ダイレクト通信制御部は、前記ダイレクト通信フラグが存在しない場合または無効値が設定されている場合、前記送信メッセージを前記ウェブサーバに送信する、請求項1に記載のクライアント装置。
【請求項3】
前記ダイレクト通信制御部が前記ダイレクト通信フラグを検出した場合、前記送信メッセージに含まれる前記第1クライアントアプリケーション用のデータを予め定められた変換テーブルに応じて前記第2クライアントアプリケーションのデータに変換する変換部を更に備える請求項1または請求項2に記載のクライアント装置。
【請求項4】
ウェブサーバから供給された第1クライアントアプリケーション及び第2クライアントアプリケーションを同時実行するブラウザを有するクライアント装置の制御方法であって、
前記第1クライアントアプリケーションの実行時に前記ブラウザが送信した前記ウェブサーバへの送信メッセージ内に前記第2クライアントアプリケーションとのデータやり取りを示すダイレクト通信フラグがあるか否かを判定し、
前記ダイレクト通信フラグが設定されている場合には前記送信メッセージを前記ウェブサーバに送信することなく前記第2クライアントアプリケーションを実行する前記ブラウザに引き渡す、処理をクライアント装置が有するコンピュータに実行させるクライアント装置の制御方法。
【請求項5】
前記ダイレクト通信フラグが存在しない場合または無効値が設定されている場合、前記送信メッセージを前記ウェブサーバに送信する、処理をコンピュータに実行させる請求項4に記載のクライアント装置の制御方法。
【請求項6】
前記ダイレクト通信フラグを検出した場合、前記送信メッセージに含まれる前記第1クライアントアプリケーション用のデータを予め定められた変換テーブルに応じて前記第2クライアントアプリケーションのデータに変換する、処理をコンピュータに実行させる請求項4または請求項5に記載のクライアント装置の制御方法。
【請求項7】
ウェブサーバから供給された第1クライアントアプリケーション及び第2クライアントアプリケーションを同時実行させるブラウザを有するクライアント装置の制御プログラムであって、
前記第1クライアントアプリケーションの実行時に前記ブラウザが送信した前記ウェブサーバへの送信メッセージ内に前記第2クライアントアプリケーションとのデータやり取りを示すダイレクト通信フラグがあるか否かを判定するステップと、
前記ダイレクト通信フラグが設定されている場合には前記送信メッセージを前記ウェブサーバに送信することなく前記第2クライアントアプリケーションを実行する前記ブラウザに引き渡すステップと、
クライアント装置が有するコンピュータに実行させるプログラム。
【請求項8】
前記ダイレクト通信フラグが存在しない場合または無効値が設定されている場合、前記送信メッセージを前記ウェブサーバに送信するステップをコンピュータに実行させる、請求項7に記載のプログラム。
【請求項9】
前記ダイレクト通信フラグを検出した場合、前記送信メッセージに含まれる前記第1クライアントアプリケーション用のデータを予め定められた変換テーブルに応じて前記第2クライアントアプリケーションのデータに変換するステップをコンピュータに実行させる、請求項7または請求項8に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はクライアント装置、クライアント制御方法、及びプログラムに関する。
【背景技術】
【0002】
近年のインターネット技術の普及に伴い、様々な場面でウェブアプリケーションが利用されている。ウェブサーバは、インターネット接続されたクライアント装置のブラウザソフトウェア(以下、単にブラウザと記載する)から各種入力を受け付け、当該入力に応じたコンテンツを提供する。当該コンテンツとは、例えばHTML形式で記載されたコンテンツに加え、ブラウザが実行可能な各種のスクリプト言語(たとえばJavaScript(登録商標))等が記載されたコンテンツを含む。本明細書では、ブラウザが実行可能な各種のスクリプト言語等が記載されたコンテンツをクライアントアプリケーションとも呼称する。
【0003】
ウェブアプリケーションの普及が進むにつれて、同一クライアント装置上で複数のクライアントアプリケーション(例えばJavaScript(登録商標)等のスクリプト言語を含むウェブページ)を同時に実行する場合がある。この場合、クライアントアプリケーション間でデータの入出力を行うケースも想定される。
【0004】
なお、特許文献1には、ウェブアプリケーションの連携方法に関する一態様が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2011−22856号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本願発明者は、同一クライアント装置上で複数のクライアントアプリケーション(例えばJavaScript(登録商標)等のスクリプト言語を含むウェブページ)を同時に実行する場合における問題を新たに見出した。当該問題を以下に説明する。
【0007】
クライアント装置上のあるクライアントアプリケーションをブラウザを介して実行し、同一クライアント装置上の他のクライアントアプリケーションにデータを受け渡す場合、一般的な手法ではブラウザはウェブサーバにアクセスを行う。そして、ウェブサーバからデータを他のクライアントアプリケーション宛てに送信することによりデータの受け渡しを行っていた。すなわち、必ずサーバを介した通信を行う必要があった。
【0008】
このように必ずサーバを介した通信を行う必要があるため、ネットワーク障害や外部要因による通信遅延の影響を受けやすいという問題があった。さらに、ネットワークを介した通信を行うため、セキュリティ上の問題が生じ得る。特に個人情報等のデータを受け渡す場合にセキュリティ上の懸念がある。
【0009】
本願は上述した問題に鑑みてなされたものであり、サーバを介することなくクライアントアプリケーション間でデータの受け渡しを行うことができるクライアント装置、データ処理方法、及びプログラムを提供することを主たる目的とする。
【課題を解決するための手段】
【0010】
本発明にかかるクライアント装置の一態様は、
ウェブサーバから供給された第1クライアントアプリケーション及び第2クライアントアプリケーションを同時実行するブラウザを有するクライアント装置であって、
前記第1クライアントアプリケーションの実行時に前記ウェブサーバへの送信メッセージ内に前記第2アプリケーションとのデータやり取りを示すダイレクト通信フラグがあるか否かを判定し、前記ダイレクト通信フラグが設定されている場合には前記送信メッセージを前記ウェブサーバに送信することなく前記第2クライアントアプリケーションを実行する前記ブラウザに引き渡すダイレクト通信制御部、
を有するものである。
【0011】
本発明にかかるクライアント制御方法の一態様は、
ウェブサーバから供給された第1クライアントアプリケーション及び第2クライアントアプリケーションを同時実行するブラウザを有するクライアント装置の制御方法であって、
前記第1クライアントアプリケーションの実行時に前記ウェブサーバへの送信メッセージ内に前記第2アプリケーションとのデータやり取りを示すダイレクト通信フラグがあるか否かを判定し、前記ダイレクト通信フラグが設定されている場合には前記送信メッセージを前記ウェブサーバに送信することなく前記第2クライアントアプリケーションを実行する前記ブラウザに引き渡す、
ものである。
【0012】
本発明にかかるプログラムの一態様は、
コンピュータに、
ウェブサーバから供給された第1クライアントアプリケーション及び第2クライアントアプリケーションを同時実行させるプログラムであって、
前記第1クライアントアプリケーションの実行時に前記ウェブサーバへの送信メッセージ内に前記第2アプリケーションとのデータやり取りを示すダイレクト通信フラグがあるか否かを判定するステップと、
前記ダイレクト通信フラグが設定されている場合には前記送信メッセージを前記ウェブサーバに送信することなく前記第2クライアントアプリケーションを実行する前記ブラウザに引き渡すステップと、
を実行させる、ものである。
【発明の効果】
【0013】
本願では、サーバを介することなくクライアントアプリケーション間でデータの受け渡しを行うことができるクライアント装置、クライアント制御方法、及びプログラムを提供することができる。
【図面の簡単な説明】
【0014】
図1】実施の形態1にかかるクライアント装置1の構成を示すブロック図である。
図2】実施の形態1にかかるクライアントアプリケーション_A40のコード例を示す図である。
図3】実施の形態1にかかるクライアントアプリケーション_B50のコード例を示す図である。
図4】実施の形態1にかかるブラウザ60から送信される送信メッセージを示す図である。
図5】実施の形態1にかかる変換部13が用いる変換ルールを示す図である。
図6】実施の形態1にかかるブラウザ60に引き渡される送信メッセージを示す図である。
図7】実施の形態1にかかるクライアント装置1の動作を示すフローチャートである。
図8】実施の形態1にかかるクライアント装置1の動作を示すフローチャートである。
図9】実施の形態1にかかるクライアント装置1の動作概念を示す図である。
図10】実施の形態1にかかるクライアント装置1の動作概念を示す図である。
【発明を実施するための形態】
【0015】
<実施の形態1>
以下、図面を参照して本発明の実施の形態について説明する。図1は、本実施の形態にかかるクライアント装置1の構成を示すブロック図である。クライアント装置1は、データフィルタ部10と、ネットワークドライバ部20と、カーネル部30と、ブラウザ60を有する。なお、クライアント装置10上ではブラウザ60を介して2つのクライアントアプリケーション(クライアントアプリケーション_A40、クライアントアプリケーション_B50)が実行されている。
【0016】
クライアント装置1は、一般的なネットワーク通信機能を持つ端末であればよく、例えばパーソナルコンピュータ、携帯電話、スマートフォン、PDA(Personal Digital Assistant)等であればよい。
【0017】
ここでクライアントアプリケーション_A40及びクライアントアプリケーションB_50は、ブラウザ60などのクライアントサイドで実行される。例えば、クライアントアプリケーション_A40及びクライアントアプリケーションB_50は、HTML言語で記載された静的なコードと、スクリプト言語(JavaScript(登録商標)等)により記述されたプログラムコードを含む。
【0018】
クライアントアプリケーション_A40のコード例を図2に示す。クライアントアプリケーション_A40は、あるスクリプト言語(A言語とする)のコードを含む。ここで、ウェブサーバから当該コードをダウンロードした際に、他のクライアントアプリケーションとの直接通信を指示する特定のタグ(図2の例では"directCommunication")が含まれている。なお、他のクライアントアプリケーションとの直接通信を以下の説明ではダイレクト通信と呼称する。"directCommunication"は、他のクライアントアプリケーションに受け渡すデータを指示するタグであり、"data−A1"として関数"A−func()"の実行結果を受け渡し、"data−A2"として数値"33"を受け渡すことが規定されている。また、"directCommunication"には、データの受け渡し先となるクライアントアプリケーションの識別子("address=B")が含まれている。
【0019】
同様にクライアントアプリケーション_B50のコード例を図3に示す。クライアントアプリケーション_B50は、クライアントアプリケーション_A40とは別のスクリプト言語(B言語とする)のコードを含む。当該コードには、データ種別"dataB−1"、"dataB−2"のデータを表示する内容が記載されている。
【0020】
なお図1の例では2つのクライアントアプリケーションが動作している例を示したが、必ずしもこれに限られず、クライアント装置1は3以上のクライアントアプリケーションを実行しても良い。また、上述のタグ名("directCommunication")等はあくまで一例であり、他の名称、他のフォーマットで記載されても良いことは勿論である。
【0021】
ブラウザ60は、ダイレクト通信要求のタグを含む場合に、当該要求の情報を含む送信メッセージをネットワーク上のウェブサーバ(詳細にはクライアントアプリケーションA_40の配信元のサーバ)に送信する。当該送信メッセージの一例を図4に示す。当該メッセージは、上述のダイレクト通信に関するフラグ(ダイレクト通信を行うか否か)及びダイレクト通信を行う際の受け渡しデータを含む。図4の例では、ダイレクト通信の実行可否を示すフラグ("flag")、データ送信元のアプリケーション識別子("A"),データ送信先のアプリケーション識別子("B")、送信データ("dataA−1"、"dataA−2")が記載されている。
【0022】
以下の説明では、当該メッセージ(図4)はXML(eXtensible Markup Language)形式のメッセージであるものとして説明するが、送信フォーマットはXML形式に限られることなく、ブラウザ60及びウェブサーバが解釈できる任意の形式(例えば各種のHTTPメソッド(HTTP POSTメソッド、HTTP PUTメソッド等)に埋め込まれる方式)で表現すればよい。
【0023】
ネットワークドライバ部20は、オペレーティングシステム等が提供するネットワークの管理機能を実行する。カーネル部30は、オペレーティングシステムが提供するシステムリソース処理等を実行する。
【0024】
データフィルタ部10は、アプリケーション(API)制御部11と、ダイレクト通信制御部12と、HTML変換部13と、ドライバインターフェイス制御部14と、を備える。
【0025】
ドライバインターフェイス制御部14は、データフィルタ部10内の各処理部とネットワークドライバ部20とのデータやり取りを行う際のインターフェイスとして動作する。
【0026】
アプリケーション(API)制御部11は、各種のクライアントアプリケーションのAPI(Application Programming Interface)を解釈し、送信されたHTMLデータやHTTPメッセージを抽出する。
【0027】
ダイレクト通信制御部12は、ブラウザ60からの送信メッセージ(図4)からダイレクト通信を指示するフラグ("directCommunication")があるか否かを検証する。当該フラグがある場合、ダイレクト通信制御部12は、当該フラグに関連付けられた宛先や受け渡すデータを抽出する。図4の例では、ダイレクト通信制御部12は、当該メッセージ内にダイレクト通信を指示するフラグがある(<flag>yes</flag>)と判定する。そしてダイレクト通信制御部12は、"data−A1"及び"data−A2"をクライアントアプリケーション"B"(クライアントアプリケーションB_50の識別子)に受け渡すというデータとして抽出する。
【0028】
変換部13は、ダイレクト通信により受け渡すデータを受け渡し先のクライアントアプリケーションに応じて変換する。変換部13は、予め定められた変換ルールに応じてデータを変換する。以下の説明では、データの送信元のクライアントアプリケーションA_40のコードを図2に示すコードとし、データの送信先のクライアントアプリケーションB_50のコードを図3に示すコードとする。また、変換部13が使用する変換ルールの一例を図5に示す。
【0029】
図5に示すように、クライアントアプリケーションA_40とクライアントアプリケーションB_50との間のデータの対応関係が規定されている。例えば図5には、"dataA−1"と"dataB−1"が等しいこと、dataA−2" に2を乗算した値と"dataB−2"が等しいこと、等が記載されている。
【0030】
変換部13は、送信メッセージ(図4)内から読み出したデータを変換ルールに応じて送信先に適応するように変換する。変換後のメッセージ例を図6に示す。図示するように、各データがクライアントアプリケーションB_50に応じたメッセージに変換されている。例えば"dataA−1"が"dataB−1"に変換され、"dataA−2"に2を乗算した値が"dataB−2"と記載されている。なお、図6に示すメッセージ形式(XML形式)もあくまで一例であり、ブラウザ60が解釈可能な任意の形式であればよい。
【0031】
ブラウザ60は、ダイレクト通信制御部12から変換部13を介して受信した送信メッセージ(図6)を解釈して表示処理を行う。なお、ブラウザ60上で実行されているクライアントアプリケーションが同一視できる場合(例えば同一のスクリプト言語を用いている場合)には変換部13による変換を行わなくてもよい。
【0032】
続いて、図7及び図8のフローチャートを参照して本実施の形態にかかるクライアント装置の動作について説明する。図7は、クライアントアプリケーションA_40(ダイレクト通信送信側)の実行中の動作を示すフローチャートである。
【0033】
ウェブアプリケーションA_40を実行するブラウザ60は、コード内(図2)からダイレクト通信要求を示すタグを抽出する(S11)。ブラウザ60は、ウェブアプリケーションA_40の供給元のサーバに送信するメッセージを生成し(S12)、ダイレクト通信要求を示すタグから読み出した各種のデータを基に送信メッセージを設定する(S13)。なおダイレクト通信を指示するタグが設定されていない場合、ダイレクト通信制御部12は、ダイレクト通信要求用のタグの埋め込みは行わない。ブラウザ60は、設定(S13)の後に当該メッセージを送信する(S14)。
【0034】
続いて図8を参照してデータフィルタ部10の動作を説明する。データフィルタ部10は、ネットワークドライバ部20にアタッチし、メッセージの受信待ちを行う(S21、S22)。ダイレクト通信制御部12は、送信メッセージ内からダイレクト通信用タグ("directCommunication")を取り出し(S23)、当該タグからダイレクト通信用のフラグ("flag")タグを抽出する(S24)。
【0035】
読み出したダイレクト通信用のフラグ("flag")の値が"Yes"であった場合、ダイレクト通信制御部12はダイレクト通信要求であると判定する(S25:Yes)。ダイレクト通信要求である場合(S25:Yes)、変換部13は送信メッセージを変換ルール(図5)に基づいて変換し(S26)、変換後のデータをブラウザ60に引き渡す(S27)。
【0036】
ダイレクト通信用のフラグ("flag")タグが設定されていない場合やダイレクト通信用のフラグ("flag")タグに"No"等が設定されている場合、ダイレクト通信制御部12はダイレクト通信要求ではないと判定する(S25:No)。この場合、ダイレクト通信制御部12は、送信メッセージをドライバインターフェイス制御部14を介してネットワークドライバ部20に引き渡す(S28)。ネットワークドライバ部20は、当該送信メッセージをウェブサーバに送信する。
【0037】
次に、本実施の形態にかかるクライアント装置1の動作概念を図9の概念図を参照して説明する。前述のようにデータフィルタ部10内のダイレクト通信制御部12は、送信メッセージにダイレクト通信を指示するフラグが含まれているか否かを判定する。ダイレクト通信制御を指示するフラグが含まれている場合、データフィルタ部10は、ウェブサーバに送信メッセージを送信することなく、必要な変換処理を行った上で送信メッセージをそのままブラウザ60に引き渡す(図9実線矢印部分)。
【0038】
一方、ダイレクト通信制御を指示するフラグが含まれていない場合、データフィルタ部10は、ネットワークドライバ部20を介して送信メッセージをウェブサーバに送信する(図9破線矢印部分)。
【0039】
続いて、本実施の形態にかかるクライアント装置1の効果について説明する。上述したようにダイレクト通信制御部12は、ウェブサーバに送信する送信メッセージ内にダイレクト通信用のフラグが設定されているか否かを判定し、フラグが設定されている場合にはウェブサーバに送信メッセージを送信することなく、通信先のクライアントアプリケーションに受け渡す。これにより、ウェブサーバを介さずにクライアントアプリケーション間でデータの受け渡しを行うことが可能となる。
【0040】
さらに、同一クライアント装置上で動作するクライアントアプリケーションが直接通信できることにより、ネットワークアクセスに伴う悪影響を受ける可能性を減らすことができる。上述の悪影響とは、ネットワーク障害や外部要因による通信遅延、通信遮断、データの漏えい等のセキュリティ侵害等を含む。
【0041】
さらに上述の方式は、ブラウザ60とネットワークドライバ部20との間に設けられるデータフィルタ部10により実現される。これにより、ウェブアプリケーションの動作環境に影響を与えることなく、上述の効果(ウェブサーバを介さずにデータの受け渡し等)を実現することができる。
【0042】
上述のクライアント装置1内の各処理部(データフィルタ部10、ネットワークドライバ部20、カーネル部30、ブラウザ60)の各処理は、任意のコンピュータ内で動作するプログラムとして実現してもよい。プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0043】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【0044】
最後に、図10を参照して本発明の概要を改めて説明する。データフィルタ部10内のダイレクト通信制御部12は、クライアントアプリケーションA_40を実行するブラウザ60から送信された送信メッセージ内に同一クライアント装置1上で動作するクライアントアプリケーションB_50とのデータやり取りを指示するダイレクト通信用のフラグがあるか否かを判定する。
【0045】
当該フラグがある場合、ダイレクト通信制御部12は、当該送信メッセージをサーバに送信することなく、そのままブラウザ60に引き渡す(図10実線部分)。これにより、ウェブサーバを介した通信回数を削減でき、ネットワークやサーバに起因する各種の問題(通信遅延、セキュリティ上の問題)等を回避することができる。さらに、当該構成は、一般的なウェブサーバとブラウザにより実現されるウェブアプリケーションに親和性が高い(適応が容易である)。
【符号の説明】
【0046】
1 クライアント装置
10 データフィルタ部
11 アプリケーション(API)制御部
12 ダイレクト通信制御部
13 変換部
14 ドライバインターフェイス制御部
20 ネットワークドライバ部
30 カーネル部
40 クライアントアプリケーションA
50 クライアントアプリケーションB
60 ブラウザ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10