プログラミング辞書
 
透明1ドットイメージ
透明1ドットイメージ
この辞書は
「 Visual C++ による
C++ ウィンドウズプログラミング」
に関係した単語を網羅しています。
そのため、内容にやや偏りが存在します。
御了承ください。
透明1ドットイメージ
透明1ドットイメージ
透明1ドットイメージ
透明1ドットイメージ
透明1ドットイメージ
この「プログラミング辞書」は
KAB-studio
の1コンテンツです。
他にもプログラミング関係のコンテンツが
いっぱいあるのでぜひ見ていってください。
 
あと、単語一覧付きの表示方法なら
単語をすこし簡単に探すことができます。
透明1ドットイメージ
透明1ドットイメージ
透明1ドットイメージ
透明1ドットイメージ
透明1ドットイメージ
検索方法
まずページ全体が読み込まれるのを待ちます。
(数分かかるかもしれません)
次にここをクリックしてください。
(注:何も起きません。フレーム選択のためのクリックです)
そうしたらメニューの
編集】−【このページの検索

編集】−【フレーム内を検索
を選んでください。
ウィンドウズならCtrl+FキーでもOK。
表れたダイアログに【検索したい単語】を書き込み、
次を検索】ボタンを押しましょう。
(つまり、ブラウザの検索システムを使うってこと。
このホームページには検索機能は備わってません)
透明1ドットイメージ
透明1ドットイメージ
透明1ドットイメージ
透明1ドットイメージ
透明1ドットイメージ
現在、単語追加は休止中です。
再開日時は未定……。
透明1ドットイメージ
透明1ドットイメージ
透明1ドットイメージ
 
" ( Double Quotes )
 「ダブルクォーテーション」
 記号のひとつ。この記号で囲まれた部分はリテラル文字列とみなされる。リテラル文字列中で " を書き込みたい場合にはエスケープシーケンスの \" を書き込む。
 
&&
 ( Logical AND Expression )
 「論理 AND 演算子」
 C 言語2項演算子のひとつ。
 左オペランドと右オペランドが共に「0以外」の時のみ「0以外」を出力し、それ以外の場合には「0」を出力する。
 たとえば「 1 && 2 」は「0以外」を出力し、「 1 && 0 」や「 0 && 0 」は「0」を出力する。
 
|
 ( Inclusive AND Expression )
 「ビット OR 演算子」
 C 言語2項演算子のひとつ。
 左オペランドと右オペランドの各ビットを比較し、どちらもが0であれば0を、それ以外は1を各ビットごとに返す。
 たとえば「 0x3 ( 0011 ) | 0x5 ( 0101 ) 」は「 0x7 ( 0111 ) 」になる。つまり各ビットにおいて、どちらかが1になっていればそのビットは1となる。
 この演算子はビットフラグで「複数のフラグを組み合わせる」場合に使用することが多い。
 
~ ( Tilde )
 <チルダ、ティルダ、にょろ>
 演算子のひとつ。
 C 言語では「各ビットの補数」もしくは「各ビットの否定」を取る機能を持つ。これは、変数内の各ビットに対し、0ならば1、1ならば0に変換するというものである。
 C++ 言語ではこれに加えてデストラクタを示す演算子としての意味も持つ。クラスと同名のメンバ関数の前に ~ 置くことで、そのメンバ関数がデストラクタとみなされる。
 
::
 ( Scope Operator / Scope Resolution Operator )
 「スコープ演算子 / スコープ解決演算子」
 C++ 言語で使用する演算子のひとつ。
 基本的には名前の解決に使用する。主な使用方法はふたつ。
 ひとつは名前空間での「包む名前と包まれているもの」を継なげる時に使用する。 namespace A { int B } となっているとき、 B のフルネームは A::B となる。このように、名前の「苗字と名前」の区切り記号として使用する。
 もうひとつは「属するクラスの指定」に使用する。たとえば、オーバーライド時には様々な派生クラスに同名のメンバ関数が存在し、そのうちの任意のクラスのメンバ関数を呼び出したい場合に Class::Mem() のように指定する。このように「クラス名とメンバ」の区切り記号としても使用する。
 使用感覚はどちらも同じ、「包む側と包まれる側」を継なぐときに使用すればいい。
 
.com 実行ファイル
 「小さい実行ファイル」
 実行ファイルの拡張子のひとつ。
 通常の実行ファイルの拡張子は .exe だが、比較的小さい実行ファイルには .com が拡張子としてつけられる場合がある。ただしこれは MS-DOS 時代のもので、ウィンドウズでは Command.com など一部の特別なファイルに使用されているのみである。
 
__asm
 インラインアセンブラを使用するためのキーワード
  Visual C++ では、 __asm キーワードのあとのネスト内は、アセンブラで書かれたプログラムを書き込むことができる。この機能により、必要な場合だけ簡単にアセンブラを使用することができる。
 
 
__cdecl
 呼び出し規約のひとつ。
  Visual C++ ではデフォルトの呼び出し規約。つまり普通の関数はこの呼び出し規約となる。
 この設定は「プロジェクトの設定」の「C/C++」−「コード生成」ページの「呼び出し規約」で変えられる。
 
__declspec
  Visual C++ における拡張キーワードのひとつ。
 コンパイル時に変数や関数に対して「ウィンドウズ特有の処理」を行いたい場合にこのキーワードを使用する。
 一般には DLL 使用時・作成時における関数のインポートエクスポートによく使用される。例えば APIヘッダーファイルにおける宣言に必ず付いている WINBASEAPI は、 __declspec( dllimport ) #define で置き換えたものである。これが付いていることで、アプリケーションは各 DLL 内にある API 関数をインポートし使用することができる。
 
 
__fastcall
 呼び出し規約のひとつ。
 基本的に Visual C++ では使用されない。なぜか他の開発環境で多用されている。
 
 
__stdcall
 呼び出し規約のひとつ。
  API に含まれる関数はすべてこの呼び出し規約。また、アプリケーション内の関数でも、コールバック関数など「アプリケーションの外から呼び出される関数」はこの呼び出し規約を指定する必要がある。このように、実行ファイル DLL を越えて呼ばれる関数は、この呼び出し規約である必要がある。
  APIENTRY, PASCAL, WINAPI, CALLBACK __stdcall #define で置き換えたものである。
 
#define
 <デファイン>
 「定義マクロ」
 コンパイル前に、プログラム中の単語を他の単語に置き換えるためのプリプロセッサ
 [ #define 変換前 変換後 ]でプログラム中の単語を置き換えることができる。また「変換前( 引数 ) 」とすることで引数部分をそのまま変換後へと反映させることができるため、関数のような機能を持つこともできる。この関数のような機能を「マクロ」と言う。
 主に5つの使用方法がある。
 「定数値」:リテラルをプログラム中にハードコーディングした場合、検索や訂正が難しくなる。そこで #define を使ってリテラルの別名を作り、その別名をプログラムに使用する方法が取られる。現在は #define の代わりに const int const char *const を使うのが主流。
 「型定義」:移植性を高める理由等により、ある組み込み型の別名を #define で作成し使用する方法。現在は #define の代わりに typedef を使うのが主流。
 「プログラムの簡略化」:プログラムの中で、冗長だが関数などにすることができない部分を #define で定義し置き換える方法。 MFC でよく使用される。
 「関数の代わり」:関数のようなもの、マクロを #define で作成することができる。マクロはプログラムを置き換えるため関数のように呼び出し時のタイムロスがないというメリットがある反面、機械語のコードとソースプログラムの整合性が取れなくなってしまうためデバッグが困難になるというデメリットがある。現在はマクロの代わりにテンプレートinline 関数がよく使用される。
 「コンパイル分岐」: #ifdef 等を使用することで「一部のプログラムだけコンパイルする」ことができるようになる。その鍵となるのが「 #define した単語」である。コンパイルする部分を変更したい時には、その #ifdef の条件にあった #define をすることになる。これは、 Visual C++ では【プロジェクトの設定】ダイアログの【 C/C++ 】−【一般】ページの【プリプロセッサの定義】でも行える。
 
#else
 <エルス>
  #if #ifdef と対にして使用し、「すべての条件に当てはまらない場合」という意味を持つプリプロセッサ
  #if などの条件に当てはまらなかった場合に当てはまるのが #else である。これにより、「条件に合わない場合」の処理を行うことができる。逆に言えば、 #else は「条件に合った場合」には実行されないということである。
 
#ifdef
 ( if Defined )  <イフデフ>
 プログラムの一部分に対し、ある存在が定義されているかどうかで「コンパイルするかどうか」を決めるためのプリプロセッサ
  #ifdef の右隣に何か単語を置いて使用する。その単語が #define によって定義されていれば、 #ifdef から #endif までの範囲はコンパイルされる。もし定義されていなければ、 #ifdef から #endif までの範囲はコンパイルされない。この仕組みによって、プログラムの一部に対し「場合によってコンパイルするかしないか決める」ことができる。
 ただし、実際に「定義されているかどうか」を調べるのは面倒なため、プログラムの可読性を下げる可能性がある。
 
#import
 「運び入れる」
 タイプライブラリを読み込むためのプリプロセッサ
 他のコンポーネントに含まれる関数クラスを使用する場合には「タイプライブラリ」からその情報を得る必要がある。そのタイプライブラリファイルを指定するためのプリプロセッサが #import である。
  #include のタイプライブラリ版と考えるとよい。
 
#pragma
 <プラグマ>
 「現実的」
 コンパイラリンカに指示を出すためのプリプロセッサ
 コンパイラやリンカ、 OS の機能をプログラム上から指定する場合、これまでは「特定の環境でしか使えないキーワード」を使用しなければならかなった。 #pragma は、これらを肩代わりするものである。
  #pragma にパラメーターを加えてプログラム中に書き込むことで、コンパイラ等に指示を出すことができる。たとえば Visual C++ には #pragma pack というアライメントを設定するためのものがある。
  #pragma のパラメーターは、通常コンパイラごとに異なる。パラメーターが「そのコンパイラに認識できないもの」であった場合、コンパイラは無視するため、特定のコンパイラに特化した #pragma を指定しやすいというメリットがある。
 
#undef
 ( Un Defined )  <あんでふ>
  #define された単語を無効化するためのプリプロセッサ
  #define は「強制的に単語を置き換える」ため、場合によっては特定の単語の #define が邪魔になる場合がある。 #undef は、このような場合に #define された単語を解除するために使用する。
 
0x
 16進数を表すときに使用するプレフィックス
 リテラル整数を16進数で表したい場合、その整数値の先頭に 0x を付けることで、その整数値が16進数としてみなされるようになる。
 もちろん、16進数も10進数も、整数値の表現方法のひとつにしかすぎないため、変数中の整数値にこのようなプレフィックスを付ける必要はない。
 
1バイト文字
 ( Single-byte Character )
 アルファベットおよび数字など、1バイトサイズで表現できる文字半角文字とも言う。
 ASCII コードで表現される英数文字と、一部の特別な文字は1バイトの整数値で表現される。この種の文字を「1バイト文字」と呼ぶ。「一部の特別な文字」にはその国の特別な文字を使用することが多く、日本では半角カタカナが割り当てられている。
 アルファベットや英数文字、カタカナは2バイト文字としても表現できるが、2バイト文字としての文字と、この1バイト文字としての文字はまったくの別物であることに注意。
 
2進数 ( Binary Digit )
 「01数」
 一桁に「」と「」しか入らない数字
 最初は0から始まり、1増やすと1に、さらに1増やすと(2はないため)繰り上がり10、さらに11、100、と数えていく方式。
 メモリなど、コンピューターの中身はスイッチの「オン」と「オフ」の並びとなっており、これを数字として表すのに2進数が使用される。この場合、一桁の単位がビット、8桁でバイトとなる。
 ただし、そのまま2進数として表すと桁数が膨大となってしまうため、2進数の4桁を一組とした16進数が一般的には使用される。
 特定の2進数が「何を意味するのか」は、場合場合によって変わるので注意。その変換方法を定義するのがということになる。同じ2進数でも、その値を int と捉えるのか double と捉えるのかで変わってくる、ということである。
 
2バイト文字
 ( Double-byte Character )
 一般的なひらがな、カタカナ、漢字の文字全角文字とも言う。
 MBCSUnicode を用いて日本語の文字列を表現した時、2バイトで表現した1文字を「2バイト文字」と言う。
 アルファベットなどと違い、漢字などは文字数が多いため、1バイト文字として表現することはできない。そこで2バイトを使用して漢字等を表現する。これがひるがえって、「2バイト文字」と言えば「漢字やひらがな」を指すことになる。
 
16進数 ( Hexadecimal Digit )
 「Fまで数」
 一桁を「」から「」そして「」から「」で表した数字
 2進数をそのまま表すと桁数が膨大となってしまう。そこで使われるのが、2進数の4桁を一組とした「16進数」である。
 16進数は、2進数4桁を一桁にまとめて表す。そのため一桁には2の4乗=16までの数字が入る。これを表すため、0〜9に加えてA〜Fを使って表現する。4桁のため、16進数一桁は4ビットであり、16進数2桁は1バイトとなる。「1バイトを16進数2桁で表す」ため、2桁一組で表示されることが多い。
 リテラル整数を16進数で表示する場合には、 0xプレフィックスとして付ける必要がある。
 
49.7日
 ウィンドウズでの活動限界時間
 ウィンドウズは内部に時計を持っており、そのいくつかは起動時からの時刻を計っている。
 その中には ms (ミリセカンド)単位でのカウントを32ビット整数値として格納しているものがある。当然32ビット、つまり 4294967295 ms 、約49.7日までしか値を保持できない。これを超えると0にリセットされる。もしこの「0に戻る」ときを確認していない場合、アプリケーションがエラーを発生する場合がある。
 一部のウィンドウズの Vtdapi.vxd はこの確認をしていないため、リセットされた時点でエラーが発生し、ウィンドウズがハングアップする。この問題により、一部のウィンドウズは49.7日以上使用し続けることはできない。
(詳細はサポート技術情報の J047591 をご覧ください)
 
ACM
 ( Association for Computing Machinery )
 「国際計算機学会」
 アメリカに籍を置く組織。「国際大学対抗プログラミングコンテスト」を開催しており、日本の大学もこの大会に参加している。
 
Active Directory
 <アクティブディレクトリー>
 Microsoft 製アプリケーションのひとつ。ネットワーク上に散在するユーザー情報等をまとめて管理するためのアプリケーション。
 
ActiveMovie
 <アクティブムービー>
 動画を再生するためのダイアログボックスコントロール
 現在は DirectXDirectShow に名称が変更されている。
 
 
ActiveX<アクティブエックス>
 COM インターフェイスを中心とするアーキテクチャーの総称。もしくは、 COM インターフェイスを持つDLLインターネットを通じてブラウザの機能の一部として組み込むこともできる。
 
AFX
 ( Application Framework )
 MFC が用意した関数マクロに付いているプレフィックス
 MFC は全体で様々な処理を行う構造(=フレームワーク)となっており、これによりメッセージ等が処理される。そのシステムに関わっていることを識別するため、関数には Afx 、マクロには AFX 、グローバル変数には afx がプレフィックスとして付いている。
 基本的には「 MFC の目印」と考えればよい。
 
ANSI
 ( American National Standards Institute )
 「世界標準」
 <アンジー>
 アメリカの組織のひとつ。標準規格を策定するための機関。
 C 言語C++ 言語の文法規則も、 ANSI によって策定されている。これらを ANSI C および ANSI C++ と呼ぶ。この ANSI による規定を守っているコンパイラを「 ANSI 準拠コンパイラ」と呼ぶ。多くのコンパイラは ANSI 準拠を謳っている。
 プログラムの移植性を高める場合にはできる限り ANSI 規格に則ったプログラムを組むべきだが、コンパイラや OSライブラリの関係でそれが難しい場合も多い。
 
API( Application Programing Interface )
 広義としては、特定のアプリケーションを作成するためのライブラリ SDK と同意。
 狭義としては、ウィンドウズアプリケーションを作成するための必須ライブラリ。もしくはその中に含まれる関数。ウィンドウズプログラミングの話題としては、こちらを指すのが一般的。
 ウィンドウズ用ライブラリとしては非常にハードウェアレベルに近いライブラリであり、 OS の操作に関してたいがいのことができる。各種DLLとして提供されており、この中に含まれる関数を呼び出す形で使用する。VC付属の MFCC ランタイムライブラリはこの関数を使用して機能している。つまりこのAPIがなければウィンドウズアプリケーションは作成できないと言える。
 ライブラリとしての使い勝手はいいとは言えない。C言語のみの作成も考慮されているため関数と構造体のみで構成されている。また、ソースコードが公開されていないうえに使用方法にクセのあるものが少なくないため、初めて使う関数はドキュメントを熟読したりテストを行ったりする必要がある場合が多い。
 
APIENTRY
 ウィンドウズ API 関数宣言に付いている単語。
 これは呼び出し規約を統一するためのもので、 __stdcall #define で置き換えたもの。 WINAPI と同じ。
 
argc
 <アーグシー>
  main() の第1引数。
 アプリケーション実行時に渡されたパラメーターの個数を格納する。型は int 。実際のパラメーターは argv に格納されている。
 
argv
 <アーグブイ>
  main() の第2引数。
 アプリケーション実行時に渡されたパラメーターを格納する。文字列ポインタとなっており、そのポインタを配列として使用することで、各パラメーターを取得することができる。パラメーターの個数は argc に格納されている。
 
ASCII
 ( American Standard Code for Information Exchange )
 「標準英文字」
 いわゆる「半角英数文字」を表す文字コード
 1バイトサイズの整数と、それに対応する英数文字との対応表を「 ASCII 」もしくは「 ASCII コード」と呼ぶ。コンピューターはこの変換表を用いて、整数値を英数文字へと変換する。
 英数文字のみなので、基本的には7ビットサイズの整数値にすべての英数字が含まれている。だが実際には8ビットサイズ整数値として扱われ、その余分な領域に地域ごとの文字が割り当てられている。ドイツ語圏であればウムラウト、日本であれば半角カタカナといったように。
 日本語用の文字コードは、主に2バイトで1文字を表す。しかし、たとえ日本語の文章だとしても、文章中の半角英数文字は ASCII コードに割り当てられた1バイトの文字として使用される。つまり、日本語の文章は、2バイトが1文字の部分と1バイトが1文字の部分とが混在しているということになる。日本語文章の表示には、この区別を付ける必要があるというわけである。「インターネット半角カタカナが禁止」されているのは、文字コードによってはこの区別が付けられなくなってしまう場合があるためである。
 
 
ASPI ( Advanced SCSI Programing Interface )
 SCSI機器を操作するための関数。通常、デバイスを操作するためにはデバイスドライバーを作成する必要があるが、この ASPI があれば、SCSI機器を通常のC言語で操作することができる。
 アダプテック社から提供されている wnaspi32.dll という DLL を(ヘッダーファイルライブラリファイルはないため)実行中リンクして使用する。
 
 
ATL
 ( Active Template Library )
 <えーてぃーえる>
  MFC に代わる Microsoft 推奨の新しいテンプレートライブラリ
 本来は ActiveX と呼ばれるCOMを作製するためのライブラリ。レジストリへの登録機能等も持っている。
 だが、テンプレートを使用したシンプルなAPIラッパークラスでもあり、継承が複雑化していないため、巨大化しすぎたMFCを継ぐ存在と言われている。ただし、まだ作製段階でもあり、また当面はActiveXを作製することのみに重点が置かれるであろうことが予測されるため、通常のアプリケーション作製には影響していない。
 
Autoexec.bat
 <オートエグゼキューションバッチファイル>
 「ウィンドウズ心臓ファイル」
 ウィンドウズが起動したときに読み込まれる、バッチファイルのひとつ。
 ウィンドウズ起動前に、環境変数などの設定を行うためのファイル。たいがいはウィンドウズをインストールしたドライブに置いてある。このファイルの書き換えは致命的な問題になりかねないので注意すること。 MS-DOS 時代の名残のひとつ。
 
B 言語
 ( B Language )
 C 言語の元となったプログラミング言語。非常に古いものであり、現在はほとんど使用されていない。
 ちなみに本辞書は C / C++ 言語 中心なので B 言語に特化した単語は掲載しない予定です。ごめんなさい。
 
BCD
 ( Binary Coded Decimal code )
 「2進化10進数」
 4ビットで10進数ヒトケタを表すデータ方式
 通常の数値表現では、ビットすべてを使用して値を表現する。そのため、4バイトサイズであれば40億( 0xFFFFFFFF = 4294967295 )までの値を表現できる。
 「 BCD 」では、4ビット中で「9」までしか使用せずに値を表現する。つまり 0xA から 0xF までは使用しない。よって 1234 という値は 0x1234 というデータで表す。
 もちろん、通常 0x1234 という値は 4660 とみなされてしまうため、 BCD として 1234 と表示するためにはそのための変換が必要となる。また、無駄の多い格納方法のため、4バイトサイズで 0x99999999 = 99999999 までしか表現できない。しかし、値としての表現方法が分かりやすい、桁の拡張がしやすいなどのメリットもある。
 
BNF
 ( Backus Naur Form )
 「言語規定言語」
 特定の言語仕様を記述するためのもの。
 言語には必ず「文のルール」が存在する。そのルールを記述するもののひとつが「 BNF 」である。ちなみに Backus と Naur は人名である。
 たとえばルールを「文は式からなり、式は数字・記号・式もしくは数字・記号・数字からなる」のように決めることができる。こういったルールを用いて言語処理を行うことで、文章がその言語のルールに則っているかどうか調べることができる。
 BNF の文法は明確に決まっており、上の例であれば「<文> := <式>、<式> := <数字><記号><式>|<数字><記号><数字>」となる。
 現在、これを元にした拡張 BNF が広く使われている。
 
 
bool
 ( boolean )
 C++言語で使用するデータ型の一種。 true false のみを格納でき、主に「成功」と「失敗」のフラグとして使用する。
 Cの BOOL int と同じであり、 TRUE FALSE も単なる整数値であったため、あいまいな部分が多く、それをちゃんとした型として改善したものが bool と言える。
 これまで BOOL だったものを bool に変換する場合、 BOOL int として使用し、整数値を返している場合があることに注意。
 
BSTR
 ( Basic String / Binary String )
  Visual Basic で使用される文字列型。 Visual C++ でも COM を通して文字列を受け渡しする場合に BSTR を使用する。
 基本的には Unicode を使用した、 wchar_t配列である。しかし、以下のふたつの点で、通常の Unicode と異なる。
 ひとつは、文字配列の前に文字列の文字数が格納されているという点。これにより、簡単に BSTR 型データを作ることはできない。もうひとつは、このように「文字列の長さ」が分かることから、終端文字が「終端」を示さないという点。よって、通常の文字列用関数は使用できない場合がある。
  BSTR 型文字列を作成する場合、 API SysAllocString() などを使用する。また、 _bstr_t というクラスも用意されており、これを使用することもできる。 ATL にも CComBSTR というクラスが用意されている。
 
C 言語 ( C Language )
 <しーげんご>
 プログラミングを作成するための言語のひとつ。
 非常にハードウェア寄りのプログラムを書くことができるため、多くの OS 、そしてそれに付随するライブラリに使用されている。そのため、プログラミングにおいてはなくてはならない言語となっている。
 現在はこれの拡張版である C++ 言語が主流。
 
C++ 言語 ( C++ Language )
 <しーぷらすぷらすげんご>
 プログラミングを作成するための言語のひとつ。
 C言語を元にクラステンプレートなどを加えた言語。一般的にはオブジェクト指向プログラミング言語であると言われる。
 ウィンドウズにおいては Visual C++ Borand C++ Builder Cygnus gcc for Win32 などの開発環境コンパイラがこの言語を使用してプログラムの作成を行う。
 
C# 言語
 ( C Sharp Language )
 <シーシャープ言語>
 プログラミング言語のひとつ。
  次期 Visual Studio に装備される予定のプログラミング言語。 C++ 言語Java の中間的言語で、 C++ 言語よりも安全性が高く、 Java よりも自由度が高い。
 ちなみに本辞書は Visual C++ 中心なので C# に特化した単語は掲載しない予定です。ごめんなさい。
 
 
C ランタイムライブラリ
 ( C Run-time library / CRT )
 C 言語において、文字列操作やファイル操作等を行う関数
 C 言語の特徴のひとつとして「機種依存性のある機能は装備しない」というものがあり、そのためこういった機能は「 C 言語そのもの」としては備わっていない。
 が、それではあまりにも不便ということで「 ANSI C 」という共通仕様に基づいた関数群が存在する、それが「ランタイムライブラリ」と呼ばれるものである。
 こういったシステムになるため、 OS開発環境によってある関数やない関数が存在したり、同じ関数でも微妙な違いが存在したりする。逆にこれが、こういったプラットフォームの違いをはっきりとさせ、移植を容易にさせているとも言える。
 C++ 言語には、これの代わりとなる標準 C++ ライブラリが存在するが、まだドキュメントが少ないこと、現在も改変中であることなど、まだ不安な要素があるため、ランタイムライブラリの必要性は依然高い。
 正式名称は標準 C ライブラリ
 
CAB
 ( Cabinet File )
 「保管ファイル」
 <キャビネットファイル>
 圧縮ファイルフォーマットのひとつ。
  Windows で使用される圧縮ファイル。拡張子は .cab 。インストールされるファイルに使用されることが多い。
 
cc ( C Compiler )
  UNIX 系 OS に付属しているコンパイラ
 たいがいの UNIX OSに備わっている、 C 言語プログラムのコンパイルリンクができるツール。
 場合によっては、古いスタイルの C 言語プログラムしかコンパイルできないものしかインストールされていない可能性がある。もしあるなら、 gcc の使用を勧める。
 
CALLBACK
 ウィンドウズ API 関数宣言に付いている単語。通常コールバック関数に付いている。
 これは呼び出し規約を統一するためのもので、 __stdcall #define で置き換えたもの。 WINAPI と同じ。
 
CGI ( Common Gateway Interface )
 <しーじーあい>
 インターネットなどで、サーバー側のアプリケーションを実行するシステム。もしくは実際に実行されるアプリケーション
 通常、ホームページを出力する HTTP サーバーは「求められたファイルを渡す」という機能のみを行う。それがたとえ、拡張子が .exe であってもである(もともと UNIX 系では拡張子に意味がないというのもある)。
  CGI が使用できるようサーバー側の設定を行うことで、特定の拡張子のファイルは直接渡されず、サーバー側で実行され、その出力結果がクライアント(多くはネットスケープのようなインターネットブラウザ)へと渡される。このようなシステム、もしくは実行されるファイルを CGI と呼ぶ。
  CGI アプリケーションはサーバー側で実行されるため、サーバーにファイルを残すといった機能も実現できるが、その反面、サーバー側にダメージを与えるプログラムも実行できてしまう。そのため、多くのプロバイダではユーザーが作成した CGI アプリケーションを使用できない設定となっている。
 
char ( Character )
 <キャラ, カラ, チャー>「文字」
 バイトサイズの整数値C言語に初めから組み込まれている型のひとつ。
 一応整数値型のため整数値計算を行うことができるが、サイズが1バイトしかないため -128 から 127 までの値しか格納できないため、計算用として使われることは滅多にない。
 それよりも「文字ひとつ」を表すための型として一般的に使われている。通常は char 型の配列を作成し、それをもって文字列とみなす。また、日本語に含まれる漢字などはとても char ひとつには入りきらないため、 MBCS を用いて char ふたつ以上をひとつの文字に割り当てるか、 wchar_t を用いるかする必要がある。
 
cin
 標準 C++ ライブラリグローバル変数
 「標準入力」を入力元にした istream クラスの変数。この変数に対して「 >> 」を介して変数を渡すことで標準入力から入力できる。
 標準 C++ ライブラリのオブジェクトなので std 名前空間で囲まれているため、 using namespace std; もしくは std::cin などとする必要がある。
 これは入力専用。出力には cout を使用する。
 
CLI
 ( Common Language Infrastructure )
 「共通言語環境」
 多くの OS で使用できるアプリケーションを制作し実行するための環境
  CLR などのように、 OS に依存させないようにするための環境、もしくはそのための規格。 CLI が用意されていれば、 CLI に準拠したアプリケーションは実行できることになる。
 
CLR
 ( Common Language Runtime )
 「共通言語ランタイム」
 ライブラリの一種。 OS やプログラミング言語に依存しない特殊なライブラリ。
 次期 Visual Studio に添付される予定のライブラリ。多くの OS で動作し、様々な言語から呼び出すことができる。
 ライブラリは通常、 OS や言語によって異なる。たとえば「ウィンドウを表示する」という機能ひとつでも、 OS や言語が異なれば呼び出す関数が大きく異なる。 CLR は多くの OS で動作し、多くの言語から呼び出すことができるため、 CLR ひとつ憶えればどの環境でもプログラムの作成が容易になる。
 
CLS
 ( Common Language Specification )
 「共通言語仕様」
 多くのプログラミング言語で利用できるライブラリを作るための仕様
  CLR などのように、言語に依存しないライブラリが存在する。その様なライブラリを作るための仕様のひとつが CLS である。 CLS に準拠する形式でライブラリを作成することで、再利用しやすくなる。
 
CLSID( CLaSs IDentifier )
 COMインターフェイスの入った ActiveX ファイルを識別するための UUID
  ActiveX ファイルはインターネット上で公開される場合があるため、その存在を世界中で一意に識別できなければならない。そのために付けられる識別用文字列が CLSID である。
  CLSID_ShellLink なども CLSID のひとつ。これらは Shlguid.h でグローバル変数として作成されている。
 
 
COM
 ( Component Object Model )
 <コム>
 ある実行ファイルDLL から、他の実行ファイルや DLL にあるクラスを動的に使用するための仕様
  DLL などを用いてプログラムの「分散化」や「コンポーネント化」を行う場合、必要なものだけを動的に組み込める、つまり「プラグイン」としての機能が求められる。この場合、通常関数ポインタを取得しそれを元に関数を呼び出すが、この場合にはクラスを使用するのが難しい。
 そこで抽象クラスを用いたインターフェイスを使用することで、関数ポインタを仮想関数に置き換え、これによりクラスを使用する方法が採られた。この方法が「 COM 」である。
 つまりは「プラグイン仕様」のひとつである。
 現在はネットワークを介してアクセスできる機能( DCOM )も取り込み、シェル拡張 DirectX などあらゆる場面で使用されている。
 プロセス間関数呼び出しも参照のこと。
 
COM+ <コムプラス>
  COM の次世代規格
 詳しいことはよく分からないが、どうやら「言語レベルで COM をサポートする」ということらしい。たとえば #import プリプロセッサはその「サポートするためのもの」らしい。
 
 
COM インターフェイス
 ( COM Interface )
 COM に準拠したクラス
 COM はDLL内で動的にクラスの変数を作成する。メンバ関数はすべて仮想関数であるためポインタとして出力できる。使用する側は抽象クラスで受け取る。このようにして関数ポインタを仮想関数に置き換え、クラスとして使用できるようにしている。
 ちなみに「抽象クラス」のことをインターフェイスとも呼ぶため、このような名称になっていると思われる。
 
const
 ( constant )
 <コンスト>
 「不変な」
 変数を宣言するときに付けるキーワードのひとつ。
 「変数の値」「ポインタの値」「ポインタおよび参照が指し示す値」が変更できないようにする。つまり const な変数は「読み取り専用」「リードオンリー」ということである。もし const な変数に対して書き込みを行おうとした場合、コンパイラがエラーを発生させる。
  const はふんだんに使うべきであり、使える部分にはすべて使うのが望ましい。そうすることで「変数が書き換えられる範囲」を大幅に狭めることができ、保守性が大幅に向上する。
 といっても、 const キャストによって一時的に取り除くことができてしまうため、過信は禁物。
 また、クラス変数に const を適用する場合には、そのクラスが const メンバ関数を持っている必要がある。現状では多くのクラスライブラリ const メンバ関数をサポートしていないため、使いたくても使えない場合もある。
 
CORBA
 ( Common Object Request Broker Architecture )
 <コルバ>
 「共有物要求仲介機構」
  プロセス間関数呼び出しついての仕様のひとつ。
 COMDCOM とは別の方法で、プロセス間での関数呼び出しを実現している。ちなみに IDL の仕様も違うので注意。
 
cout
 標準C++ライブラリグローバル変数
 「標準出力」を出力先にした ostream クラスの変数。この変数に対して「 << 」を介して変数を渡すことで標準出力に出力できる。
 標準C++ライブラリのオブジェクトなので std 名前空間で囲まれているため、 using namespace std; もしくは std::cout などとする必要がある。
 これは出力専用。入力には cin を使用する。
 
CString
 <しーすとりんぐ>
 MFCクラスのひとつで、文字列を格納するためのもの。
 文字列クラスとしてはおそらく最も使いやすい。格納できる文字列のサイズは自動的に変更されるためサイズを気にする必要がない。また各種演算子オーバーロードされているため + や = などで操作することができる。 CString::Format() などの成型用メンバ関数も備えている。 MFC に含まれることもあって MFC の他のクラスとの親和性が高いのも特徴。
 C++ 言語には文字列型は存在しないため、その代わりに、プログラミング初心者へと提供される文字列型と言っていい。ただし、メモリ管理など std::string と比較すると見劣りする部分も多々あるため、 CString が文字列クラスとして最良の型とは言い難い。
 
CSV
 ( Comma Separated Value )
 「カンマ区切りデータ」
 各データがカンマ, )で区切られた文字列
 各データは、整数値も何もかもすべて文字列に変換され、複数行の文字列として格納される。各データはカンマで区切られる。
 テキストファイルとして保存できるため、多くの OS およびアプリケーションで使用できるメリットがあることから、ほとんどの表計算アプリケーションやデータベースアプリケーションは CSV 形式でデータを出力することができる。
 
