【ジグ】
Zig とは?
最終更新:
💡 コンパイル時計算と、明示的なメモリ管理
明示的な制御、コンパイル時の計算、Cとの相互運用などを特徴とするシステムプログラミング言語。メモリ管理はプログラマーの責任で、実行時の安全検査もビルドモードや設定によって変わります。
📌 このページのポイント
- comptimeで型や値をコンパイル時に扱い、汎用的なコードを作る
- 必要な割り当てではアロケーターを明示的に渡す設計を使う
- C ABIやCヘッダー・ライブラリとの相互運用を支援する
- 0.16.0のDebug・ReleaseSafeは安全検査が既定で有効
- 安全検査があっても、メモリの寿命や解放をすべて自動保証するわけではない
Zigはどんな言語?
comptimeは何ができる?
メモリは自動で安全になる?
自動ではないよ。割り当て・解放や寿命をプログラマーが管理し、必要ならアロケーターを選んで渡す。deferなどで片付けを記述できても、解放済みの領域を使うことやリークなどを一律に防ぐ仕組みとは違うんだ。
安全検査って何をする?
配列の範囲外アクセスなどの不正な動作を検出する検査だよ。2026年10月1日に確認した0.16.0の仕様ではDebugとReleaseSafeは既定で有効、ReleaseFastとReleaseSmallは既定で無効。局所的な設定もあるので、言語名だけで同じ検査が常に働くとは判断しないんだ。
Cのコードと一緒に使える?
C ABIに合わせて関数を公開したり、Cヘッダーを取り込んだり、Cライブラリをリンクしたりできる。既存のCコードを活用する助けになるよ。ただしABI、対象環境、メモリの所有者などの約束を合わせる必要があり、C側の不具合まで自動で消えるわけではないんだ。
もっと詳しく知りたい人へ
Rustより簡単・安全と順位を付けられる?
一律には言えません。学習経験、コードの目的、メモリや並行処理の設計によって難しさが変わります。Zigの実行時検査とRustの所有権・借用に関する検査は役割が違い、単一の安全性の順位として扱わないほうが正確です。
まとめ:ざっくりこれだけ覚えればOK!
「Zig」って出てきたら「コンパイル時の処理や明示的な資源管理を備えるシステム言語」と思えばだいたいOK!
📖 おまけ:英語の意味
「Zig」 = プログラミング言語の名称
💬 ここでは名称の語源を推測せず、公式資料にある言語の設計と機能を説明しています。