検索に移動ウィキペディアにおけるスタブについてはWikipedia:スタブを、スタブテンプレートの一覧についてはWikipedia:スタブカテゴリをご覧ください。この項目では、ソフトウェア開発について説明しています。(回路)」をご覧ください。スタブ(stub)とは、コンピュータプログラムのモジュールをテストする際、そのモジュールが呼び出す下位モジュールの代わりに用いる代用品のこと。下位モジュールが未完成でも代わりにスタブを用いることでテストが可能になる。逆に上位モジュールの代わりに用いる代用品をドライバ(ソフトウェアの場合)またはコントローラ(ハードウェアの場合)と呼ぶ。仮のモジュールではなく正規のモジュールについてもドライバまたはコントローラと呼ばれる事があるので、区別するために「テストドライバ」や「サンプルドライバ」などと呼ぶ事も多い。stubの原義は使い残し、半券、切り株と言った意味である[1]。外部リンク概要[編集]呼び出す側(上位)のモジュールを検査する場合に、呼び出される側(下位)の部品モジュールが未完成であることがある。このとき、呼び出される側の部品モジュールの代用とする仮のモジュールを、「スタブ」と呼ぶ。スタブモジュールは設計仕様に定義されている全ての関数を実装してあるが、関数内部は正規の動作をせず、定数を返すだけという作りになっている事が多い。下位モジュールの関数の戻り値によって、上位モジュールの動作が分岐する場合は、その分岐パターンを満たすための最低限のいくつかの定数を返す、複数のスタブを作る場合もある。(その関数が引数をとる場合は)与えられる引数によって(正規の処理とは関係ない、最低限の分岐処理だけを実装し)、それらの値を返すスタブを作ることもある。複数人でプログラミングをするときなどでは、初めはモジュールごとにプログラムを作成し、後で各モジュールを結合(リンク)して、全体としてうまく動作するかどうかをテストする。この結合テストの前段階で、個々のモジュールは、あらかじめ正当性を検査しておくことが望ましい。その場合、呼び出す部品モジュールがまだ完成していないときには、スタブが用いられる。スタブは、単純で何もしないようなものであってもよく、テストしたい部分とリンクして動作させるのに十分であればよい。このようなスタブは、モジュールの仕様設計の段階で作られる事が殆どである。設計段階で中身の無いスタブモジュールを書く事によって、モジュール間の結合の設計に問題がないかを具体的に確かめながら仕様設計ができるからである。スタブモジュールのみを作成することもまずありえない。スタブモジュール作成によって工数を消費することはデメリット以外何物でもないからである。一般にテストする対象が上位階層のモジュールであって下位の部品が未完成の場合、その代用となる仮の下位階層モジュールを、「スタブ」と呼ぶ。いずれの場合も、全体のプログラムテストを飛躍的に効率よくする役割を果たす。組み込みシステム[編集]組み込みシステムのソフトウェアを開発する際には、コンパイラなどの開発ツールを動かすコンピュータ(ホストコンピュータ)と、開発対象となるコンピュータ(ターゲットコンピュータ)は全く異なるものであることが多い。この時、プログラムを実際に動かしながら動作を確かめるデバッガは、ユーザインタフェースを必要とする本体部分をホストコンピュータ上で動作させ、ターゲットコンピュータ上では本体部分から通信線による指示を受けてCPUやメモリの状態を読み書きする小さなプログラムを動かしておくという構成になることが多い。この、ターゲット上の小さなプログラムを「スタブ」と呼ぶ。このようなデバッガのスタブは、当然の事ながらターゲットコンピュータのCPUに強く依存したものになり、しばしばアセンブリ言語を用いて作成される。スタブが行なわなければならない主な内容は、次のようになる。ホストコンピュータとの通信回線を初期化する任意のメモリ内容を読み出して通信回線に送り出す任意のメモリ内容を通信回線から受けたデータで書き換えるCPUの内部状態(レジスタ)を整えて、実行コードの任意の位置に制御を移す実行コード中にソフトウェア割り込み命令を埋め込みターゲットソフトウェアの実行を一時的に停止させスタブに制御を戻す上記のソフトウェア割り込み発生時にCPUの内部状態を読み取って通信回線に送り出す組み込みシステム用ソフトウェア開発においては、このスタブを早い段階で安定動作させる事ができるかどうかが、その後の開発作業がスムーズに進むかどうかに大きく影響する。スタブ自身のデバッグ作業には、一般にはハードウェア的にCPUの動作を制御するインサーキット・エミュレータを用いる。このインサーキット・エミュレータは比較的高価な装置であるため、開発人員全員の分を用意すると、開発コストが高くなってしまう。このため、スタブを開発する際やソフトウェアデバッガではどうしても検出できない事象を確認する際などの要所にのみインサーキット・エミュレータを用い、それ以外はスタブを活用して開発作業を進める事になる。関連項目[編集]ウィクショナリーに関連の辞書項目があります。(日時は個人設定で未設定ならばUTC)。表示-継承ライセンスの下で利用可能です。追加の条件が適用される場合があります。詳細は利用規約を参照してください。Cookieに関する声明モバイルビュ。