Skip to main content

Qt のブリッジ技術による C# クロスプラットフォーム UI フレームワーク

コメント

このブログは「A Cross-Platform C# UI Framework via Qt's Bridging Technology」の抄訳です。 

C# の UI フレームワークには、おなじみのパターンがあります。Windows 優先、Linux は対象外、ロードマップは不透明。WPF は開発が止まり、MAUI は Linux をスキップし、WinUI 3 は Windows 専用のままです。一方、組込み Linux への需要は高まり続けており、C# チームは Linux 向けの優れた UI 選択肢の不足を感じています。C# 向けのパブリックベータとして提供中の Qt Bridges は、既存の C# コードベースを活かしながら、Qt Quick の豊富な UI ライブラリ・API、ハードウェアアクセラレーション、クロスプラットフォーム対応を利用できる UI フレームワークへのアクセスを可能にします。 

Qt Bridge for C# とは? 

Qt Bridges は、単一のフロントエンド実装をさまざまなバックエンド言語と組み合わせて使えるようにすることを目指したブリッジ技術です。C# においては、既存の C# UI フレームワークに代わるクロスプラットフォームの新しい選択肢として機能します。現在、C# ブリッジはパブリックベータとして公開されています。 

C# ブリッジは、C# のアプリケーションロジック層を Qt Quick(自動車のダッシュボードから医療機器まで世界中で実績のある UI フレームワーク)に直接接続します。既存のコードベースや .NET との連携、チームが培ってきた知識をそのまま活かせます。ハードウェアアクセラレーション、C# on Linux の本格対応、HWND 埋め込みによる段階的な WPF 移行パスもすべて含まれています。開発ワークフローはそのままに、リリースできる製品の幅が広がります。 

Qt Bridges for C# を試す

はじめ方を見る

Qt Bridge は C# UI フレームワークとしてどう機能するのか 

C# と QML を使ってアプリケーションを作成すると、このブリッジが C# の型に対してネイティブな Qt ベースのラッパーを生成します。ラッパーはオブジェクトの生成、メソッドの呼び出し、イベントの通知といった相互運用に必要なすべての処理を担います。これにより、QML から C# の型を直接参照できるようになります。以下はその例です。 

C#
public class CSharpBackend
{
    public string Data
    {
        get => "Hello from C#!";
    }
}

 

QML
ApplicationWindow {

    CSharpBackend { id: backend }

    Text { text: backend.data }
}

 

 

A "hello world" example of using Qt as a C# UI framework

 

現在公開中の Qt Bridges では、ネイティブラッパーは C++ コードとして生成されるため、C++ コンパイラ/ツールチェーンが必要です(Visual Studio の場合は C++ によるデスクトップ開発ワークロードのインストールが必要です)。現在、ビルド時に C++ ツールチェーンが不要な実行時設定型の相互運用モデルの開発も進めています。 

C# ブリッジを始める

Qt Bridges は現在、Windows および Linux 向けの C# UI フレームワークとして利用可能です。

Windows / Visual Studio で C# を使う

Windows で C# ブリッジを使い始める最も手軽な方法は、Visual Studio 拡張機能をインストールし、付属のプロジェクトテンプレートをもとに C# + QML アプリを作成することです。

Qt Bridge for C# Visual Studio 拡張機能のインストール

  1. Visual Studio の拡張機能マネージャーを開く
    • Extensions > Manage Extensions…
  2. Qt Bridge for C# 拡張機能を検索し、Install を選択する

C# + QML アプリプロジェクトの作成

  1. 新しいプロジェクトの作成を選択する
    • File > New > Project/Solution
  2. テンプレートの検索ボックスに「QML」と入力し、検索結果が表示されるまで待つ
  3. 「QML Application」プロジェクトテンプレートを選択する
  4. [次へ] をクリックする
  5. 「新しいプロジェクトの構成」ウィンドウで、プロジェクト名を設定し、[次へ] をクリックする
  6. (任意)「追加情報」ウィンドウの「サンプルコードをプロジェクトに追加する」チェックボックスをオンにすると、C# と QML のサンプルコードが含まれたプロジェクトが作成される
  7. [作成] をクリックする

Visual Studio がプロジェクトを生成したら、ソースファイルを開いてコードを確認し、F5 キーを押してビルドと実行を試してみましょう。

Linux で C# を使う

Linux で Qt Bridge for C# を始めるには、テンプレートパッケージをインストールし、C# + QML アプリテンプレートをもとに新しいプロジェクトを作成します。C# ブリッジの使用には Qt for Linux のインストールが必要です。

Qt Bridge for C# のセットアップ

テンプレートパッケージをインストールします。

  • $ dotnet new install QtGroup.Qt.Bridge.CSharp.Templates

Qt for Linux のインストール先を設定します(例)。

  • $ export QtDir=~/Qt/6.11.1/gcc_64

C# + QML アプリプロジェクトの作成

  • $ dotnet new qt --Framework net8.0 --SampleCode

アプリケーションをビルドして実行します。

  • $ dotnet run

今後の展開

ぜひ試してみてください。詳細は Qt Bridges C# ドキュメントをご覧ください。フィードバックもお待ちしています。 

Qt Bridges for C# を試す

はじめ方を見る

現在、C# ブリッジのテクノロジープレビュー(TP)への移行に向けて、機能の改善と拡充を進めています。 

また、既存のフロントエンド選択肢における Linux 向け C# サポートの不足をどのように感じているか、ぜひお聞かせください。Windows 以外の環境で開発している方にとって、本当に必要な機能を備えた C# UI フレームワークは現状存在しないというのが私たちの認識です。組込み Linux への需要が高まるなか、場当たり的な回避策で対処することの難しさを実感されているなら、ぜひその声を聞かせてください。

皆さまのフィードバックが、C# 向けの最良の UI フレームワークを育てる力になります。Qt Bridges フォーラムでご意見を共有いただき、最新情報はこちらでご登録してお待ちください。

コメント

ブログを購読

Qt 6.11 を今すぐ試そう!

最新リリースはこちらからダウンロードできます。 www.qt.io/download

 Qt 6.11 がリリースされました!アプリケーション開発者やデバイス開発者向けに、多くの新機能と改善が追加されています。 

採用情報 

現在、さまざまなポジションで採用を行っています。募集職種はこちら をご覧ください。また、Instagram をフォローして #QtPeople の働き方もぜひチェックしてください。