SwiftTUI とは?SwiftUIの文法でターミナルUIを作るSwift製TUIフレームワーク徹底解説
SwiftTUIはSwiftUI互換の文法でmacOS・Linux・WindowsのターミナルUIを構築するOSSフレームワークです。@StateやVStackなど既知の宣言的APIがそのまま使え、単一バイナリで高速動作します。
GitHubで急上昇中の SwiftTUI/swift-tui をご紹介します。 スター数 93★ を獲得し、DevTool分野で注目されているツールです。
SwiftTUI とは?
SwiftTUIは、SwiftUIと同じ宣言的UI文法でターミナルユーザーインターフェース(TUI)を構築できるSwift製OSSフレームワークです。@State・VStack・Button・TextといったSwiftUIおなじみの構造をそのまま使いながら、描画先がブラウザやスクリーンではなくターミナルのセルになります。macOS・Linux・Windowsに対応し、Swift 6.3+のツールチェーンで単一ネイティブバイナリにコンパイルされます。
2026年8月31日にリリースされた最新版v0.9.12では、クラスベースのViewを禁止しvalue型のみに統一するbreaking changeが入り、SwiftUIとの互換性がさらに向上しました。リリース数34本・活発な開発により、beta/pre-1.0ながらAPIは安定しています。
こんな人におすすめ:
- エンジニア向け: SwiftUI経験者がmacOS/Linuxの高機能CLIツールやターミナルアプリを開発する際に、学習コストなしで活用できます。
- 非エンジニア向け: プログラミング知識が必要なため、エンジニア専用ツールです
主な機能・特徴
- SwiftUI互換のView・@State・スタック・コントロール・フォーカス・ジェスチャー・アニメーションAPIをターミナルで使用可能
- truecolor・Kitty/Sixelイメージ・OSC 8ハイパーリンク・マウスレポートを自動プローブし、環境に応じてグレースフルデグラデーション
--accessible・--reduce-motion・--no-color・--asciiフラグでアクセシビリティ対応- WebAssembly経由でブラウザ動作・
--webフラグでlocalhostサーバーとして起動 - TTY不要でフレームをinteger-cellで比較できるUnit Testサポート
SwiftTUIとRataTUIの違い——なぜ今Swiftエンジニアに注目されるのか
ターミナルUI(TUI)フレームワークはRust製のRatatuiやGo製のBubbleteaが有名ですが、Swiftエンジニアには学習コストが生じます。SwiftTUIは「SwiftUIを知っているなら、追加の学習なしにTUIが書ける」という立ち位置が最大の差別化点です。
Node.js製のInk(React文法でTUI)に近いコンセプトですが、SwiftTUIはネイティブコンパイル・Swift 6の型安全・並行処理保証という点で、型安全性とパフォーマンスを重視するチームに優位性があります。さらに同一コードがターミナル・ブラウザ(WASM)・iOS/macOSアプリで動作するクロスプラットフォーム展開は他のTUIフレームワークにはない特徴です。
使い方・始め方
基本セットアップ(Package.swift)
// Package.swift に依存を追加
.package(url: "https://github.com/SwiftTUI/swift-tui", .upToNextMinor(from: "0.9.12")),
// ターゲットに追加
.product(name: "SwiftTUI", package: "swift-tui"),
シンプルなカウンターアプリ
import SwiftTUI
struct CounterView: View {
@State private var count = 0
var body: some View {
VStack(spacing: 1) {
TextFigure("\(count)", font: .future)
.frame(minWidth: 14, alignment: .center)
Button("Increment") { count += 1 }
.buttonStyle(.bordered)
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
}
@main
struct CounterApp: App {
var body: some Scene {
WindowGroup("Counter") { CounterView() }
}
}
swift runで即起動、スペースキーでボタン操作、Ctrl-Cで終了・シェル復元。
デモを素早く試す
git clone https://github.com/SwiftTUI/swift-tui-counter-demo
swift run --package-path counter counter
# ギャラリー全機能を見る場合
swift run --package-path gallery gallery-demo
活用事例
macOSツール開発者によるGUIレスCLIツール構築
macOSアプリ開発をしているiOSエンジニアが、サーバー管理ツールや社内CLIユーティリティをSwiftTUIで構築するケースが増えています。SwiftUIの知識がそのまま流用できるため、GUIのUIKitでは過剰なシンプルツールをターミナルアプリとして提供できます。GIF Editorや34,000行のCSVビューアーのような高機能ツールの実例がShowcaseで公開されています。
Linuxサーバー上のモニタリングダッシュボード
Rust/Pythonで書いてきたサーバー監視ツールをSwiftTUIで置き換えるSRE・バックエンドエンジニアの例があります。Linuxのswift-nextターゲットでクロスコンパイルし、ターミナルでリアルタイムにメトリクスを表示するダッシュボードを、SwiftUIと共通のロジックで実装できます。
こんな人に向いている
iOSエンジニア・macOSアプリ開発者: SwiftUI経験があれば、コード上の学習コストはほぼゼロです。サーバー側ツールやCLIを作る際にSwiftで完結させられる点が魅力です。
Swift 6移行を進めるチーム: Swift 6の並行処理モデル(actor、checked concurrency)に対応したTUIフレームワークが必要なエンジニアに最適です。v0.9.12でvalue typeのViewのみに統一されており、コンパイラが安全性を保証します。
クロスプラットフォームTUIを目指す開発者: 同一ソースをターミナル・WebAssembly・iOS・Androidで動かしたい開発者にとって、SwiftTUIは唯一の現実的な選択肢です。
使う前に知っておきたいこと
プラットフォーム要件: Swift 6.3+ツールチェーンが必要です(swiftly・Xcode・swift.org installerで入手可能)。macOS 15+・Linux・Windows 10 1809+に対応。
ブレイキングチェンジの可能性: v0.9.12時点でbeta/pre-1.0です。APIは安定しつつも、クラスベースViewの廃止(v0.9.12)のような破壊的変更が今後も発生する可能性があります。.upToNextMinor(from:)でピン留めを推奨します。
ライセンス: MITライセンス。ファーストパーティコードは商用利用・改変・再配布自由。Vendor/配下のサードパーティコードは各自のライセンスに従います。
WebAssembly/ブラウザパスの制限: WASM出力にはSwiftTUIWASIプロダクトと@swifttui/webパッケージが別途必要です。iOS/AndroidへのネイティブアプリはそれぞれSwiftTUI-swiftui/swift-tui-androidの個別パッケージを使用します。
関連ツール・おすすめサービス
- DigitalOcean — Linux環境でのSwiftTUIアプリのデプロイに。Dropletで手軽にSwiftサーバーを立ち上げられます
まとめ
SwiftTUIは「SwiftUIを書けるなら、ターミナルUIも書ける」という新しい開発体験を実現するフレームワークです。macOS・Linux・Windows対応のクロスプラットフォーム性、WebAssembly出力、アクセシビリティ対応と、商用ツール開発でも使えるクオリティを備えています。Swift開発者でターミナルツール制作に興味がある方は、まずデモリポジトリをswift runで試してみてください。
この技術を学ぶ
Swiftやアプリ開発に興味を持った方には、Udemyのオンラインコースもおすすめです。
- 🎓 関連するDevToolコース一覧 — セール時(最大90%OFF)を狙うとお得です
関連記事
この記事が役に立ったらシェアしてください