2017年9月26日火曜日

会社組織型大規模ソフトアーキテクチャ


一人の人間が覚えられる知識、処理できる仕事の上限は、ある程度限られている。その能力が十倍違うことはあっても、一万倍違うということは考えにくい。でも計算機モデルではこれはあり得ることだ。それは素晴らしいことなのか、それとも違うのか、ちょっと分からなくなってきた。

人間は、物理的なサイズが閉じているし、脳の大きさも似たようなものだ。成人であれば、倍半分違うということはない。言葉を喋るスピードが4倍違うと、多くの人は聞き取れなくなる。では仕事が多くなったらどうするかというと、人を増やすのが従来のビジネスモデルだ。

計算機だって同じではないか、と言えば、そうではない。プログラムの規模にはモデルによって何万倍もの開きがある。もちろんモジュール分割して開発するわけではあるが、その境界は曖昧で、いかようにも作ることができる。これは、物理的な限界がある人間とは違う。

問題なのは、そのような超高速・超巨大なシステムを構築するのが、ほかならぬ人間自身であるというところだ。つまり、全体の複雑さが、既に人間が管理する(開発する)能力を超えてしまっているのではないだろうか。

人間なら、部署を分け、各々にマネージャーを配置し、進捗状況などを常時監視する、いわゆる管理職が居るはずだ。仕事が複雑であるほど管理職の比率は増え、様々な視点から管理をする。だが大規模プログラムにはそういう視点がない。マネージャーが居らず全員が実務者、というのが今のプログラムと言える。

まったく居ないわけではない。プロセス監視、機器の故障監視、通信集中の監視、マルウェアの監視といった汎用の監視システムはある。だが、ワークフローの途中でハンコを押す、業務の内容を熟知したマネージャーソフト、というのは見たことがない。課長、部長の区別も勿論ない。

何を言いたいのかというと、大規模プログラムにおいては、人間がしているように、ソフトウェア上でも実務者とマネージャーに別れた監視の概念を取り込むべきではないだろうか、ということだ。そしてその各々の複雑さは人間個々の理解を超えない範囲に止め、複雑さの増大に対してはマネージャーの(数の)増加で対応する、というものだ。

概念自体は簡単で、従来の業務ソフトを分割して、内部でワークフローを作り、チェックポイントでマネージャーソフトの承認がないと先に進めないようにする。勿論却下された場合の対応方法もプログラミングする必要があり、これは従来なかった概念なので新たな開発になる。一方でマネージャーソフトは当然ながら新規開発である。

判断の基準は、個々の業務に間違いがないかどうかは勿論だが、統計的にその処理が妥当かどうか、だろう。例えば特定の処理が異常に多くないか、申請者が怪しい人物でないか、極端に金額や数値が大きくないか、など、どちらかと言えば「常識」を持つものになる。そしてこれらはAI的なソフトになるのではないだろうか。

こうすると、人間としてのマネージャーが一人のAIマネージャーを教育(学習)し、監視しながら徐々に自動化の割合を高めていく、という形になる。これなら実務者が人からソフトに変わっても同じ対応ができるし、ノウハウは会社(AI)に溜まることになる。マネージャ相互の優秀さもちゃんと個性が出るので、それらを比較してより向上させたり、評価に使ったりできる。

マネージメントの量が増えれば人も増やさなければならない。これなら実務者がソフト化しても管理者側に廻ることができ、また管理者が増えることで処理可能数が増え、人を削らずに業務を拡大することができる。

このアーキテクチャでは、ソフトウェアが幾ら大規模になってもソースは大規模にならない。AIマネージャーの初期状態は皆同じであり、事業立ち上げ初期には(プログラマやPMではなく)業務経験者が多数必要になる。もしソフトに不具合があっても被害が大規模になることはない(人間の管理者がチェックするため)。ベンダにノウハウが移ってしまってベンダロックインが生じることもない。費用の問題を除けば(検討していないので)、どちらにとっても良いシステムであると言える。

0 件のコメント:

コメントを投稿

注目の投稿:

超音波モーターの原理によるVR用トレッドミル

  VRにおけるリアリティ問題の一つに、その場で動くのではなく移動する場合、つまり歩いたり走ったりすることが挙げられる。実際にはその場にいるので、歩いたかのように足場を調節してやる必要がある。 これを実現する方法として、すり鉢状の滑りやすい足場を作っておく方法と、トレッドミルを使...

人気の投稿: