今では「update」をクリックしても、ほとんど何も考えない。進行バーが動く。いくつかのファイルが置き換えられる。もしかするとスマートフォンが再起動するかもしれない。patch という言葉は、清潔で、抽象的で、ほとんど生々しさのないものに聞こえる。
だが、始まりはそうではなかった。
コンピューティングの初期、patch とはたいてい文字どおりのものだった。物理的なコード媒体に施される、物理的な修正だ。比喩ではない。概念的な話でもない。文字どおりである。プログラムは穴の開いた媒体に保存されており、その一部を修正する必要があれば、傷んだ部分や誤った部分を覆ったり、切り取ったり、patch された断片に置き換えたりできた。[1]
現代のソフトウェアがひっそり受け継いだのは、まさにこの部分だ。誰かが Wi-Fi 経由でセキュリティ修正をダウンロードするずっと前から、プログラマたちはすでに自分の手でソフトウェアを「patch」していた。
コードが手に持てるものだったころ
初期のコンピューティングがどれほど物理的だったかは、忘れやすい。コードはクラウドストレージの中に見えない形で浮かんでいたわけではない。パンチカードや紙テープの上に存在していた。そこでは命令が穴の並びとして符号化されていた。穴が間違っていれば、プログラムも間違っていた。並びが崩れれば、機械はその誤った命令に完璧な忠実さで従った。[1]
そして、その命令が物理的な媒体に存在していたからこそ、修正もまた物理的な行為になりえた。1944年の Harvard Mark I のような初期の機械では、オペレーターたちは実際に patch を使って、パンチ穴を覆うことで修正していた。[1] プログラミングの誤りは、単なる論理上の問題ではなかった。時には、それは目の前にある具体的な物体の小さな欠陥だった。
この細部が重要なのは、それが初期コンピューティングの文化をよく表しているからだ。機械は新しかった。問題も新しかった。だが修理の instinct は古く、ほとんど機械的だった。ある箇所が間違っているなら、そこを patch する。それだけだった。
最初のソフトウェア更新は外科手術だった
その後、ソフトウェア供給者が修正版を配布するようになっても、たいていはプログラム全体を送り直したわけではなかった。送られてきたのは変更箇所だった。紙テープやパンチカードでは、それは受け取った側が元のテープやカード束の指定部分を切り取り、そこに置き換え用の断片を patch で継ぎ込むことを意味した。[1]
ここでこの言葉は、とりわけ鮮やかになる。patch は単なる新バージョンではなかった。差し込みであり、修理であり、継ぎ当てだった。
この言い回しが生き残ったのは、その行為があまりにも具体的だったからだ。元の並びの一部が間違っていても、必ずしも最初からやり直す必要はなかった。不良部分を取り除き、正しい部分を継ぎ足せばよかった。言い換えれば、プログラムを patch するというのは、布やフィルムや配線をつくろうのとよく似ていた。
今では何十億ドル規模のソフトウェア・エコシステムに属するこの言葉にしては、ずいぶん控えめな起源である。現代の patch は目に見えない形で届く。昔のそれは、はさみと、交換用の材料と、手順書と一緒に届いた。
なぜその名前が残ったのか
言葉は、問題の形をうまく捉えたときに生き残る。そして patch はまさにそれをやった。媒体が変わっても、根底の考え方は変わらなかった。システム全体を置き換えるのではない。特定の欠陥を直すのだ。すでに使われているものに、狙いを定めた修正を加えるのである。[1]
だからこそこの言葉は、パンチ媒体から磁気テープへ、そこからリムーバブルディスクへ、さらに郵送される CD-ROM へ、そしてついにはインターネット経由でダウンロードされる更新へと、媒体が移り変わっても生き延びた。[1] 物質は変わった。比喩は変わらなかった。
実際のところ、それはもはや比喩とすらあまり感じられない。なぜなら、その意味は苦労して獲得されたものだからだ。最初は文字どおりの修理作業として始まり、その後になってようやくデジタル時代の語彙になった。
テープとカードからダウンロードへ
patching の歴史は、そのままソフトウェア配布の小さな歴史でもある。最初にあったのは紙テープとパンチカード。次に磁気テープ。その後、リムーバブルディスクによって、修正されたコードを開発者から利用者へ物理的に届けやすくなった。やがて CD-ROM や郵送による更新が登場し、最後にインターネットが現れて、patching は物流上の出来事から、日常的なバックグラウンド処理へと変わっていった。[1]
一歩進むごとに、patching は速くなり、見えにくくなった。同時に、その元々の意味も忘れられやすくなった。
patch が郵便で届いていたころには、まだその重みを感じられた。空から降ってくるように届く今では、ソフトウェアが自分で治っていくかのように、ほとんど自然なものに見える。それでも古い言葉は、なお真実をささやいている。あらゆる滑らかさの下にあるのは、同じ古い考えだ。この部分が間違っていた。だから、この部分だけを直した。
patch と全面書き直しの違い
だからこそ patch は、「新しいソフトウェア」をそのまま意味する言葉ではなかった。patch はもっと狭い。そこには連続性がある。対象はすでに存在している。大部分はまだ動く。必要なのは修理か、調整か、補強だけだ。
この違いは重要だ。全面的な書き直しは急進的に聞こえる。patch は外科的に聞こえる。前者が再発明を意味するなら、後者が意味するのは保守だ。そしてソフトウェアは、その歴史の大半において、劇的な再発明よりも、欠陥をひとつずつ直していく終わりのない保守に支えられてきた。
この言葉がこれほど長く役に立ち続けているのは、おそらくそのためだろう。コンピュータは見分けがつかないほど変わった。だが保守の発想は変わらなかった。
今もハードウェアの過去を背負った言葉
コンピュータ用語のなかには、語源がほとんど完全に色あせてしまったものも多い。人は回転式電話を使わなくても番号を “dial” するし、受話器を引っかけなくても “hang up” する。だが patch には、今でもハードウェア由来のかすかな痕跡が残っている。今なお修理の響きを持ち、実用的で、局所的で、少し即興的なものを感じさせる。
それはふさわしいことでもある。ソフトウェアの歴史は、発明の歴史であるだけではない。修正の歴史でもある。プログラムは失敗する。前提は崩れる。バグは現れる。設計者が予想しなかった端のケースを、利用者が見つけ出す。華やかなのは新しいものを出荷することだ。だが長く続くのは、それを patch し続けることなのだ。
だから、ある会社が patch を公開したと聞いたとき、その言葉は見た目以上に古く、そして文字どおりのものだと知っておくといい。それは、コードが穴として打ち抜かれていた時代から来ている。誤りは覆ったり切り取ったりでき、ソフトウェアを直すとは、その命令を載せているもの自体を物理的に変更することを意味することさえあった時代から。[1]
更新は今や静かに起こるかもしれない。それでも、その言葉はまだテープを覚えている。





