ハッカーのフォークロア
原文は Matthias Endler により に公開されました。 このブログを購読する
コンピュータ用語の中には、驚くような来歴を持つものがあります。その多くは、とっくに廃れてしまった技術に由来しています。この記事では、毎日何気なく使っているのに、その由来はよく知らない、そんな言葉たちのエキサイティングな歴史を掘り起こしてみたいと思います。さっそく見ていきましょう!
バイクシェディング
現在の意味:些細な問題についての無意味な議論。
バイクシェッド効果、あるいはバイクシェディングという言葉は、「些末の法則」を分かりやすく示す比喩として作られました。デンマークのコンピュータ開発者ポール=ヘニング・カンプが1999年にFreeBSDのメーリングリストで広め、Berkeley Software Distributionコミュニティで普及し、そこからソフトウェア業界全体に広がりました。
この概念は、もともと彼がマネジメントを風刺した、より広い「パーキンソンの法則」の系として提示されたものです。彼はこの「些末の法則」を、原子炉をめぐる委員会の審議と、自転車置き場をめぐる審議を対比させることで劇的に描いてみせました。彼の言葉を借りれば、「議題の各項目に費やされる時間は、関わる金額に反比例する」ということです。
原子炉はあまりにも高価で複雑なため、普通の人には理解できず、結局は担当者が分かっているのだろうと誰もが考えます。一方、安くてシンプルな自転車置き場なら誰でもイメージできるため、計画の段階で誰もが一言加え、自分の貢献を示そうとして議論が延々と続くことになるのです。
出典 - Wikipedia: 些末の法則
ボイラープレート

出典:Wikimedia Commons
現在の意味:ほとんど変更を加えずに何度もコピーして使われるコードの塊。
Boiler plateはもともと給水ボイラーを作るための圧延鋼板を指す言葉でしたが、メディアの世界では紋切り型で独創性のない文章を指すようになりました。この言葉は、広告や配信コラムなどの既製のテキストを印刷するための金属製の印刷版を指すようになりました。小規模な地方新聞社に配布されたのです。これらの印刷版は、類推から「ボイラープレート」と呼ばれるようになりました。この種のボイラープレートを新聞社に大量に供給していたのがWestern Newspaper Unionで、地理的なカバー範囲が狭い新聞社向けに「すぐに印刷できる全国・国際ニュースを含む記事」を提供し、通常の記事の隣に広告をあらかじめ印刷した状態で供給していました。
出典:

出典:Wikimedia Commons
ブート/リブート/ブートストラップ
出典:Wikimedia
bootという言葉は、コンピュータの文脈ではコンピュータを起動するプロセスを指して使われます。
コンパイラ開発では、ブートストラップという言葉は、コンパイラを新しい言語で書き直すプロセスを指します。最初のコンパイラは既存の言語で書かれます。それを新しい言語で書き直し、自分自身でコンパイルするのです。
「自分のブーツのつまみ革を引っ張って持ち上げる(to pull oneself up by one’s bootstraps)」という言い回しは19世紀にさかのぼります。丈の高いブーツには、上部に履くのを助けるためのタブや輪、持ち手が付いていることがあります。この比喩から、外部の助けなしに自立して進むプロセスを表すさらなる比喩が生まれました。
Wikipediaによれば、
この慣用句は少なくとも1834年には遡り、Workingman’s Advocate紙に次のように登場しています。「マーフィー氏はこれで、カンバーランド川や納屋の囲いを、ブーツのストラップを引っ張って越えられるようになるだろうと推測されている。」
Merriam-Websterにも分かりやすいまとめがあります。
バグ
現在の意味:コードやハードウェアの欠陥。
起源は不明です!
俗説とは異なり、グレース・ホッパーがMark IIコンピュータで見つけた虫よりも前から存在します。
この言葉は、それよりずっと前から技術者によって使われていました。少なくとも1870年代からです。電子計算機やコンピュータソフトウェアが登場する以前から存在します。トーマス・エジソンも自身のメモで「バグ」という言葉を使っていました。出典
ビット
この言葉の考案はジョン・W・テューキーによるものとされています。彼は1947年1月9日にBell Labs向けに書いたメモの中で、「binary information digit(二進情報桁)」を縮めて「bit」としました。出典
バイト
「byte」という言葉は、1956年6月にヴェルナー・ブッフホルツによって初めて導入されました。IBM Stretchコンピュータの初期設計段階でのことです。このコンピュータは個々のビット単位までアドレス指定ができ、バイトのサイズ自体を命令の中にエンコードした可変長命令を可能にする設計でした。「bite」ではなく「byte」という綴りにしたのは、誤って「bit」に変えられてしまうのを防ぐための意図的な選択でした。
キャリッジリターンとラインフィード
現在の意味:カーソルを次の行の先頭に移動させること。
この2つの言葉はタイプライターから採用されたものです。
キャリッジは紙を保持する部分で、キーが押されるたびに印字位置を進めるために左から右へ動きます。紙を「運ぶ(carry)」ことからそう呼ばれます。キャリッジリターンは、キャリッジを紙の左端の元の位置に戻す動作のことです。
しかし、単にキャリッジを左に戻すだけでは新しい行を始めるには不十分です。キャリッジは同じ行の先頭に戻っただけだからです。新しい行に移るには、ラインフィードが必要でした。これによりタイプライター内部の紙が1行分上に送られます。
この2つの操作、すなわちキャリッジリターン(CR)とラインフィード(LF)は、通常キャリッジリターンレバーを押すことで同時に行われました。

