IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ キヤノン株式会社の特許一覧

特許7570193情報処理装置、アプリケーションの起動方法及びプログラム
<>
  • 特許-情報処理装置、アプリケーションの起動方法及びプログラム 図1
  • 特許-情報処理装置、アプリケーションの起動方法及びプログラム 図2
  • 特許-情報処理装置、アプリケーションの起動方法及びプログラム 図3
  • 特許-情報処理装置、アプリケーションの起動方法及びプログラム 図4
  • 特許-情報処理装置、アプリケーションの起動方法及びプログラム 図5
  • 特許-情報処理装置、アプリケーションの起動方法及びプログラム 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-10
(45)【発行日】2024-10-21
(54)【発明の名称】情報処理装置、アプリケーションの起動方法及びプログラム
(51)【国際特許分類】
   G06F 9/445 20180101AFI20241011BHJP
【FI】
G06F9/445 120
【請求項の数】 11
(21)【出願番号】P 2020128510
(22)【出願日】2020-07-29
(65)【公開番号】P2022025599
(43)【公開日】2022-02-10
【審査請求日】2023-07-14
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】和田 啓佑
【審査官】西間木 祐紀
(56)【参考文献】
【文献】特表2015-501496(JP,A)
【文献】特表2019-519036(JP,A)
【文献】米国特許出願公開第2019/0213231(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/445
(57)【特許請求の範囲】
【請求項1】
第1アプリケーションと、ローカルサーバを含む第2アプリケーションとがインストールされた情報処理装置であって
前記情報処理装置にインストールされた前記第2アプリケーションが、前記情報処理装置にインストールされた前記第1アプリケーションに固有の識別情報を取得し、
前記情報処理装置にインストールされた前記第2アプリケーションの前記ローカルサーバが、前記情報処理装置のブラウザから、ディープリンクに基づく前記第1アプリケーションの起動の要求を受け付け
前記情報処理装置にインストールされた前記第2アプリケーションの前記ローカルサーバが、前記起動の要求を受け付けた場合に、前記第1アプリケーションを起動するか否かを前記取得された前記識別情報を用いて判別し、
前記情報処理装置にインストールされた前記第2アプリケーションの前記ローカルサーバが、前記第1アプリケーションを起動すると判別した場合に、前記第1アプリケーションを起動する
ことを特徴とする情報処理装置。
【請求項2】
前記情報処理装置の前記ブラウザは、サーバから取得したウェブコンテンツに含まれるプログラムを実行することにより、
前記情報処理装置にインストールされた前記第2アプリケーションの前記ローカルサーバと通信可能であるか否かを判別し、
さらに、前記ローカルサーバと通信可能であると判別した場合に、前記第2アプリケーションの前記ローカルサーバに対して前記第1アプリケーションの起動を要求する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記情報処理装置の前記ブラウザは、さらに、前記ローカルサーバと通信可能でないと判別した場合に、前記第1アプリケーションと前記第2アプリケーションとをインストールするように誘導する、ことを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記第1アプリケーションのインストールと、前記第2アプリケーションのインストールとが同時に行われることを特徴とする請求項1乃至のいずれか1項に記載の情報処理装置。
【請求項5】
前記第2アプリケーションは常駐アプリケーションであることを特徴とする請求項1乃至のいずれか1項に記載の情報処理装置。
【請求項6】
前記ローカルサーバは、前記情報処理装置の外部からアクセスできないことを特徴とする請求項1乃至のいずれか1項に記載の情報処理装置。
【請求項7】
前記第1アプリケーションに固有の識別情報は、前記第1アプリケーションのハッシュ値を含むことを特徴とする請求項1乃至のいずれか1項に記載の情報処理装置。
【請求項8】
前記情報処理装置にインストールされた前記第2アプリケーションの前記ローカルサーバは、前記起動の要求を受け付けた場合に、前記第2アプリケーションを前記情報処理装置にインストールした際に取得して記憶しておいた前記第1アプリケーションに固有の 前記識別情報と、前記起動の要求を受け付けた後に取得した前記第1アプリケーションの前記識別情報とを比較することにより、前記第1アプリケーションを起動するか否かを判別することを特徴とする請求項1乃至のいずれか1項に記載の情報処理装置。
【請求項9】
第1アプリケーションと、ローカルサーバを含む第2アプリケーションとがインストールされた情報処理装置が実行する起動方法であって、
前記情報処理装置にインストールされた前記第1アプリケーションに固有の識別情報を取得する取得工程と、
前記情報処理装置にインストールされた前記第2アプリケーションの前記ローカルサーバが、前記情報処理装置のブラウザから、ディープリンクに基づく前記第1アプリケーションの起動の要求を受け付ける受け付け工程と、
前記情報処理装置にインストールされた前記第2アプリケーションの前記ローカルサーバが、前記起動の要求を受け付けた場合に、前記第1アプリケーションを起動するか否かを前記取得工程で取得された前記識別情報を用いて判別する第1判別工程と、
前記情報処理装置にインストールされた前記第2アプリケーションの前記ローカルサーバが、前記第1アプリケーションを起動すると判別した場合に、前記第1アプリケーションを起動する起動工程と、を備える、
ことを特徴とする起動方法。
【請求項10】
前記情報処理装置のコンピュータに、請求項に記載の起動方法の各工程を実行させるための前記第2アプリケーションのプログラム。
【請求項11】
情報処理装置のコンピュータを、ローカルサーバとして機能させるためのプログラムであって、
前記情報処理装置にインストールされた第1アプリケーションに固有の識別情報を取得する取得手段、
前記ローカルサーバとして機能しているコンピュータが、前記情報処理装置のブラウザから、ディープリンクに基づく前記第1アプリケーションの起動の要求を受け付けた場合に、前記第1アプリケーションを起動するか否かを前記取得手段により取得された前記識別情報を用いて判別する判別手段、
前記判別手段で前記第1アプリケーションを起動すると判別した場合に、前記ローカルサーバとして機能しているコンピュータが、前記第1アプリケーションを起動する起動手段、として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、アプリケーションの起動方法及びプログラムに関する。
【背景技術】
【0002】
パーソナルコンピュータ(PC)やスマートフォン等の情報処理装置において、ブラウザから特定のアプリケーションへの誘導が行われることがある。例えば、デジタルマーケティングにおいて、事業者等は、ブラウザから自社が提供するアプリケーションにユーザを誘導することによりユーザの囲い込みを行うことがある。ブラウザからアプリケーションにユーザを誘導することで、プッシュ通知など独自のマーケティング施策を柔軟に行うことができるというメリットがある。また例えば、写真の編集やフォトブックの作成等の複雑な操作を行う場合には、ブラウザ上で動作するウェブアプリケーションでは操作が困難であるため、ブラウザから専用のアプリケーションへの誘導が行われることがある。
【0003】
ブラウザからアプリケーションに誘導するための技術として、ディープリンクが挙げられる。ディープリンクは、ブラウザやメールソフトの表示画面等からアプリケーションの特定画面に直接遷移させることができるリンクである。メールやウェブ広告などにディープリンクを適用することで、ワンクリックで該当のアプリケーションを起動して特定画面にユーザを誘導することができる(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【文献】特許第6219296号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
近年、様々なアプリケーションが使用可能となっており、適切なアプリケーションの起動方法が求められていた。
【0006】
本発明は、OSの機能を用いることなく、起動対象アプリケーションを判別し、ディープリンクを行う技術を提供する。
【課題を解決するための手段】
【0007】
本発明の一側面によれば、第1アプリケーションと、ローカルサーバを含む第2アプリケーションとがインストールされた情報処理装置であって前記情報処理装置にインストールされた前記第2アプリケーションが、前記情報処理装置にインストールされた前記第1アプリケーションに固有の識別情報を取得し、前記情報処理装置にインストールされた前記第2アプリケーションの前記ローカルサーバが、前記情報処理装置のブラウザから、ディープリンクに基づく前記第1アプリケーションの起動の要求を受け付け、前記情報処理装置にインストールされた前記第2アプリケーションの前記ローカルサーバが、前記起動の要求を受け付けた場合に、前記第1アプリケーションを起動するか否かを前記取得された前記識別情報を用いて判別し、前記情報処理装置にインストールされた前記第2アプリケーションの前記ローカルサーバが、前記第1アプリケーションを起動すると判別した場合に、前記第1アプリケーションを起動することを特徴とする情報処理装置が提供される。
【発明の効果】
【0008】
本発明によればOSの機能を用いることなく、起動対象アプリケーションを判別し、ディープリンクを行うことができる。
【図面の簡単な説明】
【0009】
図1】一実施形態に係るシステムのハードウェア構成例を示す図。
図2】クライアントのソフトウェアの構成例を説明する図。
図3】システムの動作を説明するシーケンス図。
図4】システムの動作を説明するシーケンス図。
図5】クライアントの処理例を示すフローチャート。
図6】アプリ起動リンクの一例を示す図。
【発明を実施するための形態】
【0010】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0011】
<第1実施形態>
<ハードウェア構成>
図1は、一実施形態に係るシステムSYのハードウェア構成例を示す図である。システムSYは、大別してサーバ1とクライアント2とを含んで構成される。サーバ1とクライアント2とは、インターネット3を経由して互いに通信する。
【0012】
サーバ1は、情報処理装置であり、CPU11、RAM12、ROM13、ハードディスクドライブ(HDD)14、ネットワークインタフェース(I/F)15を有し、これらはシステムバス16を介して互いに通信可能に接続されている。CPU11は、サーバ1の動作を統括的に制御する。例えば、CPU11は、RAM12やROM13、HDD14等に記憶されたプログラムを読み出して実行することにより、サーバ1の各種機能を実現する。RAM12は、揮発性の記憶領域であり、例えば、CPU11のワークメモリとして用いられる。ROM13は、不揮発性の記憶領域であり、例えば、オペレーティングシステムプログラム(OS)等の各種制御プログラムや、サーバ1の機能を実行する上で必要な各種のデータ等を記憶する。HDD14は、不揮発性の記憶領域であり、例えば、各種アプリケーションプログラムや、データ、ユーザ情報、機器情報等を記憶する。ネットワークI/F15は、システムバス16に接続し、ネットワークを介して情報の入出力を行う。本実施形態では、ネットワークI/F15は、インターネット3を介して外部装置と通信を行う。また、ネットワークI/F15は、LAN(Local Area Network)(不図示)等のネットワークに接続し、外部装置と通信を行ってもよい。なお、本実施形態では1つのCPU11が示されているが、複数のCPUが設けられ、これらが適宜連携をしながら処理を行うものであってもよい。
【0013】
本実施形態の場合、サーバ1はウェブサーバである。サーバ1は静的なウェブサーバであり、クライアント2の要求に対し、ウェブコンテンツを返答する。ウェブコンテンツの例として、HTMLやXML、CSS、JAVASCRIPT(登録商標)、画像等を含むことができる。
【0014】
クライアント2は、PCやスマートフォン等に代表される情報処理端末である。クライアント2は、CPU21、RAM22、ROM23、ハードディスクドライブ(HDD)24、ネットワークI/F25、表示部26、入力部27を有し、これらはシステムバス28を介して互いに通信可能に接続されている。CPU21、RAM22、ROM23、ハードディスクドライブ(HDD)24、ネットワークI/F25は、それぞれCPU11、RAM12、ROM13、ハードディスクドライブ(HDD)14、ネットワークI/F15と同様の構成を有し得る。表示部26は、例えば液晶ディスプレイであり、各種のユーザーインタフェース画面を表示する。入力部27は、ユーザによる入力操作を受け付ける。入力部27は、例えばマウス等のポインティングデバイス、キーボード、タッチパネル等であってもよい。
【0015】
<ソフトウェア構成>
図2は、クライアント2のソフトウェアの構成例を説明する図である。図2は、CPU21がROM23やHDD24等に記憶されているプログラムを読み出して実行することにより実現されるソフトウェアの機能ブロックを示している。本実施形態では、クライアント2は、オペレーティングシステム(以下OS)201、ブラウザ202、常駐アプリケーション203、起動対象アプリケーション204及びインストール処理部205を含む。
【0016】
OS201は、クライアント2全体の動作を制御するためのソフトウェアである。OS201の例としては、例えば、WINDOWS(登録商標)やMACOS(登録商標)といったPCのオペレーションを司るソフトウェア等が挙げられる。
【0017】
ブラウザ(Webブラウザ)202は、ネットワーク経由で接続された外部システムが提供するウェブサービスを利用する為のアプリケーションである。本実施形態では、ブラウザ202は、HTTP(Hypertext Transfer Protocol)通信を用いてサーバ1と通信し、サーバ1からウェブコンテンツを取得する。例えば、ブラウザ202は、サーバ1に対して、HTTPのプロトコルに従ってリクエストを送信するとともに、そのリクエストに対するレスポンスを受信する。そして、ブラウザ202は、受信したレスポンスを解析して、操作画面を表示部26に表示したり、受信したレスポンスに含まれるJavaScript(登録商標)(スクリプト)を処理したりする。スクリプトには、処理を実行するための複数の命令が含まれ得る。
【0018】
常駐アプリケーション203(以下、アプリケーション203)は、後述する起動対象アプリケーション204(以下、アプリケーション204)を判別し、起動するためのアプリケーションである。なお、常駐アプリケーション203は、クライアント2の電源がONされてOS201が起動されることに基づいて自動的に起動されるアプリケーションである。一実施形態において、アプリケーション203は、アプリケーション204と同時にインストールされる。また、アプリケーション203は、アプリケーション204が起動していないときでも起動しているアプリケーションである。アプリケーション203は、ローカルサーバ2031と、ローカルサーバ2031を起動するローカルサーバ起動部2032とを含む。
【0019】
ローカルサーバ2031は、クライアント2内のブラウザ202等からアクセス可能なローカルウェブサーバであり、判別モジュール2311と起動モジュール2312とを含む。ローカルサーバ2031は、1つまたは複数のエフェメラルポートを持ち、ブラウザ202からアクセスされる。例えば、ブラウザ202は、ローカルサーバ2031にウェブコンテンツを要求する。ある側面から見れば、アプリケーション203は、情報処理装置であるクライアント2上にローカルサーバ2031を構築する。
【0020】
判別モジュール2311は、アプリケーション204の起動の可否を判別する。具体的には、判別モジュール2311は、アプリケーション204を識別する識別情報に基づいて、アプリケーション204を起動してもよいアプリケーションであるか否かを判別する。例えば、判別モジュール2311は、アプリケーション204が攻撃者等によって改ざんされたり、不正にインストールされたりしたアプリケーションで無いことが確認できた場合に、アプリケーション204を起動してもよいアプリケーションであると判別する。
【0021】
判別モジュール2311が判別の際に用いる識別情報には、例えば、アプリケーション204のハッシュ値が含まれ得る。一実施形態において、アプリケーション203のダウンロードファイルにアプリケーション204のハッシュ値が含まれる。アプリケーション204と同時にアプリケーション203がクライアント2にインストールされると、判別モジュール2311は、ダウンロードファイルに含まれるアプリケーション204のハッシュ値をROM23等のメモリに記憶する。
【0022】
また、判別モジュール2311が判別の際に用いる識別情報には、アプリケーション204のバージョンなどの情報が含まれていてもよい。例えば、判別モジュール2311は、アプリケーション204が不正なものではないことを確認した場合であっても、アプリケーション204が最新バージョンでないときは、アプリケーション204を起動しないと判別してもよい。その場合、ブラウザ202は、判別モジュール2311の判別結果に基づいて、最新バージョンのアプリケーションのダウンロードページを表示してもよい。
【0023】
起動モジュール2312は、アプリケーション204を起動するためのモジュールである。例えば、起動モジュール2312は、判別モジュール2311がアプリケーション204を起動してもよいと判別したことに基づいて、アプリケーション204を起動させる。
【0024】
アプリケーション204は、アプリケーション203の起動モジュール2312により起動される対象となるアプリケーションである。アプリケーション204は、例えば、事業者等が提供するサービスを実現するためのアプリケーションであり、ディープリンクによって起動される。一実施形態において、アプリケーション204は、写真の編集やフォトブックの作成等を行うためのアプリケーションであってもよい。また、アプリケーション204は、事業者等が販売する製品を購入するためのアプリケーションであってもよい。なお、アプリケーション204のダウンロードファイルにアプリケーション204のハッシュ値の計算に使用される元データが含まれる。この元データは、例えば、アプリケーション204をビルドすることで生成されるデータである。
【0025】
インストール処理部205は、前述したアプリケーション203及びアプリケーション204のインストールの処理を実行する。
【0026】
<動作例>
デスクトップアプリケーションにおけるディープリンクの提供方法として、インターネット上でウェブページなどを一意に指定するのに用いられるURL(UNIFORM RESOURCE LOCATOR)とアプリケーションとを関連付けるものがある。具体例として、URLの先頭部分であるURLスキームを独自のものでカスタムして用いるものがある(このようなURLスキームをカスタムURLスキームと呼ぶ)。例えば、地図アプリで利用される“MAP://”等のカスタムURLスキームをオペレーティングシステムやブラウザに登録し、アプリケーションのハンドラとして指定する。これにより、登録したURLスキーム先にアクセスを試みたときに、該当するアプリケーションのハンドラが立ち上がって、アプリケーションが起動する。また、他の具体例では、オペレーティングシステム(OS)がアプリケーションのファイルに記載されたURLに関連付けをされたホストの検証を行い、検証が成功した場合にファイルに記載されているURLをハンドラとして確立する。そして、OSは、アクセスが試みられたURLがハンドラとしてOSに保存されたものである場合には、アプリケーションを起動して特定の画面を表示させる。しかしながら、カスタムURLを用いた方法では、攻撃者等によって同じカスタムURLスキームを持つアプリケーションがインストールされた場合に、攻撃者によってインストールされたアプリケーションをユーザが起動してしまうことがある。すなわち、起動させようとしているアプリケーションが不正にインストールされたものでないか等の判別を行うことができない。また、OSがアプリケーションとURLとを関連付けて管理する方法は、その仕組みが用意されていないOSでは実行することができない。そこで、本実施形態では、以下の動作に基づいて起動対象のアプリケーション204を判別し、起動する。
【0027】
図3は、アプリケーション203及びアプリケーション204がクライアント2にインストールされる際のシステムSYの動作を説明するシーケンス図である。
【0028】
S301で、インストール処理部205は、アプリケーション203及びアプリケーション204のインストールの指示をユーザから受け付ける。例えば、インストール処理部205は、ブラウザ202が表示するウェブページ上のインストール実行のリンクをユーザが入力部27により選択することで、ユーザからの指示を受け付ける。
【0029】
S302で、インストール処理部205は、サーバ1からアプリケーション203及びアプリケーション204のインストールファイルをダウンロードする。例えば、インストール処理部205は、S301でユーザが選択したブラウザ202上のリンクのURLに基づいて、ウェブ上のサーバに対してアプリケーションのインストールファイルを要求する。なお、本実施形態では、インストール処理部205はサーバ1からファイルをダウンロードしているが、インストール処理部205はサーバ1以外のネットワーク上のサーバからファイルをダウンロードしてもよい。
【0030】
S303で、インストール処理部205は、アプリケーション203及びアプリケーション204をインストールする。
【0031】
S304で、常駐アプリケーション203のローカルサーバ起動部2032は、ローカルサーバ2031を起動する。S305で、常駐アプリケーション203のローカルサーバ2031は、起動対象アプリケーション204のハッシュ値をROM23等のメモリから取得する。
【0032】
なお、本実施形態ではアプリケーション203とアプリケーション204とが同時にインストールされるが、これらは同時にインストールされなくてもよい。例えば、アプリケーション204がフォトブック作成用のアプリケーションの場合、アプリケーション203はプリンタ等の製品のドライバをクライアント2がインストールされる際に一緒にインストールされてもよい。そして、アプリケーション204は、プリンタ等の製品を販売する事業者等のウェブサイトからダウンロードされ、インストールされてもよい。
【0033】
また、アプリケーション203とアプリケーション204のインストールのタイミングが異なる場合、以下の構成を採用可能である。すなわち、アプリケーション203がクライアント2にインストールされてローカルサーバ2031が起動すると、ローカルサーバ2031は、起動対象のアプリケーションがクライアント2にインストール済みであるか否かを確認してもよい。そして、ローカルサーバ2031は、起動対象のアプリケーションがクライアント2にインストール済みである場合は、起動対象のアプリケーションからハッシュ値を取得してもよい。また、ローカルサーバ2031は、起動中に新たなアプリケーションがインストールされた場合にそのアプリケーションがローカルサーバ2031による起動対象であるか否かを確認し、起動対象であればそのアプリケーションのハッシュ値を取得してもよい。
【0034】
なお、アプリケーション203とアプリケーション204とが同時にインストールされる場合、これらは同じアプリケーションプロセスであってもよいし、異なるアプリケーションプロセスであってもよい。
【0035】
図4は、アプリケーション204が起動するときのシステムSYの動作を説明するシーケンス図である。なお、図4のシーケンス図に示す動作は、図3の動作によりアプリケーション203及びアプリケーション204がクライアント2にインストールされた状態での操舵を示している。
【0036】
S400で、ユーザがアプリケーション204の起動要求を行う。例えば、ユーザは、アプリ起動リンクの選択を入力部27により行う。ここで、アプリ起動リンクは、アプリケーション204を起動するためのディープリンクであり、例えばメールやウェブサイトに記載されるハイパーリンクである。図6は、その一例を示す図であり、アプリケーション204を提供している事業者等が送信したキャンペーン情報ついてのメールが表示部26に表示されている場合の画面の構成例を示している。この例では、キャンペーンメールの本文中に「パソコン版のアプリケーションでフォトブックを作る」というアプリ起動リンク601が記載されている。すなわち、ユーザがこのアプリ起動リンク601をマウスでクリックするなどした場合に、図4のシーケンス図で示される動作が開始される。
【0037】
S401で、ブラウザ202は、サーバ1に対してウェブコンテンツを要求する。ウェブコンテンツは、例えば、HTML、JAVASCRIPT(登録商標)、CSSなどのリソースから構成される。ブラウザ202は、このリソースを読み込むことにより、後述するOSの判別処理などを実行する。
【0038】
S402で、サーバ1は、ブラウザ202からのウェブコンテンツの要求に対して応答する。すなわち、サーバ1は、ブラウザ202の要求に対応するコンテンツをブラウザ202に対して送信する。ブラウザ202は、サーバ1から送信されたウェブコンテンツを受信する。
【0039】
S403は、ブラウザ202は、サーバ1から受信したウェブコンテンツに組み込まれているOS判別モジュールによってOSを判別する。一例として、OS判別モジュールは、ユーザーエージェントと呼ばれるプログラムをJAVASCRIPT(登録商標)から読み込むことによりOSの判別を行う。この判別は、例えば、アプリケーション203をインストール可能なOSであるか、あるいは以降の処理を実行可能なOSであるか等に基づいて行われる。
【0040】
S404で、ブラウザ202は、ローカルサーバ2031に対してアプリケーション204を起動するためのウェブソースの要求を実行する。本実施形態では、ブラウザ202は、CORS(CROSS-ORIGIN RESOURCE SHARING)を用いて、サーバ1とは異なるオリジンであるローカルサーバ2031にリソースのアクセスを要求する。ここで、CORS(オリジン間リソース共有)は、あるオリジンで動作しているブラウザに対し、異なるオリジンにある選択されたリソースへのアクセス権を与えるようにブラウザに指示するための仕組みである。一般に、ブラウザには同一オリジンポリシーが適用され、あるオリジンから読み込まれたウェブコンテンツから他のオリジンのウェブコンテンツにアクセスできないように制限される。しかし、CORSを用いることで、ブラウザは異なるオリジンへのアクセスが可能となる。本実施形態では、ブラウザ202は、例えばXMLHttpRequestを使用してローカルサーバ2031に対してリソースのアクセスを要求する。
【0041】
ここで、ブラウザ202とローカルサーバ2031との間の通信は、所定のポートを使用して行われる。例えば、クライアント2にアプリケーション203がインストールされると、前述したようにローカルサーバ起動部2032がローカルサーバ2031を起動する。ローカルサーバ2031が起動すると、ローカルサーバ2031はある特定のポート(仮にポート番号Aとする)を開いて外部からの接続を待つ待ち受け状態となる。
【0042】
なお、他のアプリケーションやサービスがポート番号Aで待ち受け状態になっている場合には、ローカルサーバ2031はそのポートで待ち受け状態となることができない。そのため、ポート番号Aが既に使われている場合には、ローカルサーバ2031は他のポートを開いて待ち受け状態にする。このようにローカルサーバ2031が複数のポートを開いて待ち受け状態にする仕組みを入れることで、他のアプリケーションやサービスがそのポートを使用している場合でも、空いているポートを見つけて待ち受け状態にすることが可能となる。
【0043】
また、本実施形態では、S402でブラウザ202がサーバ1から受信する情報にもローカルサーバ2031が待ち受けている可能性があるポートの情報が含まれている。そのため、ブラウザ202は、それらのポートの中で正常なレスポンスが返るポートを探してローカルサーバ2031と通信を行う。ここで、正常なレスポンスは、ローカルサーバ2031から返却される成功を示すレスポンスであり得る。なお、本実施形態では複数のポートから空いているポートを探して通信をする例を説明したが、これ限定されるものではなく1つのポートだけで通信を実施してもよい。しかしながら、1つのポートだけで通信を実施する場合は、そのポートが他のアプリケーションやサービスで既に使われていたときは、ブラウザ202とローカルサーバ2031との通信は実施することができない。
【0044】
S405で、ローカルサーバ2031の判別モジュール2311は、アプリケーション204を起動するか否かを判別する。例えば、判別モジュール2311は、起動させようとしているアプリケーション204から、ハッシュ値の計算に使用される元データを取得する。そして、判別モジュール2311はこの元データを特定のアルゴリズムで計算することでハッシュ値を取得する。これにより、起動させようとしているアプリケーション204が攻撃者等によって不正にインストールされたもの等でなければ、S305でメモリ等に記憶されたハッシュ値と今回計算したハッシュ値が一致する。一方、攻撃者等によって例えばアプリケーション204が変更された場合、この変更されたアプリケーション204がビルドされることで生成されるデータを使ってハッシュ値が計算される。この場合、計算に使用されるデータは、上述した元データとは異なるデータとなっているため、S405で計算されるハッシュ値は、S305で保存されたハッシュ値と一致しない。
【0045】
判別モジュール2311は、計算したハッシュ値と、メモリ等に記憶しているハッシュ値とを比較し、一致していればアプリケーション204を起動してもよいと判別する。一方、計算したハッシュ値とメモリ等に記憶しているハッシュ値とが一致しない場合、起動させようとしたアプリケーションが攻撃者等によって不正にインストールされたり改ざんされたりしたものである可能性がある。そのため、判別モジュール2311は、計算したハッシュ値とメモリ等に記憶しているハッシュ値とが一致しない場合は、アプリケーション204を起動しないと判別する。
【0046】
なお、本実施形態では、アプリケーション204のハッシュ値によりアプリを起動するか否かを判別しているが、アプリケーション204に付与された固有のID等によって判別を行ってもよい。この場合、判別モジュール2311は、予めメモリ等に記憶しているアプリケーション204のIDと、アプリケーション204を起動させようとする際に取得したアプリケーション204のIDとを比較することにより判別を行ってもよい。
【0047】
S406で、ローカルサーバ2031の判別モジュール2311は、S405でアプリケーション204を起動すると判別した場合にアプリケーション204を起動する。
【0048】
<クライアントの処理例>
図5は、クライアント2の処理例を示すフローチャートである。本フローチャートは、CPU21がROM23やHDD24等に記憶されているプログラムを読み出して実行することにより実現されるソフトウェアの各機能ブロック(図2参照)による処理を示している。
【0049】
S500で、OS201は、ユーザからのアプリケーション204の起動要求を受け付ける。具体的には、OS201は、ユーザによるアプリ起動リンクの選択を、入力部27を介して受け付ける。S501で、OS201は、ブラウザ202を起動する。
【0050】
S502で、ブラウザ202は、サーバ1からウェブコンテンツを取得する。このステップは、図4のS401、S402に対応する。図4で説明したように、ブラウザ202からの要求にサーバ1が応答する形で、ブラウザ202はウェブコンテンツ(HTML、JAVASCRIPT(登録商標)等)を受信する。なお、本実施形態では、ブラウザ202が受信するウェブコンテンツには以下のプログラムが含まれ得る。ブラウザ202は、以下のプログラムに従った処理を行う。
【0051】
(1)アプリケーション203をインストール可能なOSであるか否かを判断するプログラム
(2)ブラウザ202がローカルサーバ2031にアクセスするためのプログラム
(3)ブラウザ202がローカルサーバ2031から応答があるか否かを判定するプログラム
(4)ローカルサーバ2031から応答がない場合、ブラウザ202に対しアプリ起動リンクに記載されているURLにアクセスするためのプログラム。
【0052】
(5)アプリケーション203がインストールできないOSであると判断された場合にブラウザ202がアプリ起動リンクに記載されているURLにアクセスするためのプログラム
S503で、ブラウザ202は、クライアント2のOS201が、アプリケーション203をインストール可能なOSであるか否かを判別するこのステップは、図4のS403に対応する。例えば、ブラウザ202は、S502で取得した上記(1)のプログラムに従ってこの判別を行う。ブラウザ202は、OS201がアプリケーション203をインストール可能であると判別した場合はS503に進み、OS201がアプリケーション203をインストール不可であると判別した場合はS508に進む。本実施形では、常駐アプリケーション203を使って起動対象アプリケーションが起動しても良いアプリケーションか否かを判断する。そのため、常駐アプリケーション203がインストールできる環境が必要である。そのたえ、S503の処理を行っている。
【0053】
S504で、ブラウザ202は、ブラウザ202は、ローカルサーバ2031と通信可能であるか否かを判断し、通信可能であればS505に進み、通信できなければS507に進む。具体的には、ブラウザ202は、S502で取得した上記(2)(3)のプログラムに従って、ローカルサーバ2031からの応答があるか否かを確認する。例えば、図4で示した場合のように、アプリケーション203及びアプリケーション204がインストール済みであり、ローカルサーバ2031が起動していれば、ブラウザ202はローカルサーバ2031と通信可能である。一方で、アプリケーション203及びアプリケーション204がインストールされていない状況等では、ブラウザ202はローカルサーバ2031と通信することができない。
【0054】
S505で、ローカルサーバ2031は、ブラウザ202からウェブリソースの要求を受け付ける。この処理は、図4のS404に対応する。すなわち、ローカルサーバ2031は、ブラウザ202からのアプリケーション204の起動に関する要求を受け付けたことに基づいて、後続の処理を実行する。
【0055】
S506で、ローカルサーバ2031の判別モジュール2311は、アプリケーション204が起動可能である否かを判別し、起動可能であればS507に進み、起動可能でなければフローチャートを終了する。この処理は図4のS405の処理に対応する。すなわち、判別モジュール2311は、予めメモリ等に記憶しているアプリケーション204のハッシュ値と、計算により求めたアプリケーション204のハッシュ値とを比較する。そして、判別モジュール2311は、これらのハッシュ値が一致していればアプリケーション204が起動可能であると判別し、一致していなければ起動不可であると判断する。ハッシュ値が一致しない場合にはアプリケーション204を起動しないことにより、攻撃者等によってインストールされたり改ざんされたりした不正なアプリケーションを起動することを防止することができる。つまり、ローカルサーバ2031は、このステップにより、アプリケーション204が攻撃者等による不正なものでなく、起動してもよいアプリケーションであるか否かの検証を行う。
【0056】
なお、判別モジュール2311がアプリケーション204を起動不可と判別した場合(S506:No)、ローカルサーバ2031は、起動対象アプリケーションを起動せずに図5の処理を終了させる。なお、S506においてNoと判断された場合、不正なアプリケーションが存在している可能性がある。そのため、ローカルサーバ2031は、ブラウザ202等にアプリケーション204を起動できない旨の警告等を表示させてもよい。また、この場合には、正規のアプリケーション204がインストールされていない可能性がある。そのため、ローカルサーバ2031は、ブラウザ202がアプリケーション204のダウンロードページに誘導してもよい。
【0057】
S507で、ローカルサーバ2031の起動モジュール2312は、アプリケーション204を起動してアプリ起動リンク601に基づく画面を表示する。図6で示すアプリ起動リンク601が選択されたことにより本フローチャートの処理が開始された場合は、起動モジュール2312は、フォトブック作成用のアプリケーションを起動して特定の画面を表示する。すなわち、アプリ起動リンク601にも基づくディープリンクが行われる。
【0058】
一方、S503の判断がNoの場合、S508で、ブラウザ202がアプリ起動リンク601に基づく画面を表示する。例えばANDROID(登録商標)、IOS等のOSでは、アプリケーション203をインストールすることができないことがある。この場合には、ブラウザ202が、アプリ起動リンク601などで指定されたURLに基づくウェブページを表示する。なお、ブラウザ202は、アプリケーションを紹介するサービスのランディングページなどに誘導してもよい。
【0059】
また、S504の判断がNoの場合、S509で、ブラウザ202は、アプリケーション203及びアプリケーション204がインストールされていないと判断して、これらのアプリケーションをインストールするためのダウンロードページに誘導する。なお、ダウンロードページに誘導するだけでなく、アプリケーション204を紹介するWEBサイトなどに誘導してもよい。また、誘導するURLは、OS201の種類等によって変更してもよい。例えば、アプリ起動リンクのURLの後ろに誘導したいURLを付けることで、そのURLに遷移するようにしてもよい。このURLの一例として、「HTTPS://WWW.COMPANY.COM/?ANDROID=XXXXXX.IOS=XXXXXX.WINDOWS=XXXXXX.MACOS=XXXXXX」が挙げられる。このように、URLの後ろに、“?”や“&”で文字列を繋げることで、OS201ごとに誘導先を変えることが可能である。また、アプリ起動リンクの後ろに繋げるのではなく、S502で取得するウェブコンテンツの中に誘導するURLの情報を含めてもよい。
【0060】
以上説明したように、本実施形態によれば、判別モジュール2311は、取得されたアプリケーション204に固有の識別情報を用いて、起動してもよいか否かの判別を行う。そして、判別モジュール2311がアプリケーション204を起動してもよいと判別した場合に、起動モジュール2312がアプリ起動リンク601に基づくディープリンクを実行する。したがって、OS201のアプリケーション判別機能を用いることなく、起動対象アプリケーションを判別し、ディープリンクを行うことができる。
【0061】
また、本実施形態では、判別モジュール2311は、アプリケーション204がインストールされた際などに予め取得したハッシュ値と、アプリケーション204の起動要求を受け付けた後に計算により取得したハッシュ値との比較により判別を行う。したがって、起動させようとしているアプリケーション204が不正にインストールされたり改ざんされたりしたものでないことを、常駐アプリケーション203によりOSを用いずに検証することができる。
【0062】
また例えば、前述したとおり、ディープリンクの提供方法としては、カスタムURLスキームを用いるも方法もある。しかし、この方法では、複数のアプリケーションで同じカスタムURLスキームが登録されている場合、どのアプリケーションを起動させるのかを確認するメッセージが表示され、ユーザが煩わしさを感じてしまうことがある。本実施形態では、ハッシュ値等のアプリケーションに固有の識別情報に基づいて検証を行った上でアプリケーションを起動するため、このような確認メッセージが表示されることはない。したがって、ユーザが煩わしさを感じてしまう可能性を低減でき、ユーザビリティを向上することができる。
【0063】
<他の実施形態>
上記実施形態の説明では、起動対象のアプリケーション204が1つである場合を例に説明したが、アプリケーション204が複数であってもよい。すなわち、ローカルサーバ2031は、複数のアプリケーション204のうち、ブラウザ202から起動の要求を受け付けたアプリケーション204のハッシュ値等に基づいて、アプリケーション204を起動してもよいかの判別を行ってもよい。
【0064】
また、上記実施形態では、アプリケーション204のインストールの有無をローカルサーバ2031からの応答の有無で判別している。しかしながら、アプリケーション204がインストールされているか否かの判別は、ローカルサーバ2031の応答の有無に限られない。
【0065】
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0066】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【0067】
1 サーバ、2 クライアント、202 ブラウザ、203 常駐アプリケーション、2031 ローカルサーバ、2311判別モジュール、2312 起動モジュール、204 起動対象アプリケーション
図1
図2
図3
図4
図5
図6