« マイクロサービス設計は従来のアーキテクチャ設計と何が違うのか | トップページ

2024/02/12

アーキテクチャ量子の考え方はソフトウェア工学に物理学アプローチを適用したアイデアではないか

進化的アーキテクチャ」の本を読み直していたら、アーキテクチャ量子の考え方はソフトウェア工学に物理学アプローチを適用したアイデアではないかと気づいた。
ラフなメモ書き。

【1】以前に「進化的アーキテクチャ」の本を読んでいたが、その時はこの本の中身がさっぱり分からなかった。
マイクロサービス設計をコンポーネント分割、モジュール分割のように組み立てたい意図は分かるが、その設計方法や中身が雲のように意味不明だった。

そして、とある勉強会で「ソフトウェアアーキテクチャ・ハードパーツ ―分散アーキテクチャのためのトレードオフ分析」を輪読していた。
この本はマイクロサービス設計の解説なのだが、その中に、アーキテクチャ量子、適応度関数という考え方が出てくる。

アーキテクチャ量子は、これ以上分割できないソフトウェアコンポーネント、みたいなイメージを持っている。
適応度関数は、アーキテクチャを診断するメトリクス、みたいなイメージを持っている。
しかし、ふわふわした抽象的概念であり、すぐに理解しづらい。

なぜ、アーキテクチャ量子、適応度関数のような概念がマイクロサービス設計で必要なのか?

【2】アーキテクチャ量子とは、高度な機能的凝集を持つ独立してデプロイ可能なコンポーネントと定義されている。
なぜ、わざわざ量子みたいな言葉を使う必要があるのか?

進化的アーキテクチャ」では、量子力学のアプローチを使って、モジュール性を説明しようとしている。
物理学では、自然界には4つの力、強い力、弱い力、電磁気力、重力がある。
この概念を流用して、アーキテクチャ量子の言葉の意図は、原子核のような小さな量子では、物理学が言う強い力が働いてバラすことができないこと、つまり、ソフトウェアのコードは組み立て部品のように再利用できる単位に分解できないことを意味しているのだろう。

すなわち、アーキテクチャ量子は再利用可能なソフトウェアコンポーネント、ソフトウェアモジュールの比喩として使っている。

なぜ、わざわざアーキテクチャ量子という新しい言葉を使う必要があるのか?

マイクロサービスはソフトウェアアーキテクチャも含めたレベルでソフトウェアの再利用を目指そうとしている。
つまり、アーキテクチャ量子の考え方を使って、従来からのソフトウェア工学の根本問題、ソフトウェアを再利用できる単位にどのように再構築するか、を考えようとしているのだろう。

アーキテクチャとは、ソフトウェアの中で最も不変な部分に相当するが、ソフトウェアの歴史ではアーキテクチャの範囲がどんどん変わってきている。
再利用の単位が、構造化プログラミング、オブジェクト指向、そしてマイクロサービスへ変遷してきている。
そういう歴史的経緯を踏まえて、アーキテクチャ量子という言葉を新たに用いて、現代風に理解しようとしているのだろう。

【3】アーキテクチャ量子に加えて、適応度関数とは、アーキテクチャが継続的に変化あるいは進化することでどれだけ目的の達成に近づいているか、を計算するための目的関数と定義されている。
なぜ、メトリクスと言わずに、わざわざ適応度関数のような言葉を使うのか?

物理学のアプローチでは、自然界の現象だけでなく、経済や人間の事象に対しても、数式で表現できるはずだ、という設計思想がずっとある。
アーキテクチャ量子のように、ソフトウェアコンポーネントに物理的アプローチを用いたならば、同様に再利用できる単位は何らかの数式で表現できるはずだろう。

その時に、アーキテクチャ量子の診断結果を計測するメトリクスを適応度関数と呼んでいるのではないだろうか。

進化的アーキテクチャ」では適応関数の事例がなくて、抽象的な説明ばかりでイメージづらいが、「ソフトウェアアーキテクチャメトリクス ―アーキテクチャ品質を改善する10のアドバイス」では、適応度関数の具体例が掲載されていて、それでようやく理解できた。

適応度関数は、ユニットテストレベルならばカバレッジや静的コード解析が目標範囲内にあるか評価することに相当するし、統合テストレベルならば、パフォーマンスの計測やAPIテストで目標範囲内にあるか評価することに相当する。
E2Eテストレベルならば、UATで使われる正常業務パターンのスモークテストケース、ビジネス要件やマーケティング要件を評価するメトリクスがあるだろう。

