NTTレゾナントテクノロジー、Kotlin・JavaでWindowsネイティブUIを実現するOSSライブラリ「WinUI4K」を公開
NTTレゾナントテクノロジー株式会社は、プログラミング言語KotlinおよびJavaからWindowsの最新GUIフレームワーク「WinUI」を直接利用できるオープンソースソフトウェア(OSS)ライブラリ「WinUI4K」をApache License 2.0でGitHubに公開しました。
WinUIは、MicrosoftがWindows 11世代の標準として推進するGUIフレームワークであり、現代的なデザインのGUI部品を提供します。WinUI4Kは、C#やVisual Studio、独自のブリッジDLLを必要とせず、KotlinやJavaのみでWindowsネイティブのデスクトップアプリケーション開発を可能にします。このライブラリは、JVM(JavaやKotlinを動かす実行基盤)の外部関数呼び出し機能(FFI)を利用し、Windowsの内部API基盤であるWinRT ABIを直接呼び出す仕組みです。
WinUI4Kの主な特徴は以下の通りです。
-
Windowsの最新GUI「WinUI」をC#ではなくKotlin・Javaで記述可能。
-
Visual Studio、.NET SDK、ブリッジDLLが不要。JDK(Javaの開発キット)があれば開発を開始できる。
-
画面部品の組み立て方がSwing(JavaのGUIツールキット)に類似しており、既存のSwing/Javaの知識をそのまま活用できる。
開発の背景:Windowsデスクトップ開発における「言語の壁」
MicrosoftはWinUIを今後のWindowsアプリケーション画面の中心に据えていますが、公式に想定される開発言語はC++やC#です。業務システムで広く利用されているJavaやKotlinといったJVM系言語からは、これまでWinUIを実用的に扱う手段が限られていました。これにより、Java/Kotlinの資産を持つ開発現場がWindowsネイティブUIを採用する場合、C#への全面的な書き換えや、Web技術を用いたElectronのような別方式への移行を迫られることが課題でした。
WinUI4Kは、この「言語の壁」を取り払い、JavaやKotlinの知識と資産を保持したままWindowsのネイティブUIを利用できるようにすることを目指して開発されました。
WinUI4Kの技術的特徴
WinUI4Kは、以下の点で従来のWinUI開発と異なります。

数字で見るWinUI4K
-
60超のWinUIコントロール(GUI部品)を提供。ボタン、入力欄、ナビゲーション、吹き出しヒント、ウィンドウ制御など多岐にわたる。
-
3種類のFFIバックエンド(Panama、JNA、JNR)を同梱し、Javaのバージョンに合わせて選択可能。
-
3アーキテクチャ(x64 / x86 / arm64)のWindowsに対応(FFIバックエンドにより対応範囲は異なる)。
-
Java 8以降で動作。Java 22以降では、Java標準の外部関数API「Panama」を利用する。
開発チームがこだわった点
-
ブリッジDLLなしのCOM連携: WindowsのCOM/WinRTはC++やC#からの利用が前提ですが、WinUI4KはJVMのFFIのみでCOM連携の細部を実装しています。
-
Swing/JavaFXの知識をそのまま流用: Swingと同様のAPI感覚で部品を組み立てられ、新しいUIの概念を習得し直す必要がありません。
-
推測値ゼロのABI: COM呼び出しに必要な識別子や関数テーブル上の位置は、Windowsの型情報ファイルから機械的に抽出された値を使用しています。
-
WebView2でブラウザ機能も: WWebViewを利用してMicrosoft Edgeベースのブラウザ部品を組み込み、Webページの表示やHTML/CSS/JavaScriptによるUIをアプリ内に統合できます。
-
コルーチン対応(拡張ライブラリ): 拡張ライブラリ「WinUI4K-extension-coroutines」を追加すると、KotlinのコルーチンからUIスレッドへの安全な切り替えや、ネイティブタイマーでの非同期処理が可能になります。
-
アクセシビリティ: WinUIネイティブのコントロールを直接利用するため、OS標準のスクリーンリーダーなどのアクセシビリティ機能がそのまま機能します。
WinUI4Kはこんな方に向いています
-
SwingやJavaFXで開発されたWindows業務アプリケーションの見た目をWinUIに刷新したい開発者。
-
C#や.NETの新規学習を避け、慣れたJava/KotlinでWindowsアプリケーションを開発したい開発者。
-
Web技術ベースのElectronの配布サイズやメモリ使用量に懸念がある開発者。
-
KotlinのコルーチンやJavaの最新機能を活用し、モダンなデスクトップアプリケーションを開発したい開発者。
まず動かしてみる
必要なのはJDK 25(x64)のみです。Visual Studio、C++ビルドツール、.NET SDKは不要です。
以下のコマンドを実行することで、WinUI4Kのサンプルギャラリー(全コントロールのデモアプリケーション)を起動できます。

WinUIを動作させるための実行基盤(Windows App SDKランタイム)が未導入の場合でも、WinUI4Kが起動時に自動でセットアップします。ビルドが完了すると、Fluent DesignのWindowsアプリケーションが起動します。同梱のサンプルギャラリーでは、60種類以上のGUIコントロールをカテゴリ別に確認し、その場で挙動を試すことが可能です。
また、以下のコード例は、テキスト入力欄とボタンを配置し、ボタンクリックで挨拶を表示するシンプルなアプリケーションです。

このコードにより、ネイティブのWindowsウィンドウが開かれ、ボタンが押されるとテキストが更新されます。Java 8とJNA、またはJava 8とJNRで動作させるためのオプションも提供されており、古いJava環境での動作確認も容易です。
開発担当者コメント
開発担当者の久納 孝治氏は、「WinUIは美しい画面を簡単に作成できる一方で、C#とVisual Studioが前提であり、Java/Kotlinの現場からは距離がありました。WinUI4Kは、この距離をなくすための研究として始まりました。Java/Kotlinで真のWindowsネイティブUIを実現できるかを検証するため、60を超えるGUIコントロールを整備し、Java 8環境でも利用可能にしました。Swing経験者であれば直感的にコードを理解できるでしょう。WindowsネイティブUI開発で同様の課題を抱える方々に、ぜひ一度試していただきたいと考えています。」と述べています。
今後の展開
WinUI4Kは、今後も対応GUIコントロールの拡充とWinUI本体の進化への追随を継続します。さらに、SwingやJavaFXの資産をより直接的に移行できるラッパーの整備や、利用頻度の高いWinRT機能への対応を進める予定です。日本語でのサポートやドキュメント整備にも注力し、国内の開発現場で使いやすいOSSを目指します。
不具合報告や機能要望、プルリクエストはGitHubのIssueで受け付けています。
プロジェクト情報
-
名称: WinUI4K(WinUI for Kotlin & Java)
-
ライセンス: Apache License 2.0(商用・非商用ともに無償で利用可能)
-
動作環境: Windows 11(x64)。Windows 10 1809以降でも動作する想定。
-
必要環境: JDK 25(x64)でビルド/起動。ライブラリ自体はJava 8以降で動作。
-
言語/技術: Kotlin、JVMのFFI(Panama / JNA / JNR)、WinRT、Windows App SDK。
会社概要
-
社名: NTTレゾナントテクノロジー株式会社
-
所在地: 東京都千代田区大手町1-5-1 大手町ファーストスクエア イーストタワー12F
-
代表者: 三澤 淳志
-
設立: 2012年4月
-
主なサービス: インターネット経由で実機のスマートフォンを利用できるテスト端末クラウドサービス「Remote TestKit」


コメント