💻Origins & Evolution

ソフトウェアエンジニア · 現代生活を動かすコードを書き、テストし、保守する仕事であり、AIが自分自身の日々の作業を自動化していく様子を最初に目の当たりにしている職業の一つでもある。

ソフトウェアエンジニアリングは、古いアイデアをまとった異例に若い職業である。1840年代から人々は機械が従うべき段階的な手順を設計していたが、20世紀もかなり進んでから「ソフトウェアエンジニア」として報酬を得る者が現れ、その肩書き自体が1968年に半ば挑発的に提案されたばかりだ。

その歴史は、自分のアルゴリズムが動くのを一度も見なかった伯爵夫人、部屋いっぱいの大きさのコンピューターを手作業で配線し直した女性たち、機械に英語を読ませたいと考えた海軍士官、そしてこの分野が「危機」にあると宣言することでその名前を与えたバイエルンアルプスでの会議を経て流れている。

Where it began

1843年英国、ロンドン

エイダ・ラブレスは、チャールズ・バベッジが実現されなかった解析機関について書いたイタリア人技術者の論文を翻訳する際、原文よりも長い一連の注釈を加えた。最後の注釈「注記G」は、この機械が数列をどう計算するかを段階的に示している──存在しない機械のために書かれたアルゴリズムであり、あと100年間実現しなかった機械のためのものだった。多くの歴史家は、機械の命令が機械そのものとは別のものとして設計され、書き記され、検証されうるという発想の誕生を、この時点にあると位置づけている。

Timeline

1843年エイダ・ラブレスが最初のアルゴリズムを発表

チャールズ・バベッジの実現されなかった解析機関に関するイタリアの論文を翻訳したラブレスは、機械がベルヌーイ数を段階的に計算する方法を記述した注釈を加えた──通常、これが公表された最初のコンピュータープログラムとされる。

1890年ホレリスのパンチカードが国勢調査を集計

ハーマン・ホレリスのパンチカード式集計機が約1年で米国国勢調査を処理した。前回の集計は手作業でほぼ8年かかっていた。彼の会社は後にIBMの一部となる。

1943〜1945年6人の女性がENIACをプログラム

ケイ・マクナルティ、ジーン・ジェニングス、ベティ・スナイダー、マーリン・ウェスコフ、フラン・バイラス、ルース・リヒターマンが、ペンシルベニア大学の部屋いっぱいの大きさのENIACを、マニュアルもプログラミング言語もない中でスイッチを物理的に設定しケーブルを繋いでプログラムした。

1952年グレース・ホッパーが最初のコンパイラを完成

レミントン・ランド社でのホッパーのA-0システムは、記号的な数学表記を自動的に機械語に変換し、サブルーチンのアドレスを手作業で書き写すというミスの多い慣行を置き換えた──以後のあらゆるコンパイラの直接の祖先である。

1957年FORTRANがIBM 704向けに登場

ジョン・バッカスが率いるIBMのチームが約2年の作業を経てFORTRANをリリース。2年以内に、米国で実行される機械コードの半数以上がこの言語で書かれるようになったとされる。

1968年NATO会議が「ソフトウェアエンジニアリング」と命名

西ドイツのガルミッシュで開かれた会議で、参加者たちは大規模プログラムの構築には橋や航空機の建設と同じ規律が必要だと論じるために「ソフトウェアエンジニアリング」という言葉をあえて借用し、この分野の慢性的な予算超過を「ソフトウェア危機」と名付けた。

1969〜1973年ベル研究所でUnixとCが形になる

ケン・トンプソンとデニス・リッチーは余っていたPDP-7上にUnixオペレーティングシステムを構築し、1973年には複数種類のコンピューターで動かせるよう、リッチーが新たに開発したC言語で書き直した。

1981年IBM PCがソフトウェアをあらゆる机上へ

IBMのPCがマイクロソフトのPC-DOSとともに発売され、ソフトウェアはほぼ一夜にして大衆消費財となり、ビル・ゲイツとポール・アレンが6年前にAltair BASICをもとに設立した若い会社の地位を確固たるものにした。

1991年LinuxとワールドワイドウェブがわずかなM隔てて登場

8月、リーナス・トーバルズは自分の趣味のカーネルをUsenetに投稿し、「単なる趣味で、GNUのような大規模で本格的なものにはならない」と書いた。同じ月、ティム・バーナーズ=リーのワールドワイドウェブが公開され、オープンで自由に共有されるソフトウェアがインターネットの標準となっていく。

2021〜2023年AIがコードエディタに入り込む

GitHub Copilot(2021年)とChatGPT(2022年)により、大規模言語モデルによるコード生成が日常的に使われるようになった。数年のうちに、GitHubは自社ツールの利用者が保持するコード行のうちAIが提案した割合が大きく、かつ増加し続けていると報告している。

The eras

Operator console of an IBM System/360 mainframe
ArnoldReinhold · CC BY-SA 3.0 · Wikimedia Commons
1950年代〜1960年代

メインフレームとバッチ処理プログラミング

初期のプログラムはパンチカードの束として提出され、多くの場合一晩かけてバッチで実行されたため、たった一つのタイプミスがプログラマーの一日全体を無駄にしかねなかった。数学者たち、そして多数の女性たちが手計算からこの新しい「プログラミング」の仕事へと直接移行した。それが名声を伴う仕事ではなく、事務的で細部に注意を払う仕事とみなされていたためだ。この10年でFORTRAN(1957年)とCOBOL(1959年)が定着し、このハードウェアで信頼性の高い大規模システムを構築することの純粋な難しさが、次の時代が名付け解決を試みる「ソフトウェア危機」を準備することになった。

