Software 3.0 時代を楽しく生きる
Software 3.0 とは、Andrej Karpathy が Y Combinator の AI Startup School keynote で提唱した考え方です。AI エンジニアとして生きていくにあたって、何を考えていくべきなのかの指針に非常に役立つと思ったので、自分の考えも交えて紹介します。
Nice - my AI startup school talk is now up! Chapters:
0:00 Imo fair to say that software is changing quite fundamentally again. LLMs are a new kind of computer, and you program them in English. Hence I think they are well deserving of a major version upgrade in terms of… https://t.co/XCdh8EF4iN
— Andrej Karpathy (@karpathy)
June 19, 2025
宣伝 - Decoding Attention
以前書いた様に、機械学習をやったことのないソフトウェアエンジニア向けに Transformer を学べるコンテンツを作り始めました。日本語の説明とかはそのうち考えますがひとまずこちらが Chapter 1 の紹介になります。もしご興味ある方いらっしゃればぜひ試してみてフィードバック頂ければ幸いです。
Software 1.0, 2.0, 3.0

Software 1.0, 2.0 and 3.0 - Tweet
Software 1.0 とは、僕がこれまでソフトウェアエンジニアとしてスキルを積み重ねてきた領域です。プログラミング言語という特殊な書式を用いて、コンピューターを自在に操ることで、人間の限界を突破し生活を豊かにしてきました。1940 年代を出発点にすると 80 年近くの歴史がある様です。1 最近では GitHub を中心にたくさんのコードが共有されてきました。
Software 2.0 とは、ニューラルネットワークと呼ばれる機械学習モデルで、2010 年代から実用的なレベルの結果を出し始め、特に画像認識や音声認識等の分野で Software 1.0 では到達不可能だった領域に進出してきました。ニューラルネットワークは重みと呼ばれる大量(数百万から数十億)の数値の組み合わせを学習によって獲得し、学習していないデータでも期待する出力を推論できる装置です。2 最近は Hugging Face 上でモデルの重みを共有するようになっていて、1.0 ではコードと呼ばれていたものに相当するのが 2.0 では重みであることの実感が湧きます。重みを学習させるプロセスは非常に難しく高度な知識やノウハウが必要な領域なため、実際に行えるのは機械学習の専門的な訓練を受けた人に限られているケースがほとんどかと思います。3
そして、Software 3.0 とは 2020 年代くらいから実用的になってきた大規模言語モデル(LLM)という機械学習モデル4によって、自然言語を使って自分がやらせたいことをコンピューターに行わせることができるようになってきたことを指します。プロンプトと呼ばれる推論時の指示によってモデルの推論結果を大きく操作できることが特徴的です。5 昨今は、エージェントと呼ばれる LLM と現実世界の仲介をするソフトウェアを組み合わせることで、機械学習モデル単体ではできないこともできるようになってきて、非常に大きな可能性を見せています。3.0 ではプロンプトこそがプログラミング言語であり、実際 LLM インテグレーション屋さんの作るアプリケーションの大事な部分は良質なプロンプトを持つことであり、GitHub には大量のプロンプトがアプリケーションの一部として共有され始めています。
以前の記事でも書きましたが、やはりこのプロンプトによる動的な推論は個人的には非常に面白く、2.0 と 3.0 を大きく隔てている部分だと思います。それまでは機械学習モデルと言えば決まったタスクをするために特化して学習されているので、少し違うタスクがしたいとなると違うモデルを学習する必要がありました。LLM も実は狭い意味では決まったタスク(次のトークンを予測する)しかできないのですが、このタスクが柔軟に推論ができてしまうために、1つのモデルでたくさんのことができてしまうようになりました。
3.0 の LLM は実際には 2.0 によって作られたモデルに依存しています。一方で、2.0 と 3.0 のちょうど中間のような位置に、モデルの fine-tuning もしくは post training と呼ばれる領域があります。これは、重みをゼロから学習するのではなく、既存のモデルに対してある種のバイアスをかけて重みを調整することで、自分好みに変えてしまうことをやっています。ChatGPT のブレークスルーはここにあって、チャットでのやり取りを自然にできるように GPT という言語モデルを post training したことで、一気に普及しました。ここも伝統的には高度な機械学習の知識がないと効果的な学習をさせることは難しいですが、この閾値をさげようという試みがたくさん出てきていて、誰でも fine-tuning できるようになると僕は期待しています。6
ソフトウェアエンジニアは何ができればいいの?
Andrej は Software 3.0 によって、1.0/2.0 で書かれたものが徐々に書き直されていくけれども、一方でそれぞれに pros/cons があるから、全部できるようになって適材適所で使えるのが良いと言っています。 僕もこれには非常に同意で、例えば自分は LLM インテグレーション屋さんだからニューラルネットワークの学習はできなくていいという話にはならないと思います。特に上にも書いた post training はこれから非常に重要なツールになってくると僕は考えていて、そうなった時にこれはプロンプトでやるのかそれとも重みを更新するのか、はより身近な選択になってくると思います。7
そうすると、僕の様な Software 1.0 でキャリアを積んできた人にとって学ぶべきは 2.0 と 3.0 になります。明らかに、3.0 の方が始めやすいので当然ここから入るわけですが、適切なプロンプトを書いたりエージェントを設計しようとすると、LLM の内部を理解しておく必要がでてきます。 なぜコンテキストサイズが決まっているのか、どうしてチャットで全履歴を都度送るのか、なぜ先に言ってしまったことに引きずられてしまうのか。こうした一見奇妙な制約は LLM のアーキテクチャによるものだったりします。LLM 内部の理解を深めることにより、こうした制約を直感的に理解できるようになり、新しい提案手法が何を崩しにきているのかを早くわかるようになれます。そして同時に、2.0 の世界への扉も開かれます。モデルを学習させるには当然各コンポーネントの計算を理解する必要があるし、必要に応じて変更もしないといけないでしょう。というわけで、個人的には LLM そのものの学習を、AI エンジニア始めましたの日から毎日続けていますが、世界の最先端を少しでも体感できるというのは非常に楽しいです。
人によっては、まだまだ 1.0 の支配的な地位は変わらないと考える人もいて、そういう人の場合はどちらかというと3.0 で誰かが作った革新的なソフトウェアを活用して 1.0 の効率を上げるところに主眼を置いている様です。具体的には、コーディングエージェント系のアプリを使って 1.0 のコードを AI に書かせることでこれまでに実現できなかったような開発スピードやプロセスを実現させようとしている人をたくさん見かけます。僕もこれはもちろんやっているわけですが、3.0 なソフトウェア作りそのものに取り組む人がもっと増えると楽しいのになと思っています。 例えば、最近見かけた面白いなーと思った例は以下のデモで、GUI をいちいち全部 LLM に生成させてしまっています。1.0 な作りでは GUI はテンプレートの組み合わせに過ぎないわけですが、こうなってくるとユーザーが自分でプロンプトを使って GUI を完全にカスタマイズしたりできてしまいそうです。
Hello Gemini 2.5 Flash-Lite! So fast, it codes each screen on the fly (Neural OS concept 👇).
The frontier isn’t always about large models and beating benchmarks. In this case, a super fast & good model can unlock drastic use cases.
Read more: https://t.co/kbkC8CtVYb pic.twitter.com/6y6CcM0yu1
— Oriol Vinyals (@OriolVinyalsML)
June 17, 2025
LLM は電力
続いて、Andrej は Andrew Ng の言葉8を引用しつつ、LLM が電力と似ているという話をしています。LLM を大規模に提供している事業者は、多大な投資をしてプラントを構築し、そこから従量課金で価値を提供しています。安定した供給を期待され、利用者は多数の事業者を組み合わせて使います。このアナロジーは個人的には非常に馴染みのあるものです。最近はあまり言ってないようですが、僕が AWS で働いていた時には クラウドコンピューティングを全く同じように電力に例えて説明していました。 つまり、クラウド事業者も、多大な投資でデータセンターやサービスを構築し、従量課金で安定した供給を行っています。
Andrew は 電力が 100年前に生活を一変させたと言っています。LLM もそうなっていくでしょう。クラウドの利用は今ではだいぶ一般的になってきたと思いますが、10年前を考えるとまだまだでした。今の LLM の状態も似ていると思います。基盤としての価値を認めた人たちはどんどん使い倒しているということに、僕自身は2カ月前まで気づいてませんでした。あれからクラウドが人々に浸透していったように、LLM も当たり前の存在になっていくと信じていますし、それに協力したいと思っています。
LLM OS
Andrej はそこからさらに発展させて、彼が数年前から言っている LLM OS の考え方も話しています。僕はこの考え方にも非常に共感できます。だからこそ、ソフトウェア開発をするために CPU や OS を学んだ様に、僕は今 LLM やその周辺の基礎を学んでいます。
LLM 自体は非常に複雑なので誰もが簡単に作り出せるわけではなく、OS の様に少数のプロプライエタリ事業者とオープンソースによって支えられる構図になっています。アプリケーションは OS に依存しすぎないように作ることができて様々な OS で実行可能、つまり様々な LLM で動作可能にできます。さらには、メインフレームの時代の様に限られた高価な資源を多人数でタイムシェアして使っている状況もまさに今の LLM の状況と重なります。そしてメインフレームの後にパーソナルコンピューターが来たように、LLM もローカルで動かせるものが現実的に使えるレベルになりつつあります。9 チャットインターフェースは OS で言えばターミナルに相当して、つまりまだ “GUI” に相当するものが発明されていないのです。 一体どういう UI がこれから出てくるのか?Software 1.0 をやっていた後半にはこういうワクワク感が僕にはありませんでした。