つまり、適応度関数はアーキテクチャが正常であるかを診断するメトリクスとして用いられる。

留意点は、適応度関数はケースバイケースとして色々実現されることだろう。
適応度関数は唯一の正解はなく、システムのアーキテクチャごとに設計されて実装される。
だから、GQMのように、メトリクスが使われる目的や意図が重要になってくる。

【4】アーキテクチャ量子に加えて、適応度関数のような概念を新規に作り出した意図には、物理学アプローチを用いて、マイクロサービス設計のような現代風アーキテクチャを理論化して整理したいことがあるのだろう。

再利用できる単位は、構造化プログラミングでは関数レベルだが、オブジェクト指向プログラミングでは、データと処理がカプセル化されたクラスレベルになった。
今では、マイクロサービスでは、処理を行うサービスとデータを保持するデータベースを一体化したドメインレベルで再利用しようとしている。
つまり、新しい酒は新しい革袋に入れるように、マイクロサービス設計には新しい概念を使うべき、という主張なのだろう。

すなわち、ソフトウェア工学に物理的アプローチを適用したい意図があり、それの一つの例が、アーキテクチャ量子や適応度関数になるのだろう。

そんなことを考えると、「進化的アーキテクチャ」「ソフトウェアアーキテクチャ・ハードパーツ ―分散アーキテクチャのためのトレードオフ分析」の著者は、量子力学などに詳しい物理学の専門家をバックグラウンドに持つソフトウェアアーキテクトなのだろうと推測する。

【5】物理学的なアプローチを自然科学のような自然現象だけでなく、経済現象やソフトウェア工学に適用しようという事例は20世紀後半からよく見られる。
物理学で量子力学や相対性理論が完成した後、物理学が解決すべき問題はかなりなくなってきたという話は昔から聞いていた。
だから、成功の歴史がある物理学のアプローチを使って、自然現象以外の問題に適用して、仕組みをモデル化し、問題を解決しようとする方向性はよく見られる。

たとえば、とある勉強会で、トランスフォーマーのニューラルネットワークの背後に重力の対称性である一般座標変換対称性があると言う話を聞いた。

Xユーザーのakipiiさん: 「トランスフォーマーのニューラルネットワークの背後に重力の対称性である一般座標変換対称性があると言う話を勉強会で聞いた。NNを物理で理解するのは面白いな。Unification of Symmetries Inside Neural Networks: Transformer, Feedforward and Neural ODE https://t.co/ooUEm9bLk1」 / X

この論文では、ニューラルネットワークの背後にゲージ対称性のような仕組みがあるのではと議論しているらしい。
この議論の中で、ある人が話されていた発言がすごく心に刺さった。

「人間が作り出したニューラルネットワークは人間が理解不能な状況になっている。
ニューラルネットワークで起きている座標的なもの、力学的なものを自然界に適用した物理学を使って、ニューラルネットワークの中を研究対象できるのではないか、と思える。
物理学者はこういうものが好き。物理学者は数学を作り出す。」

「ブラック・ショールズ方程式も物理学者が見つけた経済モデル。
自然ではないものに物理学的な思想、物理学的アプローチを適用したものだった。」

今のニューラルネットワークや大規模言語モデルでは、その原理や仕組みはまだ誰も分かっていないまま、Pythonで作られたNNやLLMのライブラリをいかに使って問題解決していくか、みたいなところに走っている気がして、違和感をずっと感じていた。
でも、今までの物理学の知見を使って、NNやLLMの原理を理解しようとする発想は面白いなと思う。

たとえば、経済現象でも、ブラック・ショールズ方程式のような経済学の理論も物理学者がブラウン運動の考え方を使っている。
このブラック・ショールズ方程式により、株式証券の無リスク・ポートフォリオが計算されて、現代の金融取引が成り立っているわけだ。

このように、今までに成功した歴史があり、たくさんの道具やツールが揃っている物理の手法を使うことで、経済現象やニューラルネットワークの仕組みを理解しようとしている。
物理学では現象を数式で説明するので、コンピュータに乗りやすいし、応用がききやすい。

その一連の流れに、ソフト工学に物理的アプローチを適用してみよう、という発想もあろうのだろう、と思っている。
そして、その物理的アプローチはわりと成功する可能性が高いのでは、と思ったりしている。

|

« マイクロサービス設計は従来のアーキテクチャ設計と何が違うのか | トップページ

モデリング」カテゴリの記事

自然科学」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« マイクロサービス設計は従来のアーキテクチャ設計と何が違うのか | トップページ