出典:piqsels
- Unix系システム(LinuxやmacOSなど)では、
\nは今でもラインフィード(ASCII記号:LF)あるいは改行を表します。 - CP/M、DOS、Windowsでは
\r\nが使われ、\rがキャリッジリターン、\nがラインフィード(CR+LF)を表します。 - 出典
キャリッジリターンとラインフィードの基本的な仕組みを示す古い動画がこちらです:
コマンドキー記号(⌘)
現在の意味:Apple製コンピュータで追加のキーボードショートカットを提供するためのメタキー。
Wikipediaから直接引用します(強調は筆者によるものです):
⌘記号がMacintoshプロジェクトに導入されたのは後期のことでした。開発チームは当初、従来のAppleキーを使おうとしていましたが、スティーブ・ジョブズはキーコマンドの横にメニューに「リンゴ」が並ぶのを見て、会社ロゴの使いすぎだとして不満を感じました。そこで別のキー記号を選ぶことにしたのです。期限まであと数日というところで、チームのビットマップアーティストであるスーザン・ケアが、Appleロゴの後継を探し始めました。彼女が記号辞典をめくっていると、北欧諸国で文化施設や見どころを示す指標として一般的に使われている、クローバーの葉のような記号を見つけました(デンマーク、フィンランド、アイスランド、ノルウェー、スウェーデンでは観光名所の公式道路標識であり、スウェーデンのMacユーザーの間ではFornminne(古代の記念物)、デンマークのユーザーにはSeværdighedstegnと呼ばれることも多いコンピュータのキーです)。彼女がそれをチームの他のメンバーに見せると、皆が気に入り、1984年のMacintoshのコマンドキーの記号となりました。スーザン・ケアによれば、後にこの記号は、真上から見た角に丸い塔を持つ四角い城の形に似ていることから、スカンジナビアでの使われ方を理由に選ばれたのだと聞かされたといいます。特にボリホルム城がモデルだということです。

出典:Wikimedia Commons

