概要
Vercel Labsは、人間の開発者ではなくAIエージェントがコードを読み書き・修復することを前提に設計された、実験的なシステムプログラミング言語「Zero」を発表した。Chris Tate氏が主導するこのプロジェクトは、「エージェントにとってより速く、より小さく、より使いやすく、修復しやすい」コード生成・保守を目標に掲げている。現在のバージョンはv0.3.4で、GitHub上ですでに5,200以上のスターを獲得している。
技術的な特徴
Zeroの最大の特徴は、v0.3.0で導入された「グラフファースト」構造にある。従来のプログラミング言語がテキストファイルをコンパイラへの入力とするのに対し、Zeroではバイナリ形式のzero.graphファイルがコンパイラの本体データとなり、拡張子.0のテキストファイルはあくまで人間が読むための「投影(プロジェクション)」として扱われる。開発者やエージェントはzero queryやzero patchといったコマンドでグラフを操作し、グラフのハッシュ値によって古い状態への編集を防ぐ仕組みも備える。
もう一つの柱が、機械可読なツールチェーンだ。すべてのzeroサブコマンドは共通の--jsonフラグを持ち、標準化された診断情報を出力する。エラーには「NAM003」のような安定したコードが付与され、型付きの修復メタデータが紐づく。特にzero fix --plan --jsonは、エージェントが受け入れ・編集・却下を選択できる修復プランを機械可読な形式で返す点が特徴で、自動修正を無条件に適用する「盲目的な自動修復」を避ける設計になっている。
さらに、外部システムにアクセスする関数はWorldという明示的なケーパビリティを引数として受け取ることをコンパイラが強制する「エフェクト追跡」も採用されている。これにより、関数のシグネチャを見るだけで副作用の有無が判別できる。ファイル拡張子は.0、ライセンスはApache 2.0で、Linux・macOS・Windows向けのネイティブバイナリを生成できる。Hello Worldプログラムはミリ秒単位でコンパイルされ、バイナリサイズは16.2KiBに収まるという。
設計思想と開発の変遷
Zeroの開発は急速なバージョン更新を繰り返してきた。v0.1.4で行(row)構文を導入し、v0.2.0で.0ファイルを主役に据え、v0.3.0でテキスト入力そのものを完全に廃止するという大きな方針転換を行っている。既存コードの移行にはzero importコマンドを使い、zero exportやzero verify-projectionによってレビューやCIでの検証もサポートする。v0.3.2ではインポート速度が約12倍高速化され、移行コストの低減が図られた。
言語としての立ち位置は、ZigとRustの中間に位置づけられる。Rustが持つ借用チェッカーの成熟度や豊富なエコシステムよりもバイナリの最小性を優先し、Goの並行処理プリミティブよりも依存関係のないアーティファクト生成を重視した設計となっている。
コミュニティの反応と今後
Hacker Newsではすでに賛否が分かれている。ケーパビリティシステム自体を「今さら目新しくない」と切り捨てるコメントがある一方、「重要なのはエージェント向けだという点だ」と反論する声もあった。また、「エージェントが得意な言語は学習データに含まれているものに限られる」という採用への懸念も出たが、SvelteのようなプロジェクトでもAIが大規模な破壊的変更に対応できていることを踏まえ、学習データへの依存は懸念されているほど大きくないとの指摘もある。
Vercel Labs自身もZeroはあくまで実験段階のプロジェクトであるとし、破壊的変更が今後も続く可能性を明言している。本番環境や機密データを扱うシステムでの利用は避け、隔離された環境での試用を推奨している。