世界を動かす技術を、日本語で。

AIがコードを書くなら、なぜPythonを使うのか?

概要

  • AI技術の進化 により、これまで敬遠されていた 高性能言語 の利用が急増
  • RustやGo などのシステム言語がAI支援で 開発容易化
  • PythonやJavaScriptの エコシステム優位性の低下
  • AIによるコードポーティング が主流化、パッチより移植が簡単に
  • 今後は「 人間に優しい言語」より「 エージェントに優しい言語」が主役

モダンPythonスタックの変革

  • 過去10年は「 速く出荷する」ことが「 速く動かす」より重視されていた構図
  • PythonやTypeScript が主流だった理由: 巨大なエコシステム豊富な人材
  • RustやGo、C++ は高性能だが、 学習コスト・人材不足・ビルドの複雑さ が障壁
  • これまでは「 まずPythonで出荷し、後で高速化」が定石

ハード言語がAIで簡単に

  • 2年前のGPT-4は Rust関数も満足に書けなかった
  • 2026年には Claude Opus 4.7、GPT-5.5、Gemini 3.1、DeepSeek V4 がSWE-benchで80%以上達成
  • Rustのコンパイラエラーメッセージ がAIの学習信号として最適化
  • GoやSwift も同様、 型システム+高速なフィードバック がAIと好相性

実際に起きた変化

  • Microsoft がTypeScriptコンパイラを Goで再実装、10倍高速化
  • Anthropic の研究者が 16体のClaudeエージェント でRust製Cコンパイラを作成
  • Steve Klabnik がClaudeと共に2週間で新言語RueをRustで開発
  • Andreas Kling がClaude CodeとCodexでJavaScriptエンジンをC++からRustに2週間で移植
  • 2024年には不可能だったことが、2026年には日常に

エコシステム優位性の終焉

  • PythonやJavaScriptの強みは 豊富なライブラリ群 だった
  • 主要パッケージ( pydantic, Polars, Hugging Face tokenizers, orjson など)が Rust製 に依存
  • Pythonバイナリエクステンションの Rust利用率が急増(27%→33%)
  • Astral のruff, uv, ty(全てRust製)がOpenAIに買収されるなど、基盤もRust化
  • Vercel幹部 「JSの最適化は限界に到達」

「パッチよりポート」の時代

  • 以前は「 Pythonでバグ修正→エコシステム強化」の好循環
  • AIエージェント の登場で「 パッチ→他言語への移植」が新常識に
  • Flask作者 がRustライブラリをGoへ45分で移植、APIコスト60ドル
  • 良いテストスイート>コードそのもの」という価値観の変化

依然残る課題と例外

  • すべてのケースで新言語が最適とは限らない
    • Prisma はRustからTypeScript/WASMへ戻しパフォーマンス向上
    • PyTorch は依然研究用途のデファクト
  • AIの得意不得意: Zig, Haskell, Gleam などはAI生成品質が低い
  • RustやGo はGitHub上のデータ量が多く、AI学習に有利

シフトが不可逆な理由

  • これまでの「 人間中心の開発体験」がAIで崩壊
  • 人間の役割 は「設計とレビュー」へ
  • Pythonの利便性 は相対的に低下、 ハード言語の実行時優位 が重要に
  • Stack Overflow調査 でもRust人気が10年連続1位
  • Karpathy 「LLMがソフトウェア開発の制約を根本から変える」
  • @RealRichomie 「エージェントに最適な言語が今後の主役」

結論:次のプロジェクトはPythonでなくてもいい

  • AIエージェント がプログラマーとなる新時代
  • 開発者がRustを知らなくても出荷可能
  • アプリのサイズ・性能も圧倒的向上
  • 言語選択の前提が根本から変化
  • これからは「 エージェントに優しい言語」が最適解

Hackerたちの意見

ちょっと話がそれるけど、なんでみんなまだMediumに投稿してるの? 読みづらいし、この記事も全然読めなかった。フルスクリーンのポップアップが出てきて、読んでた文が見えなくなっちゃった。何か特別な理由でもあるの?