出典:Wikimedia Commons
出典:
- Wikipedia: Command Key
- Cult of Mac: What Are The Mac’s Command ⌘ And Option ⌥ Symbols Supposed To Represent?
クッキー
現在の意味:ウェブサイトから送信され、ユーザーのウェブブラウザに保存される小さなデータ片。
cookieという言葉は、1994年秋に当時23歳のウェブブラウザプログラマー、ルー・モントゥリによって作られました。マジッククッキーという言葉に着想を得たもので、これはプログラムが受け取ってそのまま送り返すデータの塊で、Unixプログラマが使っていたものです。この言葉自体は、メッセージが埋め込まれたクッキーであるフォーチュンクッキーに由来します。
モントゥリは、ウェブブラウザが受け取ってウェブサーバーにそのまま送り返す小さなデータの塊を表すのにcookieという言葉を使いました。
「そう、クッキーですね」とモントゥリは笑いながら言います。「僕の人生のたった一週間が、僕がこれまで成し遂げた中で最も重要なことになったんだ。」(出典)
コアダンプ
現在の意味:クラッシュしたプログラムの状態のスナップショットを、そのメモリ全体を保存してオフラインで分析できるようにすること。
この名前は磁気コアメモリに由来します。これはトロイダル状の磁石の格子に基づく初期の記憶装置です。すでに廃れてしまいましたが、コンピュータプロセスのスナップショットを取得するという意味で今でも使われています。出典

出典:Wikimedia Commons
カーソル
現在の意味:ビデオディスプレイ上で位置(データ入力位置など)を示す視覚的な手がかり(点滅する縦線など)。Merriam-Webster
Cursorはラテン語で走る者(runner)を意味します。カーソルはもともと、計算尺上で点をマークするために使われる、髪の毛ほどの線が刻まれた透明なスライドに付けられた名前です。この言葉が類推によってコンピュータに転用されました。出典

デーモン
コンピューティングにおいて、デーモンとは印刷スプールやファイル転送などのサービス要求を処理し、その後終了するバックグラウンドプロセスのことです。この言葉はMITのProject MAC(Mathematics and Computation)のプログラマたちによって1963年に作られました。彼らは、常にバックグラウンドで働き分子を選り分けるという思考実験上の仮想の生き物であるマクスウェルの悪魔から名前を取りました。
MITのプログラマたちは、システムの雑務を休むことなくこなすバックグラウンドプロセスにはdemonという名前がふさわしいと考えました。しかしdemonという言葉を使う代わりに、より古い形であるdaemonを使ったのです。(出典)
ダッシュボード
現在の意味:システムの状態を一目で把握できるようにするユーザーインターフェース。
もともとは馬車の前部にある木の板で、馬の蹄が跳ね上げる泥から御者を守るためのものでした。
自動車が製造されるようになると、運転手の前の板も同じ名前で呼ばれるようになりました。必要な計器を運転手が見やすい場所に置くのに論理的な場所だったからです。やがて、この言葉はそれが提供する保護よりも、計器の表示そのものと結びつくようになりました。出典

出典:Wikimedia Commons
ファイアウォール
現在の意味:信頼された内部ネットワークと、インターネットのような信頼できない外部ネットワークとの間に障壁を設けるネットワークセキュリティシステム。
ファイアウォールは主に長屋で使われますが、一戸建て住宅でも使われます。火災が発生した際に、火や煙が建物の別の部分に広がるのを防ぎます。これにより大規模な火災を防ぐことができます。この言葉はコンピューティングでは80年代から使われています。出典

出典:Wikimedia Commons
ファームウェア
現在の意味:デバイス固有のハードウェアを低レベルで制御し、実行されるハードウェアと密接に結びついたコンピュータソフトウェアの一種。
アッシャー・オプラーが1967年のDatamation誌の記事でファームウェアという言葉を作りました。もともと使われた意味では、ファームウェアはハードウェア(CPU自体)やソフトウェア(CPU上で実行される通常の命令)と対比されるものでした。ハードウェアとソフトウェアの境界線上に存在することから、「ファームウェア」という名前が付けられたのです。元の記事はInternet Archiveで読むことができます。出典
FooとBar
現在の意味:よく使われるプレースホルダの変数名。
もともとこの言葉は軍事用語のFUBARに由来する可能性があります。いくつかバリエーションがありますが、よく知られた意味はFUBAR:「f***ed up beyond all recognition(認識できないほどめちゃくちゃに壊れた)」です。
プログラミングの文脈でfooが使われるようになったのは、一般的に1960年頃のMITのTech Model Railroad Club(TMRC)に由来するとされています。複雑な模型システムでは、列車が障害物に全力で突進するなど、好ましくない事態が起こりそうなときに投じられるスクラムスイッチが部屋のあちこちに設置されていました。
私の理解では、彼らは文字通り、より適切な名前がなかったためにfooとラベル付けされた非常ボタンを設置していたということです。何かが非常に、非常にまずいことになっていることを示す、もともとの軍事用語としてのFUBARの意味と関係があるのかもしれません。

