JP6468293B2 - アプリケーション機能拡張方法、アプリケーション機能拡張プログラム、及びアプリケーション機能拡張装置 - Google Patents

アプリケーション機能拡張方法、アプリケーション機能拡張プログラム、及びアプリケーション機能拡張装置 Download PDF

Info

Publication number
JP6468293B2
JP6468293B2 JP2016570433A JP2016570433A JP6468293B2 JP 6468293 B2 JP6468293 B2 JP 6468293B2 JP 2016570433 A JP2016570433 A JP 2016570433A JP 2016570433 A JP2016570433 A JP 2016570433A JP 6468293 B2 JP6468293 B2 JP 6468293B2
Authority
JP
Japan
Prior art keywords
application
terminal
function expansion
logic
control logic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2016570433A
Other languages
English (en)
Other versions
JPWO2016117096A1 (ja
Inventor
洋介 中村
洋介 中村
潤也 可児
潤也 可児
坂本 拓也
拓也 坂本
矢崎 孝一
孝一 矢崎
伊藤 栄信
栄信 伊藤
和明 二村
和明 二村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2016117096A1 publication Critical patent/JPWO2016117096A1/ja
Application granted granted Critical
Publication of JP6468293B2 publication Critical patent/JP6468293B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/20Scenes; Scene-specific elements in augmented reality scenes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)

Description

