ソフトウェア

現代のインターネットを形作る「世界を変えたコード」とは?

by Fatos Bytyqi

世界中で起きた最新の出来事を遠くにいながらすぐに知ることができたり、無限にも等しい膨大な情報の中から自分の目当てのものを簡単に検索して調べたりと、インターネットは今や人間の生活にとってなくてはならないものになっています。そんなインターネットを支える技術の中から、「世界を変えたコード」をニュースメディアのSlate Magazineがまとめています。

The lines of code that changed everything.
https://slate.com/technology/2019/10/consequential-computer-code-software-history.html

1725年:バイナリパンチカード
バイナリでのプログラミングが始まったのは、近代的なコンピューターが登場するよりもずっと前のことです。1725年、フランス・リヨンで働いていたBasile Bouchonが紙に穴を開けたもので機械を制御するという方法を編み出しました。穴の空いた部分は「1」、穴の空いていない部分は「0」を意味しており、この2進数で織機を制御したそうです。「0」と「1」で機械を制御するという考え方は現代のコードの基礎と何ら変わりないため、コンピューターの存在しない1725年に生まれた穴あきカードが最初のコードと呼ばれています。

by leighklotz

1948年:最初の近代的なコード
世界初のコンピュータープログラマーの1人として知られるクララ・ダン・フォン・ノイマンロスアラモス国立研究所の研究者であったニコラス・メトロポリスは、ENIACを用いて最初の近代的なコードを実行しました。最初のコードはアドレス可能な読み取り専用メモリから実行された数百の数値命令でした。

by U.S. Army Photo

プログラミングにはモンテカルロ法利用することで、原子爆弾設計におけるシミュレーションに用いられる確率分布を繰り返しマッピングしたそうです。

1952年:世界初のコンパイラ
プログラミング言語・COBOLの生みの親としても知られるグレース・ホッパーは、初期のコンピューターでプログラミングを行っていた人物のひとり。ホッパーは第二次世界大戦中に海軍予備役として軍に入隊した際に、軍の上司たちがバイナリコードを理解するのに苦労していた様子を見てきた経験から、プログラミングをより人間の言語で理解できるような簡単なものにすることを目指したそうです。

ホッパーのアイデアは一部の人々から嘲笑されたそうですが、1950年初頭までにコンパイラを考案します。最初のコンパイラは、人間が言語として理解できるようなコードを、コンピューターが直接処理可能な命令セットに変換するというものでした。

その後、ホッパーは同僚と共に世界初の英語に近い表記のデータ処理用プログラミング言語FLOW-MATICを開発しています。ホッパーの生み出したコンパイラについて、Slate Magazineは「コンピューターが単語を処理できるようになった」と記しています。

by Algernai Hayes

1961年:世界初のコンピューターゲーム「スペースウォー!
1961年後半、マサチューセッツ工科大学(MIT)の若い従業員・学生そしてその友人たちによるグループが、PDP-1を利用可能となりました。当時、非軍事コンピューティングにおける最先端のコンピューターであったPDP-1は、12万ドル(記事作成時点のレートで100万ドル:約1億1000万円超)で販売されていた超高級品で、ワード長は18ビット、標準主記憶装置は4Kワード(9Kバイト相当)の容量で、最大64Kワード(144Kバイト)まで拡張可能というコンピューターでした。

学生たちによるグループはプログラミング用のストレージに紙テープを利用し、5カ月かけ、2人のプレイヤーが宇宙船をコントロールする「スペースウォー!」というゲームを作成します。1962年当時のスペースウォー!の映像は以下のムービーで見ることが可能です。

Spacewar! (1962) - YouTube


スペースウォー!はコアメモリにプリロードされたPD​​P-1と共にDECにより配布されることとなったため、初期のハッカーコミュニティで急速に広がり、多くのビデオゲームクリエイターに多大な影響を与えたとのこと。記事作成時点でもエミュレーターなどでスペースウォー!がプレイできるほか、コンピュータ歴史博物館に展示されているPDP-1でも定期的に実演が繰り返されているとのこと。

スペースウォー!の開発においてチームを率いたスティーブ・ラッセルは、2018年にスミソニアン博物館で行われたイベントの中で、「ユーザーからの苦情はなく、クラッシュレポートも存在しませんでした。しかし、サポートは今も引き続き利用できます」とコメントしています。