fooと書かれたボタンがあったのかもしれない出典:Wikimedia Commons
出典:
フリーランサー
現在の意味:特定の雇用主に長期的に縛られない自営業者。
この言葉は、サー・ウォルター・スコットの小説『アイヴァンホー』に初めて登場します。(この小説はロビン・フッド伝説にも lasting influence(長く続く影響)を与えました。)

出典:Wikimedia Commons
作中で、ある領主がリチャード王に有料の「自由な槍(free lances)」の軍隊を提供します。
私はリチャードに私の自由な槍部隊の奉仕を申し出たが、彼は断った。私は彼らを率いてハルへ行き、船を確保してフランドルへ向けて出航しよう。この慌ただしい時代、行動する男には常に雇い口があるのだから。
したがって、「フリーランサー」とは、最も高い報酬を払う者のために戦う人のことです。freeは「無報酬」という意味ではなく、どんな雇用主のためにも働けるという追加の自由を指します。出典
ハッシュ
現在の意味:任意のサイズのデータを固定サイズの値にマッピングするために使える関数(ハッシュ関数)。
Wikipediaによれば、ハッシュ関数における「hash」という言葉の使い方は、その非専門的な意味である「刻んで混ぜる」ことからの類推によるものです。実際、mod演算のような典型的なハッシュ関数は、入力領域を多くのサブ領域に「刻み」、それを出力範囲に「混ぜ合わせる」ことで、キーの分布の均一性を高めています。
出典:
ログ/ログファイル
現在の意味:コンピュータプログラムやシステムの出来事を記録するファイル。
船員たちは、船の速度を測るためにいわゆるログラインを使っていました。平らな木片(ログ)に長いロープが取り付けられていました。ログには等間隔に結び目がありました。ログが流されていく間、船員たちは一定時間の間に何個の結び目が繰り出されたかを数え、それが船の速度、すなわちノット数となったのです。
船速は航行にとって重要だったため、船員たちはそれを本に記録しました。これがログブックと呼ばれ、船の位置をより正確に把握するための他の情報、例えば目印の目撃情報や天候なども一緒に記されました。後に、港湾料金や食料の異常な減少など、より一般的に船に関する追加情報も、すなわち「ログに記録(logged)」されるようになりました。
出典。

出典:The Pilgrims & Plymouth Colony:1620 by Duane A. Cline

出典:The Pilgrims & Plymouth Colony:1620 by Duane A. Cline

出典:Navigation and Logbooks in the Age of Sail by Peter Reaveley
パッチ
現在の意味:コンピュータプログラムを修正または改善するために適用できるコード片。
コンピュータの歴史の初期には、プログラミングミスをすると、紙テープやパンチカードの穴の上にパッチを当てて修正しなければなりませんでした。

