「Zig」はシステム開発における開発者の幾つかの悩みを解消し得る、新たなプログラミング言語だ。どのようなアプローチを採用しているのか。そのメリットとは。
企業で主流のシステムプログラミング言語としては「C」「C++」、近年では「Rust」などが存在する一方、新たな言語として「Zig」が頭角を現し始めた。ZigはC/C++の代替を目指しつつ、モダンな機能を備えている。本稿はZigの5つのメリットのうち、2つのメリットを取り上げる。
可能な限り最適化された実行可能ファイルをZigで作成するには、以下のシンプルなコマンドを実行する。
zig build-exe -O ReleaseFast prog_name.zig
ここで「-O ReleaseFast」は最適化レベルを指定するオプション、「prog_name.zig」はソースコードのファイル名を表す。複数のファイルをソースにして実行可能ファイルを生成することも可能だ。
Zigの特徴の一つがテストブロックだ。Zigでは、任意のソースコードファイル内に記述したテストブロックを独立して実行できる。この仕組みによって、実行可能ファイルをビルドせずに任意のテストを実施したり、簡単で迅速なプロトタイピング(試作品を用いた事前検証)をしたりすることが可能になる。
ビルドコマンド「zig test」を使うと、実行可能ファイルを生成することなく、ソースコードファイル内のテストブロックをコンパイルして実行できる。以下は「module.zig」というファイル内のテストブロックをコンパイルして実行するコマンドの例だ。
zig test module.zig
例として、以下のテストブロックを含むファイル「test.zig」を考えてみよう。
const std = @import("std"); test " => testing integer div built-in" { std.debug.print("\n" ++ "0 div 3 {}\n" ++ "1 div 3 {}\n" ++ "2 div 3 {}\n" ++ "3 div 3 {}\n" ++ "4 div 3 {}\n" ++ "5 div 3 {}\n" ++ "6 div 3 {}\n" ++ "7 div 3 {}\n" ++ "8 div 3 {}\n", .{ @divTrunc(0, 3), @divTrunc(1, 3), @divTrunc(2, 3), @divTrunc(3, 3), @divTrunc(4, 3), @divTrunc(5, 3), @divTrunc(6, 3), @divTrunc(7, 3), @divTrunc(8, 3) } ); }
これは、Zigの組み込み関数「@divTrunc」を使って、0〜8の整数を3で除算した結果を標準出力に表示するテストブロックだ。1行目の「const std = @import("std");」は、標準ライブラリ(プログラム部品群)を呼び出している。その後、計算式の表示とそれに対応する計算結果を整形して出力するために「std.debug.print」関数を用いている。
このテストブロックをzig testコマンドでコンパイルし、実行した結果は以下の通りだ(画面)。
次回は、5つ目のメリットを解説する
米国TechTargetの豊富な記事の中から、開発のノウハウや技術知識など、ITエンジニアの問題解決に役立つ情報を厳選してお届けします。
テレビ派? 有料動画配信派? おすすめの作品は? アニメに関する調査(2024年)
クロス・マーケティングは、国民的メジャーコンテンツに成長したアニメの視聴状況につい...
広告収入稼ぎの低品質サイト「MFA」を排除するため、マーケターにできることとは?
MFA(Made For Advertising)サイトの本質的な問題点とは何か。マーケターはMFA排除のた...
“なんちゃってマック”で「チキンビッグマック」体験etc. 米マクドナルドのマルチチャネル過ぎるキャンペーン
McDonald’sは米国での「チキンビッグマック」新発売に当たり、若年層とのつながりを強化...