システムとアーキテクチャの違いを考える
システムとアーキテクチャの違いはなんだろうとよく考える。自分はどう使い分けているんだろうとも思う。厳密性というよりも、胸落ちを求めて考える。
システムとアーキテクチャ
システムアーキテクチャとはシステムのアーキテクチャなのであり、当然ながらそう呼べるということはシステムとアーキテクチャは異なるものであるはずである。それらが異なることは感覚にも沿う。
GPT-4君に雑に差違を聞いたところ、要約すると以下だった。
システムの方はやや曖昧である。かといってアーキテクチャの方は設計図である、と断言されると違和感がある。現実的なアウトプットは設計図かもしれないが、アーキテクチャ=設計図だろうか?それはアーキテクチャデザインのアウトプットなのであって、アーキテクチャが何かは示していないだろう。
思い出の質問
システムの定義を考えると、未だに大学で准教授に言われたことをよく思い出す。ゼミで途中成果報告をしたあとに「システムとは何か?」と質問されたのだった。何も答えられない自分に准教授は「システムとは系だ」という旨を述べた。
生態系とかニュートン力学系とかの系である。つまりシステムという英語の日本語訳を言っただけに過ぎない。のだが、ぼくは「たしかにそうだ、システムとは系だな」と胸に落ちる気持ちがした。
まあそう思うかは人によりそうだが、つまるところ発表内の言葉に全く実感や具体性が伴っておらず、空虚な言葉が滑っている、という指摘であったのだ(まあ今でも変わらずこんなテキストを書き連ねているわけでぼくの業なのであるが)。
システムとは
そんな経験もあり、システムとは系だと思う。ある指向性に基づいたルールセット、およびそれによるふるまい全体。数学や物理学の系のような、方程式から方程式が導かれてゆくような連関構造のイメージ。指向性はビジネスの話であればビジネスゴールなど。
むろんITシステムと呼べばITの話に限定される。それでもぼくはGPT君の回答よりも抽象寄りに捉えていると思うし、そう捉えたほうが良いと思っている。人間の意志のようなその全体が持つ指向性から目を逸らさない方が良いと思うからだ。
アーキテクチャとは
アーキテクチャの日本語訳は建築でなければ構造であろう。アーキテクチャはシステムよりかは実装寄りに思われる。その点、システムの設計図というのは悪くない感じがする。しかし以下の記事で述べたように、ぼくはアーキテクチャをネットワークとして捉えていることが多い。
システムはルールセットを中心的に考えているのに対して、アーキテクチャはより構成要素を明確にして、その要素間の関係を意識したネットワークを考える。システムよりもよりぐっと現実に近づき、個々の構成要素、お金や人間のワークフローといった動きを意識する。
システムとアーキテクチャの使い分け
アーキテクチャの方がしっかり構成要素を取り扱うが故に、いまいまの状態に強く引き寄せられ最適化されてしまいやすい。なのでシステムの方はむしろなるべくルールセットぐらいであると考えておくことで思考のウイングを担保しておく。おおよそ、システムは目的や要件を考えているが、アーキテクチャは仕様を考えている、と捉えても良い。
システムとアーキテクチャの使い分けは用途を意識して意図的に行う。言葉と思考のセットを目的に応じて使い分ける。
言葉を胸落ちさせること
たとえばコンポーネントとモジュールの何が違うかと考えることは大切に思う。設計は言葉でするものだから、良い設計をするためには言葉をよりよく捉えることが大切であろう。
またコンテキストによって求められる言葉の正確性は異なる。正確すぎることがわかりにくさを生むこともある。言語の壁もある。業種の壁もある。
こうした様々なシーン、コンテキストの中でリアリティを伴う言葉を話すためには、何がどう似ていてどう違うのか、どういう意図で言葉を分けるのか、を胸落ちさせておくことが必要であろうと思う。
むろんそれはいつまでも完成することがない、ずっと修正し続けていくものであろう。まあそれが知るということであろうと思うし、それこそが考えがいのあることだろう。むしろいまの認識が誤っていると思うときを待ち望んでいる。