CUI ( Character User Interface )
 <しーゆーあい>「文字的操作環境」
 文章だけの入出力環境
 具体的には「コンソール」や「 DOS 窓」のような環境。文字を入力し、文字が出力される。
 古い入出力方法であり、習熟しないと非常に使いづらいなどのデメリットが多いが、コンピューターにかかる負担が少ないなどのメリットもある。
  Visual C++ の場合、プロジェクトの作成時に「 Win32 Console Application 」を選ぶことで CUI アプリケーションを作成することができる。
 現在は GUI が主流。
 
DBCS ( Double-Byte Character Sets )
  MBCS の2バイト版。
  char 配列の2文字分で漢字1文字を表す。どうやって表すかは文字コードによって変わる。ウィンドウズなら Shift_JIS の文字コードを使用し、APIなども Shift_JIS に対応している。
 
 
DCOM( Distributed COM )<でぃーこむ>
 COMプロセス間関数呼び出しについての拡張仕様
 COMをネットワークを超えて使用するために、COMに加えられた仕様。 IDL を使用したインターフェイスの統一や UUID による識別、アパートメントスレッド化やマーシャリングなどがそうである。
 
DDB ( Device-Dependent Bitmap )
 「ハードウェア依存ビットマップ」
 画像フォーマット(保持形式)のひとつ。
 画像の点ひとつひとつの色を配列のような形で保持する形式。ただし、その色は出力するハードに依存する。「赤」を出力しようとしても、実際にどんな色が出力されるかはモニターやグラフィックボードなどによって決定されてしまうのである。
 基本的に過去の遺物。一般的なビットマップとも別物と考えるべき。今はDIBが主流。
 
