ラッパー【wrapper】ラッパ
概要

ソフトウェアやプログラム部品が提供するクラスや関数、ライブラリ、APIなどを、本来とは異なる環境や方法で利用できるようにしたものをラッパーという。対象に応じて「ラッパー関数」「ラッパークラス」「ラッパーライブラリ」などと呼ぶ。
ラッパーを作成する操作や処理のことを「ラップする」という。利用者はラッパーのインターフェースだけを通じて機能を呼び出すため、その内側で動く元のプログラムの複雑な仕様や構造を意識せずに済む。
ラッパーが作成される目的として、異なる言語や環境間の互換性確保、複雑な仕様や煩雑な設定の隠蔽によるシンプルな操作方法の提供、ログ記録・認証・例外処理などの共通機能の組み込みなどがある。例えば、低水準なシステムAPIにラッパーを設けると、利用者は少数の関数や簡潔な記述で同等の機能を利用できる。
近年ではクラウドサービスが提供するWeb APIを特定の言語から扱いやすくパッケージ化した「APIラッパー」が多用される。また、Javaなどのオブジェクト指向言語では、整数や文字などの基本データ型をオブジェクトとして扱えるようにした「プリミティブララッパー」が標準で用意されている。
オブジェクト指向設計では、既存のオブジェクトを内部に保持しつつ追加の処理を実装したオブジェクトもラッパーと呼ばれ、デザインパターンの「Decoratorパターン」(デコレータ)や「Adapterパターン」(アダプタ)と関連が深い。元のコードを直接改変せずに機能を調整できるため、保守性や移植性の向上にも寄与する。
なお、日本語の外来語で「ラッパー」と言えば、ヒップホップ音楽でリズミカルに歌詞を乗せる歌手を指すが、これは英語では “rapper” と綴り、“wrapper” とは発音が同じで綴りと意味が異なる異綴同音異義語の関係にある。