Web開発
Denoデスクトップ
要約
Deno Desktopは、Denoプロジェクトを自己完結型のデスクトップアプリケーションに変換するツールです。ウェブ技術をUIに活用し、既存のデスクトップアプリ開発フレームワーク(Electronなど)の課題(巨大なバイナリ、プラットフォームサポートの欠如など)を解決することを目指しています。Deno 2.9で登場予定で、既存のウェブプロジェクトをデスクトップアプリとして簡単にデプロイできる自動フレームワーク検出、小規模なバイナリ、組み込みの自動更新機能などが特徴です。
全文翻訳
このページでは
Deno Desktopを選ぶ理由
こんにちは、デスクトップ
このセクションの内容
Deno Desktopは、Denoプロジェクト(単一のTypeScriptファイルからNext.jsアプリまで)を自己完結型のデスクトップアプリケーションに変換します。出力されるのは、コード、Denoランタイム、Webレンダリングエンジンをプラットフォームごとに1つのバンドルにまとめた再配布可能なバイナリです。
Deno 2.9で登場
Deno DesktopはDeno v2.9.0で出荷され、まだ安定版リリースにはなっていません。今すぐ試すには、deno upgrade canaryを実行してカナリアビルドをインストールしてください。コマンド、設定キー、TypeScript APIは、機能が安定するまでに変更される可能性があります。
Deno Desktopを選ぶ理由
Webテクノロジーは、世界で最も広く知られているUIツールキットです。Webスタック(Electron、Tauri、Electrobun)上に構築されたデスクトップアプリはこれを利用していますが、それぞれに付き合わなければならないトレードオフがあります。例えば、巨大なバイナリ、プラットフォームサポートの欠如、JavaScriptエコシステムの欠如、組み込みの更新機能の欠如、フレームワーク統合の欠如などです。
Deno Desktopはこれらのトレードオフについて独自の意見を持っています:
デフォルトで小さい、完全なNode互換性。デフォルトのWebViewバックエンドは、OS自身のwebviewを使用してバイナリを小さく保ち、DenoのNode互換レイヤーを通じてnpmエコシステム全体を利用できます。macOS、Windows、Linuxで同一のレンダリングが必要な場合は、バンドルされたChromium(CEF)バックエンドを選択できます。
フレームワークの自動検出。Next.js、Astro、Fresh、Remix、Nuxt、SvelteKit、SolidStart、TanStack Start、またはVite SSRプロジェクトにDeno Desktopを向ければ、リリースモードではプロダクションサーバーが、--hmrを使用すればホットリロード付きの開発サーバーが動作します。既存のWebプロジェクトをデスクトップに移行するためにコード変更は不要です。
IPCではなくインプロセスバインディング。バックエンドとUIの通信は、ソケットベースのIPCではなく、インプロセスチャネルを介して行われます。値はコール境界を越える際にエンコードされますが、Denoコードとwebviewの間でプロセス間ラウンドトリップは発生しません。
1台のマシンからクロスコンパイル。同じマシンでmacOS、Windows、Linux向けにビルドできます。バックエンドは必要に応じてダウンロードされ、ローカルでビルドされることはありません。
組み込みのバイナリ差分自動更新。単一のlatest.jsonマニフェストとbsdiffパッチを配布するだけで、ランタイムが自動的にポーリングし、適用し、起動失敗時にはロールバックします。
こんにちは、デスクトップ
1つのファイルでデスクトップアプリを作成する:
`main.ts`
```typescript
Deno.serve(() => new Response("<h1>Hello, desktop</h1>", { headers: { "content-type": "text/html" }, }) );
```
`>_deno desktop main.ts`
コンパイルされたバイナリは、Deno.serve()ハンドラーにバインドされたローカルHTTPサーバーを指すウィンドウを開きます。直接実行してください:
`>_./main # macOS / Linux`
`.
main.exe # Windows`
Deno.serve()は、webviewがナビゲートするアドレスに自動的にバインドされるため、ポートやホスト名を渡す必要はありません。詳細は「HTTP Serving」を参照してください。
このセクションの内容
設定:deno.json内のdesktopブロック。
バックエンド:CEF、webview、raw;選択方法。
HTTP Serving:Deno.serve()の統合とサービスモデル。
フレームワーク:Next.js、Astro、Fresh、Remix、Nuxt、SvelteKitなど。
Windows:Deno.BrowserWindowライフサイクル、複数ウィンドウ、イベント。
バインディング:bindings.<name>()を介してwebviewからDenoコードを呼び出す。
メニュー:アプリケーションおよびコンテキストメニュー。
トレイとドック:システムステータスアイコンとmacOSドック。
ダイアログ:prompt()、alert()、confirm()をネイティブポップアップとして。
通知:Web Notification APIを介したネイティブOS通知。
ホットモジュールリプレースメント:フレームワークアプリおよび非フレームワークアプリ用の--hmr。
DevTools:Denoランタイムとwebviewの両方にアタッチされた統合DevTools。
自動更新:Deno.autoUpdate()、マニフェスト、bsdiff、ロールバック。
エラー報告:キャッチされない例外とパニックのキャプチャ。
配布:クロスコンパイル、出力形式、インストーラー。
比較:Deno DesktopとElectron、Tauri、Electrobun、Dioxusとの関係。
Deno Desktop CLIリファレンス:コマンド、そのフラグ、deno.jsonデスクトップスキーマ。