Zigは2015年に登場した新しいオープンソースのプログラミング言語です。Go言語やRust言語のように、C言語の置き換えを目標にしたコンパイラ言語です。その最大の特徴はシンプルであることです。確かに、マクロもプリプロセッサもありませんが、現代的な言語に仕上がっています。最近話題になることが増えてきたので試してみましょう。
Zigとは
Zigはアンドリュー・ケリー氏によって2015年に登場した新しいプログラミング言語です。コンパイラ基盤のLLVMを利用しており、幅広いOSに対応した実行ファイルを生成することができます。
Zigはシンプルをモットーとしています。Zigのマニュアルでは、C++やRust、D言語など多くの機能を持つ言語を挙げて、それらとは異なりシンプルであることを名言しています。
そして、その構文は、C言語と似ているのですが、遅延処理のdefer構文や型推論など、現代的な言語機能を備えています。また、C言語との連携が考慮されており、C言語で作った資産を活用できます。
また、Zigの生成する実行ファイルのサイズが小さいのも特徴です。ブラウザ上でアプリを実行するWebAssemblyにも対応しており、生成ファイルサイズが小さいという点でも有利です。
しかし、Zigにはスクリプト言語には当然実装されているGCと呼ばれるメモリの自動管理機構が存在しません。そのため、メモリの確保や解放はプログラマーが責任を持って管理する必要があります。
Zigのインストール
それでは、Zigをインストールして試してみましょう。
こちらに各OSごとにバイナリファイルが提供されています。バイナリを利用する場合、ZIPファイルを解凍し、パスを解凍したフォルダにパスを通しましょう。(Windows10/11であれば、Windowsメニューを開き「環境変数」を検索します。そして、環境変数PATHに、Zigのインストールパスを追加します。) 原稿執筆時点でZigのバージョンは0.9.1ですが、各種パッケージマネージャーでのインストールも可能となっています。こちらにコマンドの一覧があります。
macOSのHomebrewであれば、次のコマンドを実行します。
brew install zig
Windowsのchocolateyであれば次のコマンドを実行します。
choco install zig
Ubuntu/Linuxであれば次のコマンドを実行します。
snap install zig --classic --beta
一番簡単なプログラム
それでは、Zigで最も簡単なプログラムを作ってみましょう。以下のプログラムを「hello.zig」という名前で保存しましょう。
const std = @import("std");
pub fn main() !void {
const stdout = std.io.getStdOut().writer(); // 標準出力を得る
try stdout.print("Hello, World!\n", .{}); // メッセージを出力
}
コンパイラ言語ではありますが、直接ソースファイルを実行できます。以下のコマンドでプログラムを実行できます。
zig run hello.zig
プログラムを確認してみましょう。プログラムは、C言語と同じようにmain関数から始まります。標準ライブラリのstdより、標準出力stdoutを得て、printで「Hello, World!」を出力するプログラムとなっています。 なお、上記の手順では、プログラムを実行することだけに注力しましたが、Zigで実行ファイルを作成するには、最初にプロジェクトを作成すると簡単です。
mkdir hello
cd hello
zig init-exe
するとプロジェクトのひな形が生成されるので、「src/main.zig」を編集します。そして、次のbuildコマンドを実行します。
zig build