出典:Smithsonian Archives Center
Ping
現在の意味:ネットワーク経由でコンピュータの到達可能性や応答時間を調べる方法。
Pingは、1983年にマイク・ムースによって最初に書かれたターミナルプログラムで、UNIX、Windows、macOSのすべてのバージョンに含まれています。彼は「ソナーが発する音にちなんで、エコーロケーションという原理全体から着想を得て」名付けました。「……pingは、時間を計測したIP/ICMP ECHO_REQUESTとECHO_REPLYパケットを使って、対象マシンまでの『距離』を探るのです。」出典は一読の価値があります。
ピクセル
現在の意味:画面上に表示される画像の制御可能な最小要素。
ピクセル(pixel)という言葉は、pix(「pictures」を縮めた「pics」から)とel(「element」の略)を組み合わせたものです。同様に、ボクセルは体積要素、テクセルはテクスチャ要素です。出典
シェル
現在の意味:コンピュータシステムと対話するための、一般的にテキストベースの対話型ランタイム。
この言葉の考案者であるルイ・プザンは、自身のエッセイThe Origins of the Shellの中で名前の由来を説明していません。しかし、それはUnixの前身であるMulticsにまで遡ることができます。Multicsの用語集では次のように説明されています。
[シェルは]リスナーによって実行のためにコマンドラインを渡されます。
エリック・S・レイモンドによるThe New Hacker’s Dictionary(Jargon Fileとしても知られる)には、次のようにあります。
歴史的注記:どうやら、元々のMulticsのシェル(意味1)は、シェル(意味3)であったからこそそう呼ばれたようだ。
ここで意味3とは次のことを指します。
手作業で、あるいは別のプログラム(例えばパーサジェネレータなど)によって作成された、あるタスクを設定するために必要な定型的な処理と、それを駆動する制御フローを提供するスケルトンプログラム(骨組みとなるプログラム)(driverという言葉が同義で使われることもある)。ユーザーは、実際の作業を行うために必要なコードを埋めることが想定されている。この使い方はAIやMicrosoft Windowsの世界では一般的で、Unixハッカーを混乱させる。
残念ながら、この本はこの主張を裏付ける証拠を何も示していません。
私は、ナッツに例えて、カーネルを保護する外側の殻がシェルであるという(歴史的には正しくないかもしれない)類推が気に入っています。
スラブアロケータ
現在の意味:以前の割り当てを再利用する効率的なメモリ割り当て手法。
スラブ割り当ては、1994年にジェフ・ボンウィック(注意:PDFファイル)によって発明され、以来MemcachedやLinuxカーネルなどのサービスで使われています。
スラブ割り当てでは、特定の型やサイズのデータオブジェクト用のキャッシュが、事前に割り当てられた多数の「スラブ」メモリを持ちます。各スラブの中には、オブジェクトに適した固定サイズのメモリチャンクがあります。(Wikipedia)
スラブという名前は、ボンウィックの十代の頃の友人に由来します。彼はOracleのブログでその経緯を語っています。
一緒にテレビを見ていたとき、ケロッグのコマーシャルで「Can you pinch an inch?(1インチつまめますか?)」というキャッチフレーズが流れました。
意味するところは、もしウエストの脂肪を1インチ以上つまめるなら太りすぎであり、コーンフレークを一杯食べれば改善するというものでした。
すかさず、体重が約250ポンドあったトミーは、自分の腹に手を伸ばしてこう返しました。「ちくしょう、スラブ(塊)くらいつまめるぜ!」
10年後、ボンウィックはより大きなメモリの塊の割り当てを表す言葉を探していたときに、この言葉を思い出したのです。
こちらが当時のケロッグの広告です:
スパム
現在の意味:大量のメールを送ったりフォーラムやチャットに投稿したりすることによる、 unsolicitedな(求められていない)電子的コミュニケーション。
この言葉は、1970年のイギリスのコメディグループ、モンティ・パイソンのスケッチに遡ります。そのスケッチでは、カフェのほとんどの料理にスパム(缶詰の豚肉加工品のブランド)が入っています。スパムはspiced(香辛料を効かせた)とham(ハム)のかばん語です。言及されるスパムの過剰な量は、第二次世界大戦後にイギリスが農業基盤の再建に苦闘し配給制が続いていた時期に、スパムやその他の輸入缶詰肉製品が偏在していたことを指しています。出典