なんか、ライターに優しいブログプラットフォームの最新進化って感じだよね。Wordpressよりもニュースレターにまとめるのが簡単だし、有料プランでマネタイズもしやすい。

そうそう、Mediumは最初は無料でみんながコンテンツを提供してたのに、急に有料の壁を作ってみんなを騙したよね。そこでまだ書いてる人を見ると驚くわ。

おそらく、慣習が影響してるんじゃないかな。ブランドに忠実な人がいて、他の人がやってることに合わせようとする。実際には、どこに投稿しても関係ないし、URLさえあればいいんだけど、そう考えない人もいるんだよね。

作家に報酬を支払おうとする真摯な試みがあったね。これはsubstackとは違うモデルだけど、その理由も分かる。新聞の有料壁と同じように見てるよ。好きじゃないけど、なぜそれがあるのかは理解してる。

読書体験がひどい ブラウザで読んだものは、誰にとっても最高の読書体験を提供することはできないよね。現代のウェブモデルはそれに反してるから。CSSのないプレーンなHTMLページは、ほぼ完璧な読書体験だと思う。でも、ほとんどの人がそれを提供しないんだ。ウェブは著者が注目を競う出版プラットフォームになっちゃったからね。ユーザーがコントロールできるプレーンテキストプロトコルが「誰にとっても最高の読書体験」に近いんだ。ウェブはそうなれるはずなのに、ほとんどそうなってない。長い記事をブラウザで読むのはやめたよ。なぜなら、関連するプレーンテキスト(構造化されたものも含めて)を簡単に抽出して、自分のエディタで読むことができるから。フォントや色、ナビゲーションを自分でコントロールできる場所でね。ブラウザは配信の手段であって、読書環境じゃないんだ。それを読書環境として扱うのは習慣であって、必要ではない。ずいぶん前から、エディタ以外で三語以上のものをタイプするのはやめたよ。もちろん、なぜやらないのかって?エディタには必要なものが全部揃ってるからね—スペルチェック、類語辞典、語源検索、翻訳、ノートへのアクセス、LLM統合など。いつか試してみて、すごく解放感があるから。そしたら、ブラウザで長いテキストを読むのもやめるかもしれないよ。

Scribeっていう代替のメディアフロントエンドをチェックしてみて、こっちの方がずっといいよ!: https://scribe.rawbit.ninja/@NMitchem/if-ai-writes-your-code... https://sr.ht/~edwardloveall/Scribe/ https://libredirect.github.io/

PythonはRustよりもAI/MLのエコシステムが成熟してるよ。特定のMLアルゴリズムをやろうとしたRustのクレートに出くわしたけど、正しく動かなかった。でも、Claudeを使って代替を作ることができた。AIには型システムレベルでの正確性を強制するのがいいと思うから、C#やRustを選ぶことが多い。でも、いくつかのことに関しては、Pythonが間違いなく適したツールだよね。

AIやMLライブラリのサポートは確かに重要だよね。最近はバックエンドの仕事でRustやTSを使うことが多いけど、Djangoファンなのにね。

ほとんどいつもRustを選ぶかな。最近、Goで書かれた何かのプラグインを作ったんだけど、Rustも使えたけど、Goの方がしっくりきたんだ。もしうまくいったら、他の人も一つのツールチェーンを持つことに価値を感じるだろうし。主な理由は、必要な時に読めるからだよね。受け手のエコシステムも言語を期待してるし。だから、データサイエンスコミュニティがRやMatLab、Julia、Python、Mojoを選ぶのは、技術の優劣じゃなくて、仲間が使ってる言語によるんだ。

そうだね、もしPythonエコシステムから離れてAIに依存関係を管理させるなら、RustよりもOCamlやF#に全てシフトした方がいいかも。そうすれば、GCや強い型付けの利点も得られるし。