DDE ( Dynamic Data Exchange )
 「データ交換」
 プロセス間でのデータの受け渡しをするためのウィンドウズの機能
 ウィンドウズでは、メモリはプロセスごとに独立しているため、文字列などを渡すのにポインタを使用できない。そこで使用されるのが DDE である。
  DDE を使用する場合、 API GlobalAlloc() GlobalAddAtom()を使用してメモリの動的確保を行い、 WM_DDE_DATA などのプレフィックス WM_DDE_ メッセージを送受信することで行う。
 仕組みが複雑なことや、プロセス間関数呼び出しなどの方法があるため、現在はあまり使われていない。
 
DDK ( Device Driver Kit / Driver Development Kit )
 <デバイスドライバーキット>
 デバイスドライバーを作成するためのライブラリ
 デバイスドライバーを作成するためには、この DDK に含まれるライブラリを使用する必要がある。 DDK は MSDN の高レベルのものに付いている。
 
Delphi <デルファイ>
 インプライズ社製開発環境
 言語に Object Pascal を使用した、コンポーネント中心のウィンドウズ向け開発環境。
 ちなみに本辞書は Visual C++ 中心なので Delphi に特化した単語は掲載しない予定です。ごめんなさい。
 
DIB ( Device-Independent Bitmap )
 「ハードウェア独立型ビットマップ」
 画像フォーマット(保持形式)のひとつ。
 ビットマップの、「キャンバスとして」および「画像ファイル形式」のものと同じと考えていい。つまりデバイスコンテキストに張り付いているビットマップや、一般的なファイル形式としてのビットマップは DIB 形式である、ということである。
 よって「ビットマップを扱う」=「 DIB を扱う」がだいたいにおいて成り立つので、 DIB について気にする必要はほとんどない。
 
