情報工学の専門用語の語源は基本的に面白い。 「バグ」の由来はよく知られていて、もともと短絡を起こし、メインフレームの中で見つかった焼き死んで しまったゴキブリを示すと言われている。それからバグの使い方が広がったと言う。 しかし、せめてトーマス・エジソンの時代が「バグ」を使う資料の記録はある。 続いて、バグの原因を調査するときに、デバッグ(いわゆるゴキブリの退治)と言い、バグを見つける ツールはデバッガーともよぶ。

グレース・ホッパー氏の実験ノード:テープで貼ってあるゴキブリを含んだ最初のバグ発見の報告
グレース・ホッパー氏の実験ノード:テープで貼ってあるゴキブリを含んだ最初のバグ発見の報告

20世紀の主な技術発展の研究は軍が先に始まった。第二次世界大戦または冷戦に勝ち目を持つために 情報工学も軍が初めて研究を進んできた。故に由来が軍の戦略まで遡る専門用語は情報工学の中に僅かにある。

ステージング

ステージングエリアはもともと英語で軍の集結地を表している。 ちなみに、英英辞書によるとstageという動詞には以下の意味がある:

“Stage: To move (as military personnel, supplies, or equipment) to or establish in a new base in preparation for a further movement or a planned operation.” —Webster’s Third New International Dictionary

訳すと「Stage: 計画された行動または次の作戦の準備のため、兵員・食糧・装備を新しい基地に移動する」といういみだそうである。

情報工学において、ステージングを使用する場合は多様である。一番有名なのは、ステージング環境ではないかと思う。 プロダクションに送る前に、企業は一般的にちゃんとステージング環境でアプリをテストするはずだ。 なぜなら、戦争に勝ち目のない装備は邪魔に過ぎない。

ステージングエリアという用語は非常に人気であるgitというバージョン管理システムで使われている。

Gitにおいてステージングエリアはコミットされる前に変更が保存される場所
Gitにおいてステージングエリアはコミットされる前に変更が保存される場所

Gitのステージングエリアは初心者にとって難しいかもしれないが、ワーキングディレクトリからコミットしたい変更の選定を可能にする機能である。git add --patchなどを利用して、その機能を活かすことはできる。

デプロイ

英語でdeploymentは部隊の展開・配置という意味をもつ。プロダクション環境にアプリをデプロイするという。

軍人の派遣みたいな言葉を軽く使っても良いかという疑問のある方はいらっしゃるかもしれないが、企業の運営は一つのアプリに基づくとしたら、戦闘のように失敗は許さないので、成功したデプロイが不可欠になってくる。 大変な過ちを避けられるなら厳しい用語を使ってもいいでしょう。

キャッシュ

キャッシュは情報工学初期から使われている、とてもおもしろい言葉だ。私を含めていろんな人は その意味や由来を知らず使ってきたと思う。

Cacheは盗品・貴重品、特に武器の隠し場や貯蔵所という意味がある。 この言葉はフランス語経由英語に入った言葉です。フランス語ではたんの隠し場という意味を持つ。 情報工学においてキャッシュとはデータの速い取得を可能にする一時的な保存先を示す。 例えばブラウザがネットからダウロードするリソースはだいたいHDDにあるブラウザのキャッシュに保存されている。 なぜならHDDにアクセスする時間はHTTPリクエストの問合せと比較すれば非常に短い。

Foobar

海外ではfooやbarはよく使われている意味のない構文変数のラベルである。 数学者はxやyを使うときに、ソフトウェアエンジニアは単にfooやbarを使用する。 日本のエンジニアはhogeを使う。例えば:

/* Cコード */

#include <stdio.h>

int main(int argc, char* argv[])
{
   char foo[6] = "Hello";
   char bar[7] = "World!";
   printf("%s %s\n", foo, bar);

   return 0;
}

Foobarの語源は不明である。だが、ウィキペディアによるとfooは意味のない単語として1900年代 から使われ、FUBAR(Fucked-Up Beyond All Recognition:何であるかが全くわからないほどめちゃくちゃ)は第二次世界大戦のスラングであるという。FooはFUBARの影響を受けて、foobarになったという仮設がある。

DMZ

DMZはDe-Militarized Zoneという意味で、日本語では非武装地帯と言う。DMZは2つ以上の軍事勢力の 間に軍事活動が許されない地域のことである。自分が知る鍵地、その用語はネットワーキングで使われている。

ネットワーキングにおいてDMZは外部のリクエストに応答しながら、外部からアクセスが許されないリソースにアクセスできるサブネットワークのことである。DMZは仲介者とよんでもいいかもしれない。

DMZの一番簡単な一例を言うなら、ユーザの個人情報をプライベートテータベースから取得するウェブアプリケーションのサーバでいいと思う。ウェブアプリケーションのサーバ自体はDMZの中にあり、アプリは公開され、外部からの問合せに応答し、内部のデータベースに接続しながら機密データを選択し、ユーザに返す。ユーザは直で機密データにアクセスできない