AIと一緒に型システムを強制するのはいいことだと思う理由がいくつかあるよ。- (推測だけど)型付き言語は、ツールを使ってコードを効率的に修正できる速くて良いLSPを持ってる。- 人間がコードを調査したり修正したりする必要が出てきたとき、強い型付けがあれば、スパゲッティコードの中で方向を見つけやすくなるんだ。

使い道は、MLライブラリみたいな低レベルのC++ライブラリをラップする時だけだと思う。あれは再現するのがめっちゃ難しいしね。

AIはPythonが得意だよ。すぐに結果が出るし、読みやすい。トレーニングデータや例もたくさんあるし、Pythonを使った理由はその辺りだね。Pythonを使うもう一つの利点は、まずは使い捨てのバージョンを書くことに慣れておくと、Pythonのバージョンは仕様書より100倍良くなるってこと。(注:私はPythonとAIを教えていて、今週のPyConでチュートリアルをやる予定だよ。Vibeコーディングを超えてね。他の言語も使うことがあるけど、Pythonが適さない場合もあるから。)

Pythonや他の非厳密型言語の問題は、LLMに何かを書かせると、本当に何も壊れてないか自信が持てないことだよ。テストが全部通ってもね。LLMが本番環境で特定のケースでしか実行されないパスを壊してしまう可能性がある。少なくとも、強い型付けの言語ならコンパイラエラーが出るから、ビッグコードベースではそれが譲れないポイントだよ。

SWE-Benchがプログラミングのターゲットベンチマークだから、ほとんどがPythonなんだろうね。

逆のことを感じてるよ。コードがちゃんと動くようにしたいなら、LLMはPythonよりRustみたいな言語の方がずっとマシだと思う。確かに、テストを一つ通すだけで良いならPythonでもいいけど、実際に作ったものを使ってみると、ただ作るだけじゃない何かが必要だって気づく人が多いんだよね。

Rustを書いてみたことある?試したことない人からよく聞くけど、俺はPythonより全然問題ないし、すべてが100倍うまく動くよ。

もちろん、どの言語でも使えるけど、私のアドバイスはこれ:LLMが作ったものを理解したいときは、自分が一番得意な言語を使って、できるだけ簡単にするべきだよ。コードが大丈夫かどうかは自分が判断するから、アセンブラを使えばパフォーマンスの良いコードが得られるかもしれないけど、信頼できる?もちろん、RustやGoを学ぶいいきっかけになるかもしれないし、LISPやCOBOL、FORTRAN、APL、Jみたいな本当にクールなことを学ぶのもいいかも。(冗談だよ…)ただの私の意見ね。

以前、ICとして働いてたときは、Golangをたくさん書いてた。エンドツーエンドで暗号化されたビデオ通話サービスの大規模なプロジェクトに関わってたんだけど、めっちゃ嫌だった。毎日何度もif err != nilに悩まされて、Rustのことばかり考えてた。LLMを使って数時間経った今、考えが変わったよ。優秀なエンジニアチームを持つ5人のクライアントがいるけど、PythonやTypescriptを使っても一貫した結果が出せないんだ。結局、Golangがシンプルで一貫性があって、トレーニングコーパスにうまく表現されてることに気づいた。普通のプログラム(ファイルの読み書き、ネットワーク、DBなど)を書くなら、特にGolangを選ぶべきだよ。使ったことがないならなおさら。LLMはそれが得意だから、イライラするほどね。 [1] https://jry.io/writing/use-boring-languages-with-llms/

ここではPythonをよりパフォーマンスの高い、でもあまり馴染みのない言語(主にRustやGo)に置き換えようとする提案が多いけど、AIと人間のインターフェースが一番重要だと思う。シンプルに言うと「いや、知ってるならPythonを使い続けなよ」ってこと。もっと面白いのは「この新たに得たAIの自由を使って抽象度を上げてみて」、「もっと表現力があって人間に優しいものを試してみて」、「ドメインに合ったDSLとパーサーを作って(AIに焦点を当てる)」ってこと。少数派の言語だけど、Rakuはこれらの面で理想的だし(特に組み込みの文法や雑多なやり取りがあるから)、ほとんどの人気のあるLLMとうまく連携するよ。