DIID ( Dispatch IID )
 「ディスパッチインターフェイスID」
 特定の IDispatch インターフェイスを示す IID
  COM インターフェイスを取得する場合には IID を使用して指定する。この中でも、ディスパッチを行うインターフェイス IDispatch を取得するための IID DIID と呼ばれ、プレフィックス DIID_ が付く。
 
DirectInput  <ダイレクトインプット>
  DirectX に含まれるグループのひとつ。ジョイスティックなどによる入力を管理するためのライブラリ
 通常、ジョイスティックやマウスなどによる入力はメッセージとして送られそれを処理することで対応することになるが、これだと処理に時間が掛かってしまい、ゲーム等には利用できない。 DirectInput を使用することで、ジョイスティックなどハードウェアからの信号を直接受け取ることができるようになり、これによりレスポンスを向上させることができるようになる。
 
DirectShow <ダイレクトショウ>
  DirectX に含まれるグループのひとつ。動画操作などを行うためのライブラリ
 既存の動画フォーマット(たとえば AVI )の再生等を得意とするため、ムービー関係の操作に使用される。
 
DirectSound
 <ダイレクトサウンド>
  DirectX に含まれるグループのひとつ。音声操作などを行うためのライブラリ
 音声の再生、編集、録音等を行うためのライブラリ。 MCI よりも自由度が高い。
 
DirectX <ダイレクトエックス>
 「ウィンドウズ標準ゲームライブラリ」
 ウィンドウズ向けの、ゲームの作成を目的としたマルチメディア操作用ライブラリ
 ウィンドウズでの描画はウィンドウズシステムを通して行われるため、処理に時間が掛かるものが多い。そこで作られたのが、システムを極力介さずマルチメディア機能を使用することができる DirectX である。
  DirectX は、描画を行う DirectDraw 、3DCG処理を行う Direct3D 音声処理を行う DirectSound 、ジョイスティック等からの入力を処理する DirectInput 、ネットワーク処理を行う DirectPlay MPEG などの既存動画フォーマットを処理する DirectShow などがある。
  DirectX API から COM インターフェイスを取得しそれを操作する。そのため、使用にはある程度 COM についての知識が必要となる。
 
 
