新ソフトウェア宣言その後

大槻, 2014.01.01

 ソフトウェアとは何か? という問いは、永遠のテーマです。これからの時代のソフトウェアとはどういうものになっていくかという点については、2010年の夏に『新ソフトウェア宣言』[Ses2010]としてまとめ、以下の7つの観点を得ました。

1.ソフトウェアは、数学的理論探求の上に成り立つ
2.ソフトウェアは、部分に還元することが不可能な全体である
3.ソフトウェアは、実行可能な知識である
4.ソフトウェアは、学びの副産物に過ぎない
5.ソフトウェアは、制約条件下で創造される美しい人工物である
6.ソフトウェアは、富を生む経済活動の資源である
7.ソフトウェアは、言語ゲームである

 これ等の説明は、『ソフトウェア宣言概説』[Otsuki2010]に詳細を記していますが、2010年当時以降の認識の進展について、以下に述べておこうと思います。

『新ソフトウェア宣言概説』は、こちら→newsoftdecl_overview_20100715.pdf

1.ソフトウェアは、数学的理論探求の上に成り立つ

 ソフトウェアづくりの本質が人間の主要な能力の一つである概念操作であると考えています。いろいろな概念を数学的に定式化していく方法を確立すること、逆に、数学的な概念がどのような人間の認知メカニズムに依っているのかなどを究明していかなくてはなりません。レイコフ(George Lakoff)の『数学の認知科学』[Lakoff2001]では、数学的な概念である点、線、空間、集合、無限、複素数などが、人間の身体的な経験に基づいてどのように獲得されてきたかを説明しています。また、人間の新しい抽象的な概念獲得の思考パターンとしてブレンド(混合)とメタファ(隠喩)が本質的であることを主張しています。このあたりは、ソフトウェアの世界での新しいビジネスモデルや仕組みをデザインしていく創造的活動の接近法を示唆していると考えています。

 数学には大別して幾何学と代数学とがあります。素朴な言い方をすれば、幾何学は右脳の直感的な空間認識や視覚に関わっており、代数学は時間や演算・計算に関係しています[Atiyah2010]。両者相補的な関係にあります。幾何学はユークリッドに始まり、ニュートン(Isaac Newton)力学、位相幾何学のポワンカレ(Jules-Henri Poincaré)、シンプレクティック幾何学の牽引者としてのアーノルド(Vladimir Igorevich Arnol'd)へといった系譜で捉えることができます。一方、代数学は、ライプニッツ(Gottfried Wilhelm Leibniz)、ヒルベルト(David Hilbert)、ブルバキ(Nicolas Bourbakiという架空の名前を冠した集団)の系譜です。代数は一つの公式を作ることを目的としていて、計算によって答えが得られるようなマシンを作ることになります。ソフトウェアは、幾何学と代数学という対峙から言うと、代数の世界の手段として捉えられると思います。両者は相補的ですが、アイディアや新しい概念創造の源流は幾何学寄りのところに在ると確信しています。

2.ソフトウェアは、部分に還元することが不可能な全体である

 ソフトウェアは、実世界の中に置かれるマシンですから、実世界の振る舞いに左右されます。実世界は自然界であっても、社会であっても複雑系の様相を呈しています。複雑系に関しては、多くの研究者が取り組んでいますが、総じて説明困難な複雑な現象を研究しているものの、まだまだ発展途上の領域で、これといった成果が得られているようには思えません。

 複雑系とは、「数多くのコンポーネントから構成されながらも、単純な運用規則を持つのみで中央制御機構を持たない大規模なネットワークから、集合体としての複雑な振る舞い、複雑な情報処理や、学習、進化による適応が生じるシステム」と定義されます[Michell2009]。また、内部・外部の制御装置やリーダーの存在なくして組織化された振る舞いを生むことを「自己組織化」と言い、単純な規則によって予測の難しい複雑な振る舞いが巨視的に生じることを「創発」と言います。複雑系には、この自己組織化と創発が生ずることが特徴だと言えます。

 ソフトウェアの世界も複雑系の局面は多く出現すると考えられ、この世界での予測や意思決定を行う方法を模索していく必要があります[Johnson2009]。ソフトウェアシステムの改訂や、新しい要求への対応、フィードバックの方法、関与者やチームの行動規範などの局所的な変化が、システム、ひいては、その周辺の社会・経済に対して大局的な影響を及ぼすと考えられます。一方で、複雑系とコンピューティング(計算)との関係も新しいものが出現してきて、遺伝的アルゴリズムや自己増殖型オートマトン、ゲーム論を取り入れたシミュレーションなどを使った予測や制御の方法が整備されてくるかもしれません。いずれにせよ古典的なソフトウェアエンジニアリングの知見だけでは、立ち行かなくなるのは明らかです。

3.ソフトウェアは、実行可能な知識である

 元来、『新ソフトウェア宣言』の検討は、知働化研究会の活動の一環として企画したものです。この知働化研究会のコンセプトが「実行可能な知識」です[Yamada2004, 2009]。この考え方に基づき、従来のアジャイルプロセスの意義を再検討し、開発プロセスをソフトウェアが置かれる世界からのフィードバックを明確に位置づけたものが『ΛVプロセス』です[Otsuki2012a]。

 現段階で実行可能知識であるソフトウェアについての研究課題は以下の項目があります。

•ソフトウェアが創造的人工物(artifact)であり、これをデザインする方法を確立する。そのために、「創造性」に関する理論と実践方法を探求しなくてはならない。
•ソフトウェアの利用面、実世界側でのプロセスを明確にする。特に、実世界側の要素やプロセスの「抽象化」に焦点をあてて探求しなくてはならない。
•「実行」という概念そのものを、明確にする。従来のソフトウェアでの実行概念に加え、計算、処理などの社会的な意味、人や組織を含んだ意味での実行概念を探求しなくてはならない。

4.ソフトウェアは、学びの副産物に過ぎない

 我々は日々、仕事をし、勉強し、遊び、生活をしながら、いろいろな事柄の理解を深め、学習し、覚っていきます。このことにより人は安心します[Yasutomi2011]。何か目標を設定して、それを実現するという考え方では、人は幸福にはなれません。成長し続けること、学び続けることが大切です。社会というのは、常にそれぞれの人々が学び続けることが常態なのです。その人々の活動の中でソフトウェアは、開発され、維持され、廃棄されるものです。

 では、学習し続ける社会的な仕組みをどのように作っていけばよいのかという問いに対する一つの解が、コミュニケーションの方法を提供することです。「コミュニケーションとは、お互いに学習するプロセスである」ということを、安冨歩は『経済学の船出』[Yasutomi2010]の中で述べています。このアイディアに基づいて、知働化研究会では、「知のフリマ」[Otsuki2012b]というコミュニティ活動の方法を提案し、展開しています。これはソフトウェアのみならず、いろいろな異文化の人々が互いにコミュニケーションを通じて刺激し合い、成長していく場を提供しています。

 社会的・組織敵な活動の仕組みで、もう一つの局面が、知の蓄積をどのように図っていくかという問題があります。「知のフリマ」でもコミュニケーションの直接の成果は、各自の成長ということになりますが、これを何らかの形で蓄積していくことも検討していく必要があります。私は、これ等を総称して「知のプラットフォームの構築」という問題設定をしています[Psec2013b]。

 知のフリマは一つの実験的な活動ですが、こういった社会的な仕組みとソフトウェアに関する活動とを連係させて、新しいソフトウェアづくりに取り組んで行くにはどうしたらよいかというのが、現時点の問題認識です。

5.ソフトウェアは、制約条件下で創造される美しい人工物である

 この宣言文中で「美しい」という言葉を使っているところがポイントです。ブルックスJr.の『デザインのためのデザイン』[Brooks2010]によれば、テクニカルデザインにおける美は、以下のように集約されています。

•エレガント:少しの要素で多くを達成すること
•無駄があること:冗長性
•明瞭性:構造概念が一目瞭然であること
•メタファ:馴染みのある比喩による理解
•一貫性:直交性(独立なものの組み合わせになっている)、
    本来性(重要で無いものは入れない)、
    汎用性(本質的なものを制限しない)

 これはなかなか含蓄のある項目です。私も直感的には、シンプルであること、対称性があること、直交していることなどが美の根底にはあり、さらに、茶の湯の千利休にあるような「わざと欠けを作って不完全な美を演出する」ようなことも大事なことだと思っています。これは、キリスト教の三位一体で言う「父」と「子」と、もう一つ「精霊」があることによって、過剰性が担保され、世界に広がりがでるということに通じているとも言えます[Nakazawa2006]。物理学の理論も同様で、信ずるに足る美しさが要求されます。ヒッグス機構の理論では、弱い力の対称性が破れる場合があることを主張していて、対称性の理論のエレガントさを保ちつつ、現実世界の予言も行っている魅力ある美しいもので、多くの物理学者が信じている理論です[Randall2012]。

 美に代表される「真善美」は哲学的な問題です。このような哲学的問題を、神様や宗教抜きで人間化して論じるのは、難しいことです。おそらく現象学的なアプローチが唯一の方法かもしれません。真というのは「ほんとう・うそ」という科学的な事項、善というのは「よい・わるい」という社会的な事項、美というのは「きれい・きたない」というエロスの問題です[Takeda1993]。

6.ソフトウェアは、富を生む経済活動の資源である

 富を生むということは、端的に言うと、ビジネスに組み込まれて価値を生み出すということになるのですが、重要なビジネスモデルが、「プラットフォーム戦略」だと考えています[Hirano2010][Negoro2013]。大まかに言うと、プラットフォーム戦略とは、生産者/消費者、提供者/利用者の取引や交流の場を設定し、その場代を収益の柱とするものです。『経済学の船出』の中でも「関所資本主義」と評されているものでもあります。Eマーケットプレイス、銀行、自動車会社、大学などもプラットフォームビジネスと見なすことができます。Amazon、Apple、Googleが典型例です。

 ソフトウェアとプラットフォーム戦略との関係は、今後検討していく必要があると思っています。検討すべき事項は、以下の通りです。

•プラットフォームビジネスを構成する基本要素の洗い出し
•ビジネスモデルとシステムアーキテクチャの決定
•開発/利用のフィードバックの方法、特に、指標の開発

 これ等の検討がまとまってきたら、アジャイル経営/開発の手法として提示することが可能になるでしょう。

7.ソフトウェアは、言語ゲームである

 ヴィトゲンシュタインの提唱した「言語ゲーム」の考え方は、産業界を活性化するための思想としての「プラグマティズム」にも通じるものがあります[Putnam1995]。『プラグマティズムの作法』[Fujii2012]では、専門化して縦割りになっている領域の壁を打破するために、それぞれの専門領域が外からどのように見えるか、どのように他人の役に立つかどうかを真摯に見直そうということを提唱しています。このコンセプトに従って、コミュニティ活動としてP-sec(実践的ソフトウェア教育コンソーシアム)のオープンフォーラムを開催しました[Psec2013a]。コミュニティ活動を含めて人間社会の仕組みをデザインする際に多様性を抱擁することはとても大切なことです。

 ソフトウェアが、利用面を含む文脈(コンテクスト)が中心となってきていること、時間経過とともに適応・変化していくことを考慮するには、ソフトウェアを取り巻く文法、規範、制度設計をしていかなくてはなりません。ハート(Herbert Lionel Adolphus Hart)は、言語ゲームを法律の領域に適用して、法の制定や改訂のプロセスを二層のルールのモデルで提案しています[Hashizume2009]。社会制度設計では、たとえ法律の世界であっても語り得ない世界があり、しかも、その世界をある程度制御する方法が必要になってきます。