LLM OS - Tweet
Transformer の説明をしていないので、この辺はまだ理解しにくいと思いますが、Software 3.0 の世界では情報の粒度は token になります。CPU である LLM は token を受け取って処理をしますが、その処理のために context window という箱が必要でこれはまさにメモリに相当します。そして、各種 I/O デバイスやらを使って仕事をしていきますが、Tool calling や MCP なんかはまさに典型的な I/O ですね。
AI エージェント
Part 2 の心理については割愛します。最後に、エージェントの作り方について提言をしています。完全な自律性よりも、部分的な自律性を、というのがメッセージです。人間の能力を拡張させるようなエージェントが持つのは、ワークロードに沿った適切な GUI や UX、早いフィードバックループ、自律性をどれくらい与えるかのスライダー、こういった特徴を持っていると。個人的には自律的なエージェントに期待をしていますが、確かに現時点では完全なものをつくるのはまだまだ難しいです。自動運転が何年もかけてようやく無人の運転にたどり着きつつあるように、これから10年くらいかけてエージェントが成熟していくのでは、というのが彼の考えです。そうすると、AI エンジニアとしての食い扶持は少なくとも10年は見込めそうなので良いですね。
また、エージェントが中心に来るとあらゆるものをエージェント向けに作りましょう、という話になります。/llms.txt
なんかはいい例ですね。LLM やエージェントが処理しやすいほど Software 3.0 からの利用が進むので、何を作るにしても人間に向ける前にエージェントが使いやすいかどうかを考える、そういう時代になるのだと思います。例えば Tool calling なんか典型的で、あれの最も重要な考慮点は名前と詳細の説明です。適切な命名・説明がされていないと、LLM がうまく使うことができません。
まとめ
Andrej は僕が生まれて初めて見た LLM の動画で説明をしていた人でした。ひな鳥が最初に見たものを母親と思う様に、それ以来彼のファンです。10 11
こちらの Deep Dive も非常に勉強になります。非技術者でもわかりやすいようにかなりかみ砕いて説明してくれています(3時間も!)
今回の YC のスピーチは講演があった日からずっと動画が上がるのを楽しみに待っていましたので、せっかくなのでまとめてみました。Software 3.0 の世界を一緒に楽しみましょう!
あと、Decoding Attention もぜひお試しください!
“Decoding Attention” Chapter 1 - A learning material of Transformer for software engineers
Footnotes
-
https://en.wikipedia.org/wiki/History_of_programming_languages?utm_source=chatgpt.com#First_programming_languages ↩
-
推論をする機械学習のモデルは他にもたくさんありますが、昨今はニューラルネットワークが非常に強力なアーキテクチャとなっています。 ↩
-
他にも言語モデルはあるのですが、ここもニューラルネットが主力であり、その中でも Transformer と呼ばれるアーキテクチャ(Software 3.0 の図)が 2025年6月時点ではほぼ独占的です。 ↩
-
例えば、Few-shot learning と呼ばれる方法では、プロンプトの中でいくつか質問と答えのパターンを見せることで、そのパターンを踏襲して回答させることができます。 ↩
-
例えば Sakana AI の Text-to-LoRA は自然言語のプロンプトだけでこの重みの調整ができるというものです。 ↩
-
もちろん2025年6月時点でもこの選択はできるのですが、特にどういったデータを準備するべきなのか、どうやって評価すべきなのかが機械学習の専門家以外にはまだまだ難しく、得られる効果に対してコストがかかり過ぎるというのが一般的な見解で、プロンプトによる解決が支配的です。この傾向自体は変わらないと思いますが、個人的にはもっと手軽に fine-tuning できるようになると、今までできなかったことができるようになると考えています。 ↩
-
https://www.gsb.stanford.edu/insights/andrew-ng-why-ai-new-electricity ↩
-
ナル先生の様に、Mac Studio を持ち歩くような生活が当たり前になってくるのかもしれません。 https://type.jp/et/feature/28625/ ↩
-
ちなみに、彼が修士を取った UBC は Vancouver にあるので勝手に親近感を感じます。そして、年下なんですよね。。。 ↩
-
あと、途中で出てきた Andrew Ng がもう一人の推しですね。こちらは10年前に機械学習を始めたときに見たのが彼の Stanford の講義動画でした。あの時 Deep Learning まで興味を広げられていたら、もっと早くこちらの世界に来れていたのかなと思うと少し悔しいです。 ↩