出典:ユーザーJamie (jbcurio) on flickr.comによる
Monty Pythons Flying Circus (1974) - SPAM from Testing Tester on Vimeo.
メインフレーム
現在の意味:大規模な組織でよく使われる大型のコンピュータシステム。
もともと、この言葉はコンピュータの主要コンポーネントを保持するフレームを指していました。主要コンポーネントとはCPU、メモリ、入出力装置のことです。この言葉は、コンピュータが大型で多くのスペースを必要とした1960年代から1970年代に使われました。
![IBM 701メインフレームが回路にアクセスするために開く様子を示した図。『Type 701 EDPM [Electronic Data Processing Machine] Installation Manual』(IBM)より。Computer History Museum所蔵。](https://endler.dev/2020/folklore/mainframe.jpg)
詳しくはKen Shirriff氏のブログをご覧ください。
ラジオボタン
現在の意味:あらかじめ定義された排他的な選択肢の中から選ぶことを可能にするUI要素
「ラジオボタン」は、ラジオで使われていた機械式ボタンにちなんで名付けられました。このUIの概念は後にテープレコーダー、カセットレコーダー、ウェアラブルオーディオプレーヤー(有名な「ウォークマン」など)で使われ、さらにVCRやビデオカメラでも使われるようになりました。出典

出典:Matt Coadyによる画像
大文字と小文字
現在の意味:キーボード上の大文字と小文字の区別。
活版印刷が手作業で、鉛でできた一文字一文字を並べて単語や文章を作っていた時代、大文字と小文字はこのかなり面倒な作業を少しでも速くするために、別々の容器、すなわちケースに分けて保管されていました。

出典:Daniel Berkeley Updike(1860-1941)著『Printing types, their history, forms, and use; a study in survivals』より。archive.orgで自由に閲覧可能。
番外編
404
現在の意味:HTTPステータスコード「File not found(ファイルが見つかりません)」。
この番号は、World Wide Webの中央データベースがあったサーバールームに由来するという話があります。そこでは、管理者が要求されたファイルを手作業で探し出し、ネットワーク経由で要求者に転送していました。ファイルが存在しなければ、「Room 404: file not found」というエラーメッセージを返したというのです。
しかし、これは作り話のようで、ステータスコードは当時すでに確立されていたFTPのステータスコードに基づいて、かなり恣意的に選ばれたものです。出典
プログラミング言語と略語
プログラミング言語名や一般的な略語の語源は、おそらくそれだけで一本の記事になるでしょうが、ここでは私のお気に入りをいくつか書き留めておきます。
C++
C++はビャーネ・ストロヴストルップによるC言語をベースにしたプログラミング言語です。名前はストロヴストルップの同僚であるリック・マスキッティによるプログラマの洒落です。++は多くのC系言語で一般的な後置インクリメント演算子を指し、変数の値を1増やします。その意味で、C++はCの精神的な「後継」と見ることができます。出典
C#
C++と同様に、C#もC系のプログラミング言語です。この名前もまた、C++に対する「漸進的な」改良を指しています。名前の中の#は4つのプラス記号のように見えます。したがってC# == (C++)++となります。さらに、この名前は音楽の記号にも着想を得ており、シャープは書かれた音を半音高くすることを示します。出典
出典:Wikimedia Commons
PNG
正式には、PNGはPortable Network Graphicsの略です。1994年にCompuServeがGIFをサポートするプログラムは今後ライセンス料を支払わなければならないと発表したことへの不満から生まれました。ハッカーのトーマス・ボーテルが率いるワーキンググループが、GIFの特許のない代替として.webpファイル形式を作成しました。だからこそ私はこのフォーマットの非公式な名前の方が好きです。PNG’s Not GIF。PNGの歴史についてはこちらの素晴らしい記事をご覧ください。出典
クレジット
内容の多くはWikipediaなどの情報源(適切な箇所で出典を明記)から来ていますが、何を探せばいいか分からなければ説明を見つけるのは困難です。
このドキュメントは生きた文書であり、読者からの投稿があった場合には更新していく予定です。
結論
過去を知らなければ、現在を理解することはできない。
— カール・セーガン博士(1980年)
この記憶をたどる旅を楽しんでいただけたでしょうか。次はあなたの番です!
👉 他にも知っている話はありますか?メッセージを送ってください。こちらに追加します。
記事をランダムに読む
コメント
ログインしてコメントする