以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
<第1の実施の形態>
<ネットワークシステムの全体構成と動作概要>
まず、本実施の形態にかかるネットワークシステム1の全体構成と動作概要について説明する。図1は、本実施の形態にかかるネットワークシステム1の全体構成と動作概要とを示すイメージ図である。
図1を参照して、本実施の形態にかかるネットワークシステム1は、主に、住居またはオフィスなどに配置される第1の機器としての自走式掃除機200と、ネットワークを介して自走式掃除機200と接続されるサーバ100と、サーバ100と通信可能な第2の機器としてのスマートフォン300とを含む。
本実施の形態においては、サーバ100は、ユーザや機器を認証したり、機器制御用のWeb API(Application Programming Interface)のサービスを提供したりする。さらに、本実施の形態にかかるネットワークシステムは、その他に、スマートフォン300のユーザが新たなアプリケーションを開発するための他のWeb APIを提供するサーバ100Bを有していてもよい。
ここで、本実施の形態においては、第1の機器として自走式掃除機200に関して説明するが、たとえば、エアコン、冷蔵庫、洗濯機などの他の家電、テレビ、ハードディスクレコーダ、音楽プレーヤーなどのAV(オーディオ・ビジュアル)機器、太陽光発電機、インターホン、給湯器、警備システムなどの住宅設備、カーナビゲーションなどであってもよい。
また、本実施の形態においては、第2の機器としてスマートフォン300に関して説明するが、タブレット、パーソナルコンピュータ、ノートパソコン、ゲーム機、電子書籍端末、時計、メガネ、カーナビゲーションなど、サーバ100と通信可能な他の種類の端末を利用してもよい。
スマートフォン300はインターネットなどを介してサーバ100にアクセス可能であり、ユーザはスマートフォン300を利用してサーバ100を介して自走式掃除機200を制御することが可能である。ただし、本実施の形態においては、自走式掃除機200を制御するためには、スマートフォン300を介して、サーバ100でのWeb APIの認証に成功する必要がある。
より詳細には、本実施の形態においては、自走式掃除機200の制御のためのアプリケーションを開発する場合、図1の(a)のように、ユーザは、スマートフォン300を介して、APIキーを入力してWeb APIサービスにログインするだけでは、自走式掃除機200を制御することができない。
図1(b)に示すように、本実施の形態においては、ユーザは、自走式掃除機200の電源を入れてから所定の時間内、たとえば5分以内に、スマートフォン300を介して、Web APIサービスに認証要求を行う必要がある。より詳細には、サーバ100は、スマートフォン300からの認証要求を受け付けた際に、対象となる自走式掃除機200の電源がその前の所定時間内にONされたことを確認できた場合に、認証が成功したものと判断する。認証に成功すると、その後、スマートフォン300は、自走式掃除機200の制御に関するWeb APIサービスを利用することが可能になる。
このように、本実施の形態にかかるネットワークシステム1に関しては、従来のような単にスマートフォン300にWeb API利用のためのAPIキーと自走式掃除機200のMACアドレスとを入力することによって認証ができるのではなく、自走式掃除機200の電源を入れてから所定時間以内にスマートフォン300からAPIキーによる認証操作を行った場合に認証成功とする。つまり、直前に自走式掃除機200のユーザ操作を行っていなければ認証できないため、他のユーザが誤って認証に成功してしまう可能性を低減することができる。
なお、本実施の形態においては、スマートフォン300の開発用アプリケーションは、別にダウンロードした自走式掃除機200を直接的に制御するためのローカルAPIを利用する際にも、ネットワークを介してサーバ100における認証に既に成功しているか否かの確認を行う。
以下、このような機能を実現するためのネットワークシステム1の具体的な構成について詳述する。
<サーバ100のハードウェア構成>
まず、ネットワークシステム1を構成するサーバ100のハードウェア構成の一態様について説明する。なお、図2は、本実施の形態にかかるサーバ100のハードウェア構成を表わすブロック図である。
図2を参照して、サーバ100は、主たる構成要素として、CPU110と、メモリ120と、ライト130と、ボタン140と、通信インターフェイス160とを含む。
CPU110は、メモリ120あるいは外部の記憶媒体に記憶されているプログラムを実行することによって、サーバ100の各部を制御する。すなわち、CPU110は、メモリ120に格納されているプログラムを実行することによって、後述する機能ブロックや、後述する各種の処理を実行する。
メモリ120は、各種のRAM(Random Access Memory)、各種のROM(Read-Only Memory)、フラッシュメモリーなどによって実現される。なお、メモリ120は、インターフェイスを介して利用される、USB(Universal Serial Bus)(登録商標)メモリ、CD(Compact Disc)、DVD(Digital Versatile Disk)、メモリカード、ハードディスク、IC(Integrated Circuit)カード、光カード、マスクROM、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electronically Erasable Programmable Read-Only Memory)などの記憶媒体などによっても実現される。
メモリ120は、CPU110によって実行されるプログラムや、CPU110によるプログラムの実行により生成されたデータ、入力されたデータ、第1の機器および第2の機器から受信したデータ、開発者が利用するためのWeb APIのデータ、ユーザIDとAPIキーとパスワードと第1の機器の識別情報と第2の機器の識別情報などの対応関係、第1の機器に対する操作が行われた時刻などを記憶する。
通信インターフェイス160は、CPU110からのデータを、インターネット、キャリア網、無線付きアダプタ、ルータなどを介して第1の機器および第2の機器に送信する。通信インターフェイス160は、インターネット、キャリア網、無線付きアダプタ、ルータなどを介して第1の機器および第2の機器からのデータを受信して、CPU110に受け渡す。
ライト130は、CPU110からの信号に応じて発光する。ボタン140は、ユーザからの命令をCPU110に入力する。
なお、他のWeb APIサービスを提供するサーバ100Bのハードウェア構成や、第1の機器が最初に接続するサーバのハードウェア構成も、サーバ100と同じであるため、ここでは説明を繰り返さない。
<第1の機器のハードウェア構成>
次に、第1の機器のハードウェア構成の一態様について説明する。図3は、本実施の形態にかかる第1の機器のハードウェア構成を表わすブロック図である。
図3を参照して、第1の機器は、主たる構成要素として、CPU210と、メモリ220と、ディスプレイ230と、各種スイッチ240と、機器駆動部250と、通信インターフェイス260と、マイク270と、スピーカ280と、カメラ290とを含む。
CPU210は、メモリ220あるいは外部の記憶媒体に記憶されているプログラムを実行することによって、第1の機器200の各部を制御する。すなわち、CPU210は、メモリ220に格納されているプログラムを実行することによって、後述する機能ブロックや、後述する各種の処理を実行する。たとえば、CPU210は、認証に成功したスマートフォン300からの音声出力命令を受けてスピーカ280に音声を出力させたり、認証に成功したスマートフォン300からの制御命令を受けてモータを駆動して移動したり、カメラ290で写真を撮影したりする。
メモリ220は、各種のRAM、各種のROM、フラッシュメモリーなどによって実現される。メモリ220は、CPU210によって実行されるプログラムや、CPU210によるプログラムの実行により生成されたデータ、入力されたデータ、サーバ100から受信したデータなどを記憶する。
ディスプレイ230は、CPU210からの信号に基づいて、文字や画像などを出力する。
スイッチ240は、ユーザからの命令を受け付けて、当該命令をCPU210に入力する。
機器駆動部250は、CPU210からの制御命令に基づいて、各種駆動回路を介して、モータ、アクチュエータ、センサ、スピーカなどを制御することによって、第1の機器200の主要な役割を果たす。
通信インターフェイス260は、CPU210からのデータ、たとえば、機器の状態および機器がユーザからリモコンを介して受け付けた命令など、をインターネット、無線付きアダプタ、ルータなどを介してサーバ100に送信する。通信インターフェイス260は、インターネット、無線付きアダプタ、ルータなどを介してサーバ100からのデータ、たとえばスマートフォン300からの音声出力命令やその他の制御命令を受信してCPU210に受け渡す。
マイク270は、入力されたユーザからの音声などを電気信号に変換して、CPU210に入力する。
スピーカ280は、CPU210からの電気信号に応じて、第2の機器から指示された音声を出力する。
カメラ290は、CPU210からの電気信号に応じて、静止画像や動画像を撮影する。
<第2の機器のハードウェア構成>
次に、第2の機器のハードウェア構成の一態様について説明する。なお、図4は、本実施の形態にかかる第2の機器のハードウェア構成を表わすブロック図である。
図4を参照して、第2の機器は、主たる構成要素として、CPU310と、メモリ320と、タッチパネル350(ディスプレイ330とポインティングデバイス340)と、通信インターフェイス360と、マイク370と、スピーカ380とを含む。
CPU310は、メモリ320あるいは外部の記憶媒体に記憶されているプログラムを実行することによって、第2の機器300の各部を制御する。すなわち、CPU310は、メモリ320に格納されているプログラムを実行することによって、後述する機能ブロックや、後述する各種の処理を実行する。
メモリ320は、各種のRAM、各種のROM、フラッシュメモリーなどによって実現される。なお、メモリ320は、様々なインターフェイスを介して利用される、SDカードやマイクロSDカードのようなメモリカード、USB(登録商標)メモリ、CD、DVD、ハードディスク、ICカード、光カード、マスクROM、EPROM、EEPROMなどの記憶媒体などによっても実現される。
メモリ320は、CPU310によって実行されるプログラムや、CPU310によるプログラムの実行により生成されたデータ、ポインティングデバイス340を介して入力されたデータ、サーバ100やサーバ100Bから受信したデータなどを記憶する。特に、本実施の形態においては、メモリ320は、サーバ100やサーバ100Bからダウンロードした開発用のアプリケーションや開発物としてのアプリケーションなどを記憶している。CPU310は、上記のアプリケーションに従って、後述する各種の処理を実行する。
ディスプレイ330は、CPU310からの信号に基づいて、文字や画像を出力する。ポインティングデバイス340は、ユーザからの命令を受け付けて、当該命令をCPU310に入力する。なお、本実施の形態においては、第2の機器300は、ディスプレイ330とポインティングデバイス340とが組み合わされたタッチパネル350を有する。
通信インターフェイス360は、アンテナやコネクタによって実現される。通信インターフェイス360は、有線通信あるいは無線通信によって他の装置との間でデータをやり取りする。CPU310は、通信インターフェイス360を介して、テキストデータ、画像データなどを、サーバ100などの他の装置に送信する。たとえば、CPU310は、第1の機器200に対する様々な要求をサーバ100に送信する。また、CPU310は、通信インターフェイス360を介して、プログラム、制御命令、画像データ、テキストデータなどを、サーバ100などの他の装置から受信する。
マイク370は、入力されたユーザからの音声などを電気信号に変換して、CPU310に入力する。
スピーカ380は、CPU310からの音声信号に基づいて通話音声、音楽、動画などの様々な音声を出力する。
<ネットワークシステム1の機能構成>
次に、図5を参照しながら、開発者がスマートフォン300を使って自走式掃除機200の制御に関するアプリケーションを開発する場合のネットワークシステム1の機能構成について説明する。なお、図5は、本実施の形態にかかるネットワークシステム1の機能構成を示すブロック図である。
上述したように、本実施の形態にかかるネットワークシステム1は、主に、サーバ100・100Bと、自走式掃除機200と、スマートフォン300とを含む。なおここでは、サーバ100は、機器制御のためのWeb APIサービスを提供するAPIサーバ100ともいう。また、サーバ100Bは、スマートフォン300用の汎用的なWeb APIサービスを提供する開発者サーバ100Bともいう。
上述したように、開発者サーバ100Bは、スマートフォン300からの要求に応じて、スマートフォン300に汎用的なWeb APIサービスを提供する。
そして、APIサーバ100は、スマートフォン300からの要求に応じて、自走式掃除機200に関するアプリケーションを開発するためのWeb APIサービスを提供する。APIサーバ100は、認証受付部111と、認証判断部112と、音声発話部113と、音声合成部114と、発話指示部116と、認証確認部117とを備える。これらの機能ブロックは、CPU110が、通信インターフェイス160を利用しながら、メモリ120のプログラムを実行することによって、実現されるものである。
まず、認証受付部111は、開発物であるスマートフォン300のアプリケーション311からの認証要求を受け付ける。本実施の形態においては、認証受付部111は、予め発行されているAPIキーやユーザIDやパスワードをスマートフォン300から受け付ける。そして、予め登録されているAPIキーに対応する自走式掃除機200の識別情報、たとえばMACアドレスなどを認証判断部112に受け渡す。
認証判断部112は、MACアドレスに対応する自走式掃除機200が、所定時間以内にネットワークに接続されたか否かを判断する。本実施の形態においては、認証判断部112は、自走式掃除機200がネットワークに接続するために最初に接続するサーバに対して、自走式掃除機200のネットワークへの接続開始時刻を要求し、現在時刻からの所定時間以内であるか否かを判断する。そして、自走式掃除機200のネットワークへの接続開始時刻から所定時間以内に、スマートフォン300からの認証要求があったと判断できると、認証が成功したものと判断する。
音声発話部113は、認証成功後、スマートフォン300の開発物であるアプリケーション311からの音声出力命令を受け付ける。
音声合成部114は、音声出力命令に基づいて、たとえばテキストデータから音声ファイル115を作成する。
発話指示部116は、音声ファイル115を自走式掃除機200に送信する。これによって、自走式掃除機200は音声を出力する。
本実施の形態においては、スマートフォン300は、APIサーバ100から機器開発用アプリケーション312をダウンロードすることもできる。スマートフォン300Aの機器開発用アプリケーション312は、ユーザからの命令を受け付けて、自走式掃除機200を制御する。
より詳細には、本実施の形態にかかるネットワークシステム1では、スマートフォン300が、サーバ100を介さずに、無線ルータやBluetooth(登録商標)や赤外線通信などによって自走式掃除機200を制御する場合であっても、機器開発用アプリケーション312または開発物であるアプリケーション311が、サーバ100に認証を要求する構成になっている。
すなわち、認証確認部117が、スマートフォン300からのアプリケーション311,312からの認証要求を受け付けて、認証判断部112に認証処理を行わせる。認証判断部112が認証に成功すると、認証確認部117がその旨をスマートフォン300の機器開発用アプリケーション312に返答する。これによって、スマートフォン300の機器開発用アプリケーション312は、無線ルータやBluetooth(登録商標)や赤外線通信などによって自走式掃除機200を制御する。
つまり、本実施の形態においては、スマートフォン300の機器開発用アプリケーション312は、ユーザからの自走式掃除機200に対する直接的な制御命令を受け付けた場合であっても、APIサーバ100での認証に成功すると自走式掃除機200を制御し、APIサーバ100での認証に失敗すると自走式掃除機200の制御を中止する。
<ネットワークシステム1における情報処理>
次に、図6を参照しながら、本実施の形態にかかるネットワークシステム1の情報処理について説明する。なお、図6は、本実施の形態にかかるネットワークシステム1の情報処理を示すシーケンス図である。
まず、はじめに、ユーザとしての自走式掃除機200のアプリケーションの開発者が、スマートフォン300を使って、ユーザ登録を行う(ステップS102)。このとき、ユーザは、スマートフォン300から自分の自走式掃除機200のMACアドレスをサーバ100に送信する。当該ユーザ登録は、サーバ100に対して行うものであってもよいし、他のサーバに対して行うものであってもよい。
ユーザが、自走式掃除機200のアプリケーションの開発用のWeb APIを利用するための利用規約に同意すると(ステップS104)、サーバ100は、ユーザIDや自走式掃除機200のMACアドレスに対応付けられたAPIキーを発行する(ステップS106)。
次に、ユーザが、制御対象の自走式掃除機200の電源をONする(ステップS108)。自走式掃除機200のCPU210は、電源がONされると、通信インターフェイス260を介して、MACアドレスを利用してネットワークに接続する(ステップS110)。本実施の形態においては、ネットワークに接続されると、自走式掃除機200は最初にサーバ100Cに接続する。サーバ100Cは、自走式掃除機200のMACアドレスに対応付けて、自走式掃除機200がネットワークに接続された時刻を記憶する。
ユーザは、サーバ100の認証用APIを利用して、スマートフォン300を介してサーバ100に認証を要求する(ステップS112)。より詳細には、ユーザからの命令に応じて、スマートフォン300のCPU310は、通信インターフェイス360を介して、認証を要求するためのデータをサーバ100に送信する。当該データには、ステップS106で発行されたAPIキーが含まれている。
サーバ100のCPU110は、スマートフォン300からの要求に応じて、通信インターフェイス160を介して、サーバ100BにAPIキーに対応するMACアドレスに対応する自走式掃除機200のネットワークへの接続時刻を問い合わせる(ステップS114)。そして、CPU110は、スマートフォン300からの認証要求の時刻が、自走式掃除機200のネットワークへの接続時刻から所定時間以内である場合に認証が成功したと判断する(ステップS114)。
認証に成功すると、CPU110は、通信インターフェイス160を介して、認証の成功を示すためのデータをスマートフォン300に送信する(ステップS116)。
なお、認証に失敗する理由としては、APIキーが間違っている場合と、自走式掃除機200の電源のONが所定時間以内に行われていない場合などが考えられる。認証に失敗すると、CPU110は、通信インターフェイス160を介して、認証の失敗を示すためのデータをスマートフォン300に送信する。
認証成功後、ユーザは、サーバ100の音声出力用APIを利用して、音声の出力命令をサーバ100に送信する(ステップS122)。より詳細には、ユーザからの命令に応じて、スマートフォン300のCPU310は、通信インターフェイス360を介して、テキストデータや音声指定データや音声データそのものをAPIキーに紐づけてサーバ100に送信する。
サーバ100のCPU110は、スマートフォン300からの要求に応じて、APIキーに基づいて認証する。認証に成功すると、CPU110は、通信インターフェイス160を介して、音声出力命令を正常に受け付けた旨をスマートフォン300に送信する(ステップS124)。CPU110は、音声データを作成し、通信インターフェイス160を介して、APIキーに対応するMACアドレスを有する自走式掃除機200に音声データを送信する(ステップS126)。
自走式掃除機200のCPU210は、通信インターフェイス260を介して、サーバ100からの音声出力命令を受けて、ユーザに指定された音声をスピーカ280に出力させる(ステップS128)。
あるいは、スマートフォン300のCPU310は、ユーザ命令に応じて、制御用APIを利用して、無線LANまたはBluetooth(登録商標)または赤外線通信などを介して、自走式掃除機200を直接的に制御しようとする(ステップS132)。このとき、スマートフォン300のCPU310は、制御命令を自走式掃除機200に送信する前に、通信インターフェイス360を介して、認証要求をサーバ100に送信する(ステップS134)。
サーバ100のCPU110は、スマートフォン300からの要求に応じて、認証する(ステップS134)。認証に成功すると、CPU110は、通信インターフェイス160を介して、制御命令を正常に受け付けた旨をスマートフォン300に送信する(ステップS136)。
CPU110は、通信インターフェイス160を介して、無線LANまたはBluetooth(登録商標)または赤外線通信などを介して、自走式掃除機200に制御命令を送信する(ステップS138)。自走式掃除機200のCPU210は、通信インターフェイス260を介して、スマートフォン300からの直接的な制御命令を受けて、移動したり、掃除をしたりする(ステップS140)。
当然に、認証に失敗した場合は、サーバ100のCPU110は、通信インターフェイス160を介して、認証に失敗した旨をスマートフォン300に送信する。スマートフォン300のCPU310は、ディスプレイ330に認証に失敗した旨を表示する。
このように、本実施の形態においては、第2の機器に対するユーザ操作から所定の期間内に、第1の機器にて認証のための操作を行う必要があるため、誤って他人の機器を操作してしまったり、他人が自分の機器を操作したりする可能性を従来よりも低減することができる。
なお、本実施の形態においては、電源をONする時刻に基づいて、認証の成否を判断しているが、電源スイッチに限らず、第2の機器に配置される他のボタンを操作する時刻に基づいて、認証の成否を判断してもよい。たとえば、ユーザは、第2の機器の「認証ボタン」を押してから、所定時間内に第1の機器からサーバ100に認証要求を行う構成にしてもよい。
<第2の実施の形態>
第1の実施の形態においては、スマートフォン300からの制御命令が無線LANまたはBluetooth(登録商標)または赤外線通信などを介して直接的に自走式掃除機200に送られているが、スマートフォン300からの制御命令がサーバ100を介して自走式掃除機200に送られてもよい。
すなわち、図6のステップS132において、ユーザは、制御用APIを利用して、自走式掃除機200を制御しようとする。すなわち、本実施の形態においては、スマートフォン300のCPU310は、ユーザからの制御命令に応じて、通信インターフェイス360を介して、制御命令をサーバ100に送信する(ステップS132)。サーバ100のCPU110は、スマートフォン300からの要求に応じて、認証する(ステップS134)。
認証に成功すると、CPU110は、通信インターフェイス160を介して、制御命令を正常に受け付けた旨をスマートフォン300に送信する(ステップS136)。CPU110は、通信インターフェイス160を介して、自走式掃除機200に制御命令を送信する(ステップS138)。自走式掃除機200のCPU210は、通信インターフェイス260を介して、サーバ100からの制御命令を受けて、移動したり、掃除をしたりする(ステップS140)。
<第3の実施の形態>
第1および第2の実施の形態においては、自走式掃除機200の電源がONされた時刻から所定の時間内に、当該自走式掃除機200の識別情報に対応するAPIキーを有するスマートフォン300から認証要求があった場合に、認証に成功したと判断するものであった。
しかしながら、本実施の形態においては、第1の機器において所定の画面が表示された時刻から所定の時間内に、当該第1の機器の識別情報に対応する識別情報を有する第2の機器から認証要求があった場合に、認証に成功したと判断するものである。
なお、以下では、本実施の形態にかかるネットワークシステム1の情報処理について説明するものとし、ネットワークシステム1の全体構成および各装置のハードウェア構成については、第1の実施の形態にかかるそれらと同様であるため説明を繰り返さない。
図7は、本実施の形態にかかるネットワークシステム1の情報処理を示すシーケンス図である。
まず、はじめに、ユーザとしての第1の機器200Cの開発者が、スマートフォン300を使って、ユーザ登録を行う(ステップS102)。当該ユーザ登録は、サーバ100に対して行うものであってもよいし、他のサーバに対して行うものであってもよい。
ユーザが、第1の機器200Cの開発用のWeb APIを利用するための利用規約に同意すると(ステップS104)、サーバ100は、ユーザIDや第1の機器200CのMACアドレスに対応付けられたAPIキーを発行する(ステップS106)。
次に、ユーザが、第1の機器200Cを操作して、第1の機器200Cのディスプレイ230に所定の画面を表示させる(ステップS308)。当該画面は、たとえば、Web APIサービスの第2の機器用の利用規約であってもよいし、「5分以内に端末からAPI認証を行ってください」というメッセージを含むものであってもよい。
第1の機器200CのCPU210は、ディスプレイ230に所定の画面を表示させると、通信インターフェイス260を介して、MACアドレスを利用してサーバ100にその旨を通知する(ステップS310)。サーバ100は、第1の機器200CのMACアドレスに対応付けて、所定の画面が表示された時刻を記憶する。
ユーザは、サーバ100の認証用APIを利用して、スマートフォン300を介してサーバ100に認証を要求する(ステップS112)。より詳細には、ユーザからの命令に応じて、スマートフォン300のCPU310は、通信インターフェイス360を介して、認証を要求するためのデータをサーバ100に送信する。当該データには、ステップS106で発行されたAPIキーが含まれている。
サーバ100のCPU110は、スマートフォン300からの要求に応じて、APIキーに対応するMACアドレスに対応する第1の機器200Cにて所定の画面が表示された時刻を取得する(ステップS314)。そして、CPU110は、スマートフォン300からの認証要求の時刻が、第1の機器200Cにおける所定画面の表示された時刻から所定時間以内である場合に認証が成功したと判断する(ステップS314)。
認証に成功した後の処理は、第1および第2の実施の形態のそれと同様であるため、ここでは説明を繰り返さない。
<第4の実施の形態>
第4の実施の形態においては、第1の機器に所定の音声が入力された時刻から所定の時間内に、当該第1の機器の識別情報に対応する識別情報を有する第2の機器から認証要求があった場合に、認証に成功したと判断するものである。
なお、以下では、本実施の形態にかかるネットワークシステム1の情報処理について説明するものとし、ネットワークシステム1の全体構成および各装置のハードウェア構成については、第1の実施の形態にかかるそれらと同様であるため説明を繰り返さない。
図8は、本実施の形態にかかるネットワークシステム1の情報処理を示すシーケンス図である。
まず、はじめに、ユーザとしての第1の機器200Dの開発者が、スマートフォン300を使って、ユーザ登録を行う(ステップS102)。当該ユーザ登録は、サーバ100に対して行うものであってもよいし、他のサーバに対して行うものであってもよい。
ユーザが、第1の機器200Dの開発用のWeb APIを利用するための利用規約に同意すると(ステップS104)、サーバ100は、ユーザIDや第1の機器200DのMACアドレスに対応付けられたAPIキーを発行する(ステップS106)。
次に、ユーザが、第1の機器200Dのマイク270に所定の音声を入力する(ステップS408)。当該音声は、たとえば、「API認証開始」というメッセージを含むものであってもよいし、APIキー自体を含むものであってもよい。第1の機器200DのCPU210は、マイク270を介して、所定の音声が入力されると、通信インターフェイス260を介して、MACアドレスを利用してサーバ100にその旨を通知する(ステップS410)。サーバ100は、第1の機器200DのMACアドレスに対応付けて、所定の音声が入力された時刻を記憶する。
ユーザは、サーバ100の認証用APIを利用して、スマートフォン300を介してサーバ100に認証を要求する(ステップS112)。より詳細には、ユーザからの命令に応じて、スマートフォン300のCPU310は、通信インターフェイス360を介して、認証を要求するためのデータをサーバ100に送信する。当該データには、ステップS106で発行されたAPIキーが含まれている。
サーバ100のCPU110は、スマートフォン300からの要求に応じて、APIキーに対応するMACアドレスに対応する第1の機器200Dにて所定の音声が入力された時刻を取得する(ステップS414)。そして、CPU110は、スマートフォン300からの認証要求の時刻が、第1の機器200Dにおける所定画面の表示された時刻から所定時間以内である場合に認証が成功したと判断する(ステップS414)。
認証に成功した後の処理は、第1および第2の実施の形態のそれと同様であるため、ここでは説明を繰り返さない。
<第5の実施の形態>
本実施の形態においては、第1の機器において現在位置情報のサービスへのアップロードのための操作が行われた時刻から所定の時間内に、当該第1の機器の識別情報に対応する識別情報を有する第2の機器から認証要求があった場合に、認証に成功したと判断するものである。
<ネットワークシステムの全体構成と動作概要>
まず、本実施の形態にかかるネットワークシステム1Eの全体構成と動作概要について説明する。図9は、本実施の形態にかかるネットワークシステム1Eの全体構成と動作概要とを示すイメージ図である。
図9を参照して、本実施の形態にかかるネットワークシステム1Eは、主に、ビーコン400と、第1の機器としてのスマートフォン200Eと、ネットワークを介してスマートフォン200Eと接続されるサーバ100と、サーバ100と通信可能な第2の機器としてのスマートフォン300とを含む。
なお、認証処理のトリガーとなるスマートフォン200Eに対するユーザ操作は、位置情報サービスを利用して取得したビーコン400の現在位置情報を、自転車レース用の位置共有サービスやWeb APIサービスなどの他のサービスのサーバ100にアップロードし始めるための操作である。
本実施の形態においては、サーバ100は、ユーザや機器を認証したり、自転車レース用の位置共有サービスを提供したりする。
そして、本実施の形態においては、第1の機器としてのスマートフォン200Eがビーコン400の位置情報を取得して、ビーコン400の位置情報のサーバ100へのアップロードを開始してから所定の時間内、たとえば5分以内に、第2の機器としてのスマートフォン300を介して、自転車レース用の位置共有サービスに認証要求を行う必要がある。
より詳細には、サーバ100は、ユーザのスマートフォン300からの認証要求を受け付けた際に、たとえばユーザの友達のスマートフォン200Eからのビーコン400の位置情報のアップロードが所定時間内に開始されたことを確認できた場合に、認証が成功したものと判断する。認証に成功すると、その後、スマートフォン300は、ビーコン400の位置情報を利用することが可能になる。
なお、本実施の形態においては、スマートフォン300のアプリケーションは、ダウンロードしたスマートフォン200Eやビーコン400の制御用のAPIを利用する際にも、ネットワークを介してサーバ100での認証に成功しているかの確認を行う。
以下、このような機能を実現するためのネットワークシステム1Eの具体的な構成について詳述する。なお、サーバ100,100Bと、スマートフォン300のハードウェア構成は、第1の実施の形態のそれらと同様であるため、ここでは説明を繰り返さない。そして、第1の機器としてのスマートフォン200Eのハードウェア構成は、第1の実施の形態のスマートフォン300のハードウェア構成と同様であるため、ここでは説明を繰り返さない。
<ビーコン400のハードウェア構成>
次に、ビーコン400のハードウェア構成の一態様について説明する。図10は、本実施の形態にかかるビーコン400のハードウェア構成を表わすブロック図である。
図10を参照して、本実施の形態にかかるビーコン400は、主たる構成要素として、CPU410と、メモリ420と、ボタン440と、通信インターフェイス460と、信号発信部490とを含む。
CPU410は、メモリ420あるいは外部の記憶媒体に記憶されているプログラムを実行することによって、ビーコン400の各部を制御する。すなわち、CPU410は、メモリ420に格納されているプログラムを実行することによって、後述する各種の処理を実行する。
メモリ420は、各種のRAM、各種のROM、フラッシュメモリーなどによって実現される。メモリ420は、CPU410によって実行されるプログラムや、CPU410によるプログラムの実行により生成されたデータ、過去の位置情報、サーバ100から受信したデータなどを記憶する。
ボタン440は、ユーザからの命令を受け付けて、当該命令をCPU410に入力する。
通信インターフェイス460は、CPU410からのデータをインターネット、無線付きアダプタ、ルータなどを介してサーバ100に送信する。通信インターフェイス260は、インターネット、無線付きアダプタ、ルータなどを介してサーバ100からのデータやその他の制御命令を受信してCPU410に受け渡す。
信号発信部490は、定期的に信号を外部に発する。
<ネットワークシステム1Eにおける情報処理>
次に、図11を参照しながら、本実施の形態にかかるネットワークシステム1Eの情報処理について説明する。なお、図11は、本実施の形態にかかるネットワークシステム1Eの情報処理を示すシーケンス図である。
まず、はじめに、ユーザとしてのスマートフォン200Eおよびビーコン400のユーザが、自転車レースなどの位置共有サービスを利用するための利用規約に同意すると(ステップS504)、サーバ100は、ユーザIDを発行する(ステップS506)。
なお、本実施の形態においては、スマートフォン200EのユーザIDとスマートフォン300のユーザIDとは別々のものに設定される。サーバ100のメモリ120は、チームまたは家族などのグループと、それらに属するユーザとの対応関係に関する情報を格納する。
ここで、ビーコン400は、定期的に信号を発している。ビーコン400からの信号は、複数の人工衛星などによって受信され、ビーコン400の位置が計算される。ビーコン400の位置は、インターネットなどを介して位置情報サービスのサーバからスマートフォン200Eと送信される。
そして、スマートフォン200Eのユーザが、取得したビーコン400の現在位置をサーバ100にアップロードするための命令をスマートフォン200Eに入力すると(ステップS508)。ビーコン400の現在位置情報が、サーバ100Cにアップロードされはじめる(ステップS510)。
サーバ100Cは、ユーザIDに対応付けて、スマートフォン200Eがビーコン400の位置情報をネットワークにアップロードし始めた時刻を記憶する。
ユーザは、ユーザIDを利用して、スマートフォン300を介してサーバ100に認証を要求する(ステップS512)。
サーバ100のCPU110は、スマートフォン300からの要求に応じて、通信インターフェイス160を介して、サーバ100CにユーザIDに対応するグループに属するユーザのスマートフォン200Eからのビーコン400の位置情報のアップロードの開始時刻を問い合わせる(ステップS514)。そして、CPU110は、スマートフォン300からの認証要求の時刻が、スマートフォン200Eからのビーコン400の位置情報のアップロードの開始時刻から所定時間以内である場合に認証が成功したと判断する(ステップS514)。
当然に、CPU110は、スマートフォン300からの認証要求の時刻が、スマートフォン200Eからのビーコン400の位置情報のアップロードの開始時刻から所定時間経過している場合には認証が失敗したと判断する。
認証に成功すると、サーバ100のCPU110は、通信インターフェイス160を介して、ビーコン400の位置情報をスマートフォン300に送信する(ステップS516)。スマートフォン300のCPU310は、通信インターフェイス360を介して受信した位置情報に基づいて、ディスプレイ330に、ビーコン400の位置情報を地図上に表示させる(ステップS518)。
<第6の実施の形態>
第1〜第5の実施の形態では、サーバ100が認証処理や音声出力処理や位置情報送信処理を行い、サーバ100Bが他のWeb APIサービスを提供し、サーバ100Cが第1の機器のネットワークへの接続の役割を担っていたが、各サーバ100,100B,100Cの役割分担は、上記のような構成に限るものではない。
たとえば、第1〜第5の実施の形態でサーバ100が実行していた役割の全部または一部を、他のサーバ100B,100Cまたは更に他のサーバに担わせてもよい。同様に、第1〜第5の実施の形態でサーバ100Bが実行していた役割の全部または一部を、他のサーバ100C,100または更に他のサーバに担わせてもよい。第1〜第5の実施の形態でサーバ100Cが実行していた役割の全部または一部を、他のサーバ100,100Bまたは更に他のサーバに担わせてもよい。
また、更に別の音声制御用サーバが、第1の機器のネットワークシステムへの接続処理や常時接続処理や音声合成処理や音声出力処理や負荷分散処理の全部または一部を担ったりしてもよい。
具体的な一例としては、図12に示すように、アプリケーションの開発者が自走式掃除機200の電源をONした際に、自走式掃除機200がAPIサーバ100のネットワーク接続開始用のプログラム118にアクセスしてもよい。これによって、自走式掃除機200は、常時接続サーバや他のアプリケーションサーバとデータをやり取りできるようになる。この場合は、ネットワーク接続開始用のプログラム118は、自走式掃除機200などの第1の機器のネットワークへの接続状況を格納するための管理データベース119に、今回の接続状況、たとえば自走式掃除機200のMACアドレスと接続日時とを蓄積する。そして、第2の機器からの要求に応じて、認証判断部112が、当該管理データベース119にアクセスし、自走式掃除機200などの第1の機器のネットワークへの接続状況を参照する。
あるいは別の具体的な一例としては、図13に示すように、アプリケーションの開発者が自走式掃除機200の電源をONした際に、自走式掃除機200がAPIサーバ100とは別の接続管理サーバ100Xのネットワーク接続開始用のプログラム118にアクセスしてもよい。これによって、自走式掃除機200は、常時接続サーバや他のアプリケーションサーバとデータをやり取りできるようになる。この場合は、ネットワーク接続開始用のプログラム118は、自走式掃除機200などの第1の機器のネットワークへの接続状況を格納するための管理データベース119に、今回の接続状況、たとえば自走式掃除機200のMACアドレスと接続日時とを蓄積する。そして、第2の機器からの要求に応じて、APIサーバ100の認証判断部112が、接続管理サーバ100Xの管理データベース119にアクセスし、自走式掃除機200などの第1の機器のネットワークへの接続状況を参照する。
<第7の実施の形態>
第1〜第6の実施の形態では、第1の機器がネットワークへの接続を行った日時や第1の機器が位置情報をサーバにアップロードした日時から所定の時間内に第2の機器が認証要求をしたか否かに基づいて認証の成否を判断するものであった。しかしながら、このような構成に限るものではない。
たとえば、第1の機器に対するユーザ操作の種類や履歴などに応じて、第2の機器が認証要求をした場合に、認証の成否を判断するものであってもよい。具体的には、第1の機器としての自走式掃除機200が掃除を行った場合に、第2の機器が認証要求をした場合に認証を成功したものとサーバ100が判断してもよい。この場合は、自走式掃除機200が掃除を行っていない場合に、第2の機器が認証要求をした場合は、サーバ100は認証失敗と判断する。
あるいは、第1の機器としての自走式掃除機200が認証モードに設定された場合に、第2の機器が認証要求をした場合に認証を成功したものとサーバ100が判断してもよい。この場合は、自走式掃除機200が認証モードに設定されていない場合に、第2の機器が認証要求をした場合は、サーバ100は認証失敗と判断する。
あるいは、第1の機器に対するユーザ操作の種類と、第1の機器がネットワークへの接続を行った日時や第1の機器が位置情報をサーバにアップロードした日時から所定の時間内であるか否かと、に関して、いずれかが満たされた場合に、認証を成功したものとサーバ100が判断してもよい。この場合は、両方が満たされなかった場合に、サーバ100は認証失敗と判断する。
あるいは、第1の機器に対するユーザ操作の種類と、第1の機器がネットワークへの接続を行った日時や第1の機器が位置情報をサーバにアップロードした日時から所定の時間内であるか否かと、に関して、共に満たされた場合に、認証を成功したものとサーバ100が判断してもよい。この場合は、いずれかが満たされなかった場合に、サーバ100は認証失敗と判断する。
<その他の応用例>
本発明は、システム或いは装置にプログラムを供給することによって達成される場合にも適用できることはいうまでもない。そして、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記憶媒体(あるいはメモリ)を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の効果を享受することが可能となる。
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わる他の記憶媒体に書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
<まとめ>
上記の第1〜6の実施の形態においては、ユーザ操作を受け付ける第1の機器200と、認証要求を発する第2の機器300と、第2の機器300から認証要求を受けた場合に、第1の機器200に対するユーザ操作に関する所定のルールが満たされているときに当該認証を成功と判断するサーバ100とを備えるネットワークシステム1が提供される。
好ましくは、前記サーバ100は、前記ユーザ操作から所定の期間内に前記認証要求を受けた場合に、前記所定のルールが満たされていると判断する。
好ましくは、ユーザ操作は、電源をONすることである。
好ましくは、ユーザ操作は、所定のボタンを押すことである。
好ましくは、第1の機器200はマイク270を含む。ユーザ操作は、ユーザがマイク270に音声を入力することである。
好ましくは、第1の機器200はディスプレイ230を含む。ユーザ操作は、所定の画面をディスプレイ230に表示させることである。
この発明の別の態様に従うと、第1の機器200と第2の機器300と通信するための通信インターフェイス160と、第1の機器200に対するユーザ操作から所定の期間内に第2の機器300から認証要求を受けた場合に当該認証を成功と判断するためのプロセッサ110とを備えるサーバ100が提供される。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。