概要
- Turbo Vision は、クラシックなテキストベースUIフレームワークの モダン移植版
- クロスプラットフォーム 対応と Unicodeサポート が特徴
- Linux/Windows/DOS で動作、 ソース互換性 を重視
- サンプルやビルド手順、 API変更点 も詳細に解説
- GitHub で公開、開発者・レトロ開発者双方に有用
Turbo Vision 2.0 モダン移植版の概要
- Turbo Vision は、1990年代初頭Borlandが開発した テキストUIフレームワーク の現代版
- クロスプラットフォーム (Linux/Windows/DOS)で動作、 Unicode対応
- 2018年末から個人プロジェクトとして開始、 2020年5月 にオープン化
- レガシーコード を最小限の変更でLinux対応、 Borland C++ RTL関数 も一部実装
- 既存アプリの 高いソース互換性 維持、 API拡張や大規模書き換え は慎重に検討
Turbo Visionの特徴とメリット
- 端末依存のI/Oやワークアラウンド 不要、 一貫した動作と外観 を全環境で実現
- ウィジェット(ビュー) 多数搭載:ウィンドウ、メニュー、ダイアログ、ボタン、スクロールバー等
- イベントディスパッチ や 全角Unicode表示 も標準サポート
- クロスプラットフォーム対応 :#ifdef等の条件分岐なしでLinux/Windows両対応
- char配列 で文字列管理、 wchar_t/TCHAR 非依存
- UTF-8対応setlocale により、Windowsでも日本語ファイル名等が自然に扱える
Turbo Visionの始め方
- Turbo Vision For C++ User's Guide で基本操作を習得
- サンプルアプリ(hello, tvdemo, tvedit)で実践
- Turbo Vision 2.0 Programming Guide (Pascalだが直感的)も推奨
- パレット例 で配色の仕組みを理解
- features, API changes セクションも必読
リリース・ダウンロードガイド
- 安定版リリースなし、最新コミット推奨
- Unix系 :自力ビルドが必要、手順は後述
- Windows :GitHub ActionsのArtifactsからバイナリ取得可能
- examples-dos32.zip:Borland C++ビルド(Unicode非対応)
- examples-x86.zip:MSVC 32bit(Vista以降)
- examples-x64.zip:MSVC 64bit(Vista以降)
ビルド環境ごとの手順
-
Linux
- CMake+GCC/Clangで 静的ライブラリ 生成
- cmakeコマンドでビルド、libtvision.aと各種サンプル生成
- 必要要件:C++14対応コンパイラ、libncursesw、libgpm(任意)
- クリップボード対応:xsel/xclip(X11)、wl-clipboard(Wayland)
- アプリビルド例: g++ -std=c++14 -o hello hello.cpp ./build/libtvision.a -Iinclude -lncursesw -lgpm
- 互換ヘッダ でBorland C++ RTLをエミュレート、旧アプリ移植も容易
-
Windows(MSVC)
- CMakeでビルド、アーキテクチャごとにディレクトリ分け
- /MTや/MDなど RTLリンク方式 の統一が必要
- 必須フラグ:/permissive- /Zc:__cplusplus
- setlocaleで UTF-8モード、Vista以降で動作安定
-
Windows(MinGW)
- Linuxと同様の手順、CMake+MinGW Makefiles
- libtvision.aとサンプルが./buildに生成
- Windows XP以降で動作可能
-
Windows/DOS(Borland C++)
- DOS/Windows用ライブラリとしてビルド可能(Unicode非対応)
- Borland C++ 4.52+PowerPack、Turbo Assembler 4.0で動作確認
- 環境依存の問題あり(MAKEのバージョン、16bitインストーラ等)
-
Vcpkg
- vcpkg経由でのインストール対応
- Microsoftとコミュニティがメンテナンス、更新要望はIssue/PRで
Turbo VisionをCMake依存として利用
- CMakeベースのアプリケーションでTurbo Visionをリンクする主な方法
- Turbo Visionインストール後にfind_packageでインポート
- 詳細は公式README参照
Turbo Visionの用途と現代的意義
- GUIツールとの差別化 :外観と動作の分離や安全性・非同期性は弱いが、 端末アプリの課題解消 に強み
- 既存資産の再利用 :ウィジェットやイベント処理を活用し、 開発効率化
- クロスプラットフォームのテキストUI :Linux/Windows間の移植性確保
Unicode・クリップボード・カラー拡張
- Unicodeサポート :既存アーキテクチャに統合、Windowsでも利用可能
- クリップボード連携 :X11/Wayland/Windowsで対応
- カラー拡張 :端末環境に応じた自動調整
まとめ
- Turbo Vision はレトロとモダンの橋渡しをする クロスプラットフォーム・テキストUIフレームワーク
- Unicode・クリップボード・カラー 等、現代的ニーズに対応
- GitHub で積極的に開発・公開、C++開発者・レトロ資産活用者に最適