42
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

「スタブコード」はなぜ「スタブ(切り株)」と呼ばれるのか

Last updated at Posted at 2016-05-23

そういえば、スタブって何なんだろう? テスト用の外部シミュレートコードや、IDE が初期状態でプロジェクト内に作成するカラの関数を指してスタブと呼ぶが。どういう意味なんだろう。

「元々の意味は、切り株のこと」とあるが、なぜこれが「スタブ」と呼ばれるかの説明にはなっていない。 ∥ スタブ - Wikipedia

英和辞書的にいうと、“stub” には「切り株」「使い残り」「タバコの吸いさし」「チケットの半券」「小切手の控え」などの意味がある。

つまりは、元々は何か「完全なもの」があったのだが、その内「利用できる部分」を使ってしまって残った「残り」のことを “stub” というようだ。

語源的には「切り株」が最初の意味であり、後にそこから連想されて「部分的に消費された結果残った、短かったり突き出たりしているもの」の意味に拡張された、とある。 ∥ Online Etymology Dictionary

それを踏まえて “Method stub” の項を読んでみると、“A stub may simulate the behavior of existing code (such as a procedure on a remote machine) or be a temporary substitute for yet-to-be-developed code.” ということで、つまり、「(完全体としての実メソッドから)肝心なロジックが削り取られており、振る舞いだけをする残りの部分だけを残したメソッド」のことを「スタブ」と呼ぶんだな。 ∥ Method stub - Wikipedia, the free encyclopedia

ということは、“stub method” における “stub” は、語源的には確かに「切り株」だが、ここでは切り株とは関係なくて、「本質部分の抜けた残り」という語義の方が重要なわけだ。

テスト用の「スタブ」の場合は、実物から本質的なロジックを取り払ってわざわざスタブを作るわけですから、こっちは正しい意味での “stub” です。

一方、テストではなく、開発の初期段階においてテンプレートとして用意される空っぽのメソッドや関数を「スタブ」と呼んだりすることもありますが、こちらの場合、これからその「本質部分」を作りこんで行くわけなので、ちょっと原義からすると分かりづらくなりますね。時系列が逆なんで(消費した後ではなく、これから作るわけなので)。

42
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?