Zig 環境の準備
Basis前提知識
あなたは Rust を学ぶためにここにいる。では、なぜこのセクションは聞いたこともないかもしれない言語から始まるのか?
Rust は経験を積んだ人に報いる言語だ。所有権モデル、ライフタイムの概念、スタック(stack)とヒープ(heap)の区別 — これらのアイデアは強力だが、コンピューターがハードウェアレベルでどのようにメモリを管理するかについての確かな理解を前提としている。その背景なしに Rust に飛び込むと、ルールが恣意的で混乱しているように感じる。先に基礎を築けば、Rust の設計はほとんど必然的に見えてくる。
Zig はその基礎を築くために使うツールだ。このチェックポイントではその理由を説明し、セットアップを行う。
なぜ Zig を使うのか?
Rust は計算機科学をすでに知っているエンジニアのために作られている。メモリが何かを教えてくれるわけではなく、それを知っていることを前提として、安全に管理するための強力なツールを提供する。それは想定読者には完璧だが、まだメンタルモデルを構築している段階では間違った入口だ。
このコースは別のアプローチを取る。整数(integer)、メモリレイアウト(memory layout)、ポインター(pointer)、文字列(string)といった基礎を、抽象化の下に埋めることなく可視化し続ける言語を通じて学ぶ。Zig がその言語だ。
Zig は C の現代的な代替だ。 C と同様に、直接的なメモリアクセス、ガベージコレクター(garbage collector)なし、隠れた仕組みがほぼない。C とは異なり、クリーンな構文、構造化されたエラーハンドリング、専門知識なしに操作できるビルドシステムがある。マシンを可視化してくれる — それを理解することが目標のときに、まさに必要なものだ。
目標は Zig プログラマーになることではない。力学を学ぶ物理学の学生が自転車を見るように Zig を考えよう:学ぼうとしている原理を露出させる透明なツールだ。Zig を通じてメモリとデータ表現についての直感を築けば、Rust の所有権モデルがすっと腑に落ちる。
始める前に
このガイドは 開発環境の準備 をすでに完了していることを前提とする。つまり、以下を持っているはずだ:
- Unix ライクな環境:Linux、macOS、FreeBSD、または Windows なら WSL
- 動作するシェル(
bashまたはzsh)とパッケージマネージャー(aptまたはbrew) - コードエディターのインストール
Windows を使っていてまだ WSL をセットアップしていなければ、先にそのチェックポイントに戻ること。このコースのすべて — シェルコマンド、ファイルパス、ビルドスクリプト — は Unix の慣例に従っている。PowerShell でネイティブに Zig を動かそうとすると、デバッグが苦痛で教育的な目的もないトラブルが生じる。
Windows:エディターを WSL に接続する
Windows を使っているなら、Zig の作業はすべて WSL ターミナルの中で行う。ターミナルのテキストエディターだけでコードを書くのはほとんどの人の好みではないので、Windows のエディターを WSL ファイルシステムに接続するために少し時間をかける価値がある。
この接続を特によく扱うエディターが二つある:
-
VS Code には WSL 拡張機能 がある。Remote Development 拡張パックの一部だ。インストール後、WSL ターミナルの中から
code .と入力すると、Windows の VS Code がその Linux フォルダーを透過的に開く。ビルトインターミナル、言語サーバー、ファイル操作はすべて Linux の中で動く — グラフィカルウィンドウだけが Windows に存在する。 -
Zed は SSH 経由のリモート開発をサポートしている。WSL は SSH で到達できるため、WSL 環境内のファイルを編集するように Zed を設定できる。具体的な手順は Zed リモート開発ドキュメント を参照。
どちらの設定でも、コードとツールは Linux に存在し、エディターウィンドウは Windows に留まる。
Zig のインストール
macOS
macOS では、Homebrew で Zig をインストールする:
brew install zig
Linux と WSL
まず、パッケージマネージャーに Zig があるか確認する:
# Ubuntu、Debian、WSL の場合
sudo apt update && apt-cache show zig
パッケージマネージャーについて詳しくは このチェックポイント を参照。
コマンドがパッケージの説明を返した場合、直接インストールできる:
sudo apt install zig
受け入れる前に、apt がインストールしようとしているバージョンを確認しよう — 出力に Version: x.y.z として表示される。Zig はまだ 1.0 以前であり動きが速い;ディストリビューションのリポジトリからの非常に古いバージョンはこのコースの例では動作しないかもしれない。バージョンが十分新しそうであれば進めて良い。古ければ、代わりに以下の手動インストール方法を使う。
バイナリダウンロードによる手動インストール
パッケージマネージャーに Zig がないか、提供されているバージョンが古すぎる場合は、公式の Zig ダウンロードページ からビルド済みバイナリをダウンロードする。Releases の下に最新の安定バージョンを見つけ、自分のシステムに合うアーカイブをダウンロードする。典型的な 64 ビット Linux マシン(WSL を含む)の場合、ファイル名は次のようになる:
zig-linux-x86_64-VERSION.tar.xz
ダウンロード後、アーカイブを展開して zig バイナリを PATH に追加する。以下のコマンドはファイルがホームディレクトリにあることを前提としている — VERSION を実際のバージョン番号に置き換えること:
# アーカイブを展開する
tar -xf ~/zig-linux-x86_64-VERSION.tar.xz
# ディレクトリを安定した場所に移動する
sudo mv ~/zig-linux-x86_64-VERSION /usr/local/lib/zig
# zig コマンドをどこでも使えるようにシンボリックリンクを作成する
sudo ln -s /usr/local/lib/zig/zig /usr/local/bin/zig
インストールの確認
シェルから Zig に到達できることを確認する:
zig version
# 期待する出力:0.14.0 のようなバージョン番号
バージョン番号が表示されれば、準備完了だ。
最初の Zig ファイル
小さな Zig プログラムを実行して、すべてがエンドツーエンドで動作することを確認する。hello.zig というファイルを作成して以下を書く:
const std = @import("std");
// すべての Zig プログラムのエントリーポイント
pub fn main() void {
std.debug.print("Hello from Zig!\n", .{});
}
次のコマンドで実行する:
zig run hello.zig
# 期待する出力: Hello from Zig!
zig run コマンドはファイルをコンパイルしてすぐに実行する — 小さなプログラムには別のビルドステップは不要だ。その行がターミナルに表示されれば、環境は完全に動作している。
まとめ
- Rust は計算機科学をすでに理解していることを前提とする。 メモリのメンタルモデルなしに飛び込むとルールが恣意的に感じる。コースのこのパートではまずそのモデルを築く。
- Zig は C の現代的な代替だ — 低レベルで、メモリについて明示的で、基礎的な仕組みを可視化するよう設計されている。そのため計算機科学の基礎を学ぶ理想的な手段となる。
- 目標は Zig を深く学ぶことではない。 レンズとして使う。目的地はあくまでも Rust だ。
- Windows ユーザー はすべての作業を WSL で行い、エディターを WSL に接続する:VS Code の WSL 拡張機能、または Zed の SSH ベースのリモート開発を使う。
- macOS ユーザー は
brew install zigで Zig をインストールできる。Linux と WSL ユーザー は ziglang.org/download からバイナリをダウンロードしてPATHに追加する。 zig versionでセットアップを確認し、zig run hello.zigでエンドツーエンドの動作を確認する。
次のステップ
Zig をインストールして動かせたら、コンピューターがデータをどのように表現するかを探っていく準備ができた。最初のステップは 整数 だ — 整数とはメモリ上で実際に何であるか、そして Zig の整数型がその現実をどのように反映しているかを学ぶ。