docs/overview

zenit 開発マニュアル

Zig で真にネイティブな macOS デスクトップ UI を構築します。zenit はウィンドウ、GPU レンダリング、テキスト、入力メソッド、アクセシビリティを一つの明快な UI モデルにまとめます。このマニュアルは最初のウィンドウから保守しやすい本番アプリまでをガイドします。

5 分で始める
$zig build run
0.15.2Zig バージョン
Metal現在の GPU バックエンド
2 tiers公開 API:ui.X と ui.<group>.X
src/main.zig
const std = @import("std");
const ui = @import("ui");
const App = @import("zenit_app").App;

fn mountUi(cx: *ui.Cx, _: *ui.Scope) anyerror!*ui.Node {
    return ui.text(cx, "Hello, zenit!", .{
        .font_size = cx.tokens.font_size.xxxl,
        .color = cx.tokens.color.fg_primary,
    });
}

pub fn main() !void {
    var gpa = std.heap.GeneralPurposeAllocator(.{}){};
    defer _ = gpa.deinit();

    const app = try App.init(gpa.allocator(), .{
        .window = .{ .title = "Hello" },
    });
    defer app.deinit();
    try app.runWith(mountUi);
}
Claude Code や他の Agent で開発していますか? まず zenit UI dev Skill を入れましょう。

この手引き、コンポーネント選定表、実プロジェクトで踏んだ落とし穴を、Agent が必要に応じて読み込める指示としてまとめています。書かれるコードはそのまま zenit の規約に沿います。

学習パス

順番に一度通して約 45 分。zenit アプリを自力で開発するためのメンタルモデルがひととおり身につきます。

あなたが使うアーキテクチャ

アプリは安定した公開レイヤーだけに依存し、プラットフォームとレンダリングは zenit が担います。

LAYERS
zenit.attach(dep, exe) は実行ファイルに ui と zenit_app の 2 つのモジュールインポートだけを追加し、ネイティブブリッジをコンパイルしてシステムフレームワークをリンクします。内部モジュールはアプリのビルドグラフに存在しません。「使わない約束」ではなく、「そもそもインポートできない」のです。

API の寄せ集めではない

この 3 つは、ランタイム、テキストスタック、ツール群を貫く能力です。いずれも実行可能なデモと実ウィンドウでの証拠に裏付けられています。

3 つの開発原則

これらを守れば、zenit が急速に進化している間もコードを明快に保てます。

01
公開レイヤーからのみインポート

アプリのコードでは ui.*、ui.<group>.*、zenit_app.App を使い、内部ディレクトリには踏み込まないでください。

02
データに UI を決めさせる

永続的な状態は Signal またはバインド状態に置き、派生値は Memo、副作用は Effect で扱います。

03
Token ファースト

色、文字サイズ、間隔、角丸はテーマから取ります。どうしてもスケール外の値が必要なときは ui.arb で明示します。

zenit · デュアルライセンスオープンソースプロジェクトは GPL-3.0-only のもとで無料で使えます。クローズドソースや商用製品には商用ライセンスが必要です。作者への連絡先:zongyi.xzy#gmail.com(# を @ に置き換え)zenit 5f9add5+wip 2026-09-30