システムの基本としてアーキテクチャは3層構造とすることが理想であるという話。
解釈は結構マチマチなことが多いですが、本質的にはソフトウェアは以下3点から構成されている。
インタフェース
GUI、CUI、API、マイクおよびスピーカー、カメラなど、他者(人だけでなく、ロボット/RPAやシステム含む)とConnectするためのI/Oデバイス。
これがなければ、社会的には何も生産しない。どれだけ優秀なロジックを持っていてもリソースを使って無限ループしているバグと同じである。
※一般的にプレゼンテーション層と呼ばれるが、ロボティクスやサービス化が進んでいる今、人目線のプレゼンテーションはもはや馴染まないためインタフェースと呼ぶ。
データ
インタフェースによりINPUTされる情報。蓄積する/しないにかかわらずシステムの価値を作り出すもととなる情報。
INPUTされた情報をシステムとして、どれだけ正しく価値ある情報として解釈できるかが差別化および品質に関わってくる。
特にシステム化されていない自然情報(音声、映像、言語など)の活用が進む昨今では、このデータの量と質が最も重要と言える。
ロジック
データを別の価値のあるデータに変換する仕組みであり、ソフトウェアそのものを体現する仕組みである。
どれだけ自動化が進んだとしても、すべてのシステムはこの3要素から構成されているのであり、これを適切な粒度に分解し、再構成できることがアーキテクトとして最も重要なスキルである。
分解・再構成の考え方の例として、音声対話システムとコミュニケーションを挙げておく。
1. 空気の振動をINPUTとし、電気信号に変換し、電気信号をOUTPUTする。(マイク)
2. 電気信号をINPUTとし、Digitalデータに変換し、OUTPUTする。(ADコンバーター)
3. DigitalデータをINPUTとし、自然言語に変換し、OUTPUTする。(音声認識システム)
4. 自然言語をINPUTとし、INPUTされた自然言語と対となる自然言語を生成し、OUTPUTする。(音声対話システム)
5.自然言語をINPUTとし、Digitalデータに変換し、OUTPUTする。(音声再生システム)
6.DigitalデータをINPUTとし、電気信号に変換し、OUTPUTする。(D/Aコンバーター)
7.電気信号をINPUTとし、空気の振動に変換し、OUTPUTする。(スピーカー)