「プログラミング」という概念の拡張
ここにあるプログラマーがいる。彼は昼夜逆転の生活を送り、昼頃からもぞもぞと起き出してきて、コーラを飲みながら画面とのにらめっこを始める。そういう生活スタイルが、彼の描くコード(プログラム)と完全に無関係とは言えないのではないか、とふと思った。プログラムを取り巻く「環境」もまた、プログラムを規定する文脈としてのメタプログラム(meta-program)あるいは文脈プログラム(contextual program)としてプログラミングできないだろうか。プログラマーの行動パターン・生活スタイルや、社会生活における他者との相互作用なども、制御可能な「変数」としてプログラムの中に含める、と。それはプログラムを動かすなんらかのデバイスの存在を前提としない、狭義のプログラムとうまく馴染むように作られた動作の手順である。
清水亮『プログラミングバカ一代』*1で「人間プログラミング」という言葉が出てきた。それと同じような発想で、プログラミングをいわゆる「プログラミング」に限定せず、もっと拡張して捉えることができるのではないか。アルゴリズム(処理の手順)を記述したものがプログラムであり、あらゆる手順はアルゴリズムを使って表現できると考えるならば、プログラムの外側にもプログラム可能(programmable)な領域が広がっていると考えられる。先日IoTについての記事*2を書いたが、IoTが出てきた背景にはそういうことがあるのではないかと私は思っている。つまりこれまではプログラムが個々の機械ごとに独立して機能していた世界が、プログラムをネットを通して連携することで、もっと多くのものがプログラムを通して制御できるようになるのではないかという、そういう願望が人々の中にあって、それが具体的に世に現れてきたのがIoTであると。様々な種の生物が、それぞれ自らの種に固有の行動様式をもっているように、IoTではそれぞれの「物」たちが、自分に合ったプログラム(コード)を持つ。IoTによって、身の回りのものはどんどんプログラムで制御されるようになっていく。そうして拡張したプログラムの領域は、いったいどこまで拡張し続けることができるだろう。私たちの暮らしの中に、どんどんプログラムが入り込み、増殖し、さらにそれはインターネットを通して相互作用する。
そして相互作用をするとき、IoTの場合は機械と機械の間に私たちが割って入ることになるが、M2Mでは私たちの居場所はない。そこでは機械同士のコミュニケーションがプロトコルという名の言語を通して展開される。
私たちは自分について、「自分の知らないところで誰かに何か嫌なことを言われているのではないか」と心配したりするが、プログラムもまた、私たちの知らないところで、私たちについてのあれこれを決めている。「誰かがよかれと思って作ったプログラムだろうから、悪いものではないだろう」などと素朴に考えることはできない。ある意図とある結果がつねに綺麗に対応するとは限らない。いい意図をもって生み出されたものが、結果的には人々に対して悪い結果をもたらし、否定的に評価されるということは、日本人がつい最近経験したばかりではなかったか。原発とは当初、いい意図をもって生み出され、そこに夢や希望が託され、人々自身すらそれを肯定的に評価し、利用していた。それが一度大事故を起こすと、原発はまるで、日本という国を滅ぼそうという意思を持った「恐怖の大王」ででもあるかのような存在に変貌させられてしまった。集団の感情とはそのように変化していった。それもたった一度の偶然の出来事がきっかけで、一気に180度評価が変わってしまったのだ。アリストテレスが技術の社会的制御を問題にしたのは、今から2000年以上前の話だ。私たちは彼がそういう問題を考えていた頃から2000年以上経った今、それに躓き、しかもそれを克服できないまま今も過ごしている。
さて話が逸れたので本筋に戻そう。プログラムが私たちの見えないところで私たちの生活のあれこれを決めているという現実はすでに色々なところで存在している。例えば私はこの文章をパソコンのキーボードで入力しているが、私が語句を変換するたびに、ソフトがそれを元に学習し、変換候補の精度が上がっていく。その背後で変換候補の精度を上げているのはなんらかのプログラムだが、私たちは普段そんなことを気にしない。それは変換の精度が低い時には少しは意識しやすいかもしれないが、変換した語句が増えるにつれて、精度は上がり、そしてそうなるにつれて私たちは変換を左右するプログラムの存在を意識しなくなっていくのだ。テクノロジーはこうして「見えなきもの」(インビジブル)になっていく。私たちの前にはカーテンがかかっている。そのカーテンの向こうに潜んでいるのは、権力者だけではなくなった。そこには単独で、或いは協調して、私たちに関する様々なことを決めていくアルゴリズムも控えている。
プログラムとしてコンピュータに制御されるアルゴリズムは、プログラミングされていない領域に比べるとかなりすっきりしていてエラーも少ない(毎回必ず同じように作動し、インプットが同じならアウトプットも必ず同じになる)
しかし、プログラミングされていない領域において、主に人間によって処理される手順(アルゴリズム)にはエラーが起きやすく、同じインプットでもアウトプットが変化する場合もあれば、そもそも同じインプットが不可能な場合すらある。それがシステム全体の生存確率を上げる方向にはたらく場合もあるが、反対に下げることもある。「レジリエンス」(resilience)*3の観点から見た場合、アルゴリズムの処理が一定であるか否かのどちらがよいかを正確に評価することは簡単ではない。
IoTやM2Mが進めば、これまでは人間によって処理されていた手順の多くが機械に取って代わられるようになっていくだろう。IoTでは人間が機械と機械の間に入るが、それですら、これまでならば人間がやっていたようなことを機械にやってもらい、重要な決定の権限だけを人間が持つという風に変わっているのであって、そこでは人間がやるべきことは減る。そしてそれらは私たちの目には見えなくなっていく。機械が任されるようになった処理について、機械の方が人間たちに、「私たちはこのような処理を任されました。そしてこの処理はこのようにして行われています」などと説明してくれることはない。それでは人間は、自分たちの生きる世界の中で、これまでは自分たちで行っていた様々な処理について知らないまま成長し、生きていくことになるのだろうか。私たちはかつては自分たちが行っていた身の回りの様々な「雑事」がコンピュータに託されてブラックボックス化した社会の中で、雑事は彼らにやらせておけばよいと自然に思うようになるのだろうか。
プログラムの存在は知っていても、
実際にプログラムがどういうところで使われているのかは知らず、
コンピュータについて多少は知っていても、
自分の周りのコンピュータたちが自分のすぐ近くで何をしているのか知らず、
人工知能については知っていても、
人工知能が何を考え、何をしているのかは知らない。
私たちの知らないことは増える。人間は自らの無知を最も知らなくなっていくのではないか。機械に人間のやっていたことを任せていくうちに、ではその人間とはなんなのかということを置き去りにしたままで、人間の人間たる所以を理解しようとすることなく、私たちは私たち自身について最も無知な存在になっていくのではないか…。
といくぶん悲観的に書いてきたが、私は基本的にはプログラムの使われる領域が拡大していくことには賛成だ。人間にはもっと色々なことができる可能性があると考えているし、そういうことについて人間が考える時間が増えるのであれば、それは豊かな社会ではないかと思うからだ。またそれとは別の点で、コンピュータの発達が人間とは何かという問題について人間に再考を迫るという効果をもっている。私たちはコンピュータ、とりわけ人工知能について考えることを通して、私たち自身をもういちどゼロから捉え直す機会を与えられているとも言えるのではないか。人間についてのこれまでの見方を根本から覆すような人間観というものがこれから生まれてくる可能性もある。そういう風に考えていくと、楽しい時代になりそうだとしみじみ思う。
*1:
*2:
plousia-philodoxee.hatenablog.com
*3:この言葉は去年バズワードのようにあちこちで用いられていたが、最近はほとんど目にしなくなった。言葉とは、それが用いられなくなるとその指し示す対象もまた消滅してしまったかのように錯覚されがちであるが、レジリエンスの研究を続ける研究者は今でもいるし、世の中で使われなくなったからといって、それによって必ずしもレジリエンスの重要性や意義が損なわれたということにもならない。