tui.builders – ターミナルUIのFigma、Rustコード生成まで
(tui.builders)Rustのパフォーマンスや単一バイナリ配布といった利点から、CLI/TUIツールをRustで作っている方はかなりいると思います。
PythonのTextualやJSのInkのようなツールは文法が比較的扱いやすい一方で、ランタイム依存や性能オーバーヘッドが気になることもあります。Rustではratatuiが良いエコシステムを持っていますが、レイアウトを組むのにかかる時間は決して少なくありません。
そこで、2つ作りました。
1. tui.builders — ターミナルUIをブラウザで
視覚的にデザインしてRustコードを書き出せるエディタです。
https://tui.builders
ウィジェットをドラッグし、インスペクタでプロパティを設定すると、
コードが1:1で生成されます:
- インスペクタ: width=30, padding=2, border=rounded
- コード: .w(30).p(2).border(Border::Rounded)
2. SuperLightTUI — この1:1マッピングのために設計した
Rust TUIライブラリです。
CSS flexbox + Tailwind
ユーティリティクラス方式なので、Web開発の経験があれば
特別な学習なしにレイアウトを組めます。
slt::run(|ui| {
ui.bordered(Border::Rounded).p(2).gap(1).col(|ui| {
ui.text("hello").bold().fg(Color::Cyan);
if ui.button("click").clicked { count += 1; }
});
});
クロージャ1つでアプリ全体を表現できます。App構造体やイベントループ、
trait実装なしで3行あればレンダリングできます。
- 依存関係は2つ(crossterm + unicode-width)、unsafe 0
- immediate-modeレンダリング、約1msフレーム
- 50以上のウィジェット(チャート、テーブル、画像、AIウィジェットなど)
- エディタなしでライブラリ単体でも利用可能
Rust TUIの性能を維持しつつ、開発速度も高めたい
方の助けになればうれしいです。
- tui.builders: https://tui.builders
- GitHub: https://github.com/subinium/SuperLightTUI
- crates.io: cargo add superlighttui
2件のコメント
Ratatuiを使っていて面倒で結局やめたんですが、まさにその欠点を突いていますね!本当にいいです(笑)
わあ!いいですね!!