ラッパー関数

ラッパー関数（ラッパーかんすう ）とはサブルーチンとも呼ぶ関数である。個別のソフトウェアのライブラリまたはコンピュータ・プログラムに書き込む役割をし、システムコールもしくは2番目のサブルーチンを呼び出す以外の計算はほとんどもしくは全くしない。コンピュータのプログラムを書くとき、この関数があると個別のサブルーチンをどう実装するか詳細が抽象化され、記述を簡略化できる。

 用途 
ラッパー関数には複数の目的があり、いずれも委譲（delegation）と理解できる。

§–=== プログラム記述に便利 ===

ラッパー関数はコンピュータのプログラム記述を簡素化。一例として、Java AWTライブラリ内の MouseAdapter とその類似のクラスがそれを実演する。

アプリケーションの開発において、サードパーティの関数ごとにラッパーを作成し、ネイティブアプリケーションで使用できることから、それら関数の利用が便利になる。もしもサードパーティ関数の変更や更新があっても、ネイティブアプリケーション内のサードパーティ関数の全インスタンスを変更する代わりに、そこにあるラッパーのみを変更すれば済む。public class Test implements LinkedList, HashSet {
    @Override
    // contains data members and data methods
    // covariant return
}ラッパー関数は既存のクラスもしくはオブジェクトに異なるインタフェースを継承させるために使える。既存のライブラリコードを用いる場合には特に使い勝手が良い。

 コードをテスト 
既存のシステム関数を対象にエラー検証のルーチンを記述するとき、ラッパー関数は関数に同じエラーチェックを何度も求めてコード長を冗漫に伸ばすことを避ける。もとの関数を複数回、呼び出す代わりにラッパー関数を呼び出すので、プログラマはラッパーさえ書いてしまえば、エラーチェックを忘れることができる。

テストドライバはコードモジュールを実行するラッパー関数の一種で、通常はさまざまな設定やパラメータを用いて繰り返し呼び出し、可能なパスを厳密に実行する。配布可能なコードではないものの使い捨てコードでもなく、通常は保持され回帰テストに用いる。

インターフェースアダプタ（）もラッパー関数の一種で、インターフェースをカスタマイズまたは拡張により簡素化してコードモジュールに変え、その目的はユーザに分かりやすく、関連性のあるものにすることである。パラメータ名の変更、パラメータの結合、パラメータのデフォルト値の設定などができる。

 多重継承 
プログラミング言語が基底クラスの（）に対応しない場合、ラッパー関数を用いて多重継承のシミュレートができる。以下はJavaクラスの一部の例で、LinkedList と HashSet から「継承」する。実装の詳細はメソッドを参照。

 ライブラリ関数とシステム呼び出し 
標準Cライブラリなどライブラリ関数の多くはシステムコールを抽象化するインタフェースとして機能する。GNU Cライブラリ（glibc）において、例となる関数は Fork と Exec である。システムコールのうちの Fork と Exec をそれぞれ呼び出す。

これは「システムコール」や「syscall」という用語が誤って高レベルのライブラリコールを指してしまう可能性があり、本来ならそれが包摂する、名前の類似したシステムコールを正しく示さなくなる。

 ヘルパー関数 
ヘルパー関数（helper function）とはの複数の部分をグループ化する関数であり、わかりやすい名前を付けて再利用できるようにする。ラッパーは一律にヘルパー関数ではないが、ヘルパー関数は全てラッパーであり、頻用される操作のグループ化というヘルパー関数の用途は動的バイナリ変換であり、特定のコンピュータに対して機械語を一方の命令セットから他方へ変換する働きである。

 脚注 

 関連項目 
50音順。

 Adapterパターン


 SWIG ラッパー自動生成機能
 オブジェクト指向プログラミング
 束縛ラッパー - 記述した言語ではなく別の言語で使えるようにするライブラリ

 Decoratorパターン



Category:サブルーチン
Category:JavaScript