正直、Mojoがこのレースのダークホースだと思ってる。もちろん、すべてのロードマップの目標が達成される前提だけどね。C++並みのパフォーマンス、Pythonの文法、Pythonとの完全互換性、AIとインターフェースするように最初から設計されてる、Zigのようなコンパイル時メタプログラミング、その他いろんな特典があるんだ。だから、GoやRustを褒めるのは自由だけど、AIのためにそれらを学ぶのは、すでに他の言語に堪能ならあんまり良いアイデアじゃないと思う。ちなみに、Lattnerは俺のプログラミングヒーローの一人だから、ちょっと偏ってるかも。

AIが記事を書くなら、脳みそは必要ないんじゃない?

^ 評価されてない返信だね。

言語芸術こそが、私たちの脳を使う唯一の建設的な方法だよね。神経科学が言語は認知的問題解決とは関係ないって主張してるのは無視して。頭や木を切り開いてみて、言葉はどこにあるの?君の心は、言語なしで空間的な問題を解決する電気的なテンソルなんだ。読み書きできる人たちは、数学の王や構文を理解してるのがスーパーパワーだと自分に言い聞かせてるけど、物理学は実際のスーパーパワーを与える気はないみたいだね。

君はバカにしてるけど、モデルは先月よりずっと良くなってるし、トークンコストも下がってるよ!LLMは脳のためのコンパイラみたいなもんだ!/s

最初のコメントをいくつか読んで、驚いたんだけど、トレーニングデータのことだね。トレーニングデータに含まれてるPythonの量がすごい。AIを使ってbrainfuckで書けるけど、Pythonでやるのとは結果が全然違うと思う。次の質問なんだけど、今のAIがある時代に、必要になるまで言語を気にする必要あるの?

トレーニングデータにおけるプログラミング言語のメタテーシスについて書いたよ。ここにあるよ。https://jry.io/writing/use-boring-languages-with-llms/

それに、どんなインタープリターエラーにも、StackOverflowみたいな修正提案がたくさんあるし、モデルは初回のエラーを最小限に抑えるように調整されてるんだ。もっとマイナーな言語ではこれができてない。問題がテスト入力/出力で完全に検証できる場合でも、動作する出力を得るためには、平均してもっと試行回数が必要になるだろうし、もし検証できない場合は、モデルの「注意」が解決策ではなく構文に向かうのは避けたいよね。

トレーニングデータだけが全ての答えじゃないよ。LLMは異なるプログラミング言語への翻訳が得意なんだ。これは、テキスト翻訳システムから派生しているから納得できる。比較的少ない自由に使えるコードがある言語では、いい結果が出てるよ。大きなハードルは、LLMがターゲット言語の一般的な慣用句をコピーしがちなことで、「エンタープライズ」系の言語、例えばJavaやC#だと、無駄なボイラープレートが急増する危険があるんだ。結果が使えるコンテキストウィンドウのサイズを超えてしまって、品質が落ちることもある。

それは、AIにオープンループでコードを生成させる場合には重要だね。おそらく誰かがPythonで君が求めたものに近いものを書いてるだろうから。でも、エージェントがコードを生成して、コンパイルを試みて、詳細なエラーメッセージを見て、そのメッセージに基づいてコードを改善するなら、より高品質な結果が得られるよ。rustcは本当に良い診断を出すし、今はオンラインにたくさんのRustコードがあるけど、PythonやJavascript/Typescriptの方が圧倒的に多いんだよね。

AIを使ってbrainfuckで書けるけど、Pythonでやるのとは同じ結果にはならないだろうな。 https://esolang-bench.vercel.app/