DLL
 ( Dynamic-Link Library )
  「動的リンクライブラリ」
 <でぃーえるえる>
 ライブラリの一種。
 スタティックライブラリオブジェクトファイル実行ファイルのように「プログラムにロードできる」形式にしたようなもの。通常、拡張子は .DLL 実行ファイルが実行されたとき、もしくはその途中でメモリ上にロードし、中のクラス関数を使用できる形にしている。
  DLL のリンク方法には DLL の実行時リンク DLL の実行中リンク DLL の遅延ロードの3つがある。
 多くの実行ファイルから呼び出した場合、他のライブラリ形式よりも消費するメモリやディスク上のサイズが少なくて済むという利点があるが、現在のコンピューターの性能を考えればその利点が微々たる点、システムが複雑化しすぎてバグの解消量よりも発生量の方が高くなる場合が多い点を考えると、現状には合っていないのではないかと言われている。
 だが、ウィンドウズそのものが DLL の塊として存在していることや、プラグインや COM など、違った形での DLL の使用方法も出てきており、これからも使われていくであろうと思われる。
 
DllMain()
  DLL がロードされた時にまず最初に呼ばれる関数
  DllMain() DLL エントリーポイントである。ロードされたときにまず呼ばれるため、この中で必要な初期化を行う。
 
DLL の遅延ロード ( Delayload )
 「あとからリンク」
  DLL 後からリンクする方法。
  DLL の実行時リンク DLL の実行中リンクの中間的機能を持つ。
 リンク方法は「 DLL の実行時リンク」とほとんど同じで、あとリンカのオプションとして /DELAYLOAD と「あとから組み込みたい DLL 」を指定するだけである。
 指定された DLL は、実行時には組み込まれず、実際に DLL が使用される段階になって初めて組み込まれる。
 この方法のメリットは、不必要な DLL を読み込まない、という点である。これにより、場合によってはメモリや時間を節約できる。ただし、「実行中リンク」で行えるような細かい操作を行うには、特殊な処理が必要となる。この方法には特別な処理をするためのフックが用意されており、これを使用することで「実行中リンク」に近いことも行える。
 
DLL の実行時リンク / DLL の暗黙的リンク
 ( Load-time Dynamic Linking )
  DLL を自動的にリンクする方法。 DLL の一般的な使用方法。
 リンカに、使用したい DLL ライブラリファイルを渡すことで、自動的にその DLL が使用できる。
 実行ファイルを実行してプロセスが作られるとき、リンカを使って設定した DLL が自動的にリンクされる。これにより DLL を簡単に使用することができる。
 デメリットとして、 DLL を実行中に変更することができなこと、また、必要な DLL が見つからなかった場合に OS から(分かりにくい)エラーが出され、実行ファイル側でそのエラーを処理できないということ、また、実行中に使用するかどうか分からない DLL もリンクしなければならないこと、などがある。これらの問題に対処する必要がある場合には DLL の実行中リンク DLL の遅延ロードを使用する。
 
DLL の実行中リンク / DLL の明示的リンク
 ( Run-time Dynamic Linking )
 「プログラムの中でリンク」
  DLL プログラム上でリンクする方法。 DLL の特殊な使用方法。
  DLL 内の特定の関数を直接呼び出すことができるのが、この方法である。まず API LoadLibrary() を使って特定の DLL を実行ファイルに組み込む。次に GetProcAddress() を使って DLL 内にある使いたい関数のアドレスを取得し関数ポインタに格納する。ただし「使いたい関数」は装飾名で指定する。取得した関数ポインタを使用するとこで、目的の関数を呼び出すことができる。使用した後は FreeLibrary() で DLL を解放する。
 この方法のメリットは、 DLL を使用時に使い分けることができたり、 DLL が見つからない場合に柔軟な対応ができることである。反面、この方法は関数ポインタを使用するため注意が必要であり、また、膨大な量の DLL や関数を使用する場合には向かない。前述のメリットを使用する必要がない場合には DLL の実行時リンク DLL の遅延ロードを使用する方がいい。
 また、この方法ではクラスを使用するのが難しい。メンバ関数と普通の関数では呼び出し方が違うからである。どうしても使用したい場合には COM のような特殊な方法が必要となる。
 
DMI( Desktop Management Interface )
 ネットワーク上のコンピューターを操作するためのAPI
 ネットワーク上に継ながれたコンピューターのハードウェアやソフトウェアを一元管理するためのAPI。このAPIを使用しすることで OS や機種間での依存性を考慮せず管理することができる。
 
DML
 ( Data Manipulation Language )
 「データ操作言語」
 データベース用語のひとつ。データベースの中身を操作するためのコマンド
 
DOM
 ( Document Object Model )
  XML 文章を解析・作成するためのライブラリ
  XML 文章は構造体のようになっており、文章内の単語や文がメンバ変数のように定義されている。しかし、これを通常の文字列として操作すると大きな手間がかかる。そこで、 XML 文章を解析するためのライブラリが必要となる。
 その解析を行うためのライブラリのひとつが DOM である。 DOM は XML の構造をツリー形式として解析し、それぞれのデータに対しての読み取り・書き込みが簡単にできるようになっている。
 
DOS/V
 ( MS-DOS VGA )
 <ドスブイ>
  MS-DOS の種類のひとつ。だが一般には、この OS を使用することができるパソコン本体を指すことが多い。
 日本ではかつて NEC の PC-98xx パソコンが普及していたが、そのパソコンには専用の日本語 MS-DOS が備わっていた。
  DOS/V はこれとは別の日本語 MS-DOS であり、また実行できるハードウェア規格も異なっていたため、パソコンそのものの違いとして「 PC-98 系と DOS/V 系」という区別が生じた。そのため、 DOS/V と言うと一般にはパソコンそのものを指すことが多い。
  DOS/V は規格を公開することで多くの企業が DOS/V パソコンを販売するようになり、ウィンドウズの規格である「 PC98 規格」を NEC が受け入れたことで、 PC-98xx 系パソコンは製造されなくなる。そのため、現在のパソコンはほとんどすべて DOS/V の流れを汲むものとなっている。
 
dynamic_cast
 <だいなみっくきゃすと>
 「ポリモーフィズム専用キャスト」
 特定のポインタもしくは参照を、継承関係にある他のポインタもしくは参照へと安全キャストする場合に使用する演算子
 ポリモーフィズムを行う場合、子クラスを指すポインタもしくは参照から、親クラスを指すポインタもしくは参照へとアップキャストを行う。
 一度アップキャストを行ったポインタもしくは参照は、見た目には実際にどのクラスの変数なのか分からない。そのため、再びダウンキャストを行い元の型に戻す場合には危険が伴う。
 そこで使用されるのが「 dynamic_cast 」である。この演算子を使用してダウンキャストを行った場合、もしそれが可能ならばそのままポインタもしくは参照を返し、それが不可能であれば NULL を返すかもしくは例外を投げることになっている。この結果を確認することで、ポインタもしくは参照が本当にその継承先クラスのものなのかどうか確認してから使用することができる。
  dynamic_cast はこの「ポリモーフィズムに関連したキャスト」を行う機能しか持っていない。そのため、非クラス型や継承関係にないクラス同士や、非ポインタもしくは非参照型の場合、仮想関数を持たないクラスの場合には dynamic_cast は使用できない。
 
拡張 BNF / EBNF / ABNF
 ( Extended BNF / Augmented BNF )
 「言語規定言語」
 特定の言語仕様を記述するためのもの。
 実際には BNF を元に手を加えたもの。基本的な文法は BNF と同じだが、それを元に表現形式等が変えられている。「拡張のされかた」は場合場合によって異なるため、実際には「ローカルな仕様が増えた」ということになる。
 XML など多くの「言語規定言語(メタ言語)」が「拡張 BNF 」である。
 
EDI ( Electronic Date Interchange )
 「電子データ交換」
 企業間通信におけるプロトコル
 各企業がコンピューターを使用しネットワークを通じて受発注や決済等の情報をやりとりする場合、統一したプロトコルで通信を行う必要がある。そういったプロトコルを取り決め、企業間の情報交換を簡易にし、コストを減らそうとすることを「 EDI 」と言う。
 あくまで「企業がコスト削減のために行う」ことが重要。この用語には企業同士の通信に仕様が限られる。
 プロトコルは企業によって異なる。また、通信は直に行うものだけでなく、インターネットを介し HTML XML を用いる場合もある。
 
