JP5330276B2 - 分散オブジェクトを有するフラッシュアプリケーション用統合ハードウェア・プラットフォーム用システム及び方法 - Google Patents

分散オブジェクトを有するフラッシュアプリケーション用統合ハードウェア・プラットフォーム用システム及び方法 Download PDF

Info

Publication number
JP5330276B2
JP5330276B2 JP2010004437A JP2010004437A JP5330276B2 JP 5330276 B2 JP5330276 B2 JP 5330276B2 JP 2010004437 A JP2010004437 A JP 2010004437A JP 2010004437 A JP2010004437 A JP 2010004437A JP 5330276 B2 JP5330276 B2 JP 5330276B2
Authority
JP
Japan
Prior art keywords
hardware
flash
api
processor
host
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.)
Active
Application number
JP2010004437A
Other languages
English (en)
Other versions
JP2010182297A (ja
Inventor
ロス ジョナサン
Original Assignee
ディズニー エンタープライゼス インコーポレイテッド
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 ディズニー エンタープライゼス インコーポレイテッド filed Critical ディズニー エンタープライゼス インコーポレイテッド
Publication of JP2010182297A publication Critical patent/JP2010182297A/ja
Application granted granted Critical
Publication of JP5330276B2 publication Critical patent/JP5330276B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • 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
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality

Description

(発明の背景)
1.発明の分野
本発明は一般に、データ及びグラフィックのプレゼンテーションに関するものである。特に、本発明は、分散オブジェクトを有するフラッシュ(登録商標)アプリケーションに関するものである。
2.背景技術
フラッシュ(登録商標)プラットフォームは、上質のマルチメディア・インターネットアプリケーションにとって一般的であり、高いブラウザ・プレゼンテーション(提示)レート及び非常に広範なハードウェア及びオペレーティングシステム上での利用可能性を有する。ユーザはフラッシュ(登録商標)アプリケーションを、パーソナルコンピュータから携帯電話及びビデオゲーム機までの多種多様な装置から容易に実行することができる。次第に、近年のフラッシュ(登録商標)アプリケーションは分散オブジェクトを用いて、ユーザとサーバーとの間の共用オンライン・コンテキストをユーザに提供しつつある。その結果、バーチャルコミュニティ(仮想共同体)及びオンラインゲーム界では、ユーザは他のユーザの持続的変化に影響を与えることができる。例えば、ユーザは互いに会話し、アイテムを取り引きし、チームを組んで一団となり、そして他の相互作用を行うことができる。これに加えて、フラッシュ(登録商標)プラットフォームへの容易なアクセス性により、ユーザはこれらのオンライン・コミュニティにほとんどどこでも、家庭でも、オフィスでも、インターネットカフェでも、あるいは空港ターミナルでもアクセスすることができる。
しかし、双方向性は、フラッシュ(登録商標)アプリケーションと直接通信することのできる装置に限定される。従って、人間の入力装置は従来のキーボード、コンピュータマウスのようなポインティングデバイス(指示装置)、ウェブカメラ、及びフラッシュ(登録商標)内の直接的なハードウエアサポートを有する他の装置に限定される。これに加えて、フラッシュ(登録商標)アプリケーションからの出力は一般に、フラッシュ(登録商標)アプリケーションを実行するシステム上で再生されるオーディオビジュアル・コンテンツ(音響映像の内容)に限定される。従って、物理的物体の振動、移動のような特徴、及び独立した装置上でのオーディオビジュアルの再生は、フラッシュ(登録商標)アプリケーション内でサポートすることは困難である。
フラッシュ(登録商標)に直接接続可能な周辺装置は従来のアプリケーションに適し得るが、オンラインゲーム及びコミュニティと相互作用するより革新的な方法は、フラッシュ(登録商標)では実現されない新たなハードウェアサポートを必要とし得る。こうした新たなハードウェアはスタンドアロン(独立型)のハードウェアまたはソフトウェアによって容易にサポートすることができるが、ユーザは最小量の技術的な手間をとる解決法(ソリューション)を選ぶであろう。フラッシュ(登録商標)アプリケーションは、インターネット上で便利にアクセスすることができ、フラッシュ(登録商標)環境は一般にプレインストール(予めインストール)されているか多くのシステムにおいて容易に得ることができ、ユーザが専用ゲーム・ハードウェアを用いるか、あるいは追加的ゲーム・ソフトウェアをインストールする手間を回避することを可能にし、このことは、公開コンテキスト内では特に非実用的である。従って、フラッシュ(登録商標)プラットフォームの容易に利用できることのおかげで、ユーザは家庭から、オフィスで、あるいは旅行中に、同じオンライン・アカウントにアクセスすることができる。しかし、フラッシュ(登録商標)プラットフォームは直接的なハードウェア・アクセスのための限られたサポートしか提供せず、ユーザがフラッシュ(登録商標)アプリケーションとやり取りすることのできる方法を限定する。
従って、ユーザが広範囲にわたってアクセス可能なフラッシュ(登録商標)プラットフォームとやり取りして、共用オンライン環境内でのインタラクティブ(対話型)体験を与え、フラッシュ(登録商標)アプリケーション内で直接アクセス可能なハードウェアの現在の制限を打破することによって、現在技術における欠点及び欠陥を克服する必要性が存在する。
(発明の概要)
実質的に図面に示し、及び/または少なくとも1つの図面に関連して説明し、特許請求の範囲により完全に記載するような、分散オブジェクトを有するフラッシュ(登録商標)アプリケーション用の統合ハードウェア・プラットフォームを提供するシステム及び方法が提供される。
本発明の特徴及び利点は、以下の詳細な説明及び図面を検討した後に、当業者にとってより早く明らかになる。
本発明の一実施例による、統合ハードウェア・プラットフォーム環境のブロック図である。 図2aは、本発明の一実施例による、統合ハードウェア・プラットフォーム用のインタフェース生成ワークフローを示すフローチャートである。図2bは、本発明の一実施例による、フラッシュ(登録商標)開発者が利用する統合ハードウェア・プラットフォーム用のフラッシュ(登録商標)開発環境のブロック図である。図2cは、本発明の一実施例による、ハードウェア開発者が利用する統合ハードウェア・プラットフォーム用のハードウェア開発環境のブロック図である。 本発明の一実施例による、分散オブジェクトを有する統合ハードウェア・プラットフォーム環境のブロック図である。 本発明の一実施例によるステップを記述するフローチャートであり、これらのステップによって、統合ハードウェア・プラットフォームが、アプリケーションプログラム・インタフェース(API:Application Program Interface)を介してハードウェア制御を行う。
(実施例の詳細な説明)
本発明は、フラッシュ(登録商標)用の分散オブジェクトを有する統合ハードウェア・プラットフォーム用のシステム及び方法に指向したものである。以下の説明は、本発明の実現に関連する特定情報を含む。本明細書で具体的に説明するのとは異なる方法で本発明を実現することができることは、当業者の認める所である。さらに、本発明の具体的詳細の一部は、本発明をあいまいにしないために説明しない。本明細書で説明しない具体的詳細は、当業者の知識の範囲内である。本願の図面及びそれに付随する詳細な説明は、本発明の好適な実施例に指向したものに過ぎない。簡潔さを保つために、本発明の原理を用いる本発明の他の実施例は、本明細書では具体的に説明せず、図面にも具体的に図示しない。
図1に、本発明の一実施例による統合ハードウェア・プラットフォーム環境のブロック図を示す。環境は、ハードウェア装置110及びホストシステム150を含む。ハードウェア装置110は、外部ハードウェア115、ハードウェアシステム125、ハードウェアAPI131、リモート(遠隔)分散メソッド132、シリアライザ(シリアル化装置)133、ハードウェアアプリケーション135、分散メソッド136、デシリアライザ(逆シリアル化器)137、シリアル接続API139、及びコネクタ142を具えている。外部ハードウェア115は、センサ116、サーボ(機構)117、及びディスプレイ118を含む。ハードウェアシステム125は、環境監視システム126、機械制御システム127、及びプレゼンテーション(提示)システム128を含む。接続145は、ハードウェア装置110のコネクタ142とホストシステム150のレセプタクル152との間のデータ通信をもたらす。ホストシステム150は、レセプタクル152、ホストプロセッサ160、及びホストメモリ170を含む。ホストメモリ170は、セキュリティサービス162、プロキシサーバー163、及びフラッシュ(登録商標)ランタイム(実行時)環境を含む。フラッシュ(登録商標)ランタイム環境174は、アクションスクリプト・ハードウェアAPI171、フラッシュ(登録商標)アプリケーション175、及びフラッシュ(登録商標)バイナリソケットAPI179を含む。アクションスクリプト・ハードウェアAPI171は、シリアライザ173、リモート分散メソッド172、デシリアライザ176、及び分散メソッド177を含む。
それぞれの高位から見れば、環境100は、ホストシステム150が、それに接続されたハードウェア装置110と相互作用することを可能にする。ホストシステム150は、フラッシュ(登録商標)アプリケーション175をホストプロセッサ160によって実行し、ホストシステム150はさらに、ゲームサーバーの分散オンラインサービスによってサポートされるネットワーク・オンラインゲームに接続することができる。ゲームの他に、フラッシュ(登録商標)アプリケーション175は、仮想世界(バーチャルワールド)、業務提携(ビジネス・コラボレーション)、ソーシャルネットワーキング(ネットワーク上の社交)、あるいは電子商取引のような他の種類の分散オンライン・アプリケーションをサポートすることができる。
簡単のため、図1は、単一のホストシステムのみを示し、ゲームサーバーに関する詳細は省略して、以下の図3でより詳細に説明する。さらに、図1は、ホストシステム150に接続された単一のハードウェア装置のみを示すが、代案実施例は、フラッシュ(登録商標)アプリケーションを実行する単一ホストシステム上の多数のハードウェア装置への同時アクセスを可能にする。例えば、フラッシュ(登録商標)アプリケーション175は、複数のハンドル及びペダルのような複数個かつ複数種類のハードウェア装置を、ホストシステム150に接続して、分割スクリーンのビデオで複数のプレーヤ(遊技者)を受け入れることを可能にする。従ってフラッシュ(登録商標)アプリケーション175は、接続されたすべてのハンドル及びペダルを検出して利用することができ、プロキシサーバー163はこれに対応して、フラッシュ(登録商標)アプリケーション175と複数のハードウェア装置との間の通信を適切に経路設定(ルーティング)することができる。これら複数のハードウェア装置の機能をオンラインゲームサーバーと組み合わせて、ハードウェア装置とフラッシュ(登録商標)アプリケーションとの間の多対多の通信を提供して、例えば、参加する複数のホストシステムの各々が、それぞれのホストシステムに接続されたハードウェア装置の数に応じて、1人または何人かのプレーヤを受け入れることもできる。しかし、簡潔な例で説明を進めて読み易さを向上させるために、本明細書は、単一のハードウェア装置をホストシステムに接続した実施例に焦点を当てる。
ハードウェア装置110は、物理的移動、環境監視、二次的なディスプレイまたはスピーカ、及び他のハードウェア能力のような、標準的なフラッシュ(登録商標)プラットフォームが利用可能でない新規の特徴をフラッシュ(登録商標)アプリケーション175に与える。これらの追加的ハードウェアにより、ホストシステム150との相互作用が、フラッシュ(登録商標)ランタイム環境174の元々の能力及び標準的にサポートされたハードウェア能力を超えて拡張される。RMI(Remote Method Invocation:リモート(遠隔)メソッド呼出し)を実現するハードウェアのアプリケーションプログラム・インタフェース(API)131を利用することによって、フラッシュ(登録商標)アプリケーション175は、ハードウェア装置110のハードウェアシステム125を遠隔制御するか、ハードウェア装置110から要求されたデータを提供することができる。同様に、逆方向では、アクションスクリプト(Actionscript)ハードウェアAPIが、ハードウェア装置110がフラッシュ(登録商標)アプリケーション175を遠隔制御するか要求された値を戻すことを可能にする。さらに、図1では省略した分散オブジェクトAPIは、フラッシュ(登録商標)アプリケーションが、ゲームサーバーと通信することによって、他のホストシステムに接続された他のリモート(遠隔)ハードウェア装置とのインタフェースとなることを可能にすることができる。
ホストシステム150は、パーソナルコンピュータ、ビデオゲーム機、携帯電話、またはフラッシュ(登録商標)アプリケーションを実行することのできる他の装置を含むことができる。ホストシステム150は、ウェブブラウザを介してウェブサーバーに事前にアクセスして、インターネットのようなネットワーク上でフラッシュ(登録商標)アプリケーション175をダウンロードすることができる。従って、フラッシュ(登録商標)アプリケーション175は、フラッシュ(登録商標)ランタイム環境内で実行することができ、この環境は、フラッシュプレーヤ(登録商標)のサポートを提供することのできるウェブブラウザのプラグインを含むことができる。
フラッシュ(登録商標)ランタイム環境174は、フラッシュ(登録商標)アプリケーション175を、ホストプロセッサ160が実行可能なマシンコード(機械語)に逐次翻訳することのできる環境を提供する。ショックウェーブフラッシュ(SWF:Shockwave Flash)(登録商標)ファイルは、直接実行することのできるマシンコードには対応せず、意図するプラットフォーム上で実行するためのマシンコードへの翻訳を必要とする中間バイトコードの形式で記憶される。このことは、初めは欠点に見えるかもしれないが、正確には、SWFファイルはマシンコードへの直接的コンパイルによって特定アーキテクチャに結び付かないからであり、Java(登録商標)と同様に、所望の各ターゲット・プラットフォームに適したフラッシュ(登録商標)ランタイム環境を利用することによって、同じSWFファイルを異種のプラットフォーム間で用いることができる。このことは、フラッシュ(登録商標)アプリケーションを多種多様なコンテキスト、プラットフォーム、及び構成上で実行することを可能にするが、インタープリタ(逐次翻訳)のランタイム環境により、いくらかの処理の手間がかかる。ダイナミック・コンパイル及びジャストインタイム(JIT:Just in Time)コンパイルのような技術は、事前コンパイルしたバイナリではなくバイトコードを用いる性能上の不利の多くを軽減することができる。
大部分のユーザにとって、最も使い慣れたフラッシュ(登録商標)ランタイム環境は、インターネットエクスプローラ(登録商標)またはファイヤフォックス(Firefox)(登録商標)のようなウェブブラウザ用のブラウザ・プラグインであり、ウィンドウズ(Windows)(登録商標)またはリナックス(Linux)(登録商標)のような特定プラットフォームまたはアーキテクチャをサポートする。このことは、フラッシュ(登録商標)アプリケーションをウェブブラウザのコンテキスト内で表現することを可能にする。しかし、ブラウザ・プラグインがフラッシュ(登録商標)を表現する唯一の方法ではない。例えば、アドビ・インテグレーテッド・ランタイム(Adobe Integrated Runtime)(登録商標)またはアドビAIR(登録商標)は、フラッシュ(登録商標)をサポートするクロスプラットフォーム・ランタイム環境を提供するが、ウェブブラウザで実行されるアプリケーションではなく、ローカル(自機内)にインストールされるデスクトップ・アプリケーション適応している。従って、アドビAIR環境は、ローカルかつオフラインのデータ記憶装置のようなローカルにインストールされたデスクトップ・アプリケーションにとって共通に利用可能な追加的特徴を提供することができる。フラッシュ(登録商標)ランタイム環境174が、ブラウザ・プラグインとして実行されても、アドビAIRとしてローカルにインストールされても、あるいは何らかの代わりのアプリケーション・パラダイムを表現しても、フラッシュ(登録商標)アプリケーション175をサポートすることができる。
ハードウェア装置110は接続145を介してホストシステム150にリンク可能であり、接続145は、コネクタ142及びレセプタクル152に物理的にリンクする例えばユニバーサル・シリアルバス(USB:Universal Serial Bus)で構成することができる。本実施例では、プロキシサーバー163は、フラッシュ(登録商標)バイナリソケットAPI179が使用するバイナリソケット通信とシリアル接続API139が使用するUSBシリアル接続との間のシームレスな変換をするメカニズムを含むことができる。
USBは、ハードウェア装置の接続用のプロトコルの一例に過ぎず、代案実施例は、例えばファイヤワイヤ(Firewire)(登録商標)コネクタ、あるいはブルートゥース(Bluetooth)(登録商標)またはWifi(登録商標)のようなプロトコルを用いた無線伝送を使用することができる。接続145がUSBまたはファイヤワイヤのような物理的ケーブルで構成される場合は、接続145はホストシステム150から電力を取り出して、ハードウェア装置110の構成要素を動作させることができる。無線通信の場合は、コネクタ142及びレセプタクル152は無線受信機及び無線送信機に置き換えることができ、接続145は無線信号を表すことができ、電力は、充電可能な内蔵バッテリによって、ドッキング・ステーションまたは他の何らかの方法で供給することができる。有線及び無線接続を共に設けて、有線接続でバッテリを充電することもできる。プロキシサーバー163及びシリアル接続API139は、フラッシュ(登録商標)アプリケーション175及びハードウェアアプリケーション135とは別にモジュール化されているので、新たな接続プロトコルのサポートを容易に実現することができる、というのは、アプリケーションは接続プロトコルと直接インタフェース接続しないからである。
一旦、ハードウェア装置110が電力を供給されると、ハードウェアアプリケーション135は、ハードウェアAPIを介してハードウェアシステム125を、監視システム126、機械制御システム127、プレゼンテーションシステム128を含めて操作することができる。用意した周辺ハードウェアシステムは好例に過ぎない、というのは、任意のハードウェアをハードウェア装置110に追加することができるからである。環境監視システム126は、触覚でのやり取り、オーディオフィードバック、及びビデオフィードバックのような、外部環境に関する種々の詳細を提供することができ、触覚センサ、マイクロホン、及びビデオカメラによってサポートすることができる。機械制御システム127は、サーボ、ギア(歯車)、モータ、及び他の機械装置を制御することによって、ハードウェア装置110の移動を行うことができる。プレゼンテーションシステム128は、LEDスクリーン、スピーカ、及びLEDライトのような種々のオーディオビジュアル要素を制御することができる。外部ハードウェア115は、ハードウェアシステム125をサポートするための実際のハードウェアを提供し、これらは監視用のセンサ116、移動用のサーボ117、及び画像表示用のディスプレイ118を含む。
ハードウェア装置110は、リモート分散メソッド132及び分散メソッド136も含んで、RMIシステムのハードウェア装置側を形成する。従って、ハードウェアアプリケーション135は、ハードウェアAPI131を用いて、分散メソッド136に従ってハードウェアシステム125を制御するか、あるいは、リモート分散メソッド132を送信して、フラッシュ(登録商標)アプリケーション175からのサービスを要求することができる。同様に、フラッシュ(登録商標)アプリケーション175は、アクションスクリプト・ハードウェアAPIを用いてリモート分散メソッド172を起動するか分散メソッド176を受信して、RMIシステムのフラッシュ(登録商標)側を形成することができる。シリアライザ133及びデシリアライザ137は、マーシャリング(ビット並べ替え)及びデマーシャリング(逆並べ替え)、参照解決、及び他の操作のような、ハードウェア装置110にとって必要であり得る種々のオブジェクトデータ変換を実行する。ポータブル(可搬の)データストリームが生じ、このデータストリームは、異なるアーキテクチャまたは環境のリモート位置でも、意味的に同一にすることができる。例えば、対応するシリアライザ173及びデシリアライザ177は、ホストシステム150が根本的に異なるアーキテクチャ上で実行されても、ホストシステム150がオブジェクトデータをハードウェア装置110とシームレスに通信することを可能にする。
フラッシュ(登録商標)アプリケーション175は、ハードウェアシステム125を直接制御しようとするのではなく、リモートメソッドを用いてハードウェアシステム125を駆動することによって、より適時(タイムリー)かつ正確なハードウェア制御を達成することができる。このことは特に、ハードウェアシステム125を効果的に、あるいはとにかく動作させるために、厳格なタイミング許容誤差で駆動する必要がある場合である。例えば、サーボ117は、2、3マイクロ秒だけの周期のパルス信号が期待されるパルス幅変調によって駆動することができる。組込みプロセッサ120は、そのすべてのリソース(資源)を、ハードウェアアプリケーション135だけにサービス提供するために専用することができ、ハードウェアアプリケーション135が適切に開発されていれば、ハードウェアアプリケーション135は保証された適時のパルス信号発生をサポートすることができる。
しかし、フラッシュ(登録商標)アプリケーション175は、プロセススケジューラを用いて実行中のすべてのタスクにサービス提供することによって、いくつかの異なるアプリケーションを同時に受け入れることのできるウィンドウズ(登録商標)のような汎用マルチタスク・ホストプラットフォーム上で実行することができる。従って、フラッシュ(登録商標)アプリケーション175は、ホストプロセッサ160のアテンションのために、他のタスクと共に完了する必要があり得る。こうしたものとして、リアルタイム・サービスを必要とするハードウェア装置110上のタスクは、保証されたリソースを受けないことができる、というのは、ハードウェア割込みまたは他のソフトウェア処理がホストプロセッサ160を先取りし得るからである。時間に厳密なタスクにサービス提供するのに十分なリソースがホストシステム150上で利用可能な場合でも、フラッシュ(登録商標)アプリケーション175からハードウェアシステム125にコマンドを送信するプロトコル・オーバヘッドにより、いくらかのレイテンシ(待ち時間)が導入され得る。このレイテンシ期間中に、ハードウェア制御用の厳密な時間窓が既に経過し切っていることがある。
他方では、組込みプロセッサによって行われるもののような専用のホスト外計算は、きめ細かいハードウェア制御のためのリアルタイム応答性を提供することができる。ハードウェアアプリケーション135を開発する間に、ハードウェア装置110内の組込みプロセッサの能力に合わせてメソッドを最適化して、ハードウェアシステム125及び対応する外部ハードウェア115を、組込みプロセッサが提供する限られたCPUサイクル内で有効に駆動することができる。組込みプロセッサは、汎用プロセッサが行うように他のアプリケーションをサポートする必要がないので、メソッド実行時間を測定し、外部ハードウェア115に要求される時間許容誤差内に最適化することができる。従って、ハードウェアアプリケーション135によってサポートされるリモートメソッドは、正確かつ有効なハードウェア制御の適時性を保証することができる。
フラッシュ(登録商標)アプリケーション175がリモートメソッドを起動してハードウェアシステム125を制御する前に、ハードウェア装置110用の分散オブジェクトへの参照をまず行わなければならず、この参照は例えば、通信ハンドシェイク手順の終わりに情報交換するか、ネームディレクトリサービスを参照することによって検索することができる。一旦、分散オブジェクトを検索すると、分散オブジェクトは、図1にリモート分散メソッド172として示す、フラッシュ(登録商標)アプリケーション175が起動することのできるリモートメソッドのインタフェースを顕在化または提供する。これらのリモートメソッドは、例えば、環境監視システム126がセンサ116によって温度を取得すること、機械制御システム127がサーボ117によってオブジェクトを移動させること、及びプレゼンテーションシステム128が画像をディスプレイ118上に表示することを可能にする。
従って、フラッシュ(登録商標)アプリケーション175の開発者は、ハードウェア装置110の詳細動作に関心を持つ必要はなく、アクションスクリプト・ハードウェアAPI171が顕在化させたリモートメソッドを単純に起動することができ、これらのリモートメソッドは、例えばハードウェア装置110におけるマシンコードによって実現される。同様に、ハードウェア装置110が、フラッシュ(登録商標)アプリケーション175からの特定情報または実行すべきタスクを必要とする場合は、ハードウェア装置110の開発者は、フラッシュ(登録商標)アプリケーション175の命令を理解しなければならないのではなく、リモート分散メソッド132を使用することができる。このモジュール式開発の技術を用いることによって、ワークフロー(作業の流れ)をセグメント化して独立して開発し、発売スケジュールを加速して開発コストを抑制することができる。
図1は、リモート実行用のRMIの方法に適応したオブジェクトを採用しているが、手続き的なリモート・プロシージャ・コール(RPC:Remote Procedure Call:リモート(遠隔)手続き呼出し)、あるいはリモート実行を提供する他の方法も利用することができる。ロード可能なクラスを動的にサポートするRMIシステムのような、図1に示すものよりもフレキシブルなRMIの方法も実現することができる。現在、オブジェクト参照のみを通り越し、APIの実現はリモート位置に存在するものと仮定する。動的にロード可能なクラスは、ハードウェアAPIを容易に更新することを可能にする、というのは、APIの実現は、更新された方法で、オンデマンドで(要求に応じて)取得することができるからである。
しかし、組込みプロセッサ120は、コスト及び電力の考慮により計算リソースを制約し得るので、複雑なRMIシステムは望ましくない。ハードウェア装置110上で実行されるメソッドは一般に周知かつ不変である、というのは、ハードウェアシステム125は、エンドユーザによるハードウェアシステムのモジュール交換をサポートしていないことが多く、従って、製造中に含められる特定ハードウェアシステムに合わせた、ハードウェア装置110用の埋込み型静的ハードウェアAPIを構築することが意味をなし得る。しかし、静的ハードウェアAPIを再書き込み可能なメモリ部分に記憶して、バグ修正または追加的方法をハードウェアシステム125用に開発する場合に、ハードウェアAPIをさらに更新可能にすることができる。
フラッシュ(登録商標)ランタイム環境174は、伝送制御プロトコル/インターネット・プロトコル(TCP/IP:Transmission Control Protocol/Internet Protocol)スタックのようなホストシステム150のネットワークスタックを通して通信を経路設定することができる。フラッシュ(登録商標)アプリケーション175は、フラッシュ(登録商標)ランタイム環境174内で元々サポートされるハードウェアのみを直接アドレス指定することができるので、フラッシュ(登録商標)アプリケーション175は、ハードウェア装置110と直接通信する代わりにネットワーク通信を利用することができる、というのは、ネットワーク通信は元々、フラッシュ(登録商標)ランタイム環境内でサポートされているからである。
しかし、ハードウェア装置110は、ネットワークではなくUSBによってホストシステム150に接続されているので、プロキシサーバー163は、フラッシュ(登録商標)アプリケーション175とハードウェア装置110との間のルーティング(経路設定)サービス変換を提供する。プロキシサーバー163は、ローカルホスト・サービスとして実行中にして、特定ネットワークポートを通って進む通信を傍受することができる。接続145を確立した後の、ハードウェア装置110とホストシステム150との間の初期ハンドシェーク・シーケンスは、ハードウェア装置110からホストメモリ170にコピーされたセキュリティサービス162及びプロキシサーバー163を生じさせて、これらはさらに、ホストプロセッサ160によって実行することができる。そして、フラッシュ(登録商標)バイナリソケットAPI179は、指定したネットワークポート上でローカルホストと通信することができ、プロキシサーバー163は、バイナリソケットデータとシリアルデータとの間の変換をシームレスに処理することができる。従って、プロキシサーバー163は、フラッシュ(登録商標)が元々サポートするネットワーク通信能力を利用することによって、ハードウェア装置110とフラッシュ(登録商標)アプリケーション163との間の通信(コミュニケーション)ギャップを埋めることができる。
フラッシュ(登録商標)アプリケーション175がデータを、任意位置に送信し任意位置から受信することを可能にすることは、特にDNSリバインディング(rebinding)攻撃についての潜在的なセキュリティ(安全性)問題を生じさせ得る。従って、フラッシュ(登録商標)のより新しいバージョンでは、種々のセキュリティプロトコルが実現されている。特に関心のあるものはソケットポリシーファイルであり、これらは、ソケット接続用に許容可能なネットワークポート及びホストを支配する規則のリストを提示する。従ってソケットポリシーファイルは、サーバーが特定ホストまたはポートからのアクセスを拒否することを可能にするが、フラッシュ(登録商標)クライアントはまず、これらを意識しなければならない。
従って、フラッシュ(登録商標)ランタイム環境174は、フラッシュ(登録商標)バイナリソケットAPI179が要求されたネットワークポート上でサーバー・デスティネーションと通信することを可能にする前に、ソケットマスターポリシーファイルの要求を、デフォルトポート843上で同じサーバー・デスティネーションのIPアドレスに対して自動発行する。この要求は、サーバー・デスティネーションが要求中のホストと同じドメイン上にある場合でも送信される。あるいはまた、フラッシュ(登録商標)バイナリソケットAPI179は、代わりのポートを明示的に指定して、セキュリティポリシーを要求することができる。サーバー・デスティネーションがタイムアウト期間内に応答を与えないか、返送されたソケットポリシーファイルが、ホスト150または要求されたネットワークポートからのアクセスを拒否する場合は、フラッシュ(登録商標)ランタイム環境174はサーバー・デスティネーションとのソケット通信を拒否し、フラッシュ(登録商標)バイナリソケットAPI179は元の要求に対するエラーコードを返送することができる。
セキュリティサービス162は、適切にフォーマットしたセキュリティポリシーをソケットポリシーファイルの形式で提供することによって、上述したフラッシュ(登録商標)のセキュリティ機能を満たし、プロキシサーバー163がホストシステム150からのネットワークポート上でのアクセスを用いることを可能にする。従って、フラッシュ(登録商標)ランタイム環境174は、サーバー・デスティネーションまたはホスト150と通信することの与えられた許可である、というのは、ローカルホストは、プロキシサーバー163がサービス提供するポート上での識別基準であるからである。これらの許可は、ホストシステム150とハードウェア装置110との間の相互通信を可能にする最小量の特権に過ぎず、セキュリティサービス162は、例えば、任意のホスト及び任意のポートからのアクセスを可能にするより拡張的なソケットポリシーファイルを返送することができる。
ソケットポリシーファイルは、ソケット通信の許可を指定するのに対し、ソケット・メタポリシーは、ソケットポリシーファイル自体にアクセスすることの許可を指定する。ソケット・メタポリシーは、デフォルトポート843からサービス提供されるマスターソケットポリシーファイル内のみで定義することができる。しかし、デフォルト・メタポリシーは、サーバー・デスティネーション上の任意の位置にある任意のポートからのソケットポリシーファイルへのアクセスを可能にするので、一般に、メタポリシーを指定する必要はない、というのは、「全部」の設定がデフォルトであるからである。さらに、デフォルトのソケット・メタポリシーは、フラッシュ(登録商標)の将来バージョンについても「全部」のままであるものと期待される。
セキュリティサービス162及びプロキシサーバー163が、フラッシュ(登録商標)アプリケーション175がハードウェア装置110と通信することを可能にする間は、これらは、こうした通信サービスを提供するために、ホストプロセッサ160によって実行中である必要がある。従来のローカルにインストールされたソフトウェアは、ローカルサービスまたは特殊なドライバをインストールすることによって、このことをかなり自明に達成することができるが、フラッシュ(登録商標)アプリケーションの関係では、その状況はより自明でないことがある。
1つの可能性は、接続145の確立時にハンドシェイク手順を用いることであり、このことはセキュリティサービス162及びプロキシサーバー163の実行を開始する。このハンドシェイク手順は、例えば、一般的なHID(Human Interface Device:ヒューマンインタフェース装置)のような提示(プレゼンテーション)ハードウェア装置110に頼ることができ、これにより、ホストシステム150は特殊なドライバなしにハードウェア装置110を自動的にサポートすることができ、フラッシュ(登録商標)アプリケーション175は、単にハードウェア装置110の存在をポーリングして、ハンドシェイク手順を開始することができる。このようにして、ユーザは、複雑なソフトウェアまたはドライバのインストールなしに、単にハードウェア装置110を接続して即座に使用することができる。他の実施例は、例えば、Autorun for Windows(オートラン・フォー・ウィンドウズ)(登録商標)のような自動実行メカニズム、あるいはJava(登録商標)またはActiveX(アクティブX)(登録商標)のようなダウンロード可能なドライバ・プラグインを使用することができる。しかし、ユーザがナビゲートしなければならない種々のセキュリティ警告及びプロンプト(入力促進記号)により、ホストシステム150が自動的にサポートする一般に認められたインタフェースを使用する実施例の方が好ましいことがある、というのは、こうしたインタフェースは一般にユーザの介在なしに動作することができるからである。将来のホスト・プラットフォームは、信頼できるコンピューティング(電子計算)を提供して、合法的な発行者からの信頼できるコードの自動実行を許可して、場合によっては、よりフレキシブルかつ洗練されたシステムを提供することができる。
本発明の目的のために、ハンドシェイク手順は、セキュリティサービス162及びプロキシサーバー163のホストプロセッサ160上での実行を開始するように実現することができるものと仮定する。フィードバックとして、ハードウェア装置110の自動サポートにおける種々の試行に失敗した場合に、手動(マニュアル)のソフトウェア・インストレーションガイドまたはソフトウェア・ダウンロードをエンドユーザに提供することができる。一旦、ドライバまたはソフトウェアを手動でインストールすると、このドライバまたはソフトウェアは、ホストシステム150の起動時に自動実行されるように構成して、手動インストールの手間の一部を軽減することができる、というのは、ユーザは手順を1回だけ完了すればよいからである。
図2aに移れば、図2aは、本発明の一実施例による、統合ハードウェア・プラットフォーム用のインタフェース生成ワークフローを示すフローチャートを提示する。フローチャート200は、API規約(コントラクト)ファイル290、RMIインタフェース生成器293、フラッシュ(登録商標)バイナリソケットAPI279、アクションスクリプト・ハードウェアAPI231、C/C++シリアル接続API239、シリアライザ233、デシリアライザ237、ハードウェアAPI231、リモート分散メソッド232、及び分散メソッド236を含む。APIコントラクトファイル290は、ハードウェアAPI定義291及びフラッシュ(登録商標)API定義292を含む。RMIインタフェース生成器293は、フラッシュ(登録商標)・アクションスクリプト・インタフェースビルダー(インタフェース構成器)294及びハードウェアC/C++インタフェースビルダー295を含む。アクションスクリプト・ハードウェアAPI271は、シリアライザ273、デシリアライザ277、リモート分散メソッド272、及び分散メソッド276を含む。
アクションスクリプト・ハードウェアAPI271は、図1のアクションスクリプト・ハードウェアAPI171に相当し、シリアライザ173に相当するシリアライザ273、デシリアライザ177に相当するデシリアライザ277、リモート分散メソッド172に相当するリモート分散メソッド272、及び分散メソッド176に相当する分散メソッド276を含む。フラッシュ(登録商標)バイナリソケットAPI279は、フラッシュ(登録商標)バイナリソケットAPI179に相当する。C/C++シリアル接続API239は、シリアル接続API139に相当する。シリアライザ233はシリアライザ133に相当する。デシリアライザ237はデシリアライザ137に相当する。ハードウェアAPI231はハードウェアAPI131に相当する。リモート分散メソッド232はリモート分散メソッド132に相当する。分散メソッド236は分散メソッド136に相当する。
図1に記載のように、RMIの方法をリモート実行に用いることの開発利益の一部は、フローチャート200に見ることができる。実装コードを書き込む前に、API規約ファイルを、フラッシュ(登録商標)のリモートメソッドまたはフラッシュ(登録商標)API定義292、及びハードウェア・リモートメソッドまたはハードウェアAPI定義291が働く方法について共に同意した規格と共に予め用意することができる。API規約ファイル290をRMIインタフェース生成器293によって処理すること、及び開発作業中(WIP:Work in Progress)のAPIメソッドを置き換えるべくエミュレートするテストシステムの開発の結果により、開発チームはフラッシュ(登録商標)アクションスクリプトまたはハードウェアC/C++を、他の開発チームの進行を待つか進行に頼ることなしに独立して開発することができる。開発者が、API規約ファイル290によって予め定められた仕様に従う限り、独立して開発されたコードを後に統合することは、何の問題もなくシームレスに進むはずである。さらに、RMIインタフェース生成器293が、RMIサポート及びネットワークまたはシリアルバス通信の詳細を処理するAPIモジュールを生成することを可能にすることによって、これらのAPIモジュールを手作業でコーディングすることに起因する人間のプログラミングエラー(プログラムの誤り)を回避することができ、開発者は自分の注意力を、主要なフラッシュ(登録商標)またはC/C++アプリケーションに集中させることができる。
モジュール化の増加、及びAPI規約ファイル290から生じるプログラムコードの抽象化も、より解読、開発、デバッグ、及び保守し易いより高レベルのプログラミングスタイルも促進して、長期的には開発時間及びコストを低減する。大量に組み込まれた低レベルプログラミング及び冗長コードを伴うアドホックな(臨機応変の)プログラミングスタイルは、より速い初期開発時間を提供することができ、オンラインゲームのようなどの中規模のプロジェクトにとっても、コード保守がにわかに、コードが論理モジュール化されない不利益になることがあるのに対し、API規約ファイル290によって提供される明確に規定されたAPIは、論理モジュール化及びコード再利用を促進することができる。
RMIインタフェース生成器293を調べれば、フラッシュ(登録商標)アクションスクリプト・インタフェースビルダー294及びハードウェアC/C++インタフェースビルダー295は、図1で既に見た種々のAPIモジュールを生成する。RMIインタフェース生成器293は、一般的に記述されたAPI定義をAPI規約ファイル290から取得し、これらのAPI定義を、特定ターゲット・プラットフォーム用のコード、あるいは図2aの場合はフラッシュ(登録商標)及びC/C++で記述されたAPIモジュールに変換する。RMIインタフェース生成器293は、インタフェースビルダーを置き換えることによって他のターゲット・プラットフォーム用に生成するように構成することもできるが、C/C++が、低レベルシステムのプログラミング用に一般に使用されるプログラミング言語であり、テスト・ハードウェア装置210用のマシンコードを生成するのによく適していることが多い。カスタムRMIインタフェース生成器293を内部で開発することができ、あるいは、API規約ファイル290は、既存のインタフェース記述言語を用いて表現することができ、既存のクロス・プラットフォームRMIインタフェース生成器293を用いて開発を加速することができる。
図2bを見れば、図2bは、本発明の一実施例による、フラッシュ(登録商標)開発者が利用する統合ハードウェア・プラットフォーム用のフラッシュ(登録商標)開発環境のブロック図を提示する。図2bは、テスト・ホストシステム250を含み、テスト・ホストシステム250は、WIP(開発作業中)のフラッシュ(登録商標)アプリケーション275、アクションスクリプト・ハードウェアAPI271、フラッシュ(登録商標)バイナリソケットAPI279、及びハードウェア装置エミュレータ296を含む。テスト・ホストシステム250は、図1のホストシステム150の簡略化版に相当し得る。
フラッシュ(登録商標)バイナリソケットAPI279及びアクションスクリプト・ハードウェアAPI271は空白で示して、これらのAPIモジュールはRMIインタフェース生成器293によって既に生成され、開発者からのさらなる働きかけを必要としないことを強調する。従って、フラッシュ(登録商標)開発チームは、WIPのフラッシュ(登録商標)アプリケーション275、あるいは、WIPのフラッシュ(登録商標)アプリケーション275が、分散メソッド276の実現を含むクライアント側でサポートするオンラインゲームに開発を集中させることができる。
別個のチームがハードウェア装置を開発中であることができるので、ハードウェア装置エミュレータ296を、開発目的での代役として代用する。ハードウェア装置エミュレータ296は、ハードウェア装置を必ずしも正確にエミュレートする必要はない。例えば、ハードウェア装置エミュレータ296は、所定のテスト値を戻すメソッドを実現することができ、あるいは、利用可能な開発リソース、製品スケジュール、及び他の開発チームからの前進次第では、実際のハードウェア装置の応答をより近く模擬することができる。開発作業中(WIP)のハードウェア装置を、ハードウェア装置エミュレータ296aに指向した未開発のリモートメソッド、及びWIPのハードウェアに指向した開発済みのリモートメソッドと共に用いることもできる。
同様の筋で、別個のネットワーク及びサーバーチームが、プロジェクトの分散した対象部分を開発することができる。従って、テスト・ホストシステム250は、オンラインゲーム用のサーバー・エミュレータを用いることによって、動作中のネットワーク・インフラストラクチャがなくても、ネットワーク相互運用性についてテストすることができる。逆に、こうしたネットワーク・インフラストラクチャが存在する場合は、テスト・ホストシステム250は、実際のネットワーク接続されたハードウェアに対してテストすることができる。こうしたテストが発生する場合は、一般人が図2bのテスト構成要素にアクセスしようとすることを防ぐために、いくらかの注意を払う必要がある。例えば、パブリック(一般人からの)アクセスを阻止するファイヤウォールをテスト構成要素用にインストールするか、あるいはローカルネットワークを公衆インターネットから隔離することができる。
図2cに移れば、図2cは、本発明の一実施例による、ハードウェア装置開発者が利用するハードウェア開発環境のブロック図を提示する。図2はテスト・ハードウェア装置210を含み、テスト・ハードウェア装置210は、ハードウェアAPI231、プロトタイプ(試作品、原型)のハードウェアシステム225、WIPのハードウェアアプリケーション235、リモート分散メソッド232、シリアライザ233、分散メソッド236、デシリアライザ237、C/C++シリアル接続API239、及びホストシステム・エミュレータ297を含む。テスト・ハードウェア装置210は、図1のハードウェア装置110の簡略化版に相当する。プロトタイプのハードウェアシステム225は、ハードウェアシステム125に相当し得る。
図2bと同様に、いくつかのAPI要素は空白で示して、これらの要素がRMIインタフェース生成器293によって既に用意され、これらの要素は、ハードウェアAPI231、リモート分散メソッド232、シリアライザ233、分散メソッド236、デシリアライザ237、及びC/C++シリアル接続API239を含む。従って、ハードウェア開発チームは、WIPのハードウェアアプリケーション235、あるいは、プロトタイプのハードウェアシステム225とのインタフェースとなる主要なハードウェア制御プログラム、及び分散メソッド236の実現に開発を集中させることができる。
別個のフラッシュ(登録商標)開発チームがフラッシュ(登録商標)アプリケーションを開発中であることができるので、開発目的で、ホストシステム・エミュレータ297を、フラッシュ(登録商標)アプリケーションを実行するホストシステムとして代用することができる。図2bのハードウェア装置エミュレータ296と同様に、ホストシステム・エミュレータ297は、フラッシュ(登録商標)アプリケーションを実行するホストシステムを必ずしも正確にエミュレートする必要はない。例えば、ホストシステム・エミュレータ297は、所定のテスト値を戻すメソッドを実現することができるか、利用可能な開発資源、製品スケジュール、及び他の開発チームからの前進次第では、実際のフラッシュ(登録商標)アプリケーションの応答をより近く模擬することができる。テスト・ホストシステム上で開発作業中(WIP)のフラッシュ(登録商標)アプリケーションを、ホストシステム・エミュレータ297に指向した未開発のリモートメソッド、及びWIPのフラッシュ(登録商標)アプリケーションに指向した開発済みのリモートメソッドと共に用いることができる。
同様に、プロトタイプのハードウェアシステム225の開発は、ハードウェアシステムを駆動するためのソフトウェアの開発と分離することができる。集積回路兼電気技術チームが、プロトタイプのハードウェアシステム225に独立して取り組む間に、組込みシステムのプログラミングチームは、テスト・ハードウェア装置210を駆動するソフトウェアに取り組むことができ、両チームは、プロトタイプのハードウェアシステム225がハードウェアAPI231を介してWIPのハードウェアアプリケーション235とのインタフェースをとる方法のプロトコルについて事前に合意している。
従って、論理インタフェースを分離し、欠落しているか開発中の構成要素をエミュレートし、図2aのRMIインタフェース生成器293のような自動前処理ツールを利用することによって、独立した並行開発を、API規約ファイル290のような少しの事前計画を伴うだけで進めることができる。独立して開発した開発作業中の構成要素を定期的に再統合して相互運用性をテストすることによって、インタフェースの修正または実装の変更が必要になり得るあらゆる問題が大問題になる十分前に、これらの問題に応えることができる。従って、モジュール式のプログラミング方法の利点を、一体化した方法におけるテストの利点を犠牲にすることなしに保つことができる。
図3に、本発明の一実施例による、分散オブジェクトを有する統合ハードウェア・プラットフォームのブロック図を提示する。分散環境300は、ハードウェア装置310a、ハードウェア装置310b、ハードウェア装置310c、及びゲームサーバー385を含む。ハードウェア装置310aは、シリアルAPI339、ハードウェアアプリケーション335a、環境監視システム326a、プレゼンテーションシステム328a、タッチセンサ「猫の毛(cat fur)」316a、及びスピーカ318aを含む。ハードウェア装置310bは、シリアルAPI339、ハードウェアアプリケーション335b、環境監視システム326b、機械制御システム327b、タッチセンサ「犬の毛(dog fur)」316b、及びサーボ317bを含む。ハードウェア装置310は、シリアルAPI339、ハードウェアアプリケーション335c、環境監視システム326c、プレゼンテーションシステム328c、マイクロホン316c、及びスピーカ318cを含む。ハードウェア装置310bは、シリアルAPI339、ハードウェアアプリケーション335b、環境監視システム326b、機械制御システム327b、タッチセンサ「犬の毛」316b、及びサーボ317bを含む。ホストシステム350a〜350cの各々は、分散オブジェクトAPI389、フラッシュ(登録商標)アプリケーション375、フラッシュ(登録商標)バイナリソケットAPI379、及びプロキシサーバー363を含む。接続345a〜345cは、ホストシステム350a〜350cを、それぞれハードウェア装置310a〜310cに接続する。
各ホストシステムは、同じアプリケーションコードを含むが、ホストシステム毎に独立したホストプロセッサ(図3では省略)は、このアプリケーションコードを別個に実行する。図1と同様に、各ホストのクライアントは、このアプリケーションコードをウェブサーバーから既にダウンロードしている。各ハードウェア装置は、各ハードウェア装置の特定のハードウェア構成用に特別にカスタマイズしたハードウェアアプリケーションも含み、各ハードウェアアプリケーションは、組込みプロセッサ(図3では省略)上で実行される。図3では、RMIを実現するための詳細、分散システムの例をより簡潔でわかりやすい図で提示することのような、他のいくつかの詳細も省略している。追加的詳細については必要であれば、図1及び図2を参照することができる。
ハードウェア装置310a〜310cの各々は、図1のハードウェア装置110に相当する。シリアルAPI339はシリアルAPI139に相当する。ハードウェアアプリケーション335a〜335cの各々は、ハードウェアアプリケーション135に相当する。環境監視システム326a〜326cの各々は、環境監視システム126に相当する。機械制御システム327bは、機械制御システム127に相当する。プレゼンテーションシステム328a及びプレゼンテーションシステム328cの各々は、プレゼンテーションシステム128に相当する。ホストシステム350a〜350cの各々は、ホストシステム150に相当する。フラッシュ(登録商標)アプリケーション375は、フラッシュ(登録商標)アプリケーション175に相当する。フラッシュ(登録商標)バイナリソケットAPI379は、フラッシュ(登録商標)バイナリソケットAPI179に相当する。プロキシサーバー363は、プロキシサーバー163に相当する。
ゲームサーバー385は潜在的に、いくつかのホストシステムに接続して、分散オンラインサービス386を介した共用オンライン環境をサポートすることができる。例えば、ゲームサーバー385は、フラッシュ(登録商標)アプリケーション375上でユーザを擬人化した動物によって表現するオンラインワールド(オンラインの世界)を主宰することができる。各ホストシステムのユーザは、オンラインで役を演じたい動物を表現するハードウェア装置を購入することができる。従って、ホストシステム350aのユーザは猫形のハードウェア装置をハードウェア装置310aとして購入することができるのに対し、ホストシステム350bのユーザは犬形のハードウェア装置をハードウェア装置310bとして購入することができ、そしてホストシステム350cのユーザは鳥形のハードウェア装置をハードウェア装置310cとして購入することができ、これらを図3にアイコンで示す。従って、各ホストシステムは、それぞれのハードウェア装置に質問して、リモートメソッドを実行するためのデータオブジェクトを読み出し、これらのデータオブジェクトをネットワーク380上でゲームサーバー385に送信することができる。従って、分散オンラインサービス386は、接続された各ホストシステムを監視及び管理して、ホストシステムが、分散オブジェクトAPI389を通して、他のホストシステムに接続されたハードウェア装置にアクセスすることを可能にする。
各ハードウェア装置の外見は変化し得るが、その内部構成要素はすべて、図1のハードウェア装置110に似ており、ハードウェア能力は幾分異なる。各プラットフォームは、環境監視システムを備えるが、これらの環境監視システムは異なるハードウェアに接続されている。環境監視システム311aについては、ハードウェア・アクセスは、センサ「猫の毛」316aに触れて行われる。このセンサは、なでること、及び他の接触の働きかけを検出するように構成された猫毛の人工皮を具えることができる。従って、ホストシステム350aのユーザは、タッチセンサ「猫の毛」をなで、このタッチセンサは、環境監視システム311aに送信されるハードウェア信号を発生し、この信号は、必要であれば、ハードウェアアプリケーション335aに渡されてさらに処理される。同様の方法で、タッチセンサ「犬の毛」316bは同じ機能を提供することができ、そしてマイクロホン316cは代わりに、触覚の働きかけを検出するのではなく、ホストシステム350cの所にいるユーザの発声を録音することができる。
各ハードウェア装置は、動物が働きかけに「反応」することを可能にするためのいくつかのハードウェアシステムも含む。スピーカ318aにアクセスするプレゼンテーションシステム328aは、例えば猫の鳴き声を模擬(シミュレート)することができる。このことは、タッチセンサ「猫の毛」316aがなでられたことに対する応答としてトリガすることができる。サーボ317bを制御する機械制御システム327bは、人工の犬の尾の振りを開始することができ、これもタッチセンサ「犬の毛」316bをなでることに応答してトリガされる。プレゼンテーションシステム328cは、マイクロホン316cからピッチを上げた(声を高くした)音声サンプルを取り出して、ホストシステム350cの所にいるユーザの話し言葉を真似する。
これらの種類の対話型玩具は、玩具店の陳列棚上で既に入手可能であるが、フラッシュ(登録商標)アプリケーション375及びゲームサーバー385は、これらの玩具を使用するための便利な共用オンライン・コンテキストを提供する。例えば、一旦、ユーザがハードウェア装置をそれぞれのホストシステムに接続すると、フラッシュ(登録商標)アプリケーション375は動物の種類を検出して、この動物のアバター(化身)を、ホストシステムに接続されたディスプレイ上に画像表示する。さらに、フラッシュ(登録商標)アプリケーション375が分散オブジェクトAPIとのインタフェースをとる際に、ユーザは自分のアバターだけでなく、ネットワーク380を介してゲームサーバー385に接続された他のホストシステムのアバターも見ることができる。従って、図3の各ホストシステムのユーザ全員が、猫、犬、及び鳥を、それぞれのディスプレイ上で同時に見ることができる。
分散オブジェクトAPI389を利用することによって、フラッシュ(登録商標)アプリケーション375は、分散したユーザの、動物のアバター及び関連するハードウェア装置との相互作用をサポートすることができる。例えば、ホストシステム350bの所にいるユーザが自分の犬のアバターを、ホストシステム350aに関連する猫のアバターに対して吠えるように仕向けることができる。従って、フラッシュ(登録商標)アプリケーション375は、ハードウェア装置310bが提供するリモートの「吠える」メソッドを起動することができる。そして、ハードウェアアプリケーション335bは、起動されたオブジェクトが指示する関連するローカルメソッド、あるいは「吠える」メソッドを実行することができる。このことは例えば、機械制御システム327bにコマンドを送信して、サーボ317bによって、ハードウェア装置310bの外部の「ジョーズ」を動かす。ハードウェア装置310b(図3には図示せず)を利用して、可聴の吠える声を、スピーカを通して生成することもできる。
これまでは、本実施例のすべての効果は、ローカル・コンテキスト、あるいは単一のホストシステム及び単一のハードウェア装置に限られてきた。しかし、ハードウェア装置310bのユーザ、またはホストシステム350aに関連するユーザが、猫のアバターに向かって吠えるように仕向けたことを思い出してほしい。従って、ホストシステム350bは、この吠える動作を、分散オブジェクトAPI389を介してゲームサーバー385の分散オンラインサービス386に知らせることができる。分散オンラインサービス386は、ユーザアカウント・データベースを参照して、猫のアバターに関連するホストシステムを特定する。そして、分散オンラインサービス386は、何らかの論理を実行して、チャンス、アカウントの統計値、または他の変数に基づいて、猫のアバターの反応がどうあるべきかを決定し、適切な応答をホストシステム350aに送信する。例えば、分散オンラインサービス386のメソッドは、「猫の毛」のメソッドを起動して、タッチセンサ「猫の毛」316aを逆立てることをホストシステム350aに指示する。
あるいはまた、猫は犬に対して「フーッ」と言うことができ、同様の処理を発生させる。分散オンラインサービス386は、ホストシステム350bに関連する「勇気」変数を質問して、犬の反応を決定することができる。犬の勇気が低い場合は、フラッシュアプリケーション375は、サーボ317bを用いて犬をクンクン鳴く姿勢に動かすように、機械制御システム327bに指示することができるのに対し、高い勇気は犬を立ち上がらせて威嚇する姿勢にすることができる。この応答を、ゲームサーバー385にも返送することができ、これにより、ホストシステム350a及び350cの所にいるユーザは、犬がクンクン言うか猫を威嚇するところを、各自のディスプレイで見ることができる。他の例を挙げれば、ハードウェア装置310cの鳥がスピーカ318c上で繰り返す語句(フレーズ)も、オンラインワールド内での鳥のアバターの他のユーザへの近さに応じて、ホストシステム350a及び350bのスピーカ上でけたたましく発声することもできる。
このオンラインの動物アバターゲームは1つの可能な実施例に過ぎず、他の多くの実施例が同じ原理を用いることができる。例えば、フラッシュ(登録商標)アプリケーション375は、オンライン・レーシング(競争)ゲームを含むことができ、このゲームは、ハンドルに見え、力のフィードバックまたは振動をサポートするハードウェア装置を伴う。ライバルのプレーヤが自分の車をあるユーザに衝突させた場合に、このユーザのハンドルを強く振動させるように指示することができ、同じ効果をライバルのプレーヤにも生じさせることができる。フラッシュ(登録商標)アプリケーション375は、チェスの2プレーヤ・ネットワークゲームを含むこともでき、このゲームは、チェス駒の位置を検出し、手動での介在なしにチェス駒を動かすためのハードウェアを有するチェス盤に似たハードウェア装置を伴う。従って、一方の側のユーザはチェス駒を手動で動かすことができるのに対し、他方の側のチェス駒は、ユーザの介在なしに自動的に動くことができ、仮想チェス盤の表示は両方の側で更新することができる。
もちろん、統合ハードウェア・プラットフォームは、ゲームに加えて、他のアプリケーションもサポートすることができる。例えば、プラットフォームはハードウェア装置用の描画タブレットを利用して、フラッシュ(登録商標)アプリケーション375を通してインターネットによって接続されたユーザ間の共同描画またはアイデア・ブレインストーミングを可能にする。一方のユーザが描画したスケッチは他の接続ユーザが見ることができ、他の接続ユーザは、自分のタブレット上で見ているスケッチを修正することができ、すべてのユーザが同じ共用キャンバスを見ている。本明細書で説明する統合ハードウェア・プラットフォームは、一般化された抽象的なインタフェースをあらゆる種類のハードウェアに提供し、フラッシュ(登録商標)アプリケーションの能力を拡張する創作能力は実質的に無限である。
図4に、本発明の一実施例によるステップを記載したフローチャートを示し、これらのステップによって、統合ハードウェア・プラットフォーム内のハードウェア装置が、フラッシュ(登録商標)アプリケーション用のアプリケーションプログラム・インタフェース(API)を介してハードウェア制御を行う。当業者にとって明らかである特定の詳細及び特徴は、フローチャート400から除外した。例えば、あるステップは1つ以上のサブステップで構成することができるか、現在技術において知られている特殊な装置または材料を含むことができる。フローチャート400に示すステップ410〜440は、本発明の一実施例を説明するのに十分であり、本発明の他の実施例は、フローチャート400に示すものとは異なるステップを利用することができる。
図4のフローチャート400のステップ410、及び図1の環境100を参照すれば、フローチャート400のステップ410は、接続145を通したホストシステム150aとのリンクを確立するハードウェア装置110のプロセッサを具えている。前に説明したように、このことは、USBケーブルのような物理接続で行うことができ、あるいは、バッテリを電源とする無線接続によって行うことができる。あるいはまた、両種類の接続をサポートすることができ、物理接続がバッテリ用の充電電力を供給する。コネクタ145が物理接続である場合は、組込みプロセッサ120は、電気接続を示す電流をコネクタ142から受けるまではアイドル(休止)状態にすることができる。接続145が無線伝送を使用する場合は、ホストシステム150a内に挿入した手動スイッチまたは無線受信機ドングルが、組込みプロセッサ120をトリガして動作状態にすることができる。一旦、ハードウェア装置110が電力を受けると、ハードウェア装置110は、検出可能なUSB装置を顕在化することのような、ホストシステム150aとの通信を始めるのに必要なあらゆるハンドシェイクまたはプロトコル手順を用意し始めることができる。
図4のフローチャート400のステップ420、及び図1の環境100を参照すれば、フローチャート400のステップ420は、セキュリティサービスコード162及びプロキシサーバーコード163を開始するハードウェア装置110のプロセッサを含む。前に説明したように、このことは、USB HIDディスカバリ(USBヒューマンインタフェース装置発見)及び装置ポーリングを用いるホストシステムをフラッシュ(登録商標)側に有することによって、自動オペレーティングシステムの機能を利用することによって、ダウンロードしたプラグインを用いることによって、あるいはセキュリティサービスコード162及びプロキシサーバーコード163をホストメモリ170にコピーして、ホストシステム150のホストプロセッサ160が実行する他の方法によって達成することができる。将来のプラットフォームは、信頼できるコンピューティング(電子計算)を提供して、合法的な発行者からの信頼できるコードの自動実行を許可して、より洗練された解決策を提供することができる。
図4のフローチャート400のステップ430、及び図1の環境100を参照すれば、フローチャート400のステップ430は、プロキシサーバー163の実行によって中継される、フラッシュ(登録商標)アプリケーション175からのAPIリモートメソッド呼出しを受信する組込みプロセッサ120を含む。このトランザクションの詳細は、図1で幾分詳細に説明しているが、簡単に言えば、リモート分散メソッド172を起動し、シリアライザ173によってシリアル化し、プロキシサーバー163によってシリアルデータに変換して転送し、ハードウェア装置110上のシリアル接続API139によって受信し、デシリアライザによって逆シリアル化し、そしてハードウェアアプリケーション135によって動作させる。
図4のフローチャート400のステップ440、及び図1の環境100を参照すれば、フローチャート400のステップ440は、ステップ430からのAPI RMIが示すハードウェアAPIを実現するハードウェア装置110のプロセッサを含んで、ハードウェアシステム125を制御する。ここでも、このトランザクションの詳細は図1及び図2で幾分詳細に説明しているが、ステップ440を要約すれば、特別に起動されるリモートメソッドの実現に焦点を当て、このメソッドは、組込みマシンコードまたは他の手段による実行を含むことができる。
これに加えて、ホストシステム150は、図3のゲームサーバー385のようなネットワークサーバーを利用して、他のホストシステムのハードウェア装置との相互作用を可能にする。このようにして、1つのハードウェア装置の状態変化が異なるハードウェア装置の状態に影響し得る。図3のようなネットワーク・コンテキストでは、ハードウェア装置310a〜310cは、共通のフラッシュ(登録商標)アプリケーション375、分散オブジェクトAPI389、及びゲームサーバー385を用いることによって、それぞれのホストシステム350a〜350cを通して互いに通信することができる。このことは、以前にはフラッシュ(登録商標)プラットフォームでは直接サポートされていなかったハードウェア装置上での制御を伴う新たな相互作用の世界を切り開く。フラッシュ(登録商標)のネットワーク通信能力を利用する便利な一体化された(オールインワンの)統合ハードウェア・プラットフォームを用いることによって、共用オンライン体験をサポートするフラッシュ(登録商標)アプリケーションにおける新たなハードウェアサポートを得ることを、USBコードを差し込むことと同じくらい簡単にすることができる。
以上の本発明の説明より、種々の技術を用いて、本発明の範囲を逸脱することなしに、本発明の概念を実現することができることは明らかである。さらに、本発明は、特定実施例を特に参照して説明してきたが、本発明の範囲を逸脱することなしに、形態及び細部に変更を加え得ることは、当業者の認める所である。こうしたものとして、説明した実施例は、あらゆる点で例示的であり限定的ではないと考えるべきである。また、本発明は、本明細書で説明した特定実施例に限定されず、本発明の範囲を逸脱することなしに、多数の再構成、変更、及び代替が可能である。
100 環境
110 ハードウェア装置
115 外部ハードウェア
116 センサ
117 サーボ
118 ディスプレイ
125 ハードウェアシステム
126 環境監視システム
127 機械制御システム
128 プレゼンテーションシステム
131 ハードウェアAPI
132 リモート分散メソッド
133 シリアライザ
135 ハードウェアアプリケーション
136 分散メソッド
137 デシリアライザ
139 シリアル接続API
142 コネクタ
145 接続
150 ホストシステム
152 レセプタクル
162 セキュリティサービス
163 プロキシサーバー
171 ハードウェアAPI
172 リモート分散メソッド
173 シリアライザ
174 ランタイム環境
175 フラッシュ(登録商標)アプリケーション
176 分散メソッド
177 デシリアライザ
200 フローチャート
210 テスト・ハードウェア装置
225 プロトタイプ・ハードウェアシステム
231 ハードウェアAPI
232 リモート分散メソッド
233 シリアライザ
236 分散メソッド
237 デシリアライザ
239 C/C++シリアル接続API
250 テスト・ハードウェアシステム
271 アクションスクリプト・ハードウェアAPI
272 リモート分散メソッド
273 シリアライザ
276 分散メソッド
277 デシリアライザ
279 フラッシュ(登録商標)バイナリソケット
290 API規約ファイル
291 ハードウェアAPI定義
293 RMIインタフェース生成器
294 フラッシュ(登録商標)アクションスクリプト・インタフェースビルダー
295 ハードウェアC/C++インタフェースビルダー
296 ハードウェア装置エミュレータ
297 ホストシステム・エミュレータ
300 分散環境
310a〜c ハードウェア装置
316a〜c タッチセンサ
317b サーボ
318a、c スピーカ
326a〜c 環境監視システム
335a〜c ハードウェアアプリケーション
339 シリアルAPI
350a〜c ホストシステム
363 プロキシサーバー
375 フラッシュ(登録商標)アプリケーション
379 フラッシュ(登録商標)バイナリソケット
385 ゲームサーバー
386 分散オンラインサービス
389 分散オブジェクトAPI

Claims (20)

  1. ホストプロセッサ及びホストメモリを有するホストシステム上のフラッシュ(登録商標)ランタイム環境内で実行されるフラッシュ(登録商標)アプリケーション用のアプリケーションプログラム・インタフェース(API)を介してハードウェア制御を行うコンピュータ・プラットフォームにおいて:
    周辺ハードウェアと;
    プロセッサと;
    前記ホストシステムにリンク可能なコネクタ装置と;
    前記フラッシュ(登録商標)アプリケーション用のAPIによって提供されるリモートメソッドの実装、前記フラッシュ(登録商標)アプリケーションと前記プロセッサとの間の通信を可能にするプロキシサーバー、及び前記プロセッサとの通信のためのネットワーク接続許可を与えるためのセキュリティポリシーを提供するセキュリティサービスを有するメモリとを具え、
    前記プロセッサは:
    前記コネクタ装置を通して、前記ホストシステムとのリンクを確立し;
    前記セキュリティサービス及び前記プロキシサーバーの実行を開始し;
    前記フラッシュ(登録商標)アプリケーションから、前記プロキシサーバーの実行によって中継されたAPIリモートメソッド呼出しを受信し;
    前記APIリモートメソッド呼出しが指示する前記リモートメソッドの実装を実行して、前記周辺ハードウェアのハードウェアAPIを介して、前記周辺ハードウェアを制御するように構成されている
    ことを特徴とするコンピュータ・プラットフォーム。
  2. 前記プロセッサがさらに、サーバーへの送信用の第2のAPIリモートメソッド呼出しを、前記ホストシステムに送信するように構成されていることを特徴とする請求項1に記載のコンピュータ・プラットフォーム。
  3. 前記サーバーが、前記第2のAPIリモートメソッド呼出しを処理して、第3のAPIリモートメソッド呼出しを第2ホストシステムに配信することを特徴とする請求項2に記載のコンピュータ・プラットフォーム。
  4. 前記配信された第3のAPIリモートメソッド呼出しを、前記第2ホストシステム上で実行されるフラッシュ(登録商標)アプリケーションが使用して、前記第2ホストシステムにリンクされたコンピュータ・プラットフォームの周辺ハードウェアを制御することを特徴とする請求項3に記載のコンピュータ・プラットフォーム。
  5. 前記プロセッサが、前記セキュリティサービスのコード及び前記プロキシサーバーのコードを前記ホストメモリにコピーするように構成され、前記プロセッサが、前記ホストメモリからの前記セキュリティサービスのコード及び前記プロキシサーバーのコードを、前記ホストプロセッサに実行させるように構成されていることを特徴とする請求項1に記載のコンピュータ・プラットフォーム。
  6. 前記コネクタ装置が、ユニバーサル・シリアルバス(USB)を使用するように構成されていることを特徴とする請求項1に記載のコンピュータ・プラットフォーム。
  7. 前記周辺ハードウェアが、物理的な動きを与える機械制御システムを使用するように構成されていることを特徴とする請求項1に記載のコンピュータ・プラットフォーム。
  8. 前記周辺ハードウェアが、オーディオビジュアル・フィードバックを提供するプレゼンテーションシステムを使用するように構成されていることを特徴とする請求項1に記載のコンピュータ・プラットフォーム。
  9. 前記周辺ハードウェアが、環境監視システムを用いて、前記コンピュータ・プラットフォームとの外部相互作用を検出して記録するように構成されていることを特徴とする請求項1に記載のコンピュータ・プラットフォーム。
  10. 前記環境監視システムが、前記コンピュータ・プラットフォームとの物理的相互作用を検出して記録するように構成されていることを特徴とする請求項9に記載のコンピュータ・プラットフォーム。
  11. 前記環境監視システムが、オーディオ録音用のマイクロホンを含むことを特徴とする請求項9に記載のコンピュータ・プラットフォーム。
  12. 前記環境監視システムが、ビデオ録画用のビデオカメラを含むことを特徴とする請求項9に記載のコンピュータ・プラットフォーム。
  13. コンピュータ・プラットフォームのプロセッサが、ホストプロセッサ及びホストメモリを有するホストシステム上のフラッシュ(登録商標)ランタイム環境内で実行されるフラッシュ(登録商標)アプリケーションが使用するアプリケーションプログラム・インタフェース(API)を介してハードウェア制御を行う方法であって、前記コンピュータ・プラットフォームは、周辺ハードウェアと、前記ホストシステムにリンク可能なコネクタ装置と、前記フラッシュ(登録商標)アプリケーション用のAPIによって提供されるリモートメソッドの実装、前記フラッシュ(登録商標)アプリケーションと前記プロセッサとの間の通信を可能にするプロキシサーバー、及び前記プロセッサとの通信のためのネットワーク接続許可を与えるためのセキュリティポリシーを提供するセキュリティサービスを有するメモリとを具えている方法において、
    前記プロセッサが、前記コネクタ装置を通して前記ホストシステムとのリンクを確立するステップと;
    前記プロセッサが、前記セキュリティサービス及び前記プロキシサーバーの実行を開始するステップと;
    前記プロセッサが、前記フラッシュ(登録商標)アプリケーションから、前記プロキシサーバーによって中継されたAPIリモートメソッド呼出しを受信するステップと;
    前記プロセッサが、前記APIリモートメソッドが指示する前記リモートメソッドの実装を実行して、前記周辺ハードウェアのハードウェアAPIを介して、前記周辺ハードウェアを制御するステップと
    を具えていることを特徴とするハードウェア制御方法。
  14. 前記プロセッサがさらに、サーバーへの送信用の第2のAPIリモートメソッド呼出しを、前記ホストシステムに送信するように構成されていることを特徴とする請求項13に記載の方法。
  15. 前記サーバーが、前記第2のAPIリモートメソッド呼出しを処理して、第3のAPIリモートメソッド呼出しを第2ホストシステムに配信することを特徴とする請求項14に記載の方法。
  16. 前記配信された第3のAPIリモートメソッド呼出しを、前記第2ホストシステム上で実行されるフラッシュ(登録商標)アプリケーションが使用して、前記第2ホストシステムにリンクされたコンピュータ・プラットフォームの周辺ハードウェアを制御することを特徴とする請求項15に記載の方法。
  17. 前記プロセッサが、前記セキュリティサービスのコード及び前記プロキシサーバーのコードを前記ホストメモリにコピーするように構成され、前記プロセッサが、前記ホストメモリからの前記セキュリティサービスのコード及び前記プロキシサーバーのコードを、前記ホストプロセッサに実行させるように構成されていることを特徴とする請求項13に記載の方法。
  18. 前記コネクタ装置が、ユニバーサル・シリアルバス(USB)を使用するように構成されていることを特徴とする請求項13に記載の方法。
  19. 前記周辺ハードウェアが、物理的な動きを与える機械制御システムを使用するように構成されていることを特徴とする請求項13に記載の方法。
  20. ホストシステム上のフラッシュ(登録商標)ランタイム環境内で実行されるフラッシュ(登録商標)アプリケーションが使用するプロセッサを有するコンピュータ・プラットフォームが提供する、周辺ハードウェアを制御する方法であって、前記プロセッサは、前記フラッシュ(登録商標)アプリケーションと当該プロセッサとの間の通信を可能にするプロキシサーバーを提供し、かつ、前記プロセッサとの通信のためのネットワーク接続許可を与えるためのセキュリティポリシーを提供するセキュリティサービスの実行を行う方法において、
    前記ホストシステムのホストプロセッサが、前記セキュリティサービスの実行のために、前記セキュリティポリシーの要求を開始するステップと;
    前記ホストプロセッサが、前記フラッシュ(登録商標)ランタイム環境が前記プロセッサとの通信の許可を与えたことを確認するステップと;
    前記ホストプロセッサが、APIリモートメソッド呼出しを、ネットワーク接続上で、前記プロキシサーバーを経由して送信して、前記プロセッサが、前記APIリモートメソッドが指示する前記リモートメソッドの実装を実行して、前記周辺ハードウェアのハードウェアAPIを介して、前記周辺ハードウェアを制御するステップと
    を具えていることを特徴とする周辺ハードウェアの制御方法。
JP2010004437A 2009-01-13 2010-01-12 分散オブジェクトを有するフラッシュアプリケーション用統合ハードウェア・プラットフォーム用システム及び方法 Active JP5330276B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/319,979 2009-01-13
US12/319,979 US8359605B2 (en) 2009-01-13 2009-01-13 System and method for integrated hardware platform for flash applications with distributed objects

Publications (2)

Publication Number Publication Date
JP2010182297A JP2010182297A (ja) 2010-08-19
JP5330276B2 true JP5330276B2 (ja) 2013-10-30

Family

ID=42212141

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010004437A Active JP5330276B2 (ja) 2009-01-13 2010-01-12 分散オブジェクトを有するフラッシュアプリケーション用統合ハードウェア・プラットフォーム用システム及び方法

Country Status (4)

Country Link
US (2) US8359605B2 (ja)
EP (1) EP2207094B1 (ja)
JP (1) JP5330276B2 (ja)
CN (2) CN103336724B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7120804B2 (ja) 2018-05-16 2022-08-17 アルパイン株式会社 機器、表示体用部品及び表示体の固定方法

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8176468B2 (en) * 2005-12-01 2012-05-08 Cypress Semiconductor Corporation Multivariable transfer functions
US8938674B2 (en) * 2009-04-20 2015-01-20 Adobe Systems Incorporated Managing media player sound output
US8219598B1 (en) * 2009-05-11 2012-07-10 Google Inc. Cross-domain communicating using data files
US20110209116A1 (en) * 2010-02-19 2011-08-25 Embedded Logix, Inc. Programming Method and System For DAQ-Containing Device
US8887132B1 (en) * 2010-09-03 2014-11-11 Christopher R. Hunter Application runtime environment and framework
US20120110602A1 (en) * 2010-10-29 2012-05-03 Cisco Technology, Inc. Community Sensor-Coordinating Entity
US8963692B2 (en) 2010-10-29 2015-02-24 Cisco Technology, Inc. Aggregating and routing sensor data at a community sensor-coordinating entity
CN102135902B (zh) * 2011-03-01 2015-01-14 深圳市天趣网络科技有限公司 Flash游戏的控制方法
US9553776B2 (en) 2011-05-16 2017-01-24 Avocent Huntsville, Llc System and method for accessing operating system and hypervisors via a service processor of a server
US8973089B2 (en) * 2011-08-08 2015-03-03 Adobe Systems Incorporated Secure socket policy files for establishing secure socket connections
CN102999153B (zh) * 2011-09-08 2016-05-04 北京林业大学 基于自然人机交互的二维数据对象控制系统及其方法
CN102520942B (zh) * 2011-12-06 2014-09-10 中国海洋大学 基于传感器的分布式海洋观测软件系统开发平台及方法
CN102497330A (zh) * 2011-12-12 2012-06-13 北京像素软件科技股份有限公司 一种mmorpg中跨服务器组队的方法
CN102662633A (zh) * 2012-03-16 2012-09-12 深圳第七大道科技有限公司 一种Flash任务的多线程处理方法和系统
EP2912564B1 (en) 2012-11-05 2021-02-24 AFL Telecommunications LLC Distributed test system architecture
US10891590B2 (en) 2013-03-15 2021-01-12 Trupanion, Inc. Pet insurance system and method
US10013530B2 (en) 2013-03-15 2018-07-03 Trupanion, Inc. Pet insurance system and method
USD777737S1 (en) * 2013-03-15 2017-01-31 Trupanion, Inc. Display screen or portion thereof with graphical user interface for pet insurance
US10909501B2 (en) 2013-03-15 2021-02-02 Trupanion, Inc. Pet insurance system and method
GB2521412A (en) * 2013-12-18 2015-06-24 Continuumbridge Ltd An apparatus for network bridging
US9378123B2 (en) * 2013-12-31 2016-06-28 International Business Machines Corporation Testing of transaction tracking software
CN104462949B (zh) * 2014-10-27 2017-09-26 中国建设银行股份有限公司 一种插件的调用方法及装置
US9602648B2 (en) * 2015-04-30 2017-03-21 Keyssa Systems, Inc. Adapter devices for enhancing the functionality of other devices
US11349922B2 (en) 2016-04-06 2022-05-31 Marvell Asia Pte Ltd. System and method for a database proxy
US10237350B2 (en) * 2016-04-06 2019-03-19 Reniac, Inc. System and method for a database proxy
US10290151B2 (en) * 2016-08-17 2019-05-14 Blackberry Limited AR/VR device virtualisation
US11075897B2 (en) 2017-10-20 2021-07-27 Vertiv It Systems, Inc. System and method for communicating with a service processor
CN110300082B (zh) * 2018-03-21 2022-03-08 腾讯科技(深圳)有限公司 一种接口生成方法、装置及存储介质
US11379727B2 (en) * 2019-11-25 2022-07-05 Shanghai United Imaging Intelligence Co., Ltd. Systems and methods for enhancing a distributed medical network
US11429595B2 (en) 2020-04-01 2022-08-30 Marvell Asia Pte Ltd. Persistence of write requests in a database proxy
US20220046019A1 (en) * 2020-08-04 2022-02-10 Juniper Networks, Inc. Adding third party hardware to network devices
CN113360379B (zh) * 2021-06-04 2022-06-10 上海哔哩哔哩科技有限公司 程序测试环境创建方法和程序测试环境创建装置
CN113434196A (zh) * 2021-06-29 2021-09-24 北京房江湖科技有限公司 用于管理应用程序的方法和装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030033353A1 (en) * 2001-08-08 2003-02-13 Simpson Shell S. Method for web-based imaging service to redirect to a preferred destination based on a criteria
JP2003114859A (ja) 2001-10-05 2003-04-18 Matsushita Electric Ind Co Ltd Usb接続機器
US7534157B2 (en) * 2003-12-31 2009-05-19 Ganz System and method for toy adoption and marketing
US8221220B2 (en) * 2006-08-11 2012-07-17 Disney Enterprises, Inc. Method and/or system for adaptive gaming experience
CN101132571A (zh) * 2006-08-22 2008-02-27 薛飞 在手机上显示和操作远程计算机的方法和系统
US20080076573A1 (en) * 2006-09-08 2008-03-27 John Loehrer Network-based game system
KR100772175B1 (ko) * 2006-10-23 2007-11-01 한국전자통신연구원 네트워크 로봇 시스템 및 네트워크 로봇 시스템에서의 통신방법
CA2717909A1 (en) * 2007-03-08 2009-09-12 Mobilaps Llc Methods of placing intermediate network entity content in a web browser
US8230455B2 (en) * 2007-07-11 2012-07-24 International Business Machines Corporation Method and system for enforcing password policy for an external bind operation in a distributed directory
US8353767B1 (en) * 2007-07-13 2013-01-15 Ganz System and method for a virtual character in a virtual world to interact with a user
CN100566274C (zh) * 2007-09-14 2009-12-02 东南大学 用于远程内容监管的无线局域网接入装置
US8543667B2 (en) * 2008-01-14 2013-09-24 Akamai Technologies, Inc. Policy-based content insertion
US8250627B2 (en) * 2008-07-28 2012-08-21 International Business Machines Corporation Transaction authorization

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7120804B2 (ja) 2018-05-16 2022-08-17 アルパイン株式会社 機器、表示体用部品及び表示体の固定方法

Also Published As

Publication number Publication date
CN103336724B (zh) 2016-12-07
US20130132979A1 (en) 2013-05-23
US8924989B2 (en) 2014-12-30
CN101776994B (zh) 2013-04-03
JP2010182297A (ja) 2010-08-19
US20100180284A1 (en) 2010-07-15
EP2207094A2 (en) 2010-07-14
EP2207094B1 (en) 2016-11-02
EP2207094A3 (en) 2012-05-30
US8359605B2 (en) 2013-01-22
CN101776994A (zh) 2010-07-14
CN103336724A (zh) 2013-10-02

Similar Documents

Publication Publication Date Title
JP5330276B2 (ja) 分散オブジェクトを有するフラッシュアプリケーション用統合ハードウェア・プラットフォーム用システム及び方法
CN101517536B (zh) 带多重优化的函数级即时翻译引擎
EP3345091B1 (en) Systems and methods for providing interactive streaming media
US10778513B2 (en) Device communication and management in computer data networks
US20080168188A1 (en) Symbiotic Smart Peripherals
US6710764B1 (en) Method and system for processing force feedback effects generated at a host for playback at a physical interaction device
Osentoski et al. Robots as web services: Reproducible experimentation and application development using rosjs
JP2016076216A (ja) アプリケーション試用システム、方法及びそのサーバとユーザデバイス
RU2649771C2 (ru) Виртуализация массового запоминающего устройства для облачных вычислений
JP6104246B2 (ja) コンピューティングデバイスの遠隔事前構成
US8972944B2 (en) Coordinating and controlling debuggers in a simulation environment
US9302182B2 (en) Method and apparatus for converting computer games between platforms using different modalities
WO2012140673A2 (en) Audio controller
CN114042310A (zh) 游戏操作数据收集方法、装置、计算机设备及存储介质
US20150066513A1 (en) Mechanism for performing speech-based commands in a system for remote content delivery
Joseph et al. Programming with ROS
Estrany et al. Multimodal human-machine interface devices in the cloud
KR20210064914A (ko) 게임 서비스 방법 및 이를 수행하기 위한 컴퓨팅 장치
Preston The definitive guide to building Java robots
Li et al. Crossing real and virtual: pepper robot as an interactive digital twin
RU2818034C1 (ru) Способ и система запуска приложений в симулируемой среде
US11487267B2 (en) Simplifying communication between a client application and a single-board data processing system
Rahman et al. Windows 10 & Universal Windows Platform
Rizzo et al. UDOO App Inventor: Introducing Novices to the internet of things
Chtourou et al. Proof of concept of a cloud compilation service for robotics wireless programming

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120313

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120531

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20121009

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130204

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130312

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130610

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: 20130702

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130725

R150 Certificate of patent or registration of utility model

Ref document number: 5330276

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250