Random image

Epigno Tech Blog

2020年12月3日

Malik Olivier Boussejra

情報工学の用語に軍由来のものが多いという話

trivia

情報工学の用語に軍由来のものが多いという話

CTOのOlivierです.

情報工学の専門用語の語源は基本的にどれも面白いです. たとえば,「バグ」という用語. これは,プログラムの誤りや欠陥を意味する用語ですが,もともとメインフレームの中で感電して焼き死んでしまった本当の虫(バグ)が由来しているという逸話があります. 回路がショートしてしまって,メインフレームを開けて確認したら虫の死骸が見つかったということです. グレース・ホッパー氏の実験ノートにその記録が残っています.それから情報工学界隈で「バグ」という表現が広がったと言われています. しかし,トーマス・エジソンの時代の資料にも「バグ」という表現が残されており,機械工の間で使用されていた符丁だったのではなどともいわれています. ちなみに,バグの原因を調査するときは,デバッグ(いわゆる虫退治)と言い,バグを見つけるツールはデバッガーとよびます.

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

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 add --patch などのコマンドでこの機能を使うことができます.

デプロイ

英語でdeploymentには,部隊の展開・配置という意味があります. たとえば,プロダクション環境にアプリをデプロイするなどといいます.

戦争を彷彿とさせるような用語を軽々しく使っても良いのかという疑問を抱く方がいらっしゃるかもしれません. たしかにその通りですが,企業の主力製品がアプリであるならば,そのアプリがプロダクション環境で失敗するということは戦闘と同様に許されません. 大変な過ちを避けられるなら,こういった厳しい用語を使ってもいいでしょうと私は考えています.

キャッシュ

キャッシュは情報工学の黎明期から使われているとてもおもしろい言葉です. 私を含めていろんな人はその意味や由来を知らずに使ってきたと思います.

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

Foobar

海外ではfooやbarといった意味のない構文変数のラベルが度々使われます. 数学者がxやyを使うように,ソフトウェアエンジニアはfooやbarを使用します 日本のエンジニアはhogeやheheを使いますね.たとえば:

/* 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の中にあり,アプリは公開されていて外部からの問合せに応答し,内部のデータベースに接続しながら機密データを選択してユーザに返します.もちろん,ユーザは直接機密データにアクセスすることはできません

まとめ

軍に由来する情報工学の専門用語をいくつか紹介しました.

その他に,データベースも軍に由来する用語の一つです.

普段,何気なく使用している言葉の語源を知ると面白いですよね.

ライター

Malik Olivier Boussejra

CTO at Epigno