enum( enumeration )
 「列挙」
 C言語言語機能のひとつ。
  enum を使用することで「定数値を特定の単語に置き換える」ことができる。これは #define const int とほぼ同じ機能だが、これらと違い「メンバ変数のような形で定数値を作れる」というメリットがある。MFCを使用して作成されたダイアログクラスなどにこの例がある。
 さらに enum は、いくつかの整数値をまとめて「特定の」を割り当てることができる。この型で作られた変数には普通の整数値を格納することができない。この機能は「特定の整数値しか受け取りたくないフラグ」などで重宝する。
 これらとは別に、「何かを列挙する(ならべて差し出す)」という意味で使われる場合がある。たとえばAPI EnumWindows() ウィンドウを次々と取得することができる。
 
EUC
 ( Extended Unix Code )
 「 UNIX 文字コード」
 文字コードのひとつ。
 主に UNIX OS で使われる、日本語の文字列を表示するための文字コード。ウィンドウズは Shift JIS なので、場合によっては文字コードの変換が必要なこともある。
 
Exchange Server
  Microsoft 社製アプリケーションのひとつ。
 Windows NT で使用する。ネットワークを通した多人数での処理を潤滑に進めるためのアプリケーション。いわゆるグループウェア。情報の共有・排他・配信・管理を行う。
 
Exe ( Execution )<エグゼ>
 実行ファイル拡張子。もしくは「実行ファイル」そのものの意味。
 
explicit <エクスプリシット>
 「明示的」
 引数をひとつだけ受け取るコンストラクタに付けることのできる C++ 言語キーワード
 クラス関数の引数として使う場合、その関数には、クラスのコンストラクタの引数になっているものも渡すことができてしまう。これは暗黙的にコンストラクタが呼び出されるからである。このとき、「コンストラクタの引数」がまるで「関数の引数」であるかのように振る舞ってしまい、本来ならコンパイルエラーとなって欲しい場面でも、見えない部分でコンストラクタが呼ばれることでコンパイルが通ってしまう。その結果、想定していない動作をする可能性がある。
 そこで、コンストラクタには「暗示的に呼び出せない」ようにするためのキーワードがある。それが explicit である。このキーワードを付けたコンストラクタは、必ず明示的に呼び出される必要があり、前述のようなことをしようとするとコンパイル時にエラーが発生する。
 
extern
 「外部」<エクスターン>
 ヘッダーファイル内で関数グローバル変数に使用するリンケージ指定子
 この単語を使用したものは「ソースファイル内に実体が存在する」という意味になる。この場合、コンパイル時には「仮の存在」として扱い、リンク時に「中間ファイル」内の実体と結びつける。これにより、ひとつの存在を複数のソースファイルから共有利用する事ができる。
 通常の関数はすべて extern が付いていると見なされる。
 ひとつの変数を複数のソースファイルから共有する場合には、グローバルな変数として作成し、使用する側でその変数名を extern 指定する。通常は、「変数を置くソースファイル」内で普通にグローバル変数として作成し、そのヘッダーファイルで extern int g_i; のように指定し、変数を使いたいソースファイルがこのヘッダーファイルをインクルードすることで実現する。
 言ってみれば、ヘッダーファイルの extern 指定は、関数における宣言にあたるものと考えればいい。この指定がある変数は「どこかに実体がある」とリンカが判断する。
 実際には、グローバル変数は極力作成すべきでない。通常は関数内に static 変数として作成し、その参照を返すようにすることで実現する。
  extern には extern "C" という使い方もあるが、これはここまでの解説とは「まったく別物」と考えるべきである。これについては名前装飾を参考にすること。
 
extern "C"
 名前装飾において「その関数はC言語形式の装飾名にすること」と指定するためのキーワード
 基本的に extern とは別物と考えるべき。
 
far <ふぁー>
 「遠隔地の住所」
 ポインタサイズ指定
 これがついているポインタは、格納できるアドレスが32ビットサイズだということを表している。このうち、最初の16ビットをセグメント、後の16ビットをオフセットといい、このふたつを組み合わせてアドレスを表すことになる。
 ただし、これは古いウィンドウズや MS-DOS 時代の話であり、現在の32ビットウィンドウズでは使用されない。実際、API FAR というマクロを使用し、Win32プログラミング時には空白に置き換えている。
 ウィンドウズ3.1などの16ビット OS では、16ビットサイズのポインタである near ポインタを普通使用していた。が、マシンのメモリが増えるに従い16ビットでは限界が出てきた。
 アドレスはバイト単位で計測するため、16ビットポインタは65536バイト=64KBまでのアドレスしか表すことができず、そのためアプリケーションのサイズなども64KBの制約を受けることになる。この状態を「スモールモデル」という。
 そこで、アドレスを32ビットとして扱い、それ以上のサイズまで扱える用にした「ラージモデル」というものが生まれる。この状態になるようコンパイルされたものは far ポインタを使用して32ビットアドレスを扱う。ただしこのアドレスは「セグメントに16を掛けたものをオフセットに足した値」により求められるため、最大約1Mバイトまでしか表すことができない。
 Win32では完全な32ビットアドレス(4Mバイトまで表すことができる)しか使用しないので、現在これらは過去の遺物である。それでもいくつかのコードには残っており、また LPCTSTR などのプレフィックス LP long サイズ、つまり32ビットサイズのポインタであることを示しており、こういった部分には習慣のような形で残っている。
 
FIFO ( First In First Out )
 <フィフォ>
 「先入れ先出し」
 データ構造のひとつ。リスト構造などを利用してデータを並べて格納し、先に入れたデータを先に取り出す方式を採ること。キューとも言う。
 次から次へと増えていくデータを時系列順に並べて格納し、先に格納したデータから使用して破棄していく方法。「チケットを買うために並ぶ行列」を想像すると分かりやすい。先に並んだ人ほど、先にチケットを買え、先に列から離れる、こういった構造を指す。
 通常はリスト構造を使用して実現し、「リストの終端への追加」と「リストの先頭からの削除」を繰り返すことで実現する。
 STLコンテナには std::queue というクラスがあり、これを使用することで実現できる。
 
FILO ( First In Last Out )
 <フィロ>
 「先入れ後出し」
 データ構造のひとつ。リスト構造などを利用してデータを並べて格納し、先に入れたデータを最後に取り出す方式を採ること。
 実は「後入れ先出し構造」と同じ構造を意味する。
 
FORTRAN
 ( FORmula TRANslator )
 <フォートラン>
 「算術プログラミング言語」
 プログラミング言語のひとつ。科学用算術計算を得意とする。
 非常に古くから存在するプログラミング言語。数式をあまり変更せずにプログラムに使用することができ、また正確な算術計算を行うライブラリが揃っている。現在は、新たな開発に使用されることは少ない。
 ちなみに本辞書は Visual C++ 中心なので FORTRAN に特化した単語は掲載しない予定です。ごめんなさい。
 
 
FTP
 ( File Transfer Protocol )
  「ファイル送受信規約」
 <えふてぃーぴー>
 ネットワーク上でファイルを送受信するプロトコルの一種。ファイルの送受信のみと機能は少ないが、特化されたプロトコルのためシンプルで使いやすい。また、ファイルを「受け付ける」ことのできるプロトコルとしても広く使われている。
 
gcc ( GNU C Compiler )
  UNIX における標準コンパイラ
 たいがいの UNIX OSに備わっている、 C++ 言語プログラムのコンパイルリンクができるツール。 UNIX 系以外にも、ウィンドウズを含め様々な OS に対応した gcc がリリースされている。バージョンアップが頻繁に行われ、最新の正確な C++ 規格に準拠していることもあり、ウィンドウズ用アプリケーションの作成にもよく使われている。
  gcc の機能は、 Visual C++ のような開発環境に比べると非常に少ないため、 make などの他のツールと併用するのが望ましい。
 
 
