ざっくりZig - インストールから実行まで

2024/03/01に公開

Zig(https://ziglang.org/)は'A Simple Language'を謳うプログラミング言語で、未定義動作なし、開発者によるメモリ管理、マクロやプリプロセッサなしが特徴です。ハイパフォーマンスで注目されるJavaScriptランタイムBunの開発に用いられています。ソースコードはGitHubにてMIT Licenseのもと公開されています。

$ cat hello.zig
const std = @import("std");
pub fn main() !void {
    const stdout = std.io.getStdOut().writer();
    try stdout.print("Hello, Zig!", .{});
}

$ zig run hello.zig
Hello, Zig!

ダウンロードページにて、各バージョンのソースコードとバイナリがダウンロードできます。執筆時現在の最新バージョンは0.11.0で、ソースコードとWindows, macOS, Linux, FreeBSDの各バイナリが公開されています。そして開発中のmaster(0.12.0-dev....)もソースコードとWindows, macOS, Linuxの各バイナリがほぼ毎日更新されています。バイナリは多様なCPUアーキテクチャに対応しています。詳細はダウンロードページを参照してください。

インストール

パッケージマネージャによるインストール

(Package managers参照)
対応するパッケージマネージャ

バイナリファイルの展開によるインストール

  1. ダウンロードページを開き、OSとCPUアーキテクチャ(Arch)の確認のうえ、対応するファイルをダウンロード
    (どちらもx86_64の場合 / VERSIONは2990+31763d28cのような番号)
    • Windows: zig-windows-x86_64-0.12.0-dev.VERSION.zip
    • Linux: zig-linux-x86_64-0.12.0-dev.VERSION.tar.xz
  2. 1.でダウンロードしたファイルを展開
    • Windows: エクスプローラで「すべてを展開」を選択
    • Linux: tar fJx zig-linux-x86_64-0.12.0-dev.VERSION.tar.xz
  3. 展開されたフォルダのフルパスを環境変数PATHに追加
    • Windows: 「環境変数の設定」画面にフルパスを追加
    • Linux: export PATH=フルパス:$PATHを実行
      (.bashrcや.profileなどにターミナル起動時に実行されるスクリプトに追加しておくと便利)
  4. 端末(ターミナル)を開き、コマンドzig versionを実行してバージョンを確認
    $ zig version
    0.12.0-dev.......
    

プログラムの開発と実行

Zigのソースコードは文字コードUTF-8で記述することになっていますので、テキストエディタやターミナルなどの開発環境がこれに対応できているかを確認してください。(Source Encoding参照)

  • Windows
    コマンドプロンプト: chcp 65001
    Windows PowerShell: [Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding('utf-8')
    
  • Linux
    $ export LANG=ja_JP.UTF-8
    

"Hello, Zig!"の表示

main関数を含むソースコードをファイルに保存し、端末(ターミナル)でzig run ファイル名を入力するとプログラムを実行できます。

$ cat <<EOF > hello.zig	# Windowsでは以下EOFを除く5行をテキストエディタで保存
const std = @import("std");
pub fn main() !void {
    const stdout = std.io.getStdOut().writer();
    try stdout.print("Hello, Zig!", .{});
}
EOF

$ zig run hello.zig	# Windowsも同じコマンド
Hello, Zig!

資料・マニュアル

各種資料へのリンクは公式ドキュメントのLearnに一覧があります。

ドキュメント URL
Getting started https://ziglang.org/learn/getting-started/
In-depth Overview https://ziglang.org/learn/overview/
Code Examples https://ziglang.org/learn/samples/
Language Reference (master) https://ziglang.org/documentation/master/
Standard Library Documentation (master) https://ziglang.org/documentation/master/std/
その他資料多数...

"Hello, Zig!"の表示に必要なこと >
ざっくりZig 一覧

Discussion