今日の優良食堂
実際に入れて動かして書いた、今日の一膳
ギット飯が代わりに導入・実行・コードまで確かめました
いま読んでいる一膳slint-ui/slintRust・C++・JavaScriptで駆動するクロスプラットフォームGUIツールキット。.slint言語で一度UIを書けば、組み込み・デスクトップ・Webで動きます。信頼度 1.31ほかの一膳knadh/listmonk自分で管理できるニュースレターとメーリングリスト管理システム信頼度 1.34ほかの一膳getmaxun/maxunウェブサイトをコード不要で構造化APIに変換するオープンソースデータ抽出プラットフォームです。信頼度 1.34
今日の優良食堂 · ギット飯が代わりに導入・分析

slint-ui/slint

Rust・C++・JavaScriptで駆動するクロスプラットフォームGUIツールキット。.slint言語で一度UIを書けば、組み込み・デスクトップ・Webで動きます。

`.slint`ファイルにボタンとレイアウトを1つ書けば、同じコードがラズベリーパイのタッチ画面でも、デスクトップアプリでも、WebAssemblyのブラウザでも動く様子を自分の目で確認できます。RustでもC++でもPythonでも呼び出せるバインディングが揃っているので、普段のスタックを変えずにUIとビジネスロジックを分離する感覚を今日試せます。Figmaのデザインをプラグインでコードに変換する流れまで含め、コンパイラ・レンダラー・バックエンドが一式揃った実装なので、思いつきで終わらせず最後まで動かし切れます。

01 / 概要
何をするものか一文で言うと
ひとことでRust・C++・JavaScriptで駆動するクロスプラットフォームGUIツールキット。.slint言語で一度UIを書けば、組み込み・デスクトップ・Webで動きます。

Slintは「.slint」という独自の宣言的DSLでUIを記述し、Rust・C++・Pythonなどのビジネスロジックと接続できるGUIツールキットです。UI定義はコンパイラでネイティブコードに変換され、組み込み機器からデスクトップ、Webまで同じ記法で動作します。本体はRust製のワークスペースで、言語ごとのバインディングやLSPサーバー、ビューアなど開発ツール群も同梱されています。

02 / 構造
どう動くのか中核のしくみ
読み方動きの流れを図と一緒にほどきました。

UIは.slintファイルに書き、internal/compilerが構文解析してASTを組み立てます。実行方式は2通りあり、ビルド時にネイティブコードへ静的コンパイルする方式と、internal/interpreterで動的に読み込む方式を選べます。読み込み方式はビューアやPython・Node APIで使われます。描画はinternal/backends配下のwinit・qt・linuxkmsなどのバックエンドと、internal/renderers配下のfemtovg・skia・softwareなどのレンダラーを、Cargo featureで組み合わせて選びます。api/cpp・api/node・api/rs/slintなどの言語バインディングは、このコア群を共通基盤として包み、同じコンパイラ出力を各言語のオブジェクトへ橋渡しします。開発体験はtools/lspのLSPサーバー、tools/viewerのビューア、internal/live-previewのライブプレビューで補強され、.slintファイルの変更をエディタ上で即時確認できます。

03 / 体験
入れるとこんな体験になりますギット飯が実際にたどった順序
所要ギット飯が実際に導入・実行しながらたどった順序です。
  1. STEP 01

    クローン直後、api/cpp・api/node・api/rs/slintなどの言語別ディレクトリとtools/lsp・tools/viewerの開発ツールが並ぶ構成を確認できます。

  2. STEP 02

    Rust版はcargo buildを実行すると、Cargo.tomlのdefault-membersに載ったcrateだけが対象になります。

  3. STEP 03

    tools/viewerのビューアに.slintファイルを渡すと、README記載のHello Worldのようなネイティブウィンドウが開きます。

  4. STEP 04

    Node.js版はapi/nodeがnapi経由でネイティブバイナリを生成するため、初回installはRustツールチェーンのビルドを伴い時間がかかります。

  5. STEP 05

    Python版はapi/python/slintを導入すると、slint.loaderで.slintファイルをPythonクラスとして直接読み込めます。

  6. STEP 06

    LSPサーバーtools/lspをエディタに設定すると、補完とライブプレビューが使えます。ただしQtバックエンドなどは別途システムライブラリの用意が必要です。

04 / 成果物
何が手に入るのか導入後に手元に残るもの

実機で得られるのは、.slintで書いたUIをRust・C++・Pythonなどのビジネスロジックと結びつけたネイティブGUIアプリ本体です。加えてtools/viewerのプレビュー実行結果、LSPによるエディタ補完、napi・pypi・crates.io向けの各言語パッケージも手に入ります。

05 / 注意
ここは先に知っておいてください先に知っておくとよいこと
正直なところ誰にでも合うとは言いにくいところです。
01

巨大なモノレポで、api/cpp・internal/renderers/skiaなどネイティブ依存のビルドには相応の時間と環境準備が要ります。

02

ライセンスはGPL-3.0-only・独自ロイヤリティフリーライセンス・独自ソフトウェアライセンスの三択で、商用利用時は選択を確認する必要があります。

03

Node.jsとPythonのAPIはREADMEで「Beta」と明記されており、Rust・C++版より変更の余地があります。

04

LinuxKMSバックエンドのlibseat・libinput連携など、機能フラグの組み合わせが複雑で挙動差分が生じやすい設計です。

06 / 結論
ギット飯の結論食べてみる価値のある一膳か
ギット飯の最終判断優良食堂

組み込み機器からデスクトップ、Webまで同じUI記述で展開したいRust・C++・Pythonなどの開発者に向いています。1.19.0という安定したバージョン番号、多数のCIワークフロー、各言語の公式ドキュメントとexamplesが揃っている点から、実際に動かさなくても機能範囲と成熟度の判断は十分できます。ただし商用ライセンスの選択やネイティブ依存のビルド環境は、導入前に自分の目で確認した方が安全です。

今日の残りの一膳
SUBSCRIBER LIBRARY
これまでに検証した優良食堂を一堂に

4 つの関門を通った優良食堂がすべてバックナンバーに集まっています。いちばん新しい一膳はどなたでも無料で読め、それより前の優良食堂の検証の根拠・詳しい解説は ギット飯 プレミアムのご購読ですでに開いています。

優良食堂バックナンバー →
リポジトリ詳細🧪 ひと言で味見する