GDI ( Graphics Device Interface )
  <じーでぃーあい>
 ウィンドウズが管理するウィンドウズオブジェクトの中でも、描画を行うものを指す。ビットマップパレット、ペン、ブラシ、フォント、パス、リージョンの7種類が存在する。
 ウィンドウズが管理するため、ウィンドウ等と同じくAPIを使用して作成・削除を行い、ハンドルを通して操作する。ウィンドウズ全体でグローバルリソースのため、不必要な GDI オブジェクトをデリートせずにおくとメモリを無駄に消費する。また、まだ使用する機会のあるGDIオブジェクトをデリートすると、その GDI オブジェクトが使用できなくなり描画に支障が起きる。
 GDI オブジェクトはそれ単体では使用できず、必ずデバイスコンテキストを介して使用する。デバイスコンテキストは1種類のGDIにつきひとつしか選択できないため、「 GDI オブジェクトを交換する」という方法を用いる。このとき、それまで使用していた GDI オブジェクトは他のデバイスコンテキストが使用しているかもしれないから、ハンドルを保存しておき、あとで再び元に戻しておく。
 
GLUT
 ( open GL Utility Tool-kit )
 「 OpenGL ユーティリティ」
 「 OpenGL を用いて作成した 3DCG 画像」を表示するウィンドウを作成・管理するためのライブラリ
  OpenGL そのものは、 3DCG 描画を行うための機能しかもたず、それをデバイスコンテキストに貼り付ける段階となると難しくなる。
  GLUT は、ウィンドウの作成を行い、そのウィンドウに OpenGL の描画結果を表示するためのライブラリが入っており、これを使用することで簡単に OpenGL をウィンドウズで使用することができる。
 
goto
 <ゴーツー>
 「行け!」
 関数内の特定の場所に移動する、 C 言語キーワードのひとつ。
 関数内で「特定の文」にコロン( : )を着けたものを「ラベル」といい、 goto は同じ関数内のラベルへと移動することができる。
  goto を大量に使用すると、プログラムの構造が分かりにくくなるため、使用は極力避けるべき。
 
GP-IB
 ( General Purpose Interface Bus )
 「多目的インターフェイス」
 <じーぴーあいびー>
 コンピューターと他のデバイスを継なぐために使用されるインターフェイスのひとつ。
 主に計測機器との接続に用いられる。標準装備されているものではないため、インターフェイスボードを別途用意する必要がある。
 
GUI ( Graphical User Interface )
 <じーゆーあい、グイー>「絵的操作環境」
 グラフィックをふんだんに使用した入出力環境
 具体的には、デスクトップアイコンが並び、アプリケーションはウィンドウとして表示され、ウィンドウ上に出力結果が表示され、マウスを使ってメニューやボタンを選択することで簡易な入力を行う、というものである。つまり現在の標準的な OS 環境である。
 対極にあるものとして CUI がある。
 
GUID( Globally Unique IDentifier )
  UUID のこと。
 COM用語としては、 UUID よりも GUID CLSID の方がよく使われる。
 
has-a 関係
 「AはBを持っている」
 オブジェクト指向プログラミングにおけるオブジェクト間の関係のひとつ
 「 has-a 関係」とは日本語に訳せば「AはBを持っている」と言える関係のことを指す。
 たとえば「 Crow has a wing. (カラスは羽を持っている)」や「 Window has a handle. (ウィンドウハンドルを持っている)」などがこの関係に当たる。
  C++ 言語 プログラミングにおいて、 has-a 関係は「持たれている方」へのポインタ参照を持ち「持っている方」から操作することで実現する。これは集約コンポジションなどとも呼ばれる(もしくは「これらによって実現される」とも表現される)。
 集約やコンポジションの性質から、「持っているもの」を取り替えたり、新たに加えたりすることができるため、 is-a 関係よりも自由度が高く、安易な継承よりもこちらを多用することが推奨されている。
 
HTML
 ( Hypertext Markup Language )
 「ホームページ記述言語」
 ホームページを記述するための言語
 ホームページとして表示するためには「タイトル」「リンク」「画像指定」等の指定が必要となる。その指定を行うための言語が「 HTML 」である。
 HTML には「タイトル」「リンク」「画像指定」等の指定を行うための「タグ」が定義されており、この定義を単なるテキストファイルに書き込むだけで、ホームページとして見ることができる HTML ファイルにすることができる。
 
ID
 ( IDentify )
 「識別子」
 存在を特定するための
 広い意味で使用される場合、一般には「特定の存在を識別するための値」を指す。たとえば変数のアドレスは、その変数を一意に示す ID として機能する。また UUID は特定の COM インターフェイスを識別するときに使用する。
 ウィンドウズでは、ダイアログボックスコントロールを識別するために使用される整数値を指すことが多い。リソースエディタでコントロールをダイアログに貼り付ける段階で、各コントロールに整数値を割り振る。この値は GetDlgItem() などで利用できる。 Visual C++ などの多くの開発環境では、プログラマーは ID (整数値)の代わりに "ID_EDIT_1" などの文字列を割り当てるだけで済むようなっている。これは、開発環境側が ID を適当に作り、その値を文字列に割り当ててくれているからである。この仕組みのおかげで、プログラマーは無機質な整数値ではなく分かりやすい文字列でダイアログボックスコントロールを識別することができる。
 
IDE
 ( Integrated Device Electronica )
 主にふたつの意味がある。
 「ハードディスクインターフェイス」:コンピューターとハードディスクを継なぐためのインターフェイス。プログラミングとはあまり関係ない。
 「統合開発環境」: Visual C++ などの、コンパイラリンカをまとめて操作するためのシステムを IDE (統合開発環境)と言う。プログラミングではこちらの意味の方が多いと思われる。
 
IDL( Interface Definition Language )
 「連結面定義言語」
  COM CORBA で使用される言語
  COM などの、複数の OS 間で関数を呼び合う場合には、その呼び出し方法が一意に定まらなければならない。 int のサイズ、ポインタや参照の性質など、これらはコンパイラや動作する OS によって変わってくる。この問題を解決するものが IDL である。
 関数の宣言部を IDL に翻訳することで、 OS やコンパイラに寄らない関数宣言を作成できる。翻訳したものは拡張子が *.idl に保存する。これを IDL コンパイラ(VCでは MIDL を使用する)を用いてC++言語形式に変換する。これをC++コンパイラに通すことで、外からも呼び出せる関数を作成できる。また、同時にタイプライブラリを出力し、これをヘッダーファイルの代わりとする。
 ちなみに COM CORBA では言語仕様がまったく違うので注意すること。
 
if
 「もしも」
  キーワードのひとつ。値を判定して「次の行を実行するかしないか」を決定する機能を持つ。
  if( A ) のように使用する。
 もし A が「0以外」であれば、 if は次の行を実行する。その1行がネストの場合には、ネスト全体が実行される。
 もし A が「」であれば、次の行は実行されない。
 この if の機能を使用することで、場合によって実行させる部分を変更することができる。このような「場合によって処理の流れを分岐させる」機能を「分岐」と言う。
 
IID( Interface IDentifier )
 COMインターフェイスを識別するための UUID
 COMインターフェイスは ActiveX に入れられインターネット上で公開される場合があるため、その存在を世界中で一意に識別できなければならない。そのために付けられる識別用文字列が IID である。
  IID_IShellLink なども IID のひとつ。これらは Shlguid.h でグローバル変数として作成されている。
 
IIS( Internet Information Server )
 「インターネットサーバー」
  Microsoft 社製のインターネット サーバー
 Windows NT ではこれをインターネットサーバーとして使用することが推奨されている。
 
IntelliSense
 <インテリセンス>
 「単語自動補完機能」
 Visual Studio のテキストエディタに備わっている単語を簡単に入力する機能
 この機能を使用することで、クラスメンバ関数を一覧から選んで選択したり、変数の名前を途中まで入力して残りの部分を自動的に補完したりすることができる。これによりプログラムの入力が簡易化される。
 
 
io ( in - out / i-o )
  「入出力」<アイオー>
 「入力」と「出力」のこと。C ランタイムライブラリ stdio.h 標準C++ライブラリ std::ios などの io もこの意味で、ともにファイルや文字列の入出力を行うクラス関数ライブラリとなっている。
 
IP ( Internet Protocol )
 インターネット用のプロトコル
  IP TCP UDP によって構成される。インターネット上で通信を行う場合、 TCP UDP のどちらかを直接使用するので、基本的に IP について考える必要はない。
 一般に、 IP と言ったら IP アドレスを指す場合が多い。