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

💻伝説の人物

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

一目で
指標の濃さ

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

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

短い答え

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

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

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

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

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

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

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

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

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

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

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

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

このセクションから始める - 伝説の人物

比較ラボを開く

このページを共有

ソフトウェアエンジニアリングの正典は、医学や法律のそれより短く若い。そしてその驚くほど大きな部分が、プログラミングがまだ重要だとは思われていなかった、男性ばかりの部屋で働いていた女性たちによって書かれた。ここに紹介する8人は、決して作られなかった機械のために文章を書いた伯爵夫人から、60代になっても自らの創造物を保守し続ける日本の言語設計者まで、幅広く及ぶ。

彼らを結びつけるのは共通の背景ではない──4か国、180年以上にまたがる──共通しているのは、ソフトウェアが動くかどうかと同じくらい、どう作られるかが重要だという主張である。

歴代の表彰台

グレース・ホッパー
グレース・ホッパー
米国
2
デニス・リッチー
デニス・リッチー
米国
1
マーガレット・ハミルトン
マーガレット・ハミルトン
米国
3

“作った機械よりも仕事が長生きするように作る──可搬性のおかげでUnixのアイデアは50年のハードウェアの変遷を生き延びた。”

デニス・リッチー

頂点に立った8人

1
デニス・リッチーの写真 Denise Panyik-Dale · CC BY 2.0

デニス・リッチー

米国 · 1941〜2011年

ベル研究所でUnixを共同開発し、C言語を設計した。業界に可搬性のあるオペレーティングシステムと、後のほとんどの言語が構文を借用した言語を与えた。1983年にケン・トンプソンとともにチューリング賞を受賞。今日動いているほとんどのオペレーティングシステムは彼の仕事の子孫か、その子孫のツールで作られている。

逸話

トンプソンとともに、リッチーは1973年にUnixをC言語で書き直した。これにより一つの機種に縛られず新しいハードウェアへ移植できるようになった──この決断のおかげでUnixとその後継すべては、いかなる単一のコンピューターよりも長く生き延びた。彼は2011年10月12日、ニュージャージー州バーカレー・ハイツの自宅で死去した。1週間前に亡くなったスティーブ・ジョブズの死にほとんど覆い隠されたが、ジョブズ自身の製品の中でもリッチーの仕事の上に築かれたソフトウェアが動いていた。

“作った機械よりも仕事が長生きするように作る──可搬性のおかげでUnixのアイデアは50年のハードウェアの変遷を生き延びた。”

チューリング賞
1983年(トンプソンと共同)
Cから派生した言語
C++、Java、C#、JavaScript…
ベル研究所での在籍期間
約40年
2
海軍の制服を着たグレース・ホッパーの写真 James S. Davis · Public domain

グレース・ホッパー

米国 · 1906〜1992年

1952年に最初の実用的なコンパイラを開発した数学者・海軍士官で、人は生の機械命令ではなく英語に近いもので プログラムすべきだと主張した。その主張は直接COBOLにつながり、70年経った今も銀行や航空会社、政府機関の中で動き続けている。

逸話

痩せすぎているという理由で現役任務を拒否されたホッパーは、1943年に海軍予備役に入隊し、後にハーバード・マークIのプログラミングを任された。1947年9月、彼女のマークIIチームはリレーに詰まったガを日誌に貼り付け、「バグが実際に発見された最初の事例」と記した──ホッパーが「バグ」という言葉を作ったわけではないが、彼女は何十年もこの話を語り続け、それがこの分野の創世神話となった。

“機械にプログラマーの言葉を話させる。逆だけではいけない。”

海軍でのキャリア
43年、少将
退役時の年齢
79歳、現役最高齢の士官
大統領自由勲章
2016年(死後)
3
アポロのソフトウェアリストの山の横に立つマーガレット・ハミルトンの写真 Daphne Weld Nichols · CC BY-SA 3.0

マーガレット・ハミルトン

米国 · 1936年生まれ

