リンドくん
たなべ先生、最近「TUI」という言葉をよく聞くんですけど、これって何なんですか?
たなべ
TUI(Text User Interface)は、ターミナル上でGUI並みに美しいアプリが作れる技術なんだ。
今日は特にPythonの「Textual」というライブラリを使って、驚くほど簡単にリッチなツールが作れることを紹介するよ!
プログラミングを学んでいる皆さん、ターミナルでの作業は好きですか?
コマンドライン操作は確かに軽快で効率的ですが、時には「もっと視覚的に分かりやすくならないかな...」と思うことってありますよね。
実は今、そんな悩みを解決する革新的な技術が注目されています。
それがTUIです。特にPythonの「Textual」ライブラリを使えば、わずか100行程度のコードで、まるでGUIアプリのような美しいツールをターミナル上に作ることができるんです。
この記事では、TUIの基本概念から実際のアプリケーション開発まで、初心者の方でも理解しやすいよう丁寧に解説していきます。
最後には、システムリソースをリアルタイムで監視する、カラフルなダッシュボードの作り方もご紹介しますので、ぜひ最後までお読みください!
↓動画版↓
TUIとは、ターミナル上で動作するグラフィカルなユーザーインターフェースのことです。
これまでのCLI(コマンドライン)の軽さと高速性を保ちながら、GUI(グラフィカルユーザーインターフェース)のような視覚的な分かりやすさを実現した、まさに「いいとこ取り」の技術なんです。
従来のインターフェースと比較してみましょう。
CLI(Command Line Interface)の特徴
GUI(Graphical User Interface)の特徴
TUI(Text User Interface)の特徴
TUIが特に威力を発揮するのは以下のような場面です。
これらのツールは、SSH経由でリモートサーバーを操作する際にも非常に便利で、現代のクラウドネイティブな開発現場でも重宝されているんです。
リンドくん
PythonでTUIを作るには、どんなライブラリを使えばいいんですか?
たなべ
Textualというライブラリが断然おすすめだよ!
Richライブラリの作者が開発したもので、Web開発者にも馴染みやすいCSSライクな記法でレイアウトを定義できるんだ。
Textualは、Will McGugan氏によって開発されたモダンなTUIフレームワークです。
同氏は人気ライブラリ「Rich」の作者でもあり、TextualはRichの描画エンジンを基盤として開発されています。
主な特徴をご紹介します。
豊富な表現力
現代的なレイアウトシステム
リアクティブな仕組み
特に開発者にとって嬉しいのがDevToolsの存在です。
textual run --dev
コマンドでアプリケーションを起動すると、ブラウザの開発者ツールのような感覚でTUIアプリケーションをデバッグできるんです。
これは本当に便利で、DOM構造やイベントログを確認でき、ホットリロード機能により、コードを変更すると即座にアプリケーションに反映されます。
また、MITライセンスで提供されているため、商用利用も問題ありません。企業での利用や有償ソフトウェアへの組み込みも可能です。
現代的なPython開発環境として、今回はuvを使用した方法をおすすめします。
もちろん、pipを使っても問題ありません。
まず、プロジェクトディレクトリを作成し、Python環境を準備します。
textual-dev
は開発用ツールが含まれており、デバッグ時に非常に便利なので必ず含めることをおすすめします。
それでは、最小構成のTUIアプリケーションを作ってみましょう。
たった10行程度で動作するTUIアプリケーションが作れるんです。
このコードをmain.py
として保存し、以下のコマンドで実行してみてください。
実行すると、ターミナル上に「Hello, TUI!」というテキストが表示されたウィンドウが現れます。
Ctrl+QまたはCtrl+Pを押してアプリケーションを終了できます。
開発モードを試してみましょう。これはデバッグ時に非常に便利です。
これにより、TUI内部で発生しているイベントを確認でき、print関数の出力もコンソールに表示されます。
Textualの素晴らしい点は、CSSライクなスタイリングができることです。
また、CSS_PATH
変数を使って、Pythonコードからスタイル部分を分離することも可能です。
公式では.tcss
という拡張子を推奨しています。
ここからは、より実用的なTUIアプリケーションとして、システムリソースをリアルタイムで監視するダッシュボードの概要をご紹介します。
システム情報を取得するために、psutil
ライブラリが必要です。
このダッシュボードでは、以下の要素を組み合わせます。
カスタムGaugeウィジェット
監視対象
リアルタイム更新
レイアウト設計
データ取得と更新
psutil
を使ったシステム情報の取得set_interval
メソッドでの定期実行視覚的な表現
Gradient.from_colors()
での虹色プログレスバーこのようなシステム監視ツールは、実際の運用現場でも非常に有用です。
特に、SSH経由でリモートサーバーにアクセスして作業する際、軽量でありながら視覚的に分かりやすいツールは作業効率を大幅に向上させます。
リンドくん
TUIって思った以上に可能性がありますね!これなら自分でも作ってみたくなりました。
たなべ
その通り!TUIはターミナルの再発明とも言える技術なんだ。
重いGUIアプリを起動する必要もなく、CLIの味気ない画面に我慢する必要もない。まさに現代の開発者が求めていた技術だよね。
今回は、PythonのTextualライブラリを使ったTUI開発について詳しく見てきました。
重要なポイントをおさらいしましょう。
TUIの革新性
Textualの優位性
活用の幅広さ
Textualの可能性は本当に無限大です。今回紹介したのは基本的な機能のほんの一部に過ぎません。
リアルタイムチャットアプリケーション、ゲーム要素を含んだツール、さらには最近話題のAI技術と組み合わせれば、更に面白いツールが作れそうですね。
あなたも今すぐTUI開発を始めてみませんか?
まずは今回紹介した簡単なHello Worldアプリから始めて、徐々に機能を追加していけば、きっと素晴らしいツールが作れるはずです。