第2部 IoTアプリケーション開発の留意点
これまでの連載でIoTアプリケーションの開発をかじってきましたが、ここではプログラミングによる機能の実装以外の注意点を見ておきます。パフォーマンスやキャパシティ、セキュリティです。
機能は正しく動くけれど待ち時間が長すぎたり、少し動かすとデータがいっぱいになってしまったりしたらがっかりですね。また、自分の情報を知らない人に知られてしまうことは危険なので避けたいと思うでしょう。
つまり、あなたは自分のIoTアプリケーションに対して、速く動いてほしい、データも必要な分はためてほしい、不必要な情報公開をしてほしくないという要件を持っていることになります。これらのIoTアプリが満たすべき要件で機能以外のものを、難しい言葉で非機能要件といいます。
非機能要件の種類についてはさまざまな団体がそれぞれ定義をしており、パフォーマンスやキャパシティ、セキュリティ以外にもあるのですが、今回はIoTアプリで特に注意したい非機能要件であるこの3点について見ていきます。
パフォーマンス
1台のmbedでIoTアプリケーションを開発していろいろな機能を試してみる場合は、パフォーマンスの問題はめったに発生しないでしょう。しかし、台数を増やして長い期間で動かそうとすると、データが増えてくるにつれて動きが遅くなってくることがあります。そういった場合、プログラム以外の部分に手を入れる必要が出てくることがあります。
よくあるのは、データベースの対応です。お使いのデータベースのマニュアルで、テーブルのインデックスを作成する方法はぜひ確認してください。
キャパシティ
同じように台数を増やして長い期間で動かそうとすると、キャパシティの問題も出てきます。センサーから受信したデータをため続けているとストレージの容量が足りなくなる可能性があります。クラウドで必要に応じて増やせるから大丈夫という場合でも、その分課金が増えてしまいます。
第3回、第4回のサンプルプログラムのように、ある一定期間は時系列にデータをためる想定のIoTアプリケーションであれば、必要なデータをためられるだけのストレージが必要になります。一方で今回(第6回)のサンプルプログラムのようにリアルタイムに入ってくるデータを閾値監視するIoTアプリケーションであれば、古いデータはどんどん捨てても構わないでしょう。
クラウドでもローカルでもデータをためるためにお金をかけてストレージの容量を増やすか、それともある一定期間で古いデータを削除するか、もしくはデータはためずにリアルタイムに届いた最新のデータだけを使うかといった検討をしてみてください。
セキュリティ
IoTアプリケーションを載せたサーバーは、その性質上インターネットに接続します。サーバーをインターネット上で公開すると誰でもアクセスできるようになるので、自分専用のマイサーバーと思っていてもファイアウォールの設定などのセキュリティ設定をする必要があります。
サーバーには、センサーで集めた情報をためることになるのですが、IoTアプリケーションで集めるセンサーのデータは、少量では意味が分からなくても、大量に集めると個人の情報を推測できる場合があるのです。
分かりやすい例としては、GPSモジュールです。GPSモジュールは、現在位置をデータとして活用できるため地図情報と組み合わせるなどしてうまく使うと便利です。しかし、持ち歩くものにGPSモジュールをつけてその位置情報をサーバーに集めていると、持ち主の居場所が分かってしまったり、日中動いているならば自宅が留守であることが分かってしまう可能性もあります。
このように趣味で自分のmbedのデータを集めている場合でもうっかり人に知られてしまうと困ることがありえるのです。
第2部のまとめ
IoTアプリケーション開発の留意点として、プログラミングによる機能の実装以外に、非機能要件であるパフォーマンス、キャパシティ、セキュリティの観点に注意する必要があることを確認しました。
この連載を読んでさらに自分のIoTアプリケーションを発展させていく際には、ぜひ非機能要件の観点を取り入れて見直してみてください。