ラッパー
もともとの機能を包むよ
代わりに矢面に立ってくれるよ
簡単に書くよ
ラッパー(英:wrapper)とは
Hey!YOU!な人のこと
ではなく
もともとの機能を包んで、そいつの代わりに矢面に立ってくれるやつのこと
です。
詳しく書くよ
サクっと一言で説明すると
もともとの機能を包んで、もともとの機能の代わりに矢面に立ってくれるやつ
が「ラッパー」です。
プログラミングの分野で よく登場します。
「包む(ラップ:wrap)」+「~する人(er)」で「ラッパー(wrapper)」ですね。
「人じゃないじゃん!」とツッコミたくなるかもしれませんが、ゆるく捉えてください。
例えば、そうですね。
ここにスーパーエンジニアのピヨ太君がいました。
ピヨ太君は人見知りです。
技術的には文句なしですが、対人能力が高くありません。
ぶっちゃけ、初対面の人と会話を成り立たせるのは困難です。
あと、ピヨ太君は甘いもの好きです。
ケーキを供えないと働いてくれません。
面倒くさいやつですね。
そこで、ピヨ太君の代わりに お客さまと やり取りをするピヨ子さんがいます。
ピヨ太君はピヨ子さんにラブラブです。
人見知りをするピヨ太君ですが、ピヨ子さんとだったら会話できます。
お客さまはピヨ子さんとやり取りをします。
「こんなシステムが欲しい」と依頼したりですね。
そして、ピヨ子さんがピヨ太君に指示を出してシステムを作らせます。
ケーキを与えて「こんなシステムを作れ!」と指示をするのです。
直接の関係性としては
ピヨ太←→ピヨ子←→お客さま
です。
お客さまが直接やり取りするのはピヨ子さんです。
お客さまにはピヨ子さんしか見えません。
ですが、その裏ではピヨ子さんの指示を受けたピヨ太君が一生懸命お仕事をしています。
これは
お客さまはピヨ子さんを通してピヨ太君を利用している
と言えるでしょう。
この話におけるピヨ子さんがラッパーです。
ピヨ太君の代わりに矢面に立って、あれやこれやとやってくれているやつです。
見方によっては、ピヨ子さんがピヨ太君を包んで、対人能力の高いピヨ太君として振る舞っていますよね?
ここで ちょっと考えてみてください。
もしピヨ子さんがいなかったら、どうでしょう?
お客さまと人見知りピヨ太君が直接やり取りする場合です。
上手くいかなそうな気がしませんか?
ピヨ太君は人見知りです。
上手く意思疎通できないかもしれません。
「ケーキを供えろ」と言われて、お客さまがイラッ!とする可能性もあります。
ピヨ太君ひとりでは お客さまの役に立てないでしょう。
ピヨ太君は役立たずです。
ところが、ピヨ子さんがいることによって、そのような状況が改善されます。
ピヨ太君自体は何も変わっていませんけどね。
ピヨ子さんが矢面に立ってくれることで、ピヨ太君は他人様の役に立てるようになりました。
ラッパーを使うことで
1.もともとの機能を変えないで
2.もっと使えるやつにする
ことができます。
また、矢面に立つのはピヨ子さんです。
ピヨ太君は お客さまの目に触れません。
つまり
もともとの機能を隠ぺいできる
わけです。
他にもラッパーを使うメリットは、あると思いますけどね。
パッと思い浮かぶのは、そんなところです。
せっかくなので、もう少しプログラムっぽい例も挙げておきますね。
ここに「3つの値を与えると足し算をして結果を返してくれる」関数が ありました。
関数の名前は、仮に「ピヨ太関数」としておきましょう。
ピヨ太関数に「1」「3」「4」を与えると、足し算の結果「8」を返してくれます。
ある日のことです。
誰かが「あー、3つじゃなくて2つの値を足し算した結果が欲しいな」と言いました。
さて、どうしましょう?
ピヨ太関数を改造しても良いのですが、せっかく動いているのに手を入れたくありません。
そこで、新しく「2つの値を与えると『0』と2つの値をピヨ太関数に与える」関数を作りました。
関数の名前は、仮に「ピヨ子関数」としておきましょう。
ピヨ子関数に「3」「4」を与えると「0」「3」「4」をピヨ太関数に与えてくれます。
そして、ピヨ太関数から返ってくる結果を そのまま教えてくれます。
このような状況を指して
ピヨ子関数はピヨ太関数のラッパーである
と言います。
ピヨ子関数(ラッパー)はピヨ太関数(もともとの機能)を包んで、代わりに矢面に立ってくれていますよね。
さらに、ピヨ太関数を変えないで、もっと使えるやつ(目的に合致したやつ=2つの値の足し算をやるやつ)にしてくれています。
今回挙げた例はショボイですけどね。
ラッパーの使いどころや役割は、いろいろ あります。
例えば
・受け取るパラメータの数や形式を、本来の関数と変えたいとき
・本来の関数でやっていないパラメータのチェックをやりたいとき
・本来の関数からの戻り値を加工したいとき
・本来の関数を隠ぺいしたいとき
・本来の関数の前後に処理を追加したいとき
などです。
もともとの機能を外に見せたくない場合や、もともとの機能に手を入れないで変更を加えたい場合などに、よく使います。
一言でまとめるよ
まぁ「ラッパー」って単語が出てきたら「もともとの機能の代わりに矢面に立つやつなんだな~」と お考えください。
おまけ
■訳してみるよ
「wrapper(ラッパー)」の意味は「包装紙」とかです。
包み込むやつなイメージですかね。