A PDP-11 minicomputer, the machine most associated with early Unix
Stefan_Kögl · CC BY-SA 3.0 · Wikimedia Commons
1969〜1983年

Unix、構造化プログラミング、そして規律が名前を得る

1968年のNATO会議がこの分野の慢性的な予算超過や信頼性の問題に名前を与えた後、1970年代には診断とツールキットの両方が生まれた。構造化プログラミング、規律あるテスト、そして複数の機種で動くよう新しいC言語で書き直されたベル研究所発のオペレーティングシステムであるUnixだ。PDP-11のようなミニコンピューターが実際の計算能力を一握りのメインフレーム室の外へと広げ、「ソフトウェアエンジニアリング」は数学や電気工学の一分野ではなく、それ自体の大学の学位として登場し始めた。

An original IBM Personal Computer from 1981
Own work (based on graphics by International Business Machines Corporation) · Public domain · Wikimedia Commons
1975〜1990年

パソコンと箱入りソフトウェア

Altair 8800キット(1975年)、続いてApple IIとIBM PC(1981年)は、ソフトウェアを組織が運用するものから家庭が店頭で買えるものへと変えた。ワードプロセッサや表計算ソフト、ゲームを中心に、サポート契約ではなく返品ポリシーとともにシュリンクラップの箱で売られる、大衆消費者と中小企業向けのソフトウェア産業が生まれた。大規模プロジェクトではウォーターフォール型の文書重視の開発が主流だったが、業界の周縁部──寝室でコードを書く若者や大学のハッカーたち──は今日のより速く非公式なスタイルに近い形で働いていた。

Tux, the penguin mascot of the open-source Linux operating system
Larry Ewing , Simon Budig , Garrett LeSage · CC0 · Wikimedia Commons
1991〜2005年

ウェブ、オープンソース、ドットコム循環

ワールドワイドウェブとLinuxカーネルは1991年に数か月違いで公開され、互いに面識のないボランティアたちがオープンに構築したソフトウェアが企業の出すどんな製品にも匹敵しうることを証明した。ウェブブラウザはほぼ一夜にして全く新しい雇用市場を生み出し、その市場は好況となった後、2000〜2001年に劇的に崩壊して一世代分のスタートアップを消し去ったが、アマゾンやグーグル、そして次の時代が築くインフラを残した。アジャイル宣言(2001年)は、重く文書中心の計画立案への反動を、より短く反復的なサイクルという形で公式化した。

Conceptual diagram of cloud computing infrastructure
Sam Johnston · CC BY-SA 3.0 · Wikimedia Commons
2006年〜現在

クラウド、DevOps、AI支援エンジニアリング

アマゾンウェブサービス(2006年)を時間単位でレンタルできるようになったことで、ソフトウェアを運用する上での最大の固定費の一つが取り除かれ、ほぼ同時にアプリストアがエンジニアにモバイルファーストという第二の配布チャネルをもたらした。GitとGitHub(2005〜2008年)は見知らぬ者同士でも同じコードベースで分散協働することを当たり前にし、自動化されたデプロイパイプラインは変更を完成させてからユーザーの前で動くまでの期間を数か月から数分に縮めた。2020年代初頭までに、公開コードで訓練されたAIコーディングアシスタントは目新しいものからプロのエンジニアの多くにとって日常的なツールへと変わった──この職業の歴史の中で新しい道具がこれほど速く普及した例はない。

What this job replaced

Neighbouring trades that no longer exist — absorbed, automated or regulated away.

計算手(ヒューマンコンピューター)

1750年代〜1960年代

電子機械が登場するはるか前、「コンピューター」は人──多くの場合女性──の職業名だった。手作業や機械式計算機を使って天文表、砲弾軌道、NASAの軌道計算などの数学的計算を行う職業である。1950〜60年代以降、電子計算機が計算作業を引き継ぎ、この仕事が消える頃にはすでにその名前を機械に譲っていた。

キーパンチオペレーター

1930年代〜1980年代

主に女性が担ったキーパンチオペレーターは、IBM 026や029のような機械でデータやプログラムのソースコードすら、プログラムの一行を一枚のカードに打ち込んでいた。対話型端末や画面が登場し、プログラマーが直接コンピューターにコードを打ち込めるようになると、この仕事は一世代のうちに消滅した。

ウェブマスター

1993年〜2000年代

ウェブの最初の10年間、一人の「ウェブマスター」がウェブサイト全体のデザイン、コーディング、文章作成、管理を担うことが多かった──この言葉は1993年に辞書に載り、1997年にはインターネット標準で専用のメールアドレスまで与えられた。サイトが複雑化するにつれ、この役割はフロントエンド開発者、バックエンド開発者、DevOpsエンジニア、コンテンツ編集者へと分裂し、「ウェブマスター」は求人情報から姿を消していった。

Trades that vanished →

この歴史のどの時代も同じ形で終わる。ある職種全体を成り立たせていた手作業──手計算、カードパンチ、バッチスケジューリング、手作業でのサーバー構築──を取り除くツールが登場し、その労働を担っていた人々は上位の工程へ移るか、別の道へ進む。

今これを読んでいるエンジニアたちは、この循環に初めて出会っているのではなく、その次の反復を生きている。このプロフィールの残りの部分では、それが具体的に何を意味してきたか、そして証拠を妥当に読み解けば次に何が来ると考えられるかを見ていく。

Keep exploring

More in Engineering & Technology