1965:電子メールの起源
1961年、MITのハッカーたちが複数のユーザーが同時に同じコンピューターにログインできるようになるシステム「タイムシェアリングシステム」を開発しました。そして1965年、コーダーたちがタイムシェアリングシステムを利用しているユーザーたちが相互に通信するための方法として、デジタル文書を送信・受信・表示することが可能となるコマンドシステムを作成します。

WHENEVER A(1).E.FENCE.OR.A(2).E.FENCE.OR.A(3).E.FENCE
PRFULL.($'R'1INSTRUCTIONS:$)
PRFULL.($ '4MAIL NAME1 NAME2 PROB1 PROG1 PROB2 PROG2 ...$)
PRFULL.($ WHERE '=NAME1 NAME2'= IS THE FILE TO BE MAILED,$)
PRFULL.($ AND '=PROBN PROGN'= ARE DIRECTORIES TO WHICH '8$,
1  $IT IS TO BE SENT.'B$)
CHNCOM.(0)
END OF CONDITIONAL


1969年:アポロ11号の月面モジュールにおけるベイアウトコード
人類初の月面着陸に成功したアポロ11号には、アポロ誘導コンピューター(AGC)と呼ばれるアポロ宇宙船の全航行機能を自動制御し、宇宙飛行士が飛行情報を確認・修正するために使われたコンピューターが搭載されていました。

AGCは限られた電力とストレージスペースの中での動作を要求されたため、常に最も重要なタスクに集中できるようにする必要がありました。AGCのソフトウェアを開発したチームは、計画できない事態が発生する可能性を考慮して、「BAILOUT」というコードを作成します。これはAGCがスペース不足もしくはオーバーフローの危機にさらされた場合、重要なデータと船体の操作だけは維持できるように、重要性の低いデータと操作をスケジュールするというものだそうです。

アポロ月着陸船の「イーグル」が月面に向かって降下していく際、イーグル内のAGCが動作不良となり、「1202」警報を鳴らしました。この警報の理由はニール・アームストロング船長などにはすぐに認識されなかったものの、ミッションコントロールにおけるコンピューターの専門家たちは、AGCに設定したBAILOUTが正常に作動したことを理解したそうです。つまりは優先度の低いタスクを破棄し、重要な船体制御などのタスクを再開したため、月面降下は問題なく行えたというわけです。

POODOO    INHINT
    CA  Q
    TS  ALMCADR

    TC  BANKCALL
    CADR  VAC5STOR  # STORE ERASABLES FOR DEBUGGING PURPOSES.

    INDEX  ALMCADR
    CAF  0
ABORT2    TC  BORTENT

OCT77770  OCT  77770    # DONT MOVE
    CA  V37FLBIT  # IS AVERAGE G ON
    MASK  FLAGWRD7
    CCS  A
    TC  WHIMPER -1  # YES.  DONT DO POODOO.  DO BAILOUT.

    TC  DOWNFLAG
    ADRES  STATEFLG

    TC  DOWNFLAG
    ADRES  REINTFLG

    TC  DOWNFLAG
    ADRES  NODOFLAG

    TC  BANKCALL
    CADR  MR.KLEAN
    TC  WHIMPER


1972年:Hello, world!
新しいプログラミング言語を学ぶ際、最初に行うことはコンピューター上に「Hello, world!」というフレーズを表示させることです。このフレーズは1974年にベル研究所がまとめた「Programming in C A Tutorial」というプログラミングの教本に書かれているフレーズですが、それより前の1972年に書かれた別の教本にも書かれているため、これが起源なのではないかと言われています。

main( ) { printf("hello, world\n"); }


1988年:世界初のマルウェアが登場
1988年、当時23歳だったアメリカ人計算機科学者のロバート・T・モリスが、「モリス・ワーム」と呼ばれる世界初のマルウェアを開発しました。このワームは「インターネット上で最初に登場した攻撃」とも呼ばれ、インターネット上に接続されたコンピューターを攻撃することに使用され、多くの損害を生み出したそうです。この際、ニューヨークタイムズは初めて新聞の紙面に「インターネット」という文字を載せたそうです。

当時、プログラミングに精通していた人物でさえ、モリス・ワームの拡散範囲の広さには非常に驚いたとのこと。モリスはワームを使って攻撃を仕掛けるつもりはなかったとしていますが、世界で初めて「コンピューター詐欺と濫用に関する法律(Computer Fraud and Abuse Act)」に基づき起訴された最初の人物となります。3年間の保護観察を宣告されたのち、モリスはYコンビネータの共同設立者となり、MITのコンピューターサイエンス部門の准教授となっています。

なお、モリスの開発した世界初のコンピューターワームである「モリス・ワーム」については、以下の記事にもまとめられています。

「世界初のハッキングは100年以上前に行われた」などハッキングの歴史が分かる「A History of Hacking」 - GIGAZINE

by Intel Free Press

1990年代頃:一行ウイルス
コンピューターのシステムに対して実行されるDoS攻撃の一種がFork爆弾です。その中でも特に有名なのが、以下のたった一行のコードです。

: ( ) { : | : & } ; :


このコードを動作させるにはBashを利用するなど特定の条件が必要ですが、実行するとコンピューターが利用可能なすべてのメモリが消費され、端末がクラッシュするまで動作が止まることはありません。コードは非常にシンプルで、それでいて危険性は高いのですが、それ以上に特徴的なのが関数にコロン(:)を使用している点。ほとんどの関数は「Print」や「isThisEmailValid」といったわかりやすい名前が付けられていますが、そうする必要があるというルールがあるわけではありません。ほとんどのコンピューティング言語では関数名にコロンを使用することはできませんが、Bashでは使用できたというのがたった一行で動作する凶悪なウイルスを生み出すきっかけとなった模様。

1990年:HTML/ハイパーリンク
World Wide Web(W3)を考案し、ハイパーテキストシステムを実装・開発したティム・バーナーズ=リーが、ハイパーテキストにおいて複数の文書を結びつけるための「参照」(リンク)機能として作り出したのがハイパーリンクです。

<a href = "https://gigazine.net/">GIGAZINE</a>


ティム・バーナーズ=リーの生み出したハイパーリンクは現在のリツイートボタンや「今すぐ購入」ボタンなど、インターネット上に存在するあらゆるボタン、リンクのベースとなっています。そのため、Slate Magazineはハイパーリンクを「あらゆるものをあらゆるものに接続できるツール」「世界を変えた」と評しています。

1992年:JPEGの登場
1992年、Joint Photographic Experts Groupが画像ファイルをコンパクトにするための標準仕様としてJPEGを公開しました。当時は他のデータ圧縮フォーマットも利用可能でしたが、JPEGが世界標準のフォーマットになった大きな理由の1点は「ロイヤリティフリーであったため」だと考えられます。また、JPEGは人間の目に検出できない画像の側面を削除するプロセスである非可逆圧縮方式を採用しており、後のMP3のような非可逆圧縮方式のデータ圧縮フォーマットにも大きな影響を及ぼしました。

by Scott Henderson

1993年:今のウェブの礎となるNCSA Mosaicの誕生
NCSA Mosaicは1993年にリリースされたウェブブラウザで、米国立スーパーコンピュータ応用研究所(NCSA)が開発したソフトウェアです。NCSA Mosaicが登場するまでのブラウザは非常に不親切で、テキストをレンダリングすることは可能でも、画像は別ウインドウでないと表示できないなどの制限がありました。そんな中誕生したNCSA Mosaicは、画像とテキストをひとつのウインドウで表示できるという今日のウェブブラウザの基礎を最初に実現したものです。画像とテキストが同じ画面上に並んで表示できるようになったことで、インターネット上のコンテンツが雑誌や新聞のような親しみやすいものとなり、多くのユーザーを集める大きなキッカケにもなりました。

なお、NCSA Mosaicでネットサーフィンできるサービスも存在しているので、インターネット黎明期のブラウザがどんなものだったのか気になる人はチェックしてみてください。

MosaicやNetscapeといったインターネット黎明期のブラウザでネットサーフィンできる「oldweb.today」 - GIGAZINE


1990年代半ば:ポップアップ広告の誕生
特定のウェブページを開いた際に、自動的に一番手前に表示される広告の「ポップアップ広告」が誕生したのは1990年代半ばのこと。ここからポップアップ広告は爆発的にインターネット上に普及していくこととなります。

無料のホームぺージ上には好きなコンテンツを載せることができますが、そんなページを維持するには広告を表示して収益をあげる必要があります。しかし、広告主は自分が広告を掲載するページに訪れるユーザーが常に広告を好むとは考えなかったため、ウェブ上のコンテンツと広告を分離するというアイデアを思いつきます。これがポップアップ広告です。

ポップアップ広告はコンテンツと広告を切り離して表示するというアイデアだったのですが、ページを表示した際に画面の最前面に広告ウインドウが表示されてしまうという点が、逆に広告を押し出すのにちょうどよいということで爆発的な人気を得ることになりました。

1996年:Googleのページランクアルゴリズム
Googleは検索エンジンにおいて、ウェブページの重要度を決定するためのアルゴリズムとして「ページランク」を利用しています。それまでは検索クエリがドキュメント内のワードと一致したかどうかに基づいて情報を整理していたそうですが、Googleのページランクは「オンライン上でリンクされているページ数に基づいてページのランク付けを行う」というアルゴリズムです。


2002年:ルンバのガイダンスシステム
ロボット掃除機のルンバが登場したのは2002年のこと。登場時はそれほど賢い掃除機ではなかったかもしれませんが、2019年時点では非常に高性能なロボット掃除機へと変貌を遂げています。ルンバの開発元であるiRobotは最初のロボット掃除機を開発したというわけではありませんが、ルンバはロボット掃除機としては初のガイダンスシステムを搭載しており、これがロボット掃除機による革命につながったとSlate Magazineは述べています。

(define-behavior (bounce
        :start-when (or (bump?)
                      bounce-trigger? )
        :abort-when (bump-edge?)
        :onetime? t
      )
)


2008年:Bitcoin
爆発的な人気を得て「仮想通貨」という単語を世の知るところとしたのが、Bitcoin(ビットコイン)です。ビットコインは開発者のサトシ・ナカモトが2008年に公開したホワイトペーパーから始まりました。ビットコインには攻撃者によりビットコインのブロックチェーンが乗っ取られる可能性を無限に小さくするためのコードが含まれており、それが以下のもの。このコードは「ビットコインが信頼できない人々により作られたシステムであっても、それを世界が信頼できることを確信させ、少なくとも2777種類のその他の仮想通貨の未来を開くこととなった」とSlate Magazineは記しています。


2009年:いいねボタン
2009年、Facebookはリア・パールマンやジャスティン・ローゼンステインといったデザイナーおよびプログラマーたちが発案した「いいねボタン」を実装しました。それまでFacebookはユーザーが頻繁に友達の投稿に対してコメントを書き込むほどの時間的余裕を持ち合わせていないと仮定していたそうです。そこで、よりシンプルかつ手軽に投稿内容をフォローしていることを示せるような機能として、いいねボタンが誕生します。これにより世界中のユーザーが多くの情報を共有するようになり、2012年までに1兆回以上もいいねボタンが押されることとなったそうです。

なお、Facebookのいいねボタンは以下のコードにより実現しています。

{"__typename":"PageLikeAction","action_type":"LIKE","label":{"text":"Like"}

この記事のタイトルとURLをコピーする

・関連記事
プログラマーが本当に支持するプログラミング言語がわかる「人気の高いプログラミング言語2019」が発表 - GIGAZINE

プログラミングを上達するには量と質のどちらがより大切なのか? - GIGAZINE

命に関わるコードを書く時の10個のルール - GIGAZINE

表示するブラウザごとに違う見え方をする「コードで描かれた絵」とは? - GIGAZINE

ある開発者が未だに後悔しているコードとは - GIGAZINE

フランシスコ教皇が82歳にして「史上初めてプログラムのコードを書いたローマ教皇」に - GIGAZINE

「世界初のハッキングは100年以上前に行われた」などハッキングの歴史が分かる「A History of Hacking」 - GIGAZINE

in ソフトウェア, Posted by logu_ii

You can read the machine translated English article here.