AI時代のソフトウェア:Andrej Karpathyが語る「Software 3.0」の世界
はい、承知いたしました。Y Combinatorが主催するAI Startup SchoolでのAndrej Karpathy氏による「AI時代のソフトウェア」と題された講演の内容に基づき、専門性と分かりやすさを両立させた詳細かつ説得力のあるブログ記事を生成します。記事は日本語で、動画内のタイムスタンプは含めません。最大10,000語程度の長文記事となるよう努めます。
技術革新が加速する現代において、ソフトウェアは私たちの生活、そしてビジネスの根幹を成しています。しかし、そのソフトウェアのあり方自体が、今、根本的な変革期を迎えていることをご存知でしょうか?かつてテスラのAIディレクターを務め、現在はAI分野で最も影響力のある思想家の一人であるAndrej Karpathy氏は、Y Combinator主催のAI Startup Schoolで「AI時代のソフトウェア」と題された講演を行い、この変革の核心を深く掘り下げました。
本記事では、Karpathy氏が提唱する「Software 3.0」という概念を中心に、ソフトウェア開発がどのように進化し、それが私たちのビジネスや日常生活にどのような影響をもたらすのかを詳細に解説します。
ソフトウェアの進化:70年ぶりのパラダイムシフト
Karpathy氏はまず、ソフトウェアが今「再び」変化していることを強調します。過去70年間、ソフトウェアは根本的なレベルで大きく変わることはありませんでした。しかし、ここ数年でその変化は急速に、そして本質的に進んでいます。彼はこれを「Software 1.0」から「Software 2.0」への移行、そしてさらにその先の「Software 3.0」への移行と説明します。
Software 1.0: コードで記述されるソフトウェア これは私たちが長年親しんできたソフトウェアの形態です。人間が特定のタスクをコンピュータに実行させるために、C++やPythonといったプログラミング言語でコードを直接記述します。GitHubのようなプラットフォームには、このSoftware 1.0のコードが膨大な量で蓄積されており、それはまるでデジタルな世界の地図のようです。
Software 2.0: 重みでプログラムされるニューラルネットワーク 2010年代半ばから台頭してきたのがSoftware 2.0です。これは、プログラマーが直接コードを書くのではなく、データセットを調整し、最適化アルゴリズム(オプティマイザ)を実行することでニューラルネットワークの「重み」を生成し、それをプログラムとして機能させるものです。画像認識のAlexNetなどがその代表例です。この時代には、Hugging Face Model Atlasのような、学習済みモデルの「重み」を共有・管理するためのプラットフォームが登場しました。Karpathy氏は、これをGitHubのSoftware 2.0版と表現します。
Software 3.0: プロンプトでプログラムされる大規模言語モデル(LLM) そして現在、私たちはSoftware 3.0の時代に突入しています。これは大規模言語モデル(LLM)を「プロンプト」という自然言語でプログラムする新たなパラダイムです。LLM自体が一種の新しいコンピュータであり、人間は英語のような自然言語でプロンプトを与えることで、そのLLMをプログラムし、特定のタスクを実行させることができます。
Karpathy氏は、ソフトウェア開発のこの3つのパラダイムの違いを、感情分類の例で具体的に示します。
- Software 1.0: キーワード辞書に基づいたPythonコードを記述し、感情を分類する。
- Software 2.0: 1万件のポジティブな例文と1万件のネガティブな例文でバイナリ分類器(ニューラルネットワーク)を訓練し、感情を分類する。
- Software 3.0: 大規模言語モデルに対し、少数の例(few-shot prompt)とともに自然言語で指示を与えることで、感情を分類する。
このSoftware 3.0の登場により、ソフトウェア開発の領域は劇的に拡大しています。GitHub上では、もはやコードだけでなく、自然言語による指示がコードと混在するリポジトリが増加しており、新しい種類のコードが成長していることを示唆しています。
LLMの特性:公益事業、工場、そしてOSとしての側面
Karpathy氏はLLMの特性を、いくつかの興味深いアナロジーを用いて説明します。
1. 公益事業(Utilities)としてのLLM LLMは、電力や水道といった公益事業に似た特性を持っています。
- 巨額の設備投資(CAPEX): LLMのトレーニングには、電力網の構築に匹敵するような大規模な設備投資が必要です。OpenAI, Gemini, Anthropicなどがこれに該当します。
- APIを通じた知的サービスの提供(OPEX): トレーニングされたLLMは、APIを通じて(プロンプト、画像、ツールなど)、均質なインターフェースで知的なサービスを提供します。これは電力供給のような運行費用(OPEX)にあたります。
- 従量課金制(Metered access): 100万トークンあたりいくら、といった形でアクセスが課金されます。
- 低遅延、高稼働時間、一貫した品質への需要: ユーザーはLLMに対して、電力供給と同様に、低遅延で、常に稼働し、一貫した品質を求めます。
- OpenRouterのような転送スイッチ: 電力網におけるグリッド、太陽光、バッテリー、発電機間の切り替えを可能にする転送スイッチのように、OpenRouterのようなツールは異なるLLM間の切り替えを容易にします。
- 知性の停電(Intelligence "brownouts"): 最近OpenAIがダウンした際のように、LLMの供給が停止すると、全世界で知的な活動に「停電」が起こり、人々は作業ができなくなります。
2. 工場(Fabs)としてのLLM LLMは半導体製造工場(ファブ)の特性も持ち合わせています。
- 巨額の設備投資(Huge CAPEX): LLMの構築には莫大な設備投資が必要です。これは工場建設に匹敵します。
- 深い技術ツリーの研究開発と秘密: LLMの基盤技術は急速に進化しており、研究開発には多大な投資とノウハウが必要です。これらはLLM企業内部で集中管理される秘密となりがちです。
- 4nmプロセスノード ≈ 10^20 FLOPSのクラスター: 開発には最先端のプロセスノードで構築された膨大な計算能力を持つクラスターが要求されます。
- NVIDIA GPUでのトレーニング = ファブレス: NVIDIA GPUでモデルを訓練する企業は、ハードウェアを所有しない「ファブレス」企業に例えられます。
- GoogleのTPUでのトレーニング = 自社ファブ: GoogleがTPU(自社ハードウェア)でモデルを訓練する状況は、Intelのように自社で工場(ファブ)を所有する企業に例えられます。
しかし、Karpathy氏は、ソフトウェアであるLLMは物理的なファブとは異なり、より変更しやすい(malleable)ため、守りにくい(less defensible)側面があると指摘します。
3. オペレーティングシステム(OS)としてのLLM LLMは、現代の複雑なソフトウェアエコシステムにおけるオペレーティングシステムに例えるのが最も適切だとKarpathy氏は考えています。
- 複雑なソフトウェアエコシステム: 電力のように単純なコモディティではなく、LLMはWindowsやmacOSのような複雑なOSエコシステムとして進化しています。
- ソフトウェアとしての本質: LLMはソフトウェアであり、コピー&ペースト、操作、変更、配布、オープンソース化、盗用などが容易です。物理的なインフラではありません。
- 切り替えの摩擦: 異なる機能、性能、スタイル、能力を持つLLM間では、ドメインごとに切り替えの摩擦が生じます。これはWindowsとLinuxの間でアプリの互換性が異なることに似ています。
- システム/ユーザー(プロンプト)空間 ≈ カーネル/ユーザー(メモリ)空間: LLMのプロンプト空間は、OSのカーネル/ユーザーメモリ空間に似ており、LLM自体がコンピュータのCPUに、コンテキストウィンドウがメモリに対応します。
現在のLLMとのやり取りは、まるで1960年代のコンピュータに端末を通じてコマンドを打ち込んでいるかのようです。GUI(グラフィカルユーザーインターフェース)はまだLLMの世界では十分に発明されていません。
Karpathy氏は、現在の状況を、メインフレームとタイムシェアリングの時代(1950年代〜1970年代)に例えます。当時のコンピュータは高価で集中管理されており、OSはクラウドで動作し、I/Oはネットワークを介してストリーミングされ、計算はユーザー間でバッチ処理されていました。LLMも同様に、高価で集中管理され、APIを通じて利用されています。しかし、パーソナルコンピューティングの革命がLLMの世界でも起こりつつあり、Mac MiniのようなデバイスでLLMをローカルに実行する試みが始まっています。
LLMの心理学:スーパースキルと認知の課題
LLMを効果的に活用するためには、その「心理学」を理解する必要があります。Karpathy氏はLLMを、人間の確率的シミュレーションである「ピープル・スピリッツ」と表現します。
LLMのスーパースキル:
- 百科事典的な知識と記憶: LLMは、膨大なテキストデータを学習しているため、個々の人間よりもはるかに多くの情報を記憶し、引き出すことができます。映画『レインマン』に登場するサヴァン症候群の主人公のように、完璧に近い記憶力を持つと言えます。
- 推論と応用力: LLMは、与えられた情報から推論を行い、様々なタスクに応用する能力を持っています。
LLMの認知課題(人間らしい欠点):
- 幻覚(Hallucinations): LLMはもっともらしいが事実ではない情報を生成することがあります。まるで幻を見ているかのように、でたらめな内容を自信満々に述べることもあります。
- ギザギザな知性(Jagged intelligence): ある領域では超人的な能力を発揮する一方で、別の領域では人間が決して犯さないような単純なミスを犯すことがあります。例えば、数学的な推論や文字数カウントなどで、驚くほど簡単な間違いをすることが知られています。
- 前向性健忘症(Anterograde amnesia): LLMのコンテキストウィンドウは作業記憶に相当し、常に最新のやり取りしか覚えていません。人間のように経験を通じて継続的に学習し、知識や洞察を重みに統合する「睡眠」に相当するメカニズムが、LLMにはまだありません。
- 騙されやすさ(Gullibility): LLMはプロンプトインジェクション攻撃などに対して脆弱であり、悪意のあるプロンプトによって機密情報を漏洩するリスクがあります。
- プライベートデータの取り扱い: LLMは学習したデータに含まれるプライベートな情報を意図せず生成してしまう可能性があり、セキュリティ上の課題を抱えています。
Karpathy氏は、このようなLLMの特性を理解し、その欠点を回避しながら、超人的な能力を最大限に引き出すための「プログラミング」が必要だと強調します。
LLMを活用する機会:部分的な自律性を持つアプリの構築
LLMの登場は、私たちに膨大なビジネスチャンスをもたらします。Karpathy氏が特に注目するのは「部分的な自律性を持つアプリ」の開発です。
部分的な自律性を持つアプリの特徴:
- コンテキストのパッケージ化: LLMを呼び出す前に、関連情報をコンテキストウィンドウにパッケージ化します。
- 複数のLLMモデルのオーケストレーション: 埋め込みモデル、チャットモデル、差分適用モデルなど、複数のLLMモデルを組み合わせてタスクを実行します。
- アプリケーション固有のGUI: ユーザーがLLMの出力や動作を監査・調整できるように、専用のGUIを提供します。人間が視覚的に情報を確認し、フィードバックを与えることで、システムの信頼性を高めます。
- 自律性スライダー(Autonomy slider): ユーザーがタスクの複雑さや許容できるリスクに応じて、LLMに与える自律性の度合いを調整できる機能です。
具体的な例:Cursor(コードエディタ)とPerplexity(検索エンジン)
- Cursor: プログラマがコマンドKでコードの修正をLLMに依頼し、コマンドYで承認、コマンドNで拒否するといった操作を通じて、LLMと協力してコードを記述します。自律性スライダーを動かすことで、単語補完のような低い自律性から、リポジトリ全体の変更をLLMに任せる高い自律性まで調整できます。
- Perplexity: 検索クエリに対して、LLMが情報を収集・整理して提示します。ユーザーは検索、リサーチ、ディープリサーチといった段階で自律性を調整でき、LLMの回答に不備があればソースを確認したり、追加の質問をしたりすることができます。
これらのアプリは、人間とAIが協力し、AIが生成したものを人間が検証するという「生成-検証ループ」を高速に回すことを目指しています。このループを速く回すことで、より多くのタスクを効率的にこなせるようになります。
AIエージェントを「リード」に繋ぎとめる: AIエージェントの過度な自律性は、信頼できない結果や予期せぬ挙動につながる可能性があります。Karpathy氏は、AIエージェントを「リード(手綱)」に繋ぎとめる重要性を強調します。
- 具体的なプロンプト: プロンプトをより具体的に記述することで、AIの生成の成功率を高め、検証プロセスを効率化します。
- 人間による監査と監督: AIが生成したコードや情報を人間が迅速に監査し、承認または拒否するメカビズムが必要です。GUIはそのための重要なツールです。
AI時代の教育: 教育分野もAIによって大きく変わるでしょう。教師がLLMを使って教材を作成し、生徒がLLMを使って学習するアプリが考えられます。この場合、AIは特定のシラバスやプロジェクトの進行に沿って「リード」に繋ぎとめておくことで、教育の質と一貫性を保つことができます。
自動運転との比較: Karpathy氏は、テスラでの自動運転開発の経験から、部分的な自律性の概念を強調します。2013年にはウェイモの自動運転車が完璧なデモ走行をしましたが、10年以上経った今でも、完全な自動運転は実現していません。多くの運転操作にはまだ人間の監視や介入(テレポート操作など)が必要とされており、AIエージェントの自律性の課題は根深いものです。
ソフトウェアは「厄介」なもの: ソフトウェア開発は、運転と同様に「厄介」で複雑な問題です。AIエージェントの自律性を過信せず、人間が適切に介入・監督するシステム設計が求められます。
未来への提言:エージェントのために構築する
Karpathy氏は、未来のソフトウェア開発者が「エージェントのために構築する」という視点を持つことの重要性を説きます。
デジタル情報の新しい消費者/操作者の登場:
- 人間 (GUIs): 私たちはGUIを通じてデジタル情報を消費・操作します。
- コンピュータ (APIs): APIを通じてコンピュータがデジタル情報を消費・操作します。
- NEW: エージェント (コンピュータだが人間的): LLMを搭載したエージェントは、コンピュータでありながら人間のような振る舞いをし、デジタル情報を消費・操作します。彼らはインターネット上に存在し、ソフトウェアインフラと対話する必要があります。
この新しいカテゴリの操作者のために、私たちはソフトウェアを再設計する必要があります。
ロボット(agents.txt)とLLM対応ドキュメント: ウェブクローラーがrobots.txtファイルでウェブサイトの振る舞いを指示されるように、将来のLLMエージェントは「llms.txt」のようなファイルを通じて、ドメインにおける振る舞いを指示されるかもしれません。これはLLMが理解しやすいMarkdown形式で記述されるでしょう。
さらに、ドキュメントの記述方法も変わっていく可能性があります。現在、ドキュメントは人間が読みやすいようにリスト、太字、画像などで構成されていますが、LLMが直接理解するためには、Markdownのようなより構造化された形式が好ましいでしょう。VercelやStripeのような企業は、すでにドキュメントをLLMフレンドリーなMarkdown形式で提供する先駆的な取り組みを始めています。
LLMに最適化されたツールの開発: Karpathy氏は、数学的アニメーションエンジン「Manim」の例を挙げ、LLMがドキュメントを読み込んで即座にコードを生成できる可能性を示唆します。これは、LLMが理解しやすいドキュメント形式が普及すれば、多くの人がコードを直接書かなくても、高度なツールを開発できるようになる未来を意味します。
また、Vercelが提供する「click」という機能がcURLコマンドに変換される例や、StripeのModel Context Protocol (MCP) Serverの例のように、エージェントがウェブサービス上のアクションをプログラム的に実行できるようなインターフェースが整備されつつあります。これは、LLMエージェントがブラウザを操作し、人間に代わってタスクを実行できる「Operator」のようなツールの可能性を示しています。
結論:AIと共に未来を築く
Andrej Karpathy氏の講演は、ソフトウェア開発とAIの未来について、深い洞察と具体的な方向性を示してくれました。
- Software 3.0への移行: ソフトウェアはコードから重み、そしてプロンプトへと進化しています。この根本的な変化を理解し、適応することが不可欠です。
- LLMの多面的な特性: LLMは公益事業、工場、そしてオペレーティングシステムとしての側面を持ち、その超人的な能力と人間的な課題の両方を理解する必要があります。
- 部分的な自律性を持つアプリの構築: 人間とAIが協力し、AIの生成物を人間が検証する「生成-検証ループ」を高速化するアプリが、今後の主流となるでしょう。自律性スライダーのようなUI/UXがその鍵を握ります。
- エージェントのためのインフラ整備: LLMエージェントがデジタル情報にアクセスし、操作しやすいように、ドキュメントやAPI、ツールを整備する必要があります。
このAI時代の波は、私たち全員がソフトウェアの「プログラマー」になることを可能にします。私たちはもはや複雑なプログラミング言語を習得しなくても、自然言語でAIに指示を出すことで、新しい価値を創造できるようになります。
Andrej Karpathy氏が最後に示した「The Iron Man Suit」のアナロジーは、この未来を象徴しています。私たちはAIという強力なスーツを身にまとい、その自律性のレベルを調整しながら、共に新しい世界を築いていくことになるでしょう。
この歴史的な変革期に立ち会い、そしてその未来を形作る機会は、私たち一人ひとりに開かれています。AIの可能性を最大限に引き出し、より良い未来を創造するために、私たちは今、行動を起こす必要があります。