米Amazon Web Servicesは、IoTアプリケーションの今後をどう描き、開発者にどのように構築してもらいたいのか。同社でモバイルとIoTを統括するモバイル担当副社長、マルコ・アルジェンティ氏へのインタビューの前編をお届けする。
「IoT(Internet of Things:モノのインターネット)がとても魅力的な理由の一つは、『あらゆる製品は時間の経過とともに陳腐化する』という考えを覆せることにある」と、米Amazon Web Services(AWS)モバイル担当副社長、マルコ・アルジェンティ(Marco Argenti)氏は話す。
「クラウドに接続されたモノは、どんどん良いものになっていける。製品寿命も長くなる。データを収集することで、あなたの利用パターンを覚えるとともに、同じくクラウドにつながった他のデバイスから学習できるからだ。
例えばスプリンクラーのシステムは通常、動作をスケジュール設定するくらいが関の山だ。だが、クラウドにつながっていれば、設置場所の気候や環境について学ぶことができる。1カ月もすれば、購入当初より優れたスプリンクラーになる。
「Amazon Echo」も、時間とともにどんどん賢くなる製品の一つだ。この製品の場合は、ヒューマンインターフェースについての実験的な側面もある。
私はいつも、『2〜3年のうちに、家電製品からボタンと画面が完全に消えてなくなる』と言っている。これを実現するためには、製品がクラウドにつながらなくてはならない。製品同士が話し合うということも、決定的に重要な要素だ」
こう語るアルジェンティ氏に、AWSのIoT戦略を聞いた。
――AWSは、IoTのような新しい分野では、開発者のニーズを先取りし、「こういう風にアプリケーションを構築すべきだ」とリードすることを考えているはずだ。AWSはどんな戦略を描いているのか?
アルジェンティ氏 いま言ったように、テーマとしてはさまざまな製品がクラウドにつながるようにし、互いに情報のやりとりをすることで、ヒューマンインターフェースを変革し、個々の製品がよりよくなっていく世界を目指している。従って、戦略の一つは、できるだけ多くの製品がクラウドにつながれるようにし、これを製造メーカーや開発者が活用できるようにしていくことにある。
ここで、今後何が変わっていき、何が変わらないままなのかを考える必要がある。今後も変わらないのは、スケーラビリティに対するニーズだ。私たちは世界で最も拡張性に優れたインフラをずっと提供していけるように、投資を継続していく。
一方で、開発者たちは、何十億ものデバイスが接続する新たな世界に適応していかなければならない。そこで私たちは、アプリ開発における新たなパターンについて、開発者に対して啓蒙を続けていく必要がある。IoTアプリケーションは確実にスケールし、長期にわたって使えるものでなければならない。
アルジェンティ氏 IoTアプリケーションに求められる新たな開発パターンの一つが、「リクエスト/レスポンス」からイベントドリブン(イベント駆動)な世界への移行だ。私たちはこのために、AWSのあらゆるプロダクトを、APIコールだけでなく、イベントに対応させようとしている。
――つまり、AWS Lambdaが、IoTアプリケーションにおいて、あらゆるサービスを取りまとめる要のような役割を果たすということなのか?
※AWS Lambdaについて知りたい方は、記事「AWSの新サービスLambdaとECSは、何であり、何でないのか」を参照
アルジェンティ氏 もちろんだ。AWS Lambdaは、この新しい開発パターンを推進する役割を果たす。私たちは、ますます多くのサービスプロダクトのLambdaとの統合を進めている。これらのプロダクトは、イベントを生成することで、Lambdaに働き掛けられるようになってきている。
イベントドリブンな世界を私たちが推進しようとしている理由は、デバイスとサービスの間の分離が図れるからだ。リクエスト/レスポンスの世界ではデバイスとサービスが密結合している。デバイスは、どのサービスを呼ぶかを知っていなければならない。
そこで私たちは、デバイスがイベントを生成することのできる新たなレイヤーを作り出せばいいと考えた。こうすれば、開発者が、あるLambda関数にデバイスを関連付けた後で、別のLambda関数に切り替えたとしても、デバイス側はそのことを全く知る必要がない。
デバイス側のプログラムを更新することなく、特定のイベントへの対応の内容を変えられるわけで、究極的なスケーラビリティが実現できる。
――Lambdaというサービスに開発者がロックインされる可能性があるのでは?
アルジェンティ氏 確かにLambdaは私たちが生み出したツールだが、ユーザーをロックインしたいとは考えなかった。だからこそ、「Node.js」をベースとし、私たちはバックグラウンドでたくさんの仕事をすることで、Lambda関数が自動的にスケールできるようにした。Lambdaは結局のところ、Node.jsの関数であり、イベントは実質的にJSONペイロードだ。独特なイベントの記述方法を導入しようとは考えなかった。
私たちは、複雑な標準化の議論に陥るよりも、開発者が自らの使いなれたツールで仕事ができるようにしていきたい。
アルジェンティ氏 戦略の議論に戻ると、第一はイベントドリブンだ。第二はアプリケーションを小さな単位に分割することだ。これにより、多くのメリットが生まれる。まず、Lambda関数はいつでも並列で動作する。Lambdaは多様な関数の間のオーケストレーションができ、これらをイベントに基づいて実行できる、いわばオペレーティングシステムのようなものだ。開発者はスケーラビリティや最適化のことなど考えなくていい。
私たちは、「個々のアプリケーションの実行時間を短くすべきだ」という言い方もしている。デバイスが待たなくていいように、イベントに対して迅速に反応すべきだ。非同期性も、私たちが強く信じるポイントだ。コネクションをロックしたくはないからだ。デバイスはイベントを送って、反応を待てばいい。
AWS Lambdaの料金体系は、これまで話したような考え方を反映している。ユーザーは、(関数に対するリクエスト数と)コードの実行時間に対して支払えばいい。アラームをたまにしか発生させないデバイスを待つ時間に対して課金することはない。こうしたデバイスが何十億も存在するような場合の(料金面での)スケーラビリティを考えてみてほしい。
こうした課金モデルは、IoTに非常に適していると思う。IoTは、技術面のシフトというだけではない。ビジネスモデルのシフトでもある。AWS Lambdaの課金モデルは、利用パターンと近似しているため、開発者はコストを大幅に減らすことができる。
ユーザーにとってのコスト節約を考えるなら、(一般的には)料金の値下げという方法がある。だが、別の角度から節約に貢献する方法として、利用パターンに沿った課金もある。おびただしい数のデバイスが頻繁にイベントを発生させる場合でも、粒度の高い課金方法は喜ばれている。
[2015/09/25追記]「AWSのIoT責任者に聞く(後編):モバイルとセンサーの間に無限の可能性がある、AWSの語るIoT」を公開しました。
Copyright © ITmedia, Inc. All Rights Reserved.