パッチ

パッチ（）とは、コンピュータにおいてプログラムの一部分を更新してバグ修正や機能変更を行うためのデータのこと。「修正プログラム」や「アップデート（プログラム）」などとも呼ばれる。実際に変更を施す際は「パッチを当てる」、「パッチを適用する」と言う。同名のUNIXコマンドpatchのことも指す。ゲームのグラフィックや様々なデータを改造するプログラムやファイルを後から追加するパッチはModと呼ばれる。
概要.
コンピュータネットワークがまだ低速だった時代、プログラムの一部を変更するために全体を再度ダウンロードすることは非常に効率が悪かった。そこで、部分的な変更を施すために必要な部分のみを差分データとして抽出し配布するパッチ形式が慣習となった。プログラム全体をダウンロードすれば何時間も要するが、必要部分だけであれば数分程度でダウンロードを完了することができる。これは前述のとおりネットワークがまだまだ低速であったことのほか、常時接続環境がまだ普及しておらず、ダウンロード時間が長時間に及ぶことで回線使用料がかさむのを避けるという面においても有用であった。なお、差分の抽出やそれを使用してのプログラム更新には専用のソフトウェアを必要とする。また、手動で更新を行う際には元のプログラムのバージョンを確認し、専用のパッチを適用しなければ不具合を生じる場合がある。
今日においては、ネットワークのブロードバンド化や常時接続環境の普及に伴い、数十メガバイト単位のコンパイル済みアプリケーションであっても更新時にはその都度全体を再度ダウンロードする形態が多く見られる。しかし、商用ソフトやOSのバグ修正、オープンソースのソフトウェアで変更点をポストする際には依然としてパッチが利用される。また、主に UNIX コミュニティで、個々の環境に合わせてソースコードを調整するような場合もパッチ形式が一般的である。これは、常時接続環境が普及した現在においても、サーバの転送量を軽減し、全体としてのダウンロード時間を軽減する目的には変わりない。
バイナリ.
バイナリファイルのパッチは、オンラインゲームのバージョンアップ、オンラインソフトウェアの日本語化などで広く使われている。
バイナリファイルのパッチには、テキストファイルとは別のアルゴリズムで作ることにより、より効率化する。bsdiffの作者によると、bsdiff の作成するパッチは xdelta よりも 50 % - 80 % 小さく、RTPatchよりも 15 % 小さい。
語源.
初期のコンピュータでプログラムが紙テープに記録されていた時代にプログラムを修正する時に穴をパッチ（あて布）で塞いでいたことに由来する。
右の写真はハーバード大学自然史博物館に展示されている1940年代に使われていたHarvard Mark I用の紙テープで、写真上部の水色で260と書かれた数字の上下の穴を灰色のパッチで塞いだ上で別の穴を開けている様子が分かる。