開示の技術は、アプリケーション機能拡張方法、アプリケーション機能拡張プログラム、及びアプリケーション機能拡張装置に関する。
近年、スマートフォン及びタブレット端末等の携帯情報端末の高性能化に伴い、これまでパーソナルコンピュータが担っていた情報処理の一部を、携帯情報端末で実行する機会が増加している。多くの場合、携帯情報端末で実行されるアプリケーションは、インターネット等の通信回線を経由して接続されたサーバ等と連携して情報を処理するWeb(World Wide Web)アプリケーション(以降、「アプリケーション」と表す)である。そのため、ネットワークを利用するアプリケーションに適した情報処理の形態が検討されている。
特開2005−50241号公報 特開2013−81127号公報 特開2013−235387号公報
携帯情報端末でアプリケーションを実行する際、ユーザはアプリケーションで扱われる情報を、プリンタ、外部スピーカ、外部モニタ等、携帯情報端末に接続される周辺デバイス(以降、「デバイス」と表す)に出力したい場合が生じることがある。
しかしながら、アプリケーションにデバイスを制御するためのコード(ロジック)が含まれていなければ、例えデバイスに対応するドライバが携帯情報端末にインストールされていたとしても、携帯情報端末からデバイスを利用することができない。
しかも、アプリケーションにロジックを追加するためにはアプリケーションを改修する必要があるため、アプリケーションに関する専門的知識を持たない携帯情報端末のユーザではアプリケーションの改修が困難となる場合が多い。
一つの側面として、開示の技術は、デバイスとの連携が考慮されていないアプリケーションであっても、アプリケーションを改修することなくアプリケーションからデバイスが利用できるように、アプリケーションの機能を拡張することを目的とする。
一つの態様では、コンピュータに、端末に含まれるアプリケーションから、前記端末で検知したデバイスに対応した予め定めたタグが含まれる位置を特定させる。そして、コンピュータに、アプリケーションの特定した位置に、予め定めたタグに対応したデバイスを利用するためのロジックを挿入させる。
一つの側面として、開示の技術は、デバイスとの連携が考慮されていないアプリケーションであっても、アプリケーションを改修することなくアプリケーションからデバイスが利用できるように、アプリケーションの機能を拡張できる、という効果を有する。
第1実施形態及び第2実施形態に係るWebシステムの構成例を示す図である。 対応デバイスDBのデータ構造の一例を示す図である。 デバイス制御ロジックの一例を示す図である。 デバイス制御ロジックリストDBのデータ構造の一例を示す図である。 ドライバDBのデータ構造の一例を示す図である。 第1実施形態及び第2実施形態に係る端末をコンピュータで実現する場合の構成例を示す図である。 第1実施形態に係るアプリケーション機能拡張処理の流れの一例を示すフローチャートである。 アプリケーションにプリンタのロジックが挿入される前の端末の一例を示す図である。 アプリケーションにプリンタのロジックが挿入された後の端末の一例を示す図である。 アプリケーションに外部スピーカのロジックが挿入される前の端末の一例を示す図である。 アプリケーションに外部スピーカのロジックが挿入された後の端末の一例を示す図である。 アプリケーションに外部モニタのロジックが挿入される前の端末の一例を示す図である。 アプリケーションに外部モニタのロジックが挿入された後の端末の一例を示す図である。 デバイス制御ロジックの一例を示す図である。 クロスサイトリクエストの一例を示す図である。 CORSを適用したクロスサイトリクエストの一例を示す図である。 第2実施形態に係るアプリケーション機能拡張処理の流れの一例を示すフローチャートである。 デバイスの選択画面の一例を示す図である。 選択したデバイスとの連携を指示する画面の一例を示す図である。 第3実施形態に係るWebシステムの構成例を示す図である。 第3実施形態に係る端末をコンピュータで実現する場合の構成例を示す図である。 第3実施形態に係るアプリケーション機能拡張処理の流れの一例を示すフローチャートである。 端末で利用可能なデバイスを検知した場合の表示例を示す図である。 アプリケーションとデバイスとの連携の際の表示例を示す図である。 アプリケーションでのドライバの共有について説明するための模式図である。 ロジックの一例を示す図である。
以下、図面を参照して開示の技術の実施形態の一例を詳細に説明する。なお、機能が同じ働きを担う構成要素及び処理には、全図面を通して同じ符号を付与し、重複する説明を適宜省略する場合がある。
(第1実施形態)
携帯情報端末(以降、「端末」と表す)のアプリケーションからデバイスを利用するためには、端末内に利用するデバイスに対応したドライバを実装する必要がある。ドライバはデバイスを直接制御するための関数群を含み、アプリケーションはドライバに含まれる関数群を呼び出すことで、ドライバに対応したデバイスを利用する。このように、アプリケーションの開発者は、ドライバの関数群を経由してデバイスを利用することで、デバイスの詳細な制御手順はドライバの関数群に任せた上で、デバイスを利用することができる。従って、アプリケーションの開発者は、ドライバの関数群に相当するコードを自作する場合に比べて、アプリケーションの開発時間を短縮することができる。
ドライバは、アプリケーションとは独立に例えばデバイスの開発元等から供給される。従って、ドライバは、アプリケーションと異なるタイミングで端末内にインストールすることが可能となる。また、アプリケーションに、予め規定されたドライバの関数群を利用してデバイスを制御するためのコード、すなわちロジックを記述すれば、複数のアプリケーションで同じデバイスが利用可能となる。
図25は、複数のアプリケーションで同じドライバを使用する状況を表した図である。図25に示すように、アプリケーションAで使用するドライバは、アプリケーションAと分離した形態で存在するため、アプリケーションBでも使用することが可能となる。従って、アプリケーションA及びアプリケーションBに、ドライバを利用するロジックを記述しておくことで、ドライバに対応したデバイスを共有することができる。
図26は、アプリケーションにおけるロジックの一例を示す図である。アプリケーションは図26に示すように、例えばHTML(Hyper Text Markup Language)等のマークアップ言語で記述される。なお、図26に示すアプリケーションの記述言語は一例である。アプリケーションの記述言語は、例えばXML等のメタ言語、又はスクリプト言語等、アプリケーションの記述内容に従ってアプリケーションを実行する実行部(例えばブラウザ等)で解釈可能な言語であれば如何なる言語であってもよい。
図26の例では、“<input ・・・>”で表されるinputタグに相当する行がロジックに相当する。例えばユーザが端末の画面に表示される「画像を印刷」と表記されたボタンを押すことで、ドライバのpicprint関数が呼び出され、“www.foo.com/pic1.jpg”で表される画像ファイルの画像がpicprint関数を含むドライバに対応したプリンタから出力される。
このように、例えばアプリケーションからプリンタを利用するには、アプリケーションにプリンタから画像を出力するためのロジックが予め含まれている必要がある。しかし、アプリケーションの中には、例えば端末の画面に画像を表示するだけで、プリンタ等のデバイスの利用を当初から想定していないアプリケーションも存在する。デバイスの利用を想定していないアプリケーションでデバイスを利用するためには、アプリケーションのコードを改修して、アプリケーションにデバイスに対応したロジックを追加する必要がある。しかし、アプリケーションに精通していない端末のユーザが、アプリケーションにデバイスに対応したロジックを追加するのは通常困難である。
以下では、アプリケーションにロジックが含まれない場合であっても、アプリケーションを改修することなくアプリケーションからデバイスが利用できるように、アプリケーションの機能を拡張する例について説明する。
図1は、第1実施形態に係るWebシステム1の構成例を示す図である。
図1に示すように、Webシステム1は、例えば端末10、クラウドサーバ30、デバイス40、及び通信回線50を含む。端末10及びクラウドサーバ30は、例えばインターネット回線である通信回線50に接続され、通信回線50を経由してデータの送受信を行う。また、端末10及びデバイス40も接続され、端末10及びデバイス40の間でデータの送受信を行う。
なお、通信回線50の種類に制限はなく、例えばインターネット回線の他、イントラネット回線、又は専用線等のような回線であってもよく、更に、有線、無線、又は有線と無線との混在の何れの接続形態であってもよい。また、端末10及びデバイス40を接続する接続形態も、有線、無線、又は有線と無線との混在の何れの接続形態であってもよい。
端末10は、例えば実行部11、検知部12、決定部13、取得部14、特定部15、及び挿入部16の各機能部を含む。また、端末10は、例えば対応デバイスDB(Database)20、デバイス制御ロジックリストDB22、及びドライバDBの各DBと、例えばクラウドサーバ30のように通信回線50に接続されるサーバから取得したアプリケーション17と、を含む。
実行部11は、アプリケーション17のコードをメモリ104に展開して、メモリ104に展開されたアプリケーション17を1行ずつ読み込み、読み込んだ行の記述内容を解釈しながらアプリケーション17を実行する。なお、実行部11は、アプリケーション17を実行する際、検知部12を呼び出す。
検知部12は、実行部11から呼び出されると端末10に接続可能なデバイス40を検知すると共に、対応デバイスDB20を参照して、検知したデバイス40が端末10に対応しているか、すなわち検知したデバイス40が端末10で利用可能か否かを検知する。
図2は、対応デバイスDB20におけるデータ構造の一例を示す図である。対応デバイスDB20は、例えば端末10に対応したデバイス名が記載された情報(対応デバイス情報)を含む。検知部12は、検知したデバイス40のデバイス名が対応デバイス情報に含まれていれば、端末10に対応するデバイス40を検知したと判定する。なお、対応デバイス情報に含まれるデバイス名に重複はなく、デバイス名から一意にデバイス40を特定することができる。
検知部12は、端末10に対応するデバイス40を検知した場合、検知したデバイス40のデバイス名を決定部13に出力する。
決定部13は、デバイス制御ロジックリストDB22を参照して、検知部12から受け付けたデバイス名に対応するデバイス制御ロジック34が既に端末10内に存在するか否かを判定する。
ここで、デバイス制御ロジック34とは、デバイス40を制御するためのコード、すなわちロジックと、アプリケーション17におけるロジックの挿入位置を示すタグと、を対応づけた情報(ロジック対応情報)を含む情報である。
図3に、デバイス制御ロジック34の一例を示す。図3に示すデバイス制御ロジック34は、ドライバ32の関数群を呼び出してアプリケーション17からデバイス40を利用するためのロジックと、タグと、を行方向に対応づける。
なお、図3に示すデバイス制御ロジック34において、‘X’及び‘Y’の記号は、デバイス40への出力対象となるリソースのファイル名を表す。また、図3に示すデバイス制御ロジック34には2つのロジック対応情報が含まれているが、デバイス制御ロジック34に含まれるロジック対応情報の数に制限はない。また、図3に示すデバイス制御ロジック34のロジックはHTML言語で記述されているが他の言語でもよく、ロジックを記述したファイルのURL(Uniform Resource Locator)を指定する情報であってもよい。
図4は、デバイス制御ロジックリストDB22のデータ構造の一例を示す図である。デバイス制御ロジックリストDB22は、例えばデバイス名と、デバイス名に対応するデバイス制御ロジック34と、を対応付ける。決定部13は、デバイス制御ロジックリストDB22のデバイス名欄に検知部12から入力されたデバイス名が含まれる場合、検知部12から入力されたデバイス名に対応するデバイス制御ロジック34が端末10内に存在すると判定する。そして、決定部13は、検知部12から入力されたデバイス名を特定部15に出力する。
一方、検知部12から入力されたデバイス名に対応するデバイス制御ロジック34が端末10内に存在しない場合、決定部13は、検知部12から入力されたデバイス名を取得部14に出力する。
取得部14は、決定部13から入力されたデバイス名に対応したドライバ32及びデバイス制御ロジック34を取得する。一例としてドライバ32及びデバイス制御ロジック34は、デバイス名毎にクラウドサーバ30に予め用意され、取得部14は、デバイス名に対応したドライバ32及びデバイス制御ロジック34をクラウドサーバ30から取得する。
取得部14は、取得したデバイス制御ロジック34をデバイス名と対応づけ、デバイス制御ロジックリストDB22に格納する。更に、取得部14は、取得したドライバ32をドライバDB24に格納すると共に、デバイス名とドライバ32を対応づける情報(ドライバ対応情報)をドライバDB24に格納する。
図5は、ドライバDB24のデータ構造の一例を示す図である。ドライバDB24ではデバイス名とドライバ32とが行方向に対応づけられ、例えば図5に示す例では、デバイス名“dev1”に対応するドライバは“dev1.drv”であることを示している。
取得部14は、決定部13から入力されたデバイス名に対応したドライバ32及びデバイス制御ロジック34を取得した後、例えば取得終了を知らせる通知を決定部13に出力する。
決定部13は、取得部14から通知を受け付けると、検知部12から入力されたデバイス名を特定部15に出力する。
特定部15は、デバイス制御ロジックリストDB22を参照して、決定部13から入力されたデバイス名に対応したデバイス制御ロジック34を取得する。そして、特定部15は、メモリ104に展開されたアプリケーション17のコードを読み込み、アプリケーション17にデバイス制御ロジック34のタグと同じコードが含まれるか否かを判定する。
アプリケーション17にデバイス制御ロジック34のタグと同じコードが含まれる場合は、特定部15はアプリケーション17におけるタグと同じコードが含まれる行の行番号を特定する。この際、特定部15は、ドライバ対応情報を参照して、決定部13から入力されたデバイス名に対応したドライバ32をドライバDB24から取得してメモリ104に展開することで、取得したドライバ32をアプリケーション17から利用可能にする。
そして、特定部15は、特定した行番号及び決定部13から入力されたデバイス名に対応したデバイス制御ロジック34のロジックを挿入部16に出力する。
挿入部16は、メモリ104に展開されたアプリケーション17に対して、特定部15から受け付けたロジックを、特定部15から受け付けた行番号の次の行に挿入する。アプリケーション17へのロジック挿入後、挿入部16はアプリケーションの再読み込みを指示する通知を実行部11に出力する。
実行部11は、挿入部16から通知を受け付けると、メモリ104に展開されたロジック挿入後のアプリケーション17を再読み込みし、アプリケーション17を実行する。
一方、クラウドサーバ30は、デバイス名に対応するドライバ32及びデバイス制御ロジック34を含む。クラウドサーバ30は、ドライバ32及びデバイス制御ロジック34をデバイス名と紐付けて管理し、端末10からデバイス名を受信した際、受信したデバイス名に対応するドライバ32及びデバイス制御ロジック34を端末10に送信する。
次に、図6に、端末10をコンピュータで実現する場合の構成図を示す。
コンピュータ100は、CPU102、メモリ104、及び不揮発性の記憶部106を含む。CPU102、メモリ104、及び不揮発性の記憶部106は、バス108を介して互いに接続されている。また、コンピュータ100は、他の装置とコンピュータ100とを接続し、互いにデータを送受信するためのI/O(Input/Output)110を備え、I/O110はバス108に接続されている。また、I/O110には、例えば入力装置112、表示装置114、及び通信装置116が接続されている。
入力装置112は、例えば表示装置114の表示画面上に設置されたタッチパネル等の、ユーザがコンピュータ100に指示を与えるためのインターフェース装置を含む。また、入力装置112は、例えばCD−ROM又はフラッシュメモリ等の、記録媒体160に記録されるデータを読み取るための読み取り装置を含む。表示装置114は、例えばコンピュータ100での処理結果を表示する表示デバイス等を含む。また、通信装置116は、デバイス40、及び通信回線50に接続するためのインターフェースを含み、デバイス40、及びクラウドサーバ30等の、他の電子機器とデータの送受信を行う。なお、記憶部106はHDD(Hard Disk Drive)又はフラッシュメモリ等によって実現できる。
記憶部106には、コンピュータ100を図1に示す端末10として機能させるためのアプリケーション機能拡張プログラム118が記憶されている。記憶部106に記憶されているアプリケーション機能拡張プログラム118は、例えば検知プロセス120、決定プロセス122、取得プロセス124、特定プロセス126、挿入プロセス128、及び実行プロセス130を含む。
CPU102は、アプリケーション機能拡張プログラム118を記憶部106から読み出してメモリ104に展開し、アプリケーション機能拡張プログラム118が有する各プロセスを実行する。
CPU102が、アプリケーション機能拡張プログラム118を記憶部106から読み出してメモリ104に展開し、アプリケーション機能拡張プログラム118を実行することで、コンピュータ100が図1に示す端末10として動作する。また、CPU102が検知プロセス120を実行することで、コンピュータ100が図1に示す検知部12として動作する。また、CPU102が決定プロセス122を実行することで、コンピュータ100が図1に示す決定部13として動作する。また、CPU102が取得プロセス124を実行することで、コンピュータ100が図1に示す取得部14として動作する。また、CPU102が特定プロセス126を実行することで、コンピュータ100が図1に示す特定部15として動作する。また、CPU102が挿入プロセス128を実行することで、コンピュータ100が図1に示す挿入部16として動作する。また、CPU102が実行プロセス130を実行することで、コンピュータ100が図1に示す実行部11として動作する。
更に、記憶部106には、デバイス制御ロジックリスト情報格納領域134、対応デバイス情報格納領域136、ドライバ情報格納領域138、及びアプリケーション情報格納領域140が記憶されている。
CPU102が、デバイス制御ロジックリスト情報格納領域134に格納されたロジック対応情報を生成する情報をメモリ104に展開することで、メモリ104にデバイス制御ロジックリストDB22が生成される。また、CPU102が、対応デバイス情報格納領域136に格納された対応デバイス情報を生成する情報をメモリ104に展開することで、メモリ104に対応デバイスDB20が生成される。また、CPU102が、ドライバ情報格納領域138に格納されたドライバ32及びドライバ対応情報を生成する情報をメモリ104に展開することで、メモリ104にドライバDB24が生成される。また、CPU102が、アプリケーション情報格納領域140に格納されたアプリケーション17を生成する情報をメモリ104に展開することで、アプリケーション17がCPU102で実行可能な状態となる。
なお、コンピュータ100は、例えば半導体集積回路、より詳しくはASIC(Application Specific Integrated Circuit)等で実現することも可能である。
次に、第1実施形態の作用について説明する。第1実施形態に係る端末10は、例えば端末10の利用者が、入力装置112で指定したアプリケーション17の実行を端末10に指示し、指定したアプリケーション17がメモリ104に展開されて実行される際に、アプリケーション機能拡張処理を実行する。
図7は、第1実施形態に係る端末10で実行されるアプリケーション機能拡張処理の流れの一例を示すフローチャートである。
まず、ステップS10において、検知部12は、通信装置116を介して端末10に接続可能なデバイス40を検知する。通信装置116を介して端末10に接続可能なデバイス40を検知する手法には公知の技術を利用することができる。
例えば、通信装置116に無線LANが含まれる場合、検知部12は、端末10を無線アクセスポイントに接続し、無線アクセスポイントに接続されているデバイス40の情報をスキャンすることで、端末10に接続可能なデバイス40のデバイス名を取得する。なお、検知部12は、デバイス40の情報をスキャンする際、例えばUPnP(Universal Plug and Play)、又はDLNA(登録商標)等の公知の接続プロトコルを利用して、端末10に接続可能なデバイス名を取得できる。また、デバイス名の替わりに、SSID等、デバイス40を識別することができる識別情報を取得し、SSIDからデバイス名を特定するようにしてもよい。
また、通信装置116にブルートゥース(Bluetooth(登録商標))が含まれる場合、ブルートゥースのペアリングモードを利用して、端末10に接続可能なデバイス名を取得する。この他、検知部12は、NFC(Near Field Communication)等の近距離無線通信、又はRFID(Radio Frequency IDentifier)を利用して、端末10に接続可能なデバイス名を取得するようにしてもよい。なお、ここでは説明の便宜上、検知部12は公知のデバイス検知手法により、端末10に接続可能なデバイス40のデバイス名を1つ取得するものとして説明を進める。
ステップS20において、検知部12は、ステップS10の処理で取得したデバイス名で表されるデバイス40が、端末10で利用可能か否かを判定する。具体的には、検知部12は、メモリ104に展開された対応デバイスDB20に記憶されている対応デバイス情報にステップS10の処理で取得したデバイス名が含まれる場合、ステップS10の処理で検知したデバイスが端末10で利用可能と判定する。一方、検知部12は、対応デバイス情報にステップS10の処理で取得したデバイス名が含まれない場合、ステップS10の処理で検知したデバイス40が端末10で利用できないと判定する。
ステップS20における判定処理が否定判定の場合には、端末10で利用可能なデバイス40が存在しないため、アプリケーション機能拡張処理を終了し、端末10はデバイス40と連携することなくユーザが指定したアプリケーション17を実行する。一方、ステップS20における判定処理が肯定判定の場合には、ステップS30に移行する。この際、検知部12は、ステップS10の処理で取得したデバイス名をメモリ104の予め定めた領域に記憶する。
ステップS30において、決定部13は、メモリ104からステップS10の処理で取得されたデバイス名を取得する。そして、決定部13は、図4に示したデバイス制御ロジックリストDB22を参照して、デバイス制御ロジックリストDB22のデバイス名欄に、取得したデバイス名が含まれるか否かを判定する。
肯定判定の場合には、端末10は、取得したデバイス名に対応したドライバ32及びデバイス制御ロジック34を既に取得しているため、ステップS50に移行する。一方、否定判定の場合には、端末10には取得したデバイス名に対応したドライバ32及びデバイス制御ロジック34が存在しないため、ステップS40に移行する。
ステップS40において、取得部14は、メモリ104からステップS10の処理で取得されたデバイス名を取得する。そして、取得部14は、取得したデバイス名をクラウドサーバ30に送信し、送信したデバイス名に対応するドライバ32及びデバイス制御ロジック34を、クラウドサーバ30から取得する。
なお、第1実施形態では、ドライバ32及びデバイス制御ロジック34が、インターネット回線等の通信回線50に接続されたクラウドサーバ30に配置される例について説明する。しかし、ドライバ32及びデバイス制御ロジック34は、インターネット回線に接続されないサーバ(ローカルサーバ)、又はデバイス40自体に配置してもよい。
クラウドサーバ30にドライバ32及びデバイス制御ロジック34を配置した場合、インターネット回線に接続可能な端末10であれば、何れの端末10からもアクセス可能となる。従って、クラウドサーバ30以外の他の情報機器にドライバ32及びデバイス制御ロジック34を配置する場合に比べ、ドライバ32及びデバイス制御ロジック34の公開性が向上する。
また、ローカルサーバにドライバ32及びデバイス制御ロジック34を配置した場合、ドライバ32及びデバイス制御ロジック34へのアクセス許可範囲を、ローカルサーバが接続されるローカルネットワーク内の端末10に限定できる。従って、ローカルサーバ以外の他の情報機器にドライバ32及びデバイス制御ロジック34を配置する場合に比べ、ドライバ32及びデバイス制御ロジック34の秘匿性が向上する。
また、デバイス40にドライバ32及びデバイス制御ロジック34を配置した場合、クラウドサーバ30又はローカルサーバが不要となる。従って、デバイス40以外の他の情報機器にドライバ32及びデバイス制御ロジック34を配置する場合に比べ、ドライバ32及びデバイス制御ロジック34の取得に必要となる情報機器数を削減することができる。
取得部14は、取得したデバイス制御ロジック34を取得したデバイス名と対応づけ、デバイス制御ロジックリストDB22に格納する。更に、取得部14は、取得したドライバ32をドライバDB24に格納すると共に、取得したドライバ32をデバイス名と対応づけて、図5に示したドライバDB24のドライバ対応情報に追加する。
ステップS50において、特定部15は、メモリ104からステップS10の処理で取得されたデバイス名を取得する。そして、特定部15は、デバイス制御ロジックリストDB22を参照して、デバイス制御ロジックリストDB22のデバイス名欄に、取得したデバイス名が設定されている行データから、取得したデバイス名に対応するデバイス制御ロジック34を取得する。
ステップS60において、特定部15は、メモリ104に展開されたアプリケーション17へのロジックの挿入位置を特定する。具体的には、特定部15は、メモリ104に展開されたアプリケーション17のコードを読み込み、アプリケーション17における、取得したデバイス制御ロジック34のタグと同じコードが含まれる行の行番号を、ロジックの挿入位置として特定する。なお、アプリケーション17に、取得したデバイス制御ロジック34のタグと同じコードが複数含まれる場合、特定部15は、各々のコードが含まれる行の行番号をロジックの挿入位置として特定する。
ステップS70において、特定部15は、ステップS60の処理で特定したロジックの挿入位置が少なくとも1つ以上あるか否かを判定する。否定判定の場合、メモリ104に展開されたアプリケーション17には、ステップS50の処理で取得したデバイス制御ロジック34に含まれるロジックを挿入する位置が存在しない。従って、アプリケーション機能拡張処理を終了し、端末10はデバイス40と連携することなくユーザが指定したアプリケーション17を実行する。
一方、肯定判定の場合、ステップS80に移行する。この際、特定部15は、ステップS50の処理で取得したデバイス制御ロジック34に含まれるロジックと、ステップS60の処理で取得したアプリケーション17の行番号と、をメモリ104の予め定めた領域に記憶する。また、特定部15は、ドライバDB24のドライバ対応情報を参照して、取得したデバイス名に対応するドライバ32をドライバDB24から取得してメモリ104に展開することで、取得したドライバ32をアプリケーション17から利用可能にする。なお、メモリ104へのドライバの展開タイミングは、ステップS70を処理するタイミングに限定されないことは言うまでもない。
ステップS80において、挿入部16は、メモリ104からステップS70の判定処理で肯定判定となった場合に記憶された、ロジック及びアプリケーション17の行番号を取得する。そして、挿入部16は、メモリ104に展開されたアプリケーション17の、取得した行番号で表される行以降の位置に、取得したロジックを挿入する。なお、実行中のアプリケーション17へのロジックの挿入は、例えばメモリ104に展開されたアプリケーション17にアクセスすることができるAPI(Application Programming Interface)であるDOM(Document Object Model)を利用することで実現できる。
ステップS90において、実行部11はメモリ104から、ステップS80の処理でロジックが挿入されたアプリケーション17を再読み込みし、アプリケーション17を実行する。
以上、図7に示すアプリケーション機能拡張処理により、実行中のアプリケーション17に、端末10が検知したデバイス40のロジックがユーザの操作なしに自動的に挿入され、アプリケーション17からデバイス40の利用が可能となる。
なお、第1実施形態では一例として、デバイス40に対応したロジック及びタグをデバイス制御ロジック34に含めて一体に管理したが、ロジックとタグとの対応づけが行われさえすれば、ロジックとタグとを別々に管理するようにしてもよい。例えばデバイス制御ロジック34にロジックを含め、ロジックに対応するタグは図示しないDBで管理するようにしてもよい。
また、第1実施形態では一例として、ステップS10の処理において、端末10に接続可能なデバイス40のデバイス名が1つ取得されるものとして説明を進めた。仮にステップS10の処理において複数のデバイス名が取得される場合には、取得した複数のデバイス名に含まれるデバイス名毎にステップS20〜S90の処理を実行すればよい。
また、第1実施形態では一例として、ステップS10の処理において、端末10のユーザが指定したアプリケーション17がメモリ104に展開されて実行される際に、端末10に接続可能なデバイス40を検知するようにした。しかし、端末10の起動後から定期的に端末10に接続可能なデバイス40を検知するようにしてもよい。この場合、アプリケーション17の実行前にデバイス40の検知が終了しているため、アプリケーション17を実行してからデバイス40を検知する場合に比べて、アプリケーション17からデバイス40が利用可能になるまでに要する時間を短縮することができる。
しかし、定期的に端末10に接続可能なデバイス40を検知する場合、デバイス40の検知回数が増加するため、アプリケーション17の実行に合わせてデバイス40を検知する場合と比較して、端末10の消費電力が増加する。従って、端末10の消費電力低減の観点からは、アプリケーション17の実行に合わせてデバイス40を検知する方が好ましい。
また、第1実施形態では一例として、クラウドサーバ30から取得したデバイス制御ロジック34を端末10に保存し、検知したデバイス40に対応するデバイス制御ロジックが端末10に存在する場合は、端末10に保存したデバイス制御ロジック34を用いた。しかし、デバイス制御ロジック34を端末10に保存せずに、端末10でデバイスを検知する度にクラウドサーバ30からデバイス制御ロジック34を取得するようにしてもよい。
図8は、メモリ104に展開された、画像を表示するアプリケーション17に、端末10が検知したデバイス40のロジックが挿入される前の端末10を示す図である。なお、図8に例示するアプリケーション17は、“<img src=“URL”>”で表されるimgタグを含む。imgタグは、「src=“URL”」で指定される画像ファイルの画像を端末10の表示装置114に表示する命令である。
端末10が図8に例示するアプリケーション17を実行した場合、端末10の表示装置114に「src=“URL”」で指定される画像ファイルの画像が表示される。しかし、図8に例示するアプリケーション17には、デバイス40の一例であるプリンタと連携して、画像をプリンタに出力するロジックが含まれていない。
一方、図7に示すアプリケーション機能拡張処理を実行することで、例えば端末10が利用可能なデバイス40としてプリンタを検知する。検知したプリンタに対応するデバイス制御ロジック34のタグにimgタグが含まれる場合、端末10は画像をプリンタに出力するロジックをアプリケーション17のimgタグの直後の行に挿入する。
図9は、図7に示すアプリケーション機能拡張処理を実行し、メモリ104に展開された図8に示すアプリケーション17に、端末10が検知したデバイス40(この場合、プリンタ)のロジックが挿入された後の端末10を示す図である。
なお、図9に例示したアプリケーション17に挿入されるロジックは、例えば「画像を印刷」と表記されたボタン60を端末10の表示装置114に表示する命令を含む。端末10のユーザがボタン60を押した場合に、検知したプリンタに対応するドライバ32に含まれるphotoprint関数が呼び出され、imgタグで“URL”として指定された画像ファイルの画像がデバイス40から出力される。
また、図10は、メモリ104に展開された、音を出力するアプリケーション17に端末10が検知したデバイス40のロジックが挿入される前の端末10を示す図である。なお、図10に例示するアプリケーション17は、“<audio src=“URL”controls>”で表されるaudioタグを含む。audioタグは、「src=“URL”」で指定される音声ファイルの音声を端末10に内蔵された図示しない音声出力装置から出力する命令である。また、audioタグの“controls”は、端末10の表示装置114に音声の一時停止、及び再生位置の指定等を行うための操作アイテム62を表示する命令である。
端末10が図10に例示するアプリケーション17を実行した場合、端末10の表示装置114に操作アイテム62が表示されると共に、端末10に内蔵された図示しない音声出力装置から「src=“URL”」で指定される音声ファイルの音声が出力される。しかし、図10に例示するアプリケーション17には、デバイス40の一例である外部スピーカと連携して、音声を外部スピーカから出力するロジックが含まれていない。
一方、図7に示すアプリケーション機能拡張処理を実行することで、例えば端末10が利用可能なデバイス40として外部スピーカを検知する。検知した外部スピーカに対応するデバイス制御ロジック34のタグにaudioタグが含まれる場合、端末10は音声を外部スピーカに出力するロジックをアプリケーション17のaudioタグの直後の行に挿入する。
図11は、図7に示すアプリケーション機能拡張処理を実行し、メモリ104に展開された図10に示すアプリケーション17に、端末10が検知したデバイス40(この場合、外部スピーカ)のロジックが挿入された後の端末10を示す図である。
なお、図11に例示したアプリケーション17に挿入されるロジックは、例えば「スピーカで再生」と表記されたボタン60を端末10の表示装置114に表示する命令を含む。端末10のユーザがボタン60を押した場合に、検知した外部スピーカに対応するドライバ32に含まれるaplay関数が呼び出され、audioタグで“URL”として指定された音声ファイルの音声がデバイス40である外部スピーカから出力される。
また、図12は、メモリ104に展開された、動画を表示するアプリケーション17に端末10が検知したデバイス40のロジックが挿入される前の端末10を示す図である。なお、図12に例示するアプリケーション17は、“<video src=“URL”controls>”で表されるvideoタグを含む。videoタグは、「src=“URL”」で指定される動画ファイルに含まれる音声を端末10に内蔵された図示しない音声出力装置から出力すると共に、動画ファイルに含まれる画像を端末10の表示装置114に表示する命令である。また、videoタグの“controls”は、既に述べたように動画の一時停止、及び再生位置の指定等を行うための操作アイテム62を表示する命令である。
端末10が図12に例示するアプリケーション17を実行した場合、端末10の表示装置114には、「src=“URL”」で指定される動画ファイルの映像、及び操作アイテム62が表示される。また、端末10に内蔵された図示しない音声出力装置から「src=“URL”」で指定される動画ファイルの音声が出力される。
しかし、図12に例示するアプリケーション17には、デバイス40の一例である外部モニタと連携して、動画を外部モニタから出力するロジックが含まれていない。
一方、図7に示すアプリケーション機能拡張処理を実行することで、例えば端末10が利用可能なデバイス40として外部モニタを検知する。検知した外部モニタに対応するデバイス制御ロジック34のタグにvideoタグが含まれる場合、端末10は動画を外部モニタに出力するロジックをアプリケーション17のvideoタグの直後の行に挿入する。
図13は、図7に示すアプリケーション機能拡張処理を実行し、メモリ104に展開された図12に示すアプリケーション17に、端末10が検知したデバイス40(この場合、外部モニタ)のロジックが挿入された後の端末10を示す図である。
なお、図13に例示したアプリケーション17に挿入されるロジックは、例えば「モニタで再生」と表記されたボタン60を端末10の表示装置114に表示する命令を含む。端末10のユーザがボタン60を押した場合に、検知した外部モニタに対応するドライバ32に含まれるvplay関数が呼び出され、videoタグで“URL”として指定された動画ファイルの動画がデバイス40である外部モニタから出力される。
なお、図9、図11、及び図13に示したアプリケーション17とデバイス40との連携例では、アプリケーション17は表示装置114に、アプリケーション17とデバイス40との連携開始の指示を受け付けるボタン60を表示する。そして、アプリケーション17は、端末10のユーザによりボタン60が押下されたタイミングで、アプリケーション17とデバイス40との連携を開始する。しかし、ボタン60の表示は必須ではなく、例えばアプリケーション17は、端末10のユーザの指示を待たずに自動的にアプリケーション17とデバイス40との連携を開始してもよい。
このように、図7に示すアプリケーション機能拡張処理では、検知部12で検知した端末10で利用可能なデバイス40のロジックを自動的にアプリケーション17に挿入され、アプリケーション17がプリンタ等のデバイス40と連携できるようになる。
しかし、アプリケーション17の中には、例えば機密情報を扱うアプリケーション17もある。こうした機密情報を扱うアプリケーション17では、機密情報を外部に持ち出せないようにするため、例えばアプリケーション17から機密情報をプリンタに出力させたくないといった事情が存在することがある。
この場合、例えば図3に示したデバイス制御ロジック34の替わりに、図14に示すデバイス制御ロジック34Aを用いることで解決することができる。
デバイス制御ロジック34Aは、デバイス40に対応したロジックとタグの他、更にデバイス40に対応したアプリケーション17のアプリケーション名を対応づけるロジック対応情報を含む。デバイス制御ロジック34Aのアプリケーション名には、対応するロジックの挿入を許可するアプリケーション名が記載される。
図7のステップS60の処理において、特定部15は、まず取得したデバイス制御ロジック34Aのアプリケーション名が、実行部11で実行中のアプリケーション17のアプリケーション名と一致するか否を判定する。そして、肯定判定の場合には、特定部15は引き続き既に説明したステップS60の処理を続行する。一方、否定判定の場合には、特定部15は、ロジックの挿入位置を特定せずに図7に示すアプリケーション機能拡張処理を終了する。
以上の処理により、デバイス制御ロジック34Aのアプリケーション名欄に記載されたアプリケーション17だけに、デバイス制御ロジック34Aに対応するデバイス40のロジックが挿入される。従って、端末10は、連携可能なデバイス40をアプリケーション17毎に指定することができる。
なお、図14に示すデバイス制御ロジック34Aのアプリケーション名には、対応するロジックの挿入を禁止するアプリケーション名を記載してもよい。この場合、取得したデバイス制御ロジック34Aのアプリケーション名が実行中のアプリケーション17のアプリケーション名と一致すれば、特定部15でロジックの挿入位置を特定することなく、図7に示すアプリケーション機能拡張処理を終了すればよい。
また、アプリケーション17は、例えば通信回線50に接続された情報機器から端末10にダウンロードされ実行される。この際、アプリケーション17の取得元である情報機器のドメインと、取得したアプリケーション17に挿入されるロジックを規定したデバイス制御ロジック34を含むクラウドサーバ30のドメインと、が異なる場合がある。なお、ドメインとは、情報機器を識別するため、互いに重複しないように割り当てられた通信回線50上のアドレス情報である。
この場合、互いに異なるドメインから取得したアプリケーション17に、デバイス制御ロジック34のロジックを挿入することになる。しかし、アプリケーション17の取得元である情報機器のドメインと異なるドメインからデバイス制御ロジック34を取得する動作は、所謂クロスサイトリクエストと言われ、実行部11において禁止されることがある。なぜなら、アプリケーション17とデバイス制御ロジック34との取得元のドメインが異なるということは、アプリケーション17とデバイス制御ロジック34との管理者が異なる可能性がある。従って、アプリケーション17の管理者以外が提供するデバイス制御ロジック34には、不正サイトへの誘導等、悪意のあるロジックが記載されている可能性があるため、セキュリティの観点から、実行部11はデバイス制御ロジック34の取得を禁止する。
図15は、クロスサイトリクエストの例を示す図である。図15に示すように、端末10は、例えば“www.server1.com”のドメインで表されるWebサーバ31からアプリケーション17を取得する。そして、端末10で図7に示したアプリケーション機能拡張処理を実行し、例えば“www.server2.com”のドメインで表されるクラウドサーバ30からデバイス制御ロジック34を取得しようとする。しかし、既に説明したようにセキュリティの観点から、実行部11がデバイス制御ロジック34の取得を拒否する場合がある。
こうしたクロスサイトリクエストを回避するための仕組みとして、例えばCORS(Cross Origin Resource Sharing)が知られている。このため、例えば端末10及びクラウドサーバ30をCORSに対応させることで、クラウドサーバ30からデバイス制御ロジック34を取得することができるようになる。
図16は、CORSを適用したクロスサイトリクエストの例を示す図である。取得部14は、アプリケーション17の取得元と異なるドメインからデバイス制御ロジック34を取得する際、アプリケーション17の取得元のドメイン(www.server1.com)をoriginヘッダに付加してクラウドサーバ30に送信する。一方、クラウドサーバ30は、デバイス制御ロジック34を含む電文のAccess-Control-Allow-Originヘッダに、originヘッダに付加されたアプリケーション17の取得元のドメインを付加する。そして、クラウドサーバ30は、Access-Control-Allow-Originヘッダが設定されたデバイス制御ロジック34を含む電文を端末10に送信する。端末10では、Access-Control-Allow-Originヘッダに、originヘッダに付加したドメインと同じドメインが含まれる場合、実行部11により取得部14でのデバイス制御ロジックの取得が許可される。
以上、端末10でアプリケーション17を実行する際、併せて図7に示したアプリケーション機能拡張処理を実行することにより、デバイス40との連携が考慮されていないアプリケーション17に、デバイス40に対応するロジックを挿入することができる。従って、デバイス40との連携が考慮されていないアプリケーション17であっても、デバイス40を利用することができるようになる。
更に、アプリケーション機能拡張処理は、メモリ104に展開されたアプリケーション17にロジックを挿入するため、記憶部106に記憶されるアプリケーション17自体のコードが書き換えられることもない。
(第2実施形態)
第1実施形態に係るアプリケーション機能拡張処理は、端末10が検出したアプリケーション17と連携可能なデバイス40のロジックを、ユーザの操作なしに自動的にアプリケーション17に挿入する。従って、ユーザが予め利用したいデバイス40を決めている場合であっても、アプリケーション17と連携可能な全てのデバイス40のロジックがアプリケーション17に挿入されてしまい、アプリケーション17が不必要なデバイス40と連携する場合がある。
そこで、第2実施形態では、ユーザが利用したいデバイス40を選択し、アプリケーション17が、ユーザが選択したデバイス40と連携するようにしたアプリケーション機能拡張処理について説明する。なお、第2実施形態におけるWebシステムの構成、及び端末10を実現するコンピュータ構成は、第1実施形態におけるWebシステム1の構成(図1)、及びコンピュータ構成(図6)と同様の構成となる。
次に、第2実施形態の作用について説明する。第2実施形態に係る端末10は、第1実施形態の場合と同様のタイミングでアプリケーション機能拡張処理を実行する。
図17は、第2実施形態に係る端末10で実行されるアプリケーション機能拡張処理の流れの一例を示すフローチャートである。図17に示すフローチャートが図7に示す第1実施形態におけるアプリケーション機能拡張処理のフローチャートと異なる点は、ステップS22及びステップS24の処理が追加された点である。
ステップS22において、検知部12は、ステップS20の判定処理によって端末10で利用可能と判定したデバイス40に対応付けられたアイコンを表示装置114に表示する。
ステップS24において、検知部12は、端末10のユーザによってアイコンが選択されたか否か判定し、肯定判定になるまで、すなわちアイコンが選択されるまでステップS24の処理を繰り返す。端末10のユーザによってアイコンが選択されると、検知部12は、端末10のユーザによって選択されたアイコンに対応するデバイス40のデバイス名を、メモリ104の予め定めた領域に記憶する。そして、ステップS30に移行する。
以後、既に説明したステップS30〜ステップS90の処理を実行することで、アプリケーション17からユーザが選択したデバイス40のみを利用することができるようになる。
図18は、ステップS22の処理を実行した場合に、端末10の表示装置114に表示される画面例を示す図である。ステップS22の処理により、例えば表示装置114の下部に位置する領域64に、端末10で利用可能なデバイス40に対応するアイコンが表示される。
アイコンには、例えば対応するデバイス40の外観等を模式的に示す図案が用いられるが、対応するデバイス40を一意に表すことができる形態であれば、文字、又は図案と文字との組み合わせ等であってもよい。なお、図18の例では、例えばプリンタを示すアイコン66、及び記憶装置を示すアイコン68が表示されている。また、領域64の位置は一例であり、表示装置114の何れの位置に配置してもよいことは言うまでもない。
ユーザが領域64に表示されるアイコンの中から、例えばアイコン66を選択すれば、実行中のアプリケーション17とアイコン66で示されるプリンタとを連携させることができる。
図19は、アイコン66選択後に、端末10の表示装置114に表示される画面例を示す図である。
例えば、アイコン66で表されるプリンタに対応するデバイス制御ロジック34のロジックにボタン60を表示する命令が含まれる場合、領域64にはプリンタに画像の出力を指示するボタン60が表示される。この際、図19に示すように、ボタン60に加え、更にユーザが選択したアイコン(この場合、アイコン66)を表示してもよい。ユーザが選択したアイコンを表示することで、アイコンを表示しない場合に比べて、アプリケーション17が何れのデバイス40と連携しているかをユーザに通知することができる。
このように第2実施形態に係るアプリケーション機能拡張処理によれば、端末10で利用可能なデバイス40の一覧を示すユーザインターフェースを提供し、ユーザに利用したいデバイス40を選択させることができる。
(第3実施形態)
第1実施形態及び第2実施形態に係る図7及び図17のアプリケーション機能拡張処理では、ステップS10において通信装置116を用いた公知の技術により、端末10に接続可能なデバイス40を検知する例を説明した。一方、第3実施形態では、カメラ等の撮像装置を用いて、端末10に接続可能なデバイス40を検知する例について説明する。
図20は、第3実施形態に係るWebシステムの構成例を示す図である。図20に示すWebシステム2が図1に示したWebシステム1と異なる点は、新たに撮像装置150が追加され、検知部12が検知部12Aに置き換えられた点である。
検知部12Aは、実行部11でのアプリケーション17の実行に伴い、撮像装置150によって端末10A周辺の画像を撮像させる。検知部12Aは、撮像された画像に含まれるデバイス40を検知し、対応デバイスDB20を参照して、検知したデバイス40が端末10で利用可能か否かを検知する。そして、検知部12Aは、デバイス40が利用可能である場合、決定部13に検知したデバイス40のデバイス名を出力する。
次に、図21に、第3実施形態に係る端末10Aをコンピュータで実現する場合の構成例を示す。図21に示すコンピュータ100Aの構成例が図6に示したコンピュータ100の構成例と異なる点は、I/O110に新たに撮像装置150が接続され、検知プロセス120が検知プロセス120Aに置き換えられた点である。なお、検知プロセス120Aへの置き換えに伴い、アプリケーション機能拡張プログラム118がアプリケーション機能拡張プログラム118Aに置き換えられる。
撮像装置150は、画像を撮像し、撮像した画像を画像データに変換する機能を有する装置であり、具体的には例えばカメラが適用される。また、CPU102が検知プロセス120Aを実行することで、コンピュータ100Aが図20に示す検知部12Aとして動作する。
なお、コンピュータ100Aは、例えば半導体集積回路、より詳しくはASIC等で実現することも可能である。
次に、第3実施形態の作用について説明する。第3実施形態に係る端末10Aがアプリケーション機能拡張処理を実行するタイミングは、第1実施形態及び第2実施形態と同様である。すなわち、端末10Aは、例えば端末10Aの利用者が、入力装置112で指定したアプリケーション17の実行を端末10Aに指示し、指定したアプリケーション17がメモリ104に展開されて実行される際に、アプリケーション機能拡張処理を実行する。
なお、第3実施形態に係るアプリケーション機能拡張処理を実行するにあたり、デバイス40には予めデバイス40を特定するための識別情報、例えばデバイス名を表す文字が記載されたラベルが、外部から目視できる位置に貼り付けられているものとする。なお、ラベルには文字に代えて、デバイス名を表すバーコード等が記載されていてもよい。
図22は、第3実施形態に係る端末10Aで実行されるアプリケーション機能拡張処理の流れの一例を示すフローチャートである。図22に示すフローチャートが図7に示す第1実施形態のフローチャートと異なる点は、ステップS10及びS20の処理が、それぞれステップS11及びS21に置き換えられ、新たにステップS23、S25、及びS27の処理が追加された点である。
まず、ステップS11において、検知部12Aは、撮像装置150で撮像された端末10A周辺の画像(撮像画像)を取得する。そして、検知部12Aは、撮像画像にデバイス名を記載したラベルが含まれる場合、公知の文字認識技術を用いてラベルからデバイス名を読み取り、撮像画像に含まれるデバイス40を検知する。
ステップS21において、検知部12Aは、ステップS11の処理で検知した撮像画像に含まれるデバイス40が、端末10Aで利用可能なデバイス40であるか否かを判定する。判定の方法は既に図7のステップS20の処理で説明したように、対応デバイスDB20を参照して判定すればよい。ステップS21の判定処理が否定判定の場合にはステップS25に移行する。
ステップS25において、検知部12Aは、例えば入力装置112から撮像の終了指示が通知されたか否かを判定する。そして、肯定判定の場合は図22に示すアプリケーション機能拡張処理を終了し、否定判定の場合はステップS11に移行して、検知部12Aは撮像画像に含まれるデバイス40を検知する処理を繰り返す。
一方、ステップS21の判定処理が肯定判定の場合には、ステップS23に移行する。ステップS23において、検知部12Aは、例えば表示装置114に表示される撮像画像において、検知したデバイス40が何処に存在するかをユーザに示すため、検知したデバイス40を強調して表示する。ここでデバイス40を強調して表示する方法としては、例えばデバイス40を矢印等で指し示す、デバイス40を枠で囲む、又はデバイス40の色を変える等、の方法が考えられる。
ステップS27において、検知部12Aはユーザが撮像画像に含まれるデバイス40を選択したか否かを判定する。当該判定は、例えばユーザが表示装置114に表示されたデバイス40を指で押すことで、表示装置114の表面に設置された入力装置112の1つであるタッチパネルから通知される操作情報を、検知部12Aが取得することで判定できる。すなわち、検知部12Aがタッチパネルから操作情報を取得した場合にはステップS30に移行し、操作情報を取得できない場合にはステップS27の処理を繰り返し、検知したデバイス40が選択されるまで待機する。
以降、ステップS30〜S90の各処理を実行することで、実行中のアプリケーション17は、ユーザが撮像画像の中から選択したデバイス40を利用することができるようになる。
図23は、端末10Aで利用可能なデバイス40を検知した場合の撮像画像の表示例を示す図である。
端末10Aの表示装置114には撮像画像が表示され、図23の例では、アプリケーション機能拡張処理によって検知したデバイス40を強調して表示するため、例えばデバイス40を囲む枠70、及びデバイス40を指し示すアイコン72が表示される。
更に、例えば「プリンタAと連携」と表記した吹き出しを表示して、アプリケーション17と連携させるデバイス名を表示装置114に表示するようにしてもよい。
また、表示装置114には、実行中のアプリケーション17によって表示されるアプリケーション画像74も表示される。この場合、図23に示すように、表示装置114に撮像画像を表示している期間は、ユーザに検知したデバイス40を確認し易くさせるため、アプリケーション画像74を半透明で表示することが好ましい。
図24は、ユーザがアプリケーション17と連携させるデバイス40を選択した場合の表示例を示す図である。
ユーザがアプリケーション17と連携させるデバイス40を選択した場合、アプリケーション17のアプリケーション画像74と、連携させるデバイス40と、の対応をわかりやすく表示することが好ましい。図24の例では、例えばアプリケーション画像74と、連携させるデバイス40と、を対応付ける線分76を表示装置114に表示している。そして、ユーザが表示装置114のデバイス40が表示されている箇所を押下することで、例えば表示装置114に「印刷を実行」と表記した吹き出しを表示して、デバイス40(この場合、プリンタ)から印刷結果を出力する。
このように第3実施形態に係るアプリケーション機能拡張処理によれば、撮像画像を用いたAR(Augmented Reality)技術により、ユーザは実際のデバイス40の画像を見ながらアプリケーション17と連携させるデバイス40を選択することができる。従って、例えばデバイス名の一覧からアプリケーション17と連携させるデバイス40を選択する場合に比べて、アプリケーション17とデバイス40との連携に係る操作性を向上させることができる。
以上、各実施形態を用いて開示の技術を説明したが、開示の技術は各々の実施形態に記載の範囲には限定されない。開示の技術の要旨を逸脱しない範囲で各々の実施形態に多様な変更または改良を加えることができ、当該変更または改良を加えた形態も開示の技術の技術的範囲に含まれる。例えば、開示の技術の要旨を逸脱しない範囲で処理の順序を変更してもよい。
また、各実施形態では、アプリケーション機能拡張プログラムが記憶部に予め記憶(インストール)されている態様を説明したが、これに限定されるものではない。開示の技術に係るアプリケーション機能拡張プログラムは、コンピュータ読取可能な記録媒体160に記録されている形態で提供することも可能である。例えば、開示の技術に係るアプリケーション機能拡張プログラムは、CD−ROM、DVD−ROM、及びUSBメモリ等の可搬型記録媒体に記録されている形態で提供することも可能である。また、開示の技術に係るアプリケーション機能拡張プログラムは、フラッシュメモリ等の半導体メモリ等に記録されている形態で提供することも可能である。
また、各実施形態では、実行中のアプリケーション17に、端末10で検知したデバイスのロジックを挿入する形態について説明した。しかし、例えばメモリ104に展開された実行待ち状態のアプリケーション17に、端末10で検知したデバイスのロジックを挿入するようにしてもよい。
なお、第1実施形態のアプリケーション機能拡張処理で示した示唆は、第2実施形態、及び第3実施形態のアプリケーション機能拡張処理にも適用することができる。