もうGoを使っちゃいなよ。LLMはそれをたくさん見てるし、上手に書けるし、ほぼ瞬時にコンパイルされるし、型付きコンパイル言語の利点も全部あるよ。AIを使って大きなPythonコードベースを作ったけど、LLMは常に引数や辞書のフォーマットを間違えて推測するんだ。ユニットテストやpydanticみたいなものは役立つけど、そういうランタイムエラーのクラス全体を避ける方がいいよ。

確かに、LLMを使ったPythonの経験はほとんどないんだ。でも、プレーンなJavaScriptと比べてTypeScriptを使ったときの出力品質のひどい劣化を見てるから、今Pythonでプロジェクトを始めるなんて考えられないな。

驚くことに、LLMはエージェント的なコーディングタスクにおいてPythonよりも他の一般的なプログラミング言語での推論がずっと下手なんだ。データはこちら: https://gertlabs.com/rankings?mode=agentic_coding

プログラミング言語を作ったんだけど、LLMはそれでめちゃくちゃ上手にコードを書くんだ。トレーニングセットはあんまり関係ないと思うよ。だって、彼らのトレーニングセットに俺の言語が入ってるわけないし!プログラミング言語って、結構共通点が多いんだよね。Pythonは、言語としてはちょっと変わってる気がする。

俺には、これらのLLMはPythonとRustのトレーニングデータが十分にあるように見えるから、Pythonには特にアドバンテージはないと思う。だから、記事が指摘してるように、コンパイル時にミスをキャッチする反復プロセスの方が、ランタイムでキャッチするよりAIには向いてるよね。

チームの誰も知らない言語で作られたアプリが出荷されたんだって。すごい!近い将来、これを振り返るのが楽しみだね。

それは、彼らが置き換えようとしているElectronアプリよりも怖いものはないかもね。

なんで?12〜18ヶ月で転職すれば、あとは他の人の問題になるよ。

これ、AIが登場する前にもあったんだよ。10年前に誰かがランダムな言語で重要なツールを書いて、残りの俺たちがそれをメンテナンスする羽目になったんだ。なんとかやりくりしたけど。

このブログ記事が英語で書かれてるのは変だな。AIがあるなら、なんでみんなロジバンでコミュニケーションしないの?明らかに優れた言語なのに。英語で話してる人が多いとか、コンピュータがその言語に依存してるとか、そんなの関係ないじゃん。AIはそんなこと気にしないし。しかも、AIなしでロジバンを編集する必要があったら、数週間で覚えられるはずだよね?

これには全く同意できないな。多くの雰囲気コードのワークフローのアイデアは「人間はコードを読む必要がない」ってことだから、人間の開発者の使いやすさは関係ないってことになる。でも、このブログ記事は明らかに人間を対象にしてるから、人間の読者の使いやすさはまだ関係あるよ。

AIはロジバンで訓練されてないよ。それに、この文章はほぼ確実に人間が直接読むために書かれてると思う。君が冗談を言ってるのはわかるけど、プログラミング言語に関して何を言いたいのかはよくわからないな。

君はロジバンを使わせようとしてるの?

あ、ロジバンのことは聞いたことなかったな。面白いプロジェクトだね!経験則だけど、言語が思考に与える影響は多くの人が思ってる以上だと思うから、論理的な言語はいいアイデアだと思う。人を「論理的に」考えさせる「トリック」になるかもしれないし!誰か実際に話してくれる人を見つけないと!

なんでPythonなの?10年以上使ってるから、デバッグも得意だし、エージェントがコードを書いてるときに、10秒以内に「これは大きな足元の銃になるな」ってわかるんだ。他の言語だと、そんなに簡単にはいかない。たくさん再学習しないといけないし。だからPythonを選ぶつもり。AIがコードをガンガン出しても、まだある程度は自分でコントロールできてる感じがするからね。もしGoやRustでやったら、AIアシストプログラミングってより「雰囲気コーディング」って感じになっちゃうし、製品全体をただやっちゃうことになるよ。