MITの計装研究所でアポロ計画の船内飛行ソフトウェアを書いたチームを率い、コードもハードウェアエンジニアリングと同じ厳密さと敬意に値すると主張して「ソフトウェアエンジニアリング」という用語を広めた人物として広く評価されている。

逸話

1969年7月、アポロ11号の月面着陸中、誤設定されたレーダースイッチが余分な処理を送り込んだため、誘導コンピューターは1202と1201のアラームを出し始めた。ハミルトンのチームはソフトウェアを、クラッシュするのではなく過負荷時に優先度の低いタスクを切り捨てるよう設計していたため、着陸誘導は動き続けた。NASAのエンジニアが手書きしたアラーム対応表を頼りに、ミッションコントロールは中止ではなく「続行(go)」を告げた。

“すべてが計画通りに動くときだけでなく、過負荷時にも優雅に失敗するようソフトウェアを設計する。”

大統領自由勲章
2016年
歴史的なミッション
アポロ11号着陸、1969年
MITでの役職
ソフトウェアエンジニアリング部門長
4
リーナス・トーバルズの写真 Krd (photo) Von Sprat (crop/extraction) · CC BY-SA 4.0

リーナス・トーバルズ

フィンランド/米国 · 1969年生まれ

1991年にヘルシンキの学生の趣味プロジェクトとしてLinuxカーネルを始め、14年後にはGitの中核部分を約10日間で書き上げた。両プロジェクトは今や公開インターネットの大部分、世界の携帯電話の大部分、そしてプロのソフトウェアチームの日々の作業フローの大部分を支えている。

逸話

1991年8月25日、トーバルズはUsenetのcomp.os.minixグループに、「(無料の)オペレーティングシステムを書いている(GNUのような大規模で本格的なものにはならない、単なる趣味だ)」と投稿した。世界中のボランティアが数か月以内に貢献を始めた。2005年、ライセンス紛争でカーネルチームが既存のソースコード管理ツールから切り離されると、彼は他の誰かが作るのを待つのではなく、自らGitの中核を約10日間で書き上げた。

“自由に共有され公然と議論される動くコードは、閉じた委員会の完璧な設計に勝る。”

Linuxカーネル開始
1991年、21歳
Git執筆期間
約10日間、2005年
Linuxベースのデバイス
数十億台、全Androidを含む
5
バーバラ・リスコフの写真 Kenneth C. Zirkel · CC BY-SA 3.0

バーバラ・リスコフ

米国 · 1939年生まれ

1970年代半ばにMITでCLUを構築し、実際のデータ抽象化を実現した最初期の言語の一つを生み出した。後に、今もエンジニアがクラス階層を設計する際に従う置換原則を定式化した。2008年、女性としては2人目のチューリング賞受賞者となった。

逸話

リスコフは1968年、スタンフォード大学でコンピューターサイエンスの博士号を取得した、米国でこれを成し遂げた最初期の女性の一人である。MITでは1974〜1975年にCLUを構築するチームを率い、「オブジェクト指向プログラミング」という言葉が一般化するより前に抽象データ型を導入した。1987年の基調講演で、後にリスコフの置換原則として知られるようになる原則を述べ、これは今やほぼすべてのエンジニアが学ぶSOLID設計原則の「L」となっている。

“サブタイプはスーパータイプが交わしたあらゆる約束を守らなければならない。さもなければ抽象化はあなたを守ってくれない。”

チューリング賞
2008年(女性として2人目)
コンピューターサイエンス博士号
1968年、スタンフォード大学
CLU言語の構築
1974〜75年、MIT
6
エイダ・ラブレスの肖像画 Antoine Claudet · Public domain

エイダ・ラブレス

英国 · 1815〜1852年

1843年、ラブレスはチャールズ・バベッジの実現されなかった解析機関に関するイタリアの論文を翻訳・注釈し、最も長い注釈の中で、機械が数列を計算する方法を段階的に書き記した──まだ存在しないコンピューターのために書かれた動くプログラムである。

逸話