Claims (7)

  1. 端末に搭載されたコンピュータで、
    前記端末に含まれるアプリケーションに対して前記端末で検出したデバイスの利用が予め許可されている場合に、前記アプリケーションから、前記デバイスに対応した予め定めたタグが含まれる位置を特定し、
    前記アプリケーションの特定した位置に、前記予め定めたタグに対応した前記デバイスを利用するためのロジックを挿入する
    アプリケーション機能拡張方法。
  2. 前記端末に含まれる表示装置に、前記デバイスに対応付けた識別画像を表示し、
    前記アプリケーションから、ユーザによって選択された識別画像で表される前記デバイスに対応した前記予め定めたタグが含まれる位置を特定する
    請求項に記載のアプリケーション機能拡張方法。
  3. 前記端末に含まれる表示装置に、前記アプリケーションと、前記デバイスと、の連携開始の指示を受け付ける画面アイテムを表示する
    請求項1又は請求項2に記載のアプリケーション機能拡張方法。
  4. 前記端末は撮像装置を備え、
    前記撮像装置で撮像した画像からデバイスを検知する
    請求項1〜請求項の何れか1項に記載のアプリケーション機能拡張方法。
  5. 前記検知したデバイスを前記端末に含まれる表示装置に強調表示する
    請求項記載のアプリケーション機能拡張方法。
  6. 端末に搭載されたコンピュータに、
    前記端末に含まれるアプリケーションに対して前記端末で検出したデバイスの利用が予め許可されている場合に、前記アプリケーションから、前記デバイスに対応した予め定めたタグが含まれる位置を特定し、
    前記アプリケーションの特定した位置に、前記予め定めたタグに対応した前記デバイスを利用するためのロジックを挿入する
    ことを含む処理を実行させるためのアプリケーション機能拡張プログラム。
  7. 端末に含まれるアプリケーションに対して検知部で検知したデバイスの利用が予め許可されている場合に、前記アプリケーションから、前記デバイスに対応した予め定めたタグが含まれる位置を特定する特定部と、
    前記特定部で特定した前記アプリケーションの位置に、前記予め定めたタグに対応した前記デバイスを利用するためのロジックを挿入する挿入部と、
    を含むアプリケーション機能拡張装置。
