SJ blog
tools
B

信頼度ランク

S 公式ソース確認済み
A 成功実績多数・失敗例少数
B 賛否両論
C 動作未確認・セキュリティリスク高
Z 個人所感

Vercel Labs「Zero」——AIエージェントがビルド・修正・出荷するために設計されたシステム言語の仕組み

Vercel Labsが2026年5月17日に公開した実験的システム言語Zeroは、コンパイラ出力をJSON構造化診断として設計し、AIエージェントがエラー解析・修正計画・機能記述を人手なしで処理できる。C/Rustと同じ設計空間に位置しながら全く異なるツールチェーン哲学を持つ。

一言結論

Zeroはコンパイラ出力・エラー診断・機能記述をすべてJSON構造化形式で出力することで、AIエージェントが人間向けのテキストを解析せずにビルド・デバッグ・デプロイを完結できる。まだv0.1.2の実験段階だが、「エージェントが扱えるコードベース」という新しいPL設計の方向性を示している。

何が起きたか

2026年5月17日、Vercel Labs が実験的システムプログラミング言語 Zero(拡張子 .0)をGitHubで公開した。

リポジトリ: vercel-labs/zero
バージョン:  v0.1.2(2026-05-17 リリース)
スター数:    1,700+(公開翌日時点)
ライセンス:  未明示(実験的リポジトリ)
実装言語:    C (65.9%), JavaScript (27.9%), Shell (5.6%)
状態:        実験段階・安定性保証なし

Zeroは自分自身を次のように定義する:

「エージェントのためのプログラミング言語:小さなネイティブツール向けのシステム言語。明示的エフェクト、予測可能なメモリ、構造化されたコンパイラ出力。」


既存言語との本質的な違い

C / Rust との共通点と差異

ZeroはCやRustと同じ「システムプログラミング」の設計空間に位置する。ネイティブバイナリにコンパイルされ、メモリ制御を明示的に行う点は共通だ。

設計空間の比較:

           メモリ制御  | ランタイム  | コンパイル先 | ツールチェーン対象
C          明示的      | なし        | ネイティブ   | 人間
Rust       所有権      | なし        | ネイティブ   | 人間
Zero       明示的      | なし        | ネイティブ   | AIエージェント  ← 差別化点

Rustの借用チェッカーに相当する機能は「基本的なもの(basic)」と説明されており、Rustほど厳密ではない。その代わりコンパイラ出力の機械可読性に全力を注いでいる。

「エージェントファースト」ツールチェーンとは何か

従来のコンパイラエラーは人間が読むための散文テキストだ。

# 従来のコンパイラエラー(人間向け)
error[E0502]: cannot borrow `s` as mutable because it is also borrowed as immutable
  --> src/main.rs:6:14
   |
5  |     let r1 = &s;
   |              -- immutable borrow occurs here

Zeroのコンパイラは同じ情報をJSON構造体で出力する:

{
  "code": "E0502",
  "category": "borrow_check",
  "span": { "file": "main.0", "line": 6, "col": 14 },
  "repair_hints": [
    {
      "action": "drop_borrow",
      "target_span": { "line": 5 },
      "confidence": 0.87
    }
  ]
}

エージェントはこのJSONを直接パースして修正計画を立てられる。人間向けの「説明文を解析して意図を推測する」ステップが不要になる。


Zero 固有のコマンド群

ビルド・診断系

zero check   # 型チェック・エラー診断(JSON出力)
zero build   # ネイティブバイナリのビルド
zero run     # ビルド&実行
zero size --json   # バイナリサイズの構造化分析
zero graph --json  # モジュール依存グラフの可視化

エージェント連携系

# エラーの説明をエージェントが理解できる形式で出力
zero explain E0502

# 機械可読な修正計画を生成
zero fix --plan --json

# ルートサーフェスとバンドルインポートを分析
zero routes

# Vercel Agent Skills 仕様に従った機能記述を出力
# Claude Code, Cursor, Codex など 17+ のAIコーディング支援ツールが消費可能
zero skills

zero skills の出力例(エージェントがこのサービスの能力を把握するために使う):

{
  "skills": [
    { "id": "build_native_binary", "description": "Compile .0 files to sub-10KiB native executables" },
    { "id": "emit_structured_diagnostics", "description": "Output all errors as typed JSON with repair metadata" }
  ]
}

言語設計の原則:「すべては明示的」

Zeroの設計は「すべてが明示的(everything is explicit)」という原則に従う:

明示的であること(Zeroが強制する):
  ✅ アロケータ: 隠れたアロケータなし
  ✅ 非同期:     暗黙的な async/await なし
  ✅ グローバル: マジックなグローバル変数なし
  ✅ エフェクト: 副作用は型システムに記録される

AIエージェントにとっての利点:
  → コードを読むだけで実行コストが予測できる
  → 隠れた状態が少ないため、バグの原因特定が容易
  → 「この関数は何をするか」がシグネチャだけで分かる

現在の状態と注意点

⚠️ 実験的ステータス(v0.1.2 時点)

確認済みの制限:
  - 言語仕様の安定性: 未保証(破壊的変更の可能性)
  - 借用チェッカー: Rustより基本的(メモリ安全の保証レベルは低い)
  - エコシステム: ライブラリ/パッケージマネージャは未整備
  - Steering Committeeの承認: 不要(Vercel独自プロジェクト)

検討すべきユースケース(現時点):
  ✅ AIエージェントパイプラインの実験的ツール
  ✅ 10KB以下のネイティブユーティリティの試験実装
  ✅ エージェント向け言語設計の研究
  ❌ 本番環境へのデプロイ(安定性未保証)
  ❌ 大規模コードベースの主要言語

なぜ今この設計が登場するのか

Claude Code・Cursor・Codexなどのエージェントが「コードを書く」だけでなく「ビルド・テスト・デプロイまで完結させる」ようになるにつれ、コンパイラとツールチェーンのAI可読性が重要になる。

従来のフロー(人間が仲介):
エージェント → コード生成 → コンパイラ → ❌ エラー(散文)
              → 人間がエラーを解釈 → エージェントにフィードバック

Zeroが目指すフロー:
エージェント → コード生成 → zero check → ❌ エラー(JSON)
              → エージェントが直接パース → zero fix → ✅ 修正

この設計思想は、プログラミング言語が「人間のための道具」から「エージェントと人間の共用インターフェース」へ移行するという仮説に基づいている。


まとめ・参考リンク

Zeroはまだ実験段階だが、「エージェントが扱いやすいシステム言語」という新しいカテゴリを提示した。CoはC/Rustの代替を狙うのではなく、エージェントパイプラインの末端で動く小さなネイティブツールのニッチを狙っている。

実用化には言語仕様の安定化とエコシステムの整備が必要で、現時点での本番利用は推奨できない。ただし、ツールチェーン設計の参照点として注目する価値はある。

出典・参考リンク

未確認事項: 借用チェッカーの具体的な保証範囲、商用利用ライセンス条件は公式ドキュメントで要確認。ベンチマーク比較データ(バイナリサイズ・コンパイル速度)は未公表。