ルイジ・メナブレアの論文の翻訳に添えた7つの注釈のうち最長の注記Gは、解析機関の演算カードがベルヌーイ数を計算する方法を示しており、彼女は出版前にその計算の誤りを発見し訂正した。彼女は1852年、36歳でがんのため死去した。彼女が書いたものを実行できる機械が作られるより数十年前のことである。プログラミング言語Adaは1980年に米国国防総省が採用し、彼女にちなんで名付けられた。

“プログラムは、それを実行する機械がまだ存在しなくても設計しデバッグできる。”

注釈発表
1843年
死亡時の年齢
36歳
彼女にちなんだ言語
Ada、1980年、米国国防総省
7

フランシス・アレン

米国 · 1932〜2020年

キャリアのほぼすべてをIBMリサーチで過ごし、コンパイラが最初に生成する文字通り非効率なコードを、エンジニアが実際に出荷する高速なプログラムへと変える研究を行い、現代の最適化・並列化コンパイラの数学的基盤を築いた。2006年、女性として初めてチューリング賞を受賞した。

逸話

アレンはニューヨーク州ペルーの、電気も水道もない酪農場で育ち、主に教職で負った大学の借金を返すため1957年にIBMに入社した。1966年の論文『プログラム最適化』は、今もコンパイラの授業で教えられるグラフに基づくコード解析手法を紹介した。後にPTRANというプロジェクトを率い、古いFortranプログラムに隠れた並列性をコンパイラが自動的に見つけられるようにし、1989年にはIBM初の女性フェローとなった。

“人が書くプログラムと、機械が実行すべきプログラムは別の問題である。両方を解け。”

チューリング賞
2006年(女性初)
IBMフェロー
1989年(女性初)
IBMリサーチでの在籍期間
約45年
8

まつもとゆきひろ

日本 · 1965年生まれ

1993年からプログラミング言語Rubyを設計し、機械の効率ではなくプログラマーの幸福という一つの明確な目標を掲げた。それは初期のTwitter、GitHub、Shopifyの原動力となり、Railsが牽引した広範なスタートアップの波を後押しした。

逸話

まつもとは1993年2月、Perl、Smalltalk、Eiffel、Lisp、Adaの要素を組み合わせながら紙の上でRubyの構想を練り始め、1995年に公開した。彼はコンピューターのために最適化するのではなく、プログラマーを幸せにすることが目標だったと語っており、この哲学はRubyコミュニティ自身のモットー「Matzは親切だから、私たちも親切にしよう」に転じた──言語がどう振る舞うべきかだけでなく、貢献者同士がどう接するべきかについての規則である。

“機械に何を計算させられるかだけでなく、使う人がどう感じるかのためにツールを設計する。”

Rubyの初公開
1995年
Rubyを設計している年数
1993年から
役職
Rubyチーフデザイナー

バーはこのリストの首位を基準にした相対値です。

比較ラボ

名前をオンオフすると — すべての棒が選んだグループの首位を基準に再計算される。

5 / 8

論争

1968年のNATO会議が「ソフトウェアエンジニアリング」という言葉を「作った」かどうかは議論がある。マーガレット・ハミルトンらは、ガルミッシュの会議より前からこの表現のいくつかの形がエンジニアリング界隈で非公式に使われており、会議はそれを発明したのではなく普及させたのだと述べている。

Linuxをめぐる命名と功績についても長く続く独自の論争がある。リチャード・ストールマンとフリーソフトウェア財団は、周辺のツールチェーンの多くがトーバルズのカーネルより前から存在したGNUプロジェクト由来であるため、このオペレーティングシステムは「GNU/Linux」と呼ばれるべきだと主張している。

似ている職業

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

さらに探す

さらに探す

工学・技術のほかの職業

🤖

AI研究者

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

AI耐性 50
🛰️

航空宇宙エンジニア

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

AI耐性 74
🌉

土木技術者

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

AI耐性 72
🔌

半導体エンジニア

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

AI耐性 60
🦾

ロボット技術者

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

AI耐性 65
🔐

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

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

AI耐性 63
📦

MLOpsエンジニア

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

AI耐性 54
🌬️

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

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

AI耐性 72