「修正パッチ」をうまく説明しているサイトは心あたりがありませんが、パッチとはどうあるべきか、またパッチとはそもそも何なのか、を整理するための周辺情報として少し書きますね。
「パッチ」という言葉から「全体入れ替え」ではなく「部分的な更新」というイメージをお持ちと思います。コンピューティング用語としての「パッチ」という言い回しは、まさにプログラムの一部を書き換える、という意味を持っています。私が知っている最も原始的なパッチプログラムは、すでにインストールされている実行ファイル(DOS/WindowsでのEXEファイル)の内容を書き換える、あるいはメインフレームコンピュータの実行メモリにロード済みのプログラムイメージの一部を別のコードで上書きすることで、元のプログラムに含まれているバグを回避するロジックを追加したり、プログラムのパフォーマンスを向上させたりするものでした。これは、EXEファイルや実行メモリ上のプログラムがどのような構造になっているか、ということについて深い理解と知識をもっていた往年のハッカーたちが編み出した技でした。
しかしながら、最近はこのような方法でパッチを当てることは推奨されなくなりました。なぜならば、この方法で元のプログラムの動作を変更するというやり方は、コンピュータウィルスがプログラムに不正な振る舞いをさせる方法そのものであり、従って多くのアンチウィルスシステムがこのような行為を監視して警告、またはそれ以上に積極的な排除処理を行うようになったからです。
このようなセキュリティ上の観点から、おおむね2000年以降のメジャーなOS(Windows, Linux, Unix等)では、実行ファイルの一部を書き換えることをOSとして否定的な行為(推奨されない行為)として扱うようになりました。アプリのアップデートは実行ファイルの内容を書き換えるのではなく、実行ファイルや実行に必要なファイルを、ファイル単位で差し替えることが推奨されるようになりました。
このような歴史的な経緯により、現在では「パッチ」という言葉はEXEファイルの内容の一部を書き換えることではなく、「実行に必要なファイルの置き換え」を意味するようになりました。
アプリの実行ファイルや実行に必要なファイルの置き換え、という観点で見ると、話はぐっとシンプルになってくるのではないでしょうか。ここで目指したいのはアプリを一つの大きな塊(例えば一つのEXEファイル)ではなく、いくつか分割されたファイル(例えばEXEファイルと複数のDLLファイル)として実装する。アップデートの際には変更のあったEXEやDLLファイルだけを置き換えればよい、という考え方です。
というわけで、「効率的なパッチ」を実現したいスレ主さんが目指すべき方向としては、これから作ろうとされているアプリを、なるべく多くのDLLに分割して実装することです。そのためには、アプリに組み込む機能をよくよく吟味して、どのような観点でモジュール化すればDLLの数を最大化し、なおかつプログラムコードを最小化できるか、という落としどころを見極めることだと思います。
以上、ご参考になれば。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。