Repo-lab
開発ツール

SwiftTUI とは?SwiftUIの文法でターミナルUIを作るSwift製TUIフレームワーク徹底解説

⭐ 93 stars GitHub →

SwiftTUIはSwiftUI互換の文法でmacOS・Linux・WindowsのターミナルUIを構築するOSSフレームワークです。@StateやVStackなど既知の宣言的APIがそのまま使え、単一バイナリで高速動作します。

GitHubで急上昇中の SwiftTUI/swift-tui をご紹介します。 スター数 93★ を獲得し、DevTool分野で注目されているツールです。


SwiftTUI とは?

SwiftTUIは、SwiftUIと同じ宣言的UI文法でターミナルユーザーインターフェース(TUI)を構築できるSwift製OSSフレームワークです。@StateVStackButtonTextといった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で試してみてください。

GitHub でチェックする →


この技術を学ぶ

Swiftやアプリ開発に興味を持った方には、Udemyのオンラインコースもおすすめです。

毎日更新のGitHubツール情報

LINEで受け取って最新情報をキャッチアップしよう

友達追加する(無料)

関連記事

この記事が役に立ったらシェアしてください