見出し画像

『ソフトウェアって何?』

 今晩和♬

 おひさしぶりで。出戻りで note に帰ってきました。
 ここに書き始める記事は、以前投稿したものの書き直しです。
 では、よろしくお願いします。


 そもそも『ソフトウェア』って何なんでしょうね?


 『世界大百科事典』から少し引用します。

 “もともとプログラムはコンピューターを使ううえに不可欠で重要なものであったが,それを総括的に呼ぶハードウェアに対応することばはなかった。しかしすぐにこのようなことばが必要になり,ハードウェアとの連想から〈ソフトウェア〉が自然にできてきた。”

 成る程。
 同項目によると “1968年ころから〈ソフトウェア工学〉が提唱され” たそうですから、わたしが物心ついた頃には、もう有名な概念だったのでしょう。実際、小生の小さい頃、ファミコン(あるいはそれに先駆するいくつか)のようなゲーム機が出てきましたが、そのゲーム機について『ゲーム・ソフト』という謂い方はすでに一般的でした。


 でも、『ソフトウェア』って何なんでしょうね、と再度問いたくなる。


 このとき私の脳裡をよぎるのは、ルーディ・ラッカーの SF 長篇『ソフトウェア』です。同書に於ける「ソフトウェア」とは、『攻殻機動隊』の「ゴースト」に近い――《魂》の如き――思考する精神システムだったかと、おぼろげな記憶です。だからこそ、「機械の身体に『自分』を移植する」ことで永遠の命を獲得するみたいなエピソードが盛り込まれていたはずです(いいかげんな記憶だなあ)。


 なにが云いたいかって云うとね。
 「ソフトウェア」を狭義の、単なるプログラム・コードの集積としてみるのは本質を見誤っている、と云いたい。「ソフトウェア」とはもっと広義の《情報処理体系》なのではないか、と云いたいのです。
 さあ、ここからアクセル、踏み込んでいきましょう。

 なにか、例がないかな?
 そうだ、『デザイン・パターン』を引っ張り出しましょう。
 デザイン・パターンって、プログラマーがプログラミングするときの経験から産み出された「類型」です。Wiki から引用してみましょう。

 https://ja.wikipedia.org/wiki/デザインパターン_(ソフトウェア)
 “彼らはこう述べている。
 [Design patterns] solve specific design problems and make object-oriented designs more flexible, elegant, and ultimately reusable. They help designers reuse successful designs by basing new designs on prior experience. A designer who is familiar with such patterns can apply them immediately to design problems without having to rediscover them.
 コンピュータのプログラミングで、素人と達人の間では驚くほどの生産性の差があり、その差はかなりの部分が経験の違いからきている。達人は、さまざまな難局を、何度も何度も耐え忍んで乗り切ってきている。そのような達人たちが同じ問題に取り組んだ場合、典型的にはみな同じパターンの解決策に辿り着く。これがデザインパターンである (GoF)。”

 つまり、プログラミングやシステム開発をくり返しているうちに、「あれ? このパターンってこの前も遭遇したよな」とか「この作業とあの作業、かなり似ているな」という体験の積みかさねから産み出された《型》です。《類型》です。数字の 1, 2, 3, …… に実体はないけれど便利にモノを数えるのに使えるのと同じで、目の前の作業をコンピューターに代行させるのに便利な、《抽象化された概念》です。もっと、ここでの例に即していえば《抽象的構造》です。


 以前、別のところでも書いたことがあるんですが、
 『デザイン・パターン』はプログラミングするときの処理の類型です。
 ですが、こちらも「プログラム」に留まらず、取得した情報をどのように加工して望みの結果を得るか、という《情報処理術》に見えました。

 そもそも《情報処理》とはなんであるか?
 現行のパラダイムでは
 「入力された情報を、なんらかのアルゴリズムによって処理して、計算結果を出力する」
