はじめに¶
このページでは、YanmaJS を自分の Zig プロジェクトに組み込んで JavaScript コードを実行するまでの手順を説明します。
前提条件¶
- Zig 0.16.0 以降
ライブラリとして組み込む¶
YanmaJS は Zig の package manager(build.zig.zon)経由で依存関係として追加できます。自分の Zig プロジェクトの build.zig.zon に以下のように依存を追加します。
または build.zig.zon に手動で依存を追記します。
.dependencies = .{
.yanmajs = .{
.url = "git+https://github.com/heriet/yanmajs.git#main",
.hash = "...", // zig fetch が出力したハッシュ値
},
},
自分の build.zig では、依存モジュールとして取り込み、実行ファイルにインポートします。
const yanmajs_dep = b.dependency("yanmajs", .{
.target = target,
.optimize = optimize,
});
exe.root_module.addImport("yanmajs", yanmajs_dep.module("yanmajs"));
これでソースコード中から @import("yanmajs") としてエンジンを利用できます。
Hello World¶
最小構成の例です。Context を初期化し、eval で JavaScript コードを評価して結果を取り出します。
const std = @import("std");
const yanmajs = @import("yanmajs");
const Context = yanmajs.Context;
pub fn main() !void {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer _ = gpa.deinit();
const ctx = try Context.init(gpa.allocator());
defer ctx.deinit();
const result = try ctx.eval("1 + 2");
const n = yanmajs.toFloat(result);
std.debug.print("Result: {d}\n", .{n}); // 3
}
より発展的な使い方(グローバル変数、ホスト関数の登録、モジュール、Promise など)については 組み込み(Embedding)ガイド を参照してください。
次のステップ¶
- 組み込み(Embedding)ガイド — ホストアプリケーションへの本格的な組み込み方法
- Value の扱い方 — JavaScript の値を Zig 側で作成・変換・判定する方法