JP2016570433A 2015-01-22 2015-01-22 アプリケーション機能拡張方法、アプリケーション機能拡張プログラム、及びアプリケーション機能拡張装置 Expired - Fee Related JP6468293B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/051736 WO2016117096A1 (ja) 2015-01-22 2015-01-22 アプリケーション機能拡張方法、アプリケーション機能拡張プログラム、及びアプリケーション機能拡張装置

Publications (2)

Publication Number Publication Date
JPWO2016117096A1 JPWO2016117096A1 (ja) 2017-10-12
JP6468293B2 true JP6468293B2 (ja) 2019-02-13

Family

ID=56416661

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016570433A Expired - Fee Related JP6468293B2 (ja) 2015-01-22 2015-01-22 アプリケーション機能拡張方法、アプリケーション機能拡張プログラム、及びアプリケーション機能拡張装置

Country Status (4)

Country Link
US (1) US20170300320A1 (ja)
EP (1) EP3249530A4 (ja)
JP (1) JP6468293B2 (ja)
WO (1) WO2016117096A1 (ja)

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3969723A (en) * 1974-07-03 1976-07-13 General Electric Company On-line modification of computer programs
US5715463A (en) * 1992-03-31 1998-02-03 International Business Machines Corporation Installation utility for device drivers and utility programs
US5657433A (en) * 1994-05-19 1997-08-12 Hitachi, Ltd. Method for generating, managing and displaying information retrieval data on information processing system
JPH09223096A (ja) * 1996-02-20 1997-08-26 Fuji Xerox Co Ltd 管理装置及びクライアント装置
JP2000347839A (ja) * 1999-06-01 2000-12-15 Hitachi Ltd データ処理装置およびプログラム実行方法
US6473854B1 (en) * 1999-10-07 2002-10-29 Micron Technology, Inc. Method for automatically retrieving and installing device drivers across a network
US6442683B1 (en) * 1999-10-07 2002-08-27 Micron Technology, Inc. Apparatus for automatically retrieving and installing device drivers across a network
JP2001222404A (ja) * 2000-02-14 2001-08-17 Sharp Corp データ転送装置
JP2003099302A (ja) * 2001-09-21 2003-04-04 Ricoh Co Ltd 文書変換サービス方法、文書のデータ構造、記憶媒体及び情報処理装置
JP4344105B2 (ja) * 2001-09-12 2009-10-14 セイコーエプソン株式会社 ソースファイル生成装置
US6857119B1 (en) * 2001-09-25 2005-02-15 Oracle International Corporation Techniques for modifying a compiled application
US7254814B1 (en) * 2001-09-28 2007-08-07 Emc Corporation Methods and apparatus for managing plug-in services
US20030128235A1 (en) * 2002-01-10 2003-07-10 International Business Machines Corporation System for associating graphics frames with events and method therefor
WO2003104954A2 (en) * 2002-06-06 2003-12-18 Green Border Technologies Methods and systems for implementing a secure application execution environment using derived user accounts for internet content
US20040068720A1 (en) * 2002-10-02 2004-04-08 Robert Hundt Dynamic instrumentation of an executable program
ATE549852T1 (de) * 2002-12-12 2012-03-15 Seiko Epson Corp Bildverarbeitungsverfahren und bildverarbeitungssystem unter verwendung desselben
US7487500B1 (en) * 2003-10-09 2009-02-03 Nortel Networks Limited System and method for installing and configuring software for a network element in an optical communications network
JP2005208894A (ja) * 2004-01-22 2005-08-04 Canon Inc 周辺装置制御方法、制御プログラム及びその装置
US7603420B2 (en) * 2004-03-31 2009-10-13 International Business Machines Corporation Method and apparatus for automatic e-mail response interruption based on user activity
US8661420B2 (en) * 2004-08-03 2014-02-25 Oracle International Corporation System and method for runtime interface versioning
US20060070089A1 (en) * 2004-08-20 2006-03-30 Shahid Shoaib Method and apparatus for dynamic replacement of device drivers in the operating system (OS) kernel
US8065674B2 (en) * 2004-09-01 2011-11-22 Microsoft Corporation Privileged used control of device installation and/or availability
KR100673313B1 (ko) * 2004-12-30 2007-01-24 재단법인서울대학교산학협력재단 코드조각 번호 매김을 이용한 프로그램 간의 코드조각결합방법
US20070005554A1 (en) * 2005-06-30 2007-01-04 Allstream Corp. Symbolic reference for a computer addressable data object
JP4756988B2 (ja) * 2005-10-18 2011-08-24 キヤノン株式会社 プログラム、機能情報提供装置、および機能情報提供方法
JP2007329530A (ja) * 2006-06-06 2007-12-20 Casio Comput Co Ltd 映像機器、映像機器の表示処理方法、及び映像機器の処理プログラム
US8793662B2 (en) * 2008-03-25 2014-07-29 Microsoft Corporation Runtime code hooking for print driver and functionality testing
US8131768B2 (en) * 2008-05-08 2012-03-06 Nec Laboratories America, Inc. Symbolic program analysis using term rewriting and generalization
NZ591880A (en) * 2008-10-27 2013-12-20 Sato Kk Label printer api using program scripting language
US8495565B2 (en) * 2009-01-09 2013-07-23 Nec Corporation Service providing apparatus, service providing system, service providing method, and storage medium
US10055251B1 (en) * 2009-04-22 2018-08-21 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for injecting code into embedded devices
US8732728B2 (en) * 2009-07-20 2014-05-20 Samsung Electronics Co., Ltd. System and method to allow multiple plug-in applications real-time access to a camera application in a mobile device
US8595284B2 (en) * 2009-12-14 2013-11-26 Samsung Electronics Co., Ltd Web application script migration
US8352949B1 (en) * 2009-12-30 2013-01-08 Sap Ag Communication between integrated device and mobile application client on mobile personal communication device
JP5531362B2 (ja) * 2010-06-11 2014-06-25 株式会社日立製作所 Webページ供給システム、Webページ供給方法、及び制御プログラム
US20120017119A1 (en) * 2010-07-16 2012-01-19 Fujitsu Limited Solving Hybrid Constraints to Generate Test Cases for Validating a Software Module
US8613007B2 (en) * 2010-09-29 2013-12-17 Business Objects Software Limited Server independent deployment of plug-ins
JP5257437B2 (ja) * 2010-10-20 2013-08-07 コニカミノルタビジネステクノロジーズ株式会社 携帯端末及び処理装置の操作方法
US8554797B2 (en) * 2010-12-17 2013-10-08 Sap Ag System and method for modular business applications
US8943487B2 (en) * 2011-01-20 2015-01-27 Fujitsu Limited Optimizing libraries for validating C++ programs using symbolic execution
CN102682014A (zh) * 2011-03-14 2012-09-19 腾讯科技(深圳)有限公司 在浏览器上实现的开放式插件管理平台及插件管理方法
US8645924B2 (en) * 2011-06-06 2014-02-04 Fujitsu Limited Lossless path reduction for efficient symbolic execution and automatic test generation
JP5699959B2 (ja) * 2012-02-13 2015-04-15 コニカミノルタ株式会社 携帯端末及び印刷指示プログラム並びに印刷指示方法
TWI470549B (zh) * 2012-04-20 2015-01-21 Insyde Software Corp A method of using an image recognition guide to install an application, and an electronic device
JP2013235331A (ja) * 2012-05-07 2013-11-21 Canon Inc 携帯端末、情報処理装置、画像形成装置及びそれら制御方法、並びにプログラム、情報処理システム
US9087191B2 (en) * 2012-08-24 2015-07-21 Vmware, Inc. Method and system for facilitating isolated workspace for applications
KR101981052B1 (ko) * 2012-12-04 2019-05-22 삼성전자주식회사 공유기를 이용한 Wi-Fi 다이렉트 연결 방법 및 Wi-Fi 다이렉트 연결 기능을 가진 기기
US9436838B2 (en) * 2012-12-20 2016-09-06 Intel Corporation Secure local web application data manager
US9075601B1 (en) * 2013-03-07 2015-07-07 Ca, Inc. Providing a scripting interface to existing code
US9229702B1 (en) * 2013-08-28 2016-01-05 Lithium Technologies, Inc. Systems and methods for application plugin deployment for websites
US9703551B2 (en) * 2014-04-28 2017-07-11 Ca, Inc. Modifying mobile application binaries to call external libraries
US9811393B2 (en) * 2014-05-29 2017-11-07 Apple Inc. Consistent extension points to allow an extension to extend functionality of an application to another application
KR102086731B1 (ko) * 2014-06-25 2020-04-14 에스케이플래닛 주식회사 클라우드 스트리밍 서비스 제공 방법, 이를 위한 장치 및 시스템, 그리고 이를 위한 클라우드 스트리밍용 스크립트 코드를 기록한 컴퓨터 판독 가능한 기록매체
US10007534B2 (en) * 2015-08-11 2018-06-26 Vmware, Inc. Methods and apparatus to manage asset capabilities in a computing environment using a common agent framework

