9月24日、Elixir言語の作者でDashbit創業者のJosé Valimが「Evolving programming languages in the AI era」と題した記事を公開した。AIエージェントがコードの大半を書くようになった時代に、プログラミング言語・エコシステム・開発ツールはどう変わるべきかについて、言語設計者の視点から詳しく論じている。
記事は大きく2部構成だ。前半「Reflections」はAIがコードを書く世界への問いかけ、後半「Agentic tooling」は具体的なツール設計への提言である。言語設計者自身がエージェントを使い込んだ経験から書かれており、各セクションの議論もこの2部の流れに沿って展開される。
「エルゴノミクス最適化」はもう終わりかもしれない
エンジニアが最も考えさせられる指摘はここだ。
過去10年で多くの言語がオプショナルチェーン(?.)のような糖衣構文を取り込んできた。人間にとっては明確に読みやすく書きやすい。だがエージェントにとっては、冗長なnullチェックの羅列も、スマートな演算子も、どちらも「トークン」でしかない。
I have used agents to write HTML, CSS, JavaScript, Elixir, Rust, and Lean, and the differences in syntax that feel enormous to me seem considerably less important to them. From their perspective, it is all tokens-in, tokens-out.
Valimはさらに踏み込む。「エージェント向け言語」を名乗りながら構文の改善に終始するプロダクトは、今日のモデルの制約に最適化しているだけだと。コンテキストウィンドウが拡大しモデルが安価になる中で、トークン効率を言語設計の主軸にするのは筋が悪い、という主張だ。
コミュニティとエコシステムへの影響
プログラミング言語のコミュニティは、「共有された感性」によって形成されてきた。Pythonの「明快さ」、Rubyの「開発者の幸福」、Lispの「言語そのものを変える力」——。
だが人間がコードを書かなくなれば、何がコミュニティの求心力になるか。Valimはこれを問いかけるが、答えは出さない。
エコシステムへの影響には、相反する2方向がある。
- 縮小方向: エージェントが既知アルゴリズムの実装やポーティングを自動化することで、小さなコミュニティが大きなコミュニティに追いつきやすくなる。言語間の差が縮まる。
- 分散方向: ライブラリ実装が安くなれば、「自分専用のライブラリをエージェントに作らせればいい」という動きが強まり、共同作業の誘因が薄れる。
言語の「保証」が差別化軸になる
後半はより実践的だ。Valimの主張は明快——エージェント時代こそ、型・証明・ランタイム制約などによる「正しさの保証」を強化する好機だ。
型推論を例に挙げる。型推論は「書くのが面倒な人間」のための機能だ。エージェントに面倒さは関係ない。むしろ型や意図を明示的に書かせた方が、コンパイラも他のエージェントも人間も情報を得やすい。また型推論が可能な言語は、型チェックが可能な言語の部分集合になりがちであり、推論最適化は表現力と保証の両方を制限しうる、という指摘は鋭い。
言語が提供できる保証の分類として、以下を示している:
- Correct by construction: 不正な状態をそもそも表現できなくする
- 静的保証: 型・証明・静的解析による実行前の検証
- ランタイム強制: メモリ管理、プロセス分離、ケイパビリティ境界
- 実証的検証: テスト、プロパティベーステスト、ファジング
Erlang VM上で動作するElixirの「プロセス分離+メッセージパッシング」モデルはこの文脈で言及されている。Erlang/OTPにおけるプロセス分離とは、軽量スレッドに相当する各プロセスがメモリ空間を共有せずメッセージパッシングのみで通信する設計であり、障害が他プロセスに波及しにくい。Supervisorツリーはプロセスを階層的に監視・再起動する仕組みで、障害耐性の基盤となっている。表現力を一部犠牲にすることでこうした分離と耐障害性の保証を得る設計が、AI時代により価値を持つとValimは示唆している。
LSPの次:「プログラムデータベース」
Valimが開発に関わるTidewave(コーディングエージェント向けMCPサーバー)での経験から出てきた提言だ。
LSP(Language Server Protocol)はIDEのために設計された。操作の軸が「ファイル・行・列」というドキュメント位置であり、エージェントはそれを正確に追跡しない。エージェントに合った問い方は「foo_barのドキュメントはどこか」「BarBazはどこで定義されているか」という自然言語に近い問いだ。
Valimの提案は、言語サーバーが持つシンボル・参照・コールグラフ・型情報をSQLiteやDatalogなどのクエリ言語でアクセス可能な「プログラムデータベース」として公開すること。
人間なら「ある関数を最終的に呼び出すすべてのパブリック関数を列挙せよ」というクエリを書く気にはなれない。だがエージェントはCLIツールを呼ぶのと同じ感覚でクエリを書ける。
ただしこの設計には前提がある。モンキーパッチ、暗黙のフック、動的な束縛替えといった「離れた場所から挙動に影響する」機能が多い言語では、プログラムデータベースがあっても追跡が困難になる。局所性の高い設計がより重要になる、という指摘は言語設計者にとって刺さる点だろう。
デバッガの次:「ランタイム観測可能性」
デバッガは人間のためのインタフェースだ。ブレークポイントを置き、1行ずつステップ実行する——エージェントにはこのUIは合わない。エージェントはコードを計装し、トレースを収集し、情報を相関させるのが速い。
ValimはここでErlang VMの強みを強調する。プロセス、ソケット、Supervisorツリー、ETSテーブル(Erlang Term Storage:プロセス間で共有できるインメモリKVストア)、メッセージキューの検査はElixir/Erlangではビルトイン機能だ。残る課題は、これらをエージェントがクエリや安全なサンドボックス経由でアクセスできる形に整えること、としている。
「AIに書かせるなら何でもいい」という議論への反論として読むこともできる記事だ。言語の型システム・保証・エコシステム設計は、むしろAI時代により重要になる、というのがValimの一貫した立場である。
詳細はEvolving programming languages in the AI eraを参照していただきたい。




