AIの進歩によって社会や私たちの生き方がどのように変化するかということを考えています。
AIが知的労働を担うようになっていくと、人間は考えることがなくなっていくようにも思えます。しかし、私は、これまでの知的労働とはまた別の種類の思考が人間には求められていくだろうと考えています。
それは、機械化により人間が肉体労働からある程度解放されたものの、一方で別の種類の身体的な活動を求められるようになったことと似ています。
別の種類の身体的な活動とは、手や指先を繊細に使う作業です。それは職人のような技能的な労働であったり、パソコンやスマホの操作であったりします。
同じように、知的労働から解放されても、私たちが考えるという知的作業から逃れられるわけではありません。
では、どのような種類の知的活動が求められるのでしょうか。
この記事ではAI時代のソフトウェア開発の考え方の転換についての私の考えを紹介すると共に、考える宿命にある私たちについて、探究していきます。
プロセス指向ソフトウェア
私は、オブジェクト指向からさらに進んで、プロセス指向を次のパラダイムとして提案しています。
プログラミングの中心となるモジュールを、プロセスとするという考え方です。プロセスは、イベントや条件により発生し、プロセスで定められた順序に従って、様々なロールにより処理されていき、最終的には停止します。
この発生から停止までの一連の流れを1つの単位として考える方法は、人間の直感にフィットします。
このため、要求分析から実装、そしてテストや運用に至るまで、プロセスを中心にしてソフトウェアやシステムを理解することができます。
システムにおける主要なプロセスを実装した後は、補助的なプロセスや機能追加のためのプロセスを、そこにプラグインのように追加していくことができます。
追加のプロセスは、メインのプロセスとは独立したイベントや条件で開始するものもありますが、メインのプロセスにより条件が満たされた時に開始するものもあります。
ただし、その場合でもメインのプロセスに手を加える必要はありません。開始条件をメインのプロセスが満たした時に、追加されたプロセスが開始するように定義すれば済むためです。
また、プロセスを1つのモジュールとして扱うため、プロセスの定義にはプロセスが実施する全ての処理が記載されます。
また、それでもけでなく、先ほど挙げた開始条件や、処理中に必要になる情報を書き込むための変数やデータ領域をプロセスが持ちます。
プロセスを単位モジュールとして、必要な処理やデータ領域を全て持つため、多数のプロセスで処理の実装や構造化されたデータなどが、プロセス間で重複する可能性が高くなります。
それを共通モジュールとする手もありますが、むしろ重複を許容する方向に舵を切ることも間違いではありません。
特に、AIがプログラミングを補助することで、似て非なる実装が多数のモジュールに存在していても、問題がないという結論もあり得ます。
処理やデータ型の共通化は、開発するソフトウェアのプログラムの量を減らして管理や理解を容易にすることを主観に置いています。
しかし、実装コードの管理等のコストがAIにより大幅に低減されるなら、共通化をする必然性は薄れていきます。
このため、共通化によるソフトウェア構造の複雑化を避けて、多くの重複がありつつも個々のプロセス毎に全ての処理やデータ構造を定義するという方針は、十分に理に適っています。
これは、全体最適という考え方から抜け出して、個別最適を目指すということを意味します。共通化していないことで、各プロセス間で類似している処理を、個別にチューニングすることも可能になるためです。
個別最適化社会
プロセス指向の考え方を適用したソフトウェアと同じように、AIによる自動化で効率化されて高度な生産性が実現する社会では、全体最適から個別最適へと考え方がシフトします。
これは、個別最適化社会と呼べる現象です。
私たちの社会には、様々なルールや常識、マナー、常識といった共通化された価値観や基準があります。
しかし、これらを全ての場面や状況で厳密に適用すると、多くの例外的なケースにおいて不都合が生じます。
このため、私たちは共通化された価値観や基準を重視しつつも、個別の場面や状況に応じて、柔軟に判断することを許容しています。
それはルールに明記された例外条件であることもあれば、個別のケース毎に判断するというルールになっているものもあります。さらには、そうした明文化はされていなくても、暗黙の了解とされている場合もあります。
例えば、法律にも様々な例外条項が明記されています。加えて、法律で明記できなくても、裁判制度により個別の事件毎に量刑は左右されます。情状酌量は、まさに個別の事情を反映するという考え方そのものです。
このように見ていくと、本来は全ての場面や状況の個別性を丁寧に確認して、その個別性に基づいて判断する個別最適の考え方が、すでに社会に浸透していることが分かります。
一方で、あらゆる物事全てを個別に丁寧に判断することは、効率が悪いことは確かです。このため、効率の高さが重要な時代においては、全体最適が求められます。
しかし、これからAIによって社会が高度に効率化されていくと、全体最適を追求する価値は薄れていきます。そして、個別の場面や状況毎に丁寧に判断が行われる、個別最適化社会が実現されていくはずです。
主観的哲学
場面や状況に応じて個別最適な判断をするということは、共通的な判断をすぐに適用するのではなく、思い悩む必要があるということです。
この思い悩むこと、それ自体に価値があるという倫理観を、私は主観的哲学と呼んでいます。
全ての出来事は「今」「ここ」において他の出来事とは異なる個別性を必ず持っています。その個別性を加味した上で判断する「私」には、相応の責任が課されます。
個別性を無視して型にはめたような共通化された判断をしたり、思い悩むことを放棄して適当に判断したりすることは、その結果の良し悪しとは別に、非倫理的です。
反対に、判断の結果により、意図とは違う影響が出てしまい、悪いことが起きたとしても、その判断が十分に多面的な観点から熟考され、説明責任が果たされているなら、その判断自体は倫理的です。
このように、効率化や共通化という考え方から抜け出すことができるようになると、主観的哲学というオンデマンドの個別最適化が求められる時代になっていくでしょう。
フレームワーク設計
哲学にせよ社会にせよ、ソフトウェアにせよ、最適化をするためには、考え方の枠組み、つまりフレームワークが重要になります。
それぞれの対象をどのような観点から見て、どのように評価するかによって、最適化の方向が変わるためです。
全体最適の観点からは、フレームワークは様々な物事を高度に抽象化してできるだけシンプルにする必要があります。この抽象化の過程で、個別性が失われていきます。
一方で、個別最適の場合、その出来事や対象に即して多面的な観点から捉えて、評価することが望ましいことになります。
全体最適の場合は、どのようなフレームワークで様々な物事を捉えればよいかを考える人は、ごく一握りの人たちだけで十分でした。
多くの人は、その少数の人たちが考え出したフレームワークに則って、物事を捉え、評価や判断をすれば良かったのです。
しかし、個別最適の場合は、多くの人が個別の物事に対して、その物事の個別性を適切に捉えるためのフレームワークを、個々の物事毎に考え出す必要が出てきます。
このため、フレームワークを設計する能力やスキルが多くの人に求められるのです。
考える宿命
このように整理していくと、人間がこれまで担ってきた知的労働を人工知能が肩代わりするようになっても、私たちが考えることをやめることはできない、という将来像が見えてきます。
生産性や物質的な豊かさのための知的労働からは解放されますが、その一方で、個別最適化社会と主観的哲学は、私たちに個々の物事に対して個別のフレームワークを設計しつつ、深く思い悩むことを要請してきます。
それは、現在の社会よりも、むしろ考え続けなければならない状況に私たちの立場を位置づけます。
AIは誰が行っても構わない知的労働や判断を行うことはできます。しかし「私」が責任を負うべきことに対しては、情報提供や判断材料の提示、あるいはアドバイスをすることしかできません。
最終的な判断は「私」が行うしかないのです。それは、現在においても個人の様々な判断に対して、権威を持つ人や親や友人に相談することはできても、判断を委ねることができないのと同じです。
そして、高度な効率化が実現した時代になると、その判断を個別に深く行わないことが、許されなくなっていきます。なぜなら、生きるために忙しくて考える時間や余裕がなかった、という言い訳ができなくなっていくためです。
こうした高度な効率化が実現した時代においては、私たちは、考える宿命から逃れることはできなくなるのです。