Also Published As

Publication number Publication date
WO2016117096A1 (ja) 2016-07-28
EP3249530A4 (en) 2018-01-24
EP3249530A1 (en) 2017-11-29
JPWO2016117096A1 (ja) 2017-10-12
US20170300320A1 (en) 2017-10-19

Similar Documents

Publication Publication Date Title
JP5795582B2 (ja) 統合ユーザインターフェース生成方法及びそれを行う装置
KR102168413B1 (ko) 통신 장치, 통신 장치를 제어하는 제어 방법, 및 컴퓨터 제어 프로그램
JP6200136B2 (ja) 画像形成装置、検索システム、画像形成装置の制御方法及びプログラム
JP2006133520A (ja) 画像形成装置、画像形成装置における表示画面カスタマイズ方法、表示画面カスタマイズプログラム
US10282143B2 (en) Information processing apparatus and control method of information processing apparatus
JP6452538B2 (ja) 情報処理装置及びプログラム
US20160248843A1 (en) Data upload method using shortcut
US20150201091A1 (en) Information processing system that uses short-range wireless communication and method of controlling the same, mobile information terminal, and storage medium
JP2016224644A (ja) 携帯端末及び出力プログラム
JP7224821B2 (ja) デバイス診断ウェブシステムおよびデバイス診断方法
JP2008147961A (ja) 画像形成装置、画面管理方法及び画面管理プログラム
JP6763209B2 (ja) プログラム及び携帯端末
WO2014136429A1 (en) Information processing apparatus and method for the same
JP6547531B2 (ja) コンテンツ指定プログラム及び携帯端末
JP6880802B2 (ja) プログラム及び携帯端末
JP2007280028A (ja) 情報処理装置及びショートカットキーの設定・変更方法
JP5685935B2 (ja) 制御装置及びプログラム
JP2013210867A (ja) 表示制御装置、表示制御方法、プログラムおよび表示機器
JP6468293B2 (ja) アプリケーション機能拡張方法、アプリケーション機能拡張プログラム、及びアプリケーション機能拡張装置
JP6406060B2 (ja) 画像形成装置、サーバ装置、携帯端末、及び通信システム
JP6544162B2 (ja) 出力プログラム及び携帯端末
JP6107834B2 (ja) コンテンツ伝送システム、コンテンツ伝送装置及びコンテンツ伝送方法
JP6756779B2 (ja) 情報処理システム、情報処理システムの制御方法、及び、情報処理システムの制御プログラム
JP2017167764A (ja) 情報提供システム、情報提供装置、端末装置およびプログラム
JP2016134869A (ja) 画像処理システム、画像処理装置、端末装置及びプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170706

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170706

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180703

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181231

R150 Certificate of patent or registration of utility model

Ref document number: 6468293

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees