ハックとデジタル社会

コンピューターで作られたシステムに問題があって、困っているとしよう。システムを作った人はここにいないし、一から作り直す時間はなかったり、そもそも触る権限がなかったりする。そういうシステムを、どうにかうまく使えるようにすることを、ハックという。

ここでいう「ハック」は、コンピューターを壊すとか、システムに侵入するという意味ではないし、単純にコンピューターに精通するというニュアンスでもない。責任の境界を超越して、システムをうまく動くようにしてしまう行為のことを言っている。いいかえれば、他人に依頼して直してもらうめんどくささを回避して、自分でシステムを直してしまうことだ。

たとえば、macOSの標準ブラウザーSafariには「サイト固有のハックを無効にする」という開発者向けの設定項目がある。これは、どういう意味だろうか?

世の中のWebサイトは、コンテンツを配信するWebサーバーと、それを受け取って表示するブラウザーの組み合わせでできている。Webサーバーとブラウザーでどうやってやりとりするかは取り決めがあって、それに従うことで、システムは機能している。だけど、ばあいによっては、Webサーバーとブラウザーのどちらかに問題があって、Webサイトが壊れる場合がある。

もしサーバーに問題があるとしても、Safariを使っている人はSafariが壊れていると思うだろうし、Safariを作っている人たちが世の中のWebサーバーを直してまわるわけにもいかない。手っ取り早く、サイトごとに特殊な取り扱いを追加することで直してしまうことを、ここでは「サイト固有のハック」と呼んでいるのだ。

Safariの開発者向け設定画面。「互換性:サイト固有のハックを無効にする」という設定項目がある。(オレンジ色で囲って強調した部分)

人間社会は責任の境界がある。そういう社会でシステムを直す「まっとうな方法」は、責任をもっている人に対してうまく交渉を行って、直してもらうということだろう。でも、世の中には、誰が責任を持っているのか分からないシステムや、誰も責任を持っていないシステムというものがある。交渉しても、失敗して目的が達成できないかもしれない、という不安がある。でも、そこを迂回して、「ハック」を行ってしまえば話は簡単になる。だれか他人の顔色をうかがうことなく、目的を達成できてしまうので、楽だし、効率的で、安くつく。むかし、コンビニのコーヒーメーカーのデザインが分かりづらすぎて、テプラの修正まみれになったこともあった。つまり、そういうことである。

ソフトウェアのハックには、ソースコードを共有する文化も重要だ。テプラがあるから簡単に製品の文言を修正できるのと同じように、ソースコードがあるから、ソフトウェアを簡単に修正できる。ソースコードがなければないでうまくやる方法はあるけど、難しくなってくる。ソースコードオープンソースの形で公開することは、私の了承など取らずとも自由にハックしてくださいという表明で、このようにしてハックを自由にやらせることが、結果的には有用であることを経験的に知っている。そして、ハックを自由にさせる文化は、いろいろな価値観と結びついている。

ハッカー文化は「私たちは問題に対して、責任の境界を気にせず直接的に取り組むことができる」という感覚に支えられている。その一方で、「問題の解決方法は、元の責任者に対してフィードバックされるべきだ」という感覚も兼ね備えている。無秩序なハックはさらなる追加のハックを困難にしてしまうし、ソフトウェア更新のたびに、ハックを適用するのは大変なので、最終的には、オープンソースソフトウェアの開発で「アップストリーム」と呼ばれる、元の開発責任者に対して、自分の行なった変更を適用してもらうように依頼する。テプラの例えでいえば、テプラを貼ってそれでよしとするのではなく、もとのコーヒーメーカーのデザインに反映してもらうような感じだ。その過程で、結局は交渉が必要になってくるんだろうけど、交渉して他人に直してもらうのと、自分で直した後に反映してもらえるよう交渉するのとだったら、後者の方が簡単な場合も多い。「直して」ではなく、「直しました」という形で、提案を行うのだ。何かを取り決めてから課題に取り組むのではなく、課題に取り組んでから取り決めるという順序の逆転を許容することが、より迅速で効果的な課題解決につながっている。

インターネットの根幹はハックに支えられている。世の中の無数に存在する、責任者の不明なシステムどうしをうまく繋げて通信できるようにする必要があるわけで、その技術は上から下まで、最初から考えられて設計されているわけではなく、テプラの修正のような後付けの技術にあふれている。もちろん、インターネットにもいろいろな標準規格が存在しているけど、規格で決めたこと以上に実際に動くことが大事だから、規格に合わせてシステムを直すという力だけではなく、システムに合わせて規格に直すという力が働くことになる。ASCIIしか想定していない古いシステムを置き換えずに世界中の文字を扱いたいから、UTF-8だとか、パーセントエンコーディングだとか、そういう技術が生み出されてくるし、そういうものが、規格になっていく。インターネットの世界で使われる規格というのは、国や団体が議論を尽くしてキレイな規格を定めたから広まるというよりは、既存のエコシステムに適応した、優秀なハックであるかどうかという点が有利に働くようにみえる。

そういうハックが支える技術や文化が背景知識としてあると、登大遊の「けしからん」「超正統派インチキ」というキーワードや、オードリー・タンがレナード・コーエンのAnthemを引用していう "There is a crack, a crack in everything. That's how the light gets in." というフレーズについての理解も、深まるのではないだろうか。責任境界の超越を問題とせず、自由に課題に取り組めないことを問題とする思想。問題がいつまでも解決されず絶望するのではなく、問題を自分で解決につなげられるという希望。システムを壊さないよう人間を管理するのではなく、人間が自発的にシステムを直せるよう自由にするという思考。そういったことを言っているのであり、そういった、ハックに親和的な考えを企業や社会に取り入れる重要性がそれぞれの考え方に表れているように、私は思う。

デジタル社会の実現には、技術に精通した優秀なハッカーが必要なわけではない。必要なのは、技術への精通ではなく、課題へのアクセシビリティだ。技術への精通は、課題に取り組み、ハックした結果として得られるものであって、ハックする前に必要なのではない。ハックは、最初は身近で簡単なところからはじめていけばよい。

デジタル社会を形成するハックという考え方は、そのままでほかの分野には適用できないかもしれない。リスクが高い領域だから自由にさせられないとか、システムは入札で調達するから取り決める前に取り組ませるのは難しいとか、いろいろと課題はあると思う。しかし、そういった課題だって、解決する方法は存在するのではないだろうか? ハックという行為を社会に組み込むというメタな課題について、ハックしてみるべきかもしれない。