IoT(インターネット・オブ・シングズ)システムの企画や要求で出てきた夢や希望を、より具体的な「絵」や「図」として描くのが、IoTアーキテクチャーである。だが、形になっていない企画や要求を絵にするのは、幻を描写するような難しさがある(図1)。

図1●IoTアーキテクチャー設計の難しさ
図1●IoTアーキテクチャー設計の難しさ
[画像のクリックで拡大表示]

 IoTシステムを開発するうえで、アーキテクチャーはシステムの今と未来を示す道標であり、IoT開発の要である。

 IoTと人工知能(AI)、ビッグデータの新時代には、ソフトウエア開発も変化し、アーキテクチャーの作り方も大きく変わる。IoTデバイスは無秩序につながり、無造作に繁殖する。AIは何を考えているのか設計者にすら分からない。ビッグデータは定義も項目も定まらず、まとまりもない。

 IoTシステムは、IoTデバイスも、そこからやりとりする情報も、情報を伝えるネットワークも、情報を収集し分析するITシステムも、不確定な部分が多い。仕様は安定せず、常に変化する。まるで幻である。

 IoTのアーキテクチャーは、この不安定さに対応しなければならない。下手をすると、アーキテクチャーは要件が変わりやすいホットスポットだらけになり、魑魅魍魎の棲家となってしまう。

 アーキテクチャーとはコミュニケーションでもある。システムの実装者にシステムの姿を伝える役割がある。伝わらないアーキテクチャーはアーキテクチャーでなく、絵にも描けていない餅である。
 
 アーキテクチャーは、未来を予想し、未来の幻も現実世界に投影しなければならない。未来予想が見事に外れた場合は、アーキテクチャーを書き直す。書き直しを怠ったアーキテクチャーは腐っていき、IoTシステムは死んでしまう。

 連載第3回となる今回は、アーキテクチャー設計の意義とコツを基礎レベルから振り返りながら、IoTならではのアーキテクチャーの特徴をみていくことにする。

アーキテクチャーとは

 アーキテクチャー(architecture)とは、元々は建築の分野の用語であり、建造物の構造や工法も含んだ全体の概要設計を指す。コンピュータ分野ではこの建築分野のアーキテクチャーの概念を借用して使っている。

 コンピュータのソフトウエア分野で言うアーキテクチャー(これはソフトウエアアーキテクチャーと呼ばれるが、以降は単にアーキテクチャーと呼ぶことにする)は、ソフトウエアシステムの概要を示すもので、ソフトウエアの全体構造とその機能概要を記述するものである。

 さらにアーキテクチャーは全体構造と機能概要だけでなく、設計方針や、重視した観点なども明示する。

 要するにアーキテクチャーは、大まかに書く(抽象化して書く)設計図のことだ。

 逆に言えば、「細かく書かない」のがアーキテクチャーのポイントである。詳細に書きすぎたアーキテクチャーは読みにくく、理解しにくく、今後のソフトウエア開発で必ず支障が出る。
 かといって、「大まか」という言葉を免罪符にして、重要な設計項目を曖昧なままにすると、方針や観点ばかり書かれたポエムのようアーキテクチャーになる。もちろん、設計図として全く役に立たない。

 アーキテクチャーの役割は、アーキテクチャーを元に要求仕様との整合性確認や詳細なソフトウエア設計を行うことである。そのためには分かりやすさ(了解性)が最も重要になる。難解なアーキテクチャーは百害あって一利なしである。

 アーキテクチャーで求められる性質は、上記の了解性だけでなく、きちんと他のものと合っているか(整合性)、今後の仕様変更や新規追加に耐えられるか(拡張性)、実装すればきちんと動作するのか(実装性)、実行速度などに問題がないのか(実行効率性)、などが求められる(図2)。

図2●アーキテクチャーの書き方のコツと、求められる性質
図2●アーキテクチャーの書き方のコツと、求められる性質
[画像のクリックで拡大表示]