QtEasyTier:EasyTier に Qt の GUI をかぶせる
QtEasyTier は EasyTier をベースにした非中央集権型の遠隔ネットワークツールで、コマンドラインの EasyTier に Qt の GUI をかぶせ、ワンクリックでネットワークを立ち上げられる。原作者は myqfeng(gitee リポジトリはこちら)で、これは自分の fork。普段使いにちょうどよく、実装を研究するためにも手元に置いている。
ネットワーク構築まわりでは色々な方式を試してきた。中央サーバーに依存するタイプはそのサーバーが落ちると全部切れるし、レイテンシも良くない。EasyTier は非中央集権型で、各ノードが対等、特定の中央マシンに依存しない。コアは Rust + Tokio で書かれている。難点は本体がコマンドラインで、パラメータが山ほどあること。ちょっと友人を呼んで繋ぐには面倒だ。QtEasyTier はこの入口の問題を解決するためにある。
インターフェースは純粋な Qt C++ で、Chromium も Webview も抱え込んでおらず、日常の使用で 50MB を切る。最近のデスクトップツールは何かというとブラウザエンジンを丸ごと同梱し、小さなネットワークツールでも数百 MB を食ってしまうものが多い。この抑制の効かせ方は貴重だ。UI は KDE の Breeze から移植されている。独自にコントロールを作り込むのではなく、Plasma の既存のスタイルをそのまま持ってきており、手間も少なく見た目も良い。
機能面では EasyTier のほとんどの能力を露出させており、必要に応じて仮想ネットワークを構成できる。同時にワンクリック接続も残してある。ホストがサービスを起動して部屋番号を取得し、それを配る。ゲストは番号を入力すれば同じネットワークに入れる。複雑なコアと分かりやすい入口というこの階層構成は、能力を削ることもなく、初心者にも配慮している。

自分でビルドするには Qt 6(作者の推奨は 6.10.1)、CMake 3.5+、C++20 対応の llvm-mingw が必要で、いつもの cmake 三連 cmake .. / --build / --install を一通り走らせればよい。一つ覚えておく価値があるのは、-DSAVE_CONF_IN_APP_DIR=true を付けるとポータブル版としてビルドでき、設定がシステムパスではなくプログラムのディレクトリに書き込まれる点。さらにスタートアップ登録も無効化され、システムを汚さない。現時点では Windows 10/11 のみ対応で、Linux は計画中、Mac は作者が端末を持っていないため今は保留。ライセンスは GPLv3。
深く踏み込みたいなら原リポジトリを直接見に行くといい、門を間違えないように。