Skip to content セクションへスキップ

💻起源と変遷

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

一目で
年表

年代順の節目です。週間の活動マスではありません。

1843年 エイダ・ラブレスが最初のアルゴリズムを発表1890年 ホレリスのパンチカードが国勢調査を集計1943〜1945年 6人の女性がENIACをプログラム1952年 グレース・ホッパーが最初のコンパイラを完成1957年 FORTRANがIBM 704向けに登場1968年 NATO会議が「ソフトウェアエンジニアリング」と命名1969〜1973年 ベル研究所でUnixとCが形になる1981年 IBM PCがソフトウェアをあらゆる机上へ1991年 LinuxとワールドワイドウェブがわずかなM隔てて登場2021〜2023年 AIがコードエディタに入り込む
  1. エイダ・ラブレスが最初のアルゴリズムを発表
  2. ホレリスのパンチカードが国勢調査を集計
  3. 6人の女性がENIACをプログラム
  4. グレース・ホッパーが最初のコンパイラを完成
  5. FORTRANがIBM 704向けに登場
  6. NATO会議が「ソフトウェアエンジニアリング」と命名
  7. ベル研究所でUnixとCが形になる
  8. IBM PCがソフトウェアをあらゆる机上へ
  9. LinuxとワールドワイドウェブがわずかなM隔てて登場
  10. AIがコードエディタに入り込む
指標の濃さ

濃いマスほど、このテーマでその指標が高いことを示します。

最終確認 出典とクレジットメディアクレジット方法論

短い答え

ソフトウェアエンジニアは実際に一日何をしているのか?

多くの日は、新しいコードを書くこと、レビューで他人のコードを読むこと、バグを修正すること、次に何を作るべきかチームメイトと話し合うことに分かれる。会議や計画立案、後輩の指導は新人が思う以上に時間を占める。シニアエンジニアはジュニアエンジニアより自分でコードを書く量が少なく、設計判断やレビュー、他者の障害を取り除くことに多くの時間を費やすことが多い。

ソフトウェアエンジニアになるにはコンピューターサイエンスの学位が必要か?

必須ではないが、依然として最も一般的で摩擦の少ない道である。4年制の学位ではアルゴリズムやデータ構造、システムの概念を学ぶが、これらは独学では習得コストが高い。ブートキャンプ卒業生や独学のエンジニアも採用されており、特に小規模企業ではそうだが、通常は学歴の代わりとなる強力なポートフォリオやオープンソースへの貢献が必要になる。

ソフトウェアエンジニアリングはAIによって脅かされているのか?

一部はすでにそうなっている。現代のコードエディタに組み込まれたツールは、定型コードや初稿のテスト、言語間の変換など、日常的なコードの大きな部分を、日常的に使うエンジニアのために書くようになっている。はるかに自動化が難しいのは、何を、なぜ作るのか、そして実際のユーザーや障害にさらされても生き延びるようにシステムをどう形作るかを決めることである。

ソフトウェアエンジニアの収入はどれくらいか?

国や企業によって大きく異なる。米国では中央値が年間約13万3000ドル、ドイツではおよそ6万9000ユーロ、業界が最も多くの人を雇用しているインドでは全国平均が90万ルピー前後になる。大手テクノロジー企業のシニアやスタッフエンジニアは、株式報酬を含めると全国中央値の数倍を稼ぐこともある。

ソフトウェアエンジニアとプログラマー、開発者の違いは何か?

実際にはほとんど違いがない。肩書きは重複しており、企業によって使い方も一貫していない。「プログラマー」は最も古い用語でコードを書くことを重視し、「開発者」はウェブやプロダクト企業でよく使われ、「ソフトウェアエンジニア」はより古いエンジニアリング分野から借りた規律あるプロセスやテスト、設計の考え方をソフトウェア構築に適用するという意味合いを持つ。求人票でこれらが一貫して区別されることはほとんどない。

採用にコーディング面接は本当に必要なのか?

多くの大手テクノロジー企業では、そうである。共有ドキュメントやホワイトボード上でアルゴリズム問題を解くライブまたは持ち帰り形式の技術面接が標準的な選考手法であり、より上級の職種にはシステム設計面接も加わる。小規模企業やスタートアップでは、有償の試用プロジェクトやポートフォリオレビュー、過去の実績についての会話で代替する可能性が高い。

このセクションから始める - 起源と変遷

比較ラボを開く

このページを共有

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

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

始まりの場所

1843年英国、ロンドン

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

年表

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が提案した割合が大きく、かつ増加し続けていると報告している。

時代の流れ

IBM System/360メインフレームのオペレーターコンソール
ArnoldReinhold · CC BY-SA 3.0 · Wikimedia Commons
1950年代〜1960年代

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

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

初期のUnixに最も関連づけられるミニコンピューター、PDP-11
Stefan_Kögl · CC BY-SA 3.0 · Wikimedia Commons
1969〜1983年

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

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

1981年発売のオリジナルIBM Personal Computer
Own work (based on graphics by International Business Machines Corporation) · Public domain · Wikimedia Commons
1975〜1990年

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

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

オープンソースのLinuxオペレーティングシステムのマスコットであるペンギンのタックス
Larry Ewing , Simon Budig , Garrett LeSage · CC0 · Wikimedia Commons
1991〜2005年

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

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

クラウドコンピューティングインフラの概念図
Sam Johnston · CC BY-SA 3.0 · Wikimedia Commons
2006年〜現在

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

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

この職業が置き換えた仕事

もう存在しない近隣の職業 — 吸収され、自動化され、規制で消えた。

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

1750年代〜1960年代

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

キーパンチオペレーター

1930年代〜1980年代

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

ウェブマスター

1993年〜2000年代

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

消えた職業 →

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

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

似ている職業

分野だけでなく、6つのスコアが近い職業です。

さらに探す

さらに探す

工学・技術のほかの職業

🤖

AI研究者

機械知能を支えるアルゴリズムを設計・検証する仕事。今やその研究プロセス自体の自動化を競う分野になりつつある。

AI耐性 50
🛰️

航空宇宙エンジニア

地上を離れる航空機・ロケット・宇宙船を設計・解析・認証する仕事で、推測の余地を残さない安全マージンを守り続ける。

AI耐性 74
🌉

土木技術者

川と岩と重力を橋・道路・清潔な水に変える職業――イムホテプ以来、文明を静かに支え続ける仕事。

AI耐性 72
🔌

半導体エンジニア

自動車のブレーキから核ミサイルの誘導システムまで、あらゆるコンピュータや携帯電話の中にあるトランジスタを設計・製造する。地球上でごく一部の工場しか動かせないほど精密な機械を使う仕事だ。

AI耐性 60
🦾

ロボット技術者

感知し、判断し、物理世界で行動する機械を設計する仕事。真の難問は知能ではなく、世界そのものだった。

AI耐性 65
🔐

?????????????????

デジタル攻撃を発見、防止し、対応することで、システム、データ、人々を保護します。

AI耐性 63
📦

MLOpsエンジニア

本番環境で機械学習モデルを訓練・配備・監視・ガバナンスするためのシステムを構築する仕事。

AI耐性 54
🌬️

再生可能エネルギーエンジニア

再生可能な資源を信頼できる電力に変える、風力、太陽光、蓄電、送電網のシステムを設計・構築・改善する。

AI耐性 72