ということになります。大学で「情報科学」や「情報工学」と銘打った授業は多数ありますが、それらの分野を、たんなる「コンピューターの使い方」として受け取るのは、非常にもったいない気がするのです。

 むしろ、情報処理とは、人間の生存・生産活動において必須の、重要なプロセスについての【抽象化】ではないかと。

 書店に出かけると『アルゴリズムとデータ構造事典』みたいな本を売っています。あれを単なるレシピ集としてだけ読むのは損だと思うのです。そうではなく、あれはもっと応用範囲のひろい『「仕事のやり方」の虎の巻』ではないかと。
 現実の人生や仕事で直面する諸問題を、いかに《モデル化》し、それを一定の手続きのもと処理し、望みの結果を得るか、というのは、単に「情報処理」だけのパラダイムではなく、『作業』そのもののパラダイムなのだと痛感するようになりました。
 だって、もともと「情報処理」は現実に存在する諸問題を、抽象的にモデル化して処理し、解決するために生まれてきた学問なのですから。

 だから『分割統治法』のような、大きな問題をちいさな問題に分割して、個別に、あるいは部分的にでも解決できないかどうか試す、というのは、現実の問題についても非常に有効なのです。


 ――と、わたしは考えるのです。
 そして、この考え方の延長線上で《ソフトウェア》を語りたいのです。
 及川 卓也 著『ソフトウェア・ファースト』で何度か登場しながら、あまり強調されていなかった概念があります。

 《コネクテッド(connected)》です。

 なにかとなにかが繋がっている――たとえば IoT において各種デヴァイスがネットを介してクラウド上のシステムと繋がって、ユーザーであるヒトに使用される――この《コネクテッド》には【ネットワーク化】や【組織化】が含意されている。


 ここなんですよ、本質は。
 データを介して、ユーザーである人間をふくめた、計算機器を筆頭とする各種機器がネットワークとして【自己組織化】していく、この過程こそが《現代》なのです。
 ソフトウェアとハードウェアと人間の心身が渾然一体として、ひとつのパッケージとして駆動を始めている――これが今の「インターネット社会」だと云いたいのです。
 そして私たちは、その欠点に直面し始めている。
 ネットでのいわれなき誹謗中傷から自殺してしまった人が出たり、あるいは新型コロナという感染症が大流行を始め、否応なく「距離を取らざる」を得なくなったり。現代は、軽率な「ネットワーク化」の副作用に苦しんでいます。


 そういった意味で《過剰結合》して《一極集中》してしまった社会を、どうやって【並列自律分散系】のように《疎結合》化していくか、は喫緊の課題です。つまり『ゆるやかな繋がり』を保ったまま、それぞれがそれぞれの得意を発揮して、共存していく、そんな時空間上の好循環スパイラルを、どうやって実現するか、が。


 こんなときに、いわゆる『テック企業』の社会的意義と責任は大きいものだ、と考えます。俗な謂い方をすると GAFAM に代表されるようなテック企業は、わたしたちのフィジカルな日常生活や仕事をまるごと再編しつつあります。
 ですが、その半径がまだまだ及んでいない領域も多々あります。
 たとえば、いま、衰退の一途を辿っている「町工場」、あの、「ものづくり」における研究開発能力と生産能力を、なんとかして次世代に引き継ぐことはできないか?
 苦境にあるのは町工場に限りません。医療や介護、農林漁業、保育に始まる教育、運輸・物流、小売………私たちが【イノヴェーション】を必要としている分野はいくらでもあります。
 これらを「ネットワーク」的にとらえ、再編・再組織化するためになにが必要なのか。


 そんなときに歴史に学んで「温故知新」することが大切だと思います。

 たとえば西欧が(俗な謂い方ですが)「(十六世紀)文化革命」そして「科学革命」を通じて『近代化』したとき、その背後にどんな社会構造や転換があったか、どんなイヴェントが起きたか、どんな組織が立ち上がったか、などなどを勉強するのは非常に有意義でしょう(日本や中国などの歴史でも同様です)。

 そして同時に、《ソフトウェア》という抽象概念を本来義に立ちもどって考えなおし、【情報処理体系】もしくは【情報処理機構】としてとらえなおすこと。
 たんなる目の前の PC や server で動くだけのもの、としてとらえず、逆に、インターネットというメディア込みで、人類をも包括するような【自己再組織化をくりかえす連携・連動ネットワーク】として捉えたとき、なにかあたらしいモノが見えてくるのではないか。


 長くなりました。
 今日の話はこの辺までにします。
 続きを書くとしたら、またの機会に……。

この記事が気に入ったらサポートをしてみませんか?