アプリ目の前にあるお持ちのデバイスを制御することはうまくいきました。Impプラットフォームはそもそもコネクテッド・デバイスのためのものです。エージェント技術を使う必要があります。エージェントはデバイスごとに用意されるマイクロサーバーで、デバイスとインターネット接続されたリソースの仲介者(Mediator)として動作します。エージェントを利用して、モバイルアプリから命令を受け取り、その命令をデバイスに中継することができます。この応答として、デバイスはエージェントに天気予報のようなオンライン・サービスからの情報を取得するよう依頼するかもしれません。エージェントは外部へのリクエストを処理し、データが返却されると適切な部分のみをデバイスに送信します。特定の色で点灯させるかもしれません。エージェントを使って、ブラウザからデバイスを制御することができます。エージェントは継続的に実行します。デバイスが持ち主の部屋から別の部屋に移動した時や、バッテリ電源を節約するため省電力モードに入った時など、一時的に切断された場合においてもデバイスをアクセス可能な状態にすることができます。エージェントはサーバベースであるため、デバイスよりも高速な処理能力にアクセスすることが可能です。これにより、複雑な計算はエージェントにオフロードさせ、デバイス自身が得意とする能力、すなわち入出力制御にフォーカスさせることができます。これはデバイスがバッテリ駆動のときに特に重要になります。最後に、セキュリティについて。エージェントのおかげで、デバイス自身はインターネット上で見える存在である必要がなくなり、その結果攻撃にさらされることが無くなります。上であってもデバイスと直接通信することは不可能です。すべての通信はエージェント経由でルーティングする必要があります。エージェントになにかが起こっても、デバイスは引き続き動作を続けます。エージェント同士は互いに遮断されています。クラウド、他方が家庭内や仕事場といったように離れている場合、両者を互いに通信させる包括的なメッセージングシステムが必要です。遠隔制御することを可能にしてみます。電源を入れてインターネットに接続します。設定がされていない場合はこのセクションにやり方が記載されています。コンピュータ上で表示されているかと思います。接続して、このガイドの最初のパートで作成したアカウントを使ってサインインしてください。モデルを開いてください。デバイスとエージェントのプログラム例を実行するために必要なコードは以下の通りです。今回は2つのパートがあります。前回同様デバイスのためのコードがあり、さらに、エージェントのためのコードもあります。ワークスペースの正しいパートに貼り付け、既存のコードを上書きしたことを確認してください。セクションに戻り思い出してください。デバイスコードエージェントコードこのコードは何をしているのかまずはデバイスコードから見ていきましょう。重要な行は最後の1行です。点灯するかどうかを設定しているだけです。オン/オフを切り替えるループを実行せずに、エージェントからのメッセージに反応して状態を変更するだけです。切り替えるコードを実行するようデバイスに指示しています。プラットフォームのイベント駆動型の別のプログラム例になります。関数のトリガーを引く必要があるという事実が記録されます。関数を呼び出すためのメッセージが届くまで、それ以上ユーザコードを実行しません。このメソッドは、呼び出される関数への参照を記憶するだけなので、関数名の後ろにはカッコをつけません。(カッコをつけると関数が即座に呼び出され、関数に返された値をメソッドに戻すことになります。)これは強力なアプローチです。これにより、プログラマーであるあなたが定常的に着信メッセージをチェックし、メッセージがあった時にそれが関心のあるメッセージかどうかを確認する手間を省きます。あなたのために全てを行い、正しいレスポンスコードを返す作業を上記1行のコードで行います。どのようにエージェントはデバイスにメッセージを送るのでしょうか?エージェントコードの15行目をご覧ください。格納されたデータ値とともにパッケージ化します。値をセットされるか見てみましょう。このメッセージにどう対応するかを見てみます。デバイスコードの9行目から12行目を見てください。