Nim Desktop Framework
Nimino
軽く、薄く、OSに素直に。
Nimをホスト言語に、OS公式APIへの薄いFFIでネイティブWindowとWebViewを扱う、軽量なクロスプラットフォームWeb UIデスクトップアプリ基盤。Tauriの軽量アーキテクチャとPakeの「URLからアプリ生成」を参考に、Nimの言語特性で再設計しています。
NimでつくるTauri風の軽量WebViewデスクトップ基盤。nimino-packでURLから配布物を生成、Chromium非同梱。
- 同梱ランタイム
- 0
- 初期ターゲット
- Windows / Linux / WSL
Key points
- Win32+WebView2 / GTK+WebKitGTKへ直接接続する薄いネイティブ層
- Chromium非同梱 — WebView2 EvergreenとシステムWebKitGTKを利用
- nimino-packがURLまたはマニフェストから配布物を生成
Challenge
デスクトップアプリは重すぎる
Electron系はChromium同梱でアプリが数百MBに。既存のWebViewラッパーは抽象層が厚く、OSの細部に手が届きにくい。
- Chromium・Node.js同梱でバイナリが肥大化し、メモリ消費も大きい
- 汎用WebViewラッパーは抽象層が厚く、トレイ・通知・ダイアログ等OSの細部に届きにくい
- WSLで開発するNimプロセスとWindows GUIの間に分断がある
Niminoは、Nimをホスト言語に、OS公式APIへの薄いFFIでネイティブWindowとWebViewを扱う軽量なクロスプラットフォームデスクトップアプリ基盤です。Tauriの「OS標準WebViewで軽量に」という思想と、Pakeの「URLから1コマンドでアプリ生成」という体験を参考に、ElectronやCEFのような重いランタイムを一切同梱しない構成をNimで実現します。
現在はAsopitech Laboのインキュベーションプロジェクトとして、Windows・ネイティブLinux・WSLを初期ターゲットに開発中です。GitHub Issuesでバグ報告や機能リクエストを受け付けています。
OS標準WebView + 薄いFFIという選択
NiminoはChromiumを同梱せず、WindowsはWebView2 Evergreen Runtime、LinuxはシステムのWebKitGTKを前提に、Win32/GTKへ直接FFIで接続します。ElectronやTauri、CEFといった既存ラッパーに依存せず、Nimの薄い層だけでネイティブWindowとWebViewを制御します。
- Win32+WebView2、GTK+WebKitGTKを直接利用 — 中間フレームワーク不使用
- Pake風の`nimino-pack`がURL/マニフェストからアプリと配布物を生成
- WSLのNimプロセスをWindows GUIホストへ認証付きIPCで接続
- Chromium同梱
- なし
- コンポーネント
- 4
Capabilities
3つのレイヤー
薄いネイティブ層、アプリ基盤、パッケージングを分離した設計。
薄いネイティブ層
nimino-native
- Win32 + WebView2を直接利用
- GTK + WebKitGTKを直接利用
- Window・WebView・低水準イベント・Capability照会に限定
アプリ基盤
nimino-core
- ライフサイクル・RPC・プロファイル管理
- ナビゲーション・権限・ダウンロードポリシー
- ローカルアセット境界、トレイ・通知・OSファイルダイアログ
パッケージング
nimino-pack
- URLまたはマニフェストからアプリ生成(Pake風)
- Debian/RPM・AppImage・Flatpak・NSIS setupを生成
- CycloneDX SBOMを同時生成
Components
4つのコンポーネント
役割を明確に分離した4モジュール構成。
nimino-native
Win32+WebView2、GTK+WebKitGTKを直接利用する薄いWindow/WebView層
nimino-core
アプリライフサイクル、RPC、プロファイル、各種ポリシーを提供するアプリ基盤
nimino-wsl
WSLのNimプロセスとWindows GUIホストを認証付きIPCで接続するアダプター
nimino-pack
URLまたはマニフェストからアプリと配布物を生成するCLI
Tech Stack
技術スタック
Nimの薄いFFIとOS標準コンポーネントで構成。
ホスト言語
Nim
OS統合
OS標準WebView
使わないもの
依存を持たない設計
Status
開発状況
M0〜M4のプロファイル、権限・ナビゲーションポリシー、トレイ・通知、OSファイルダイアログ、Linux/Windows向け配布物生成までを実装済み。macOS対応、署名済みMSI、Flatpak実ビルドなどは今後の課題です。Asopitech Laboのインキュベーションプロジェクトとして開発中。
Get Involved
開発に参加する
Niminoはオープンソース(MIT)で開発中です。GitHubでスターを付けて進捗を追跡してください。