58 ポイント 投稿者 GN⁺ 2026-02-24 | 5件のコメント | WhatsAppで共有
  • メインプロセスに Bun、ネイティブバインディングに Zig を使う TypeScriptベースのデスクトップアプリフレームワーク
  • macOS、Windows、Ubuntu をすべてサポートし、インストーラー・自動更新・差分パッチアーティファクトを自動生成
  • ウィンドウ制御、メニュー、ショートカット、クリップボード、ダイアログ、セッションストレージなど 完全なデスクトップ機能セット を提供し、OOPIFベースの安定したWebView を実装
  • 内部構造は BunのFFIと共有メモリモデル を活用し、マルチプロセス環境でも効率を維持
  • ElectronとTauriの限界を経験した開発者が、2年間にわたり Zig、C、C++、Objective-C を学びながら自ら開発
  • 5分以内にコーディングを始め、10分以内にデプロイまで可能な 統合ワークフロー を目標

Electrobun プロジェクト概要と目標

  • Bun でメインプロセスを実行し、WebView TypeScript をバンドルし、Zig でネイティブバインディングを書く構成
  • メインプロセスとWebViewの両方を TypeScript で記述しつつ、プロセス間の 分離(isolation) を保ちながら高速で型付きのRPC通信を提供
  • 自己展開型アプリバンドルのサイズは約 12MB(システムWebView利用時、ほとんどが Bun ランタイムのサイズ)
  • bsdiff ベースの差分更新により、パッチサイズを最小 14KB まで削減可能
  • 5分以内にコーディングを開始し、10分以内にデプロイまで完了できる 単一の統合ワークフロー の提供が目標
  • npx electrobun init コマンドでテンプレートベースのプロジェクトを開始可能

制作背景

  • Visual Basic 6 の時代からデスクトップアプリを作っており、Adobe AIR の時代に複数のスタートアップ製品を数千人へ配布した経験が原点
  • 20年以上にわたりスタートアップの初期エンジニアとしてユニコーン規模の製品を構築・拡張してきたが、デスクトップ開発環境はむしろ後退
  • ハイブリッドなWebブラウザ+コードエディタ+PTYターミナルである co(lab) を作る中であまりに多くの不便にぶつかり、自らフレームワークを作る決断をした
  • 最初のバージョンは Electron で作ったが、コード署名・公証・配布・更新の過程は、アプリ開発よりフレームワークと戦っている感覚だった
  • Webのような 継続的デプロイ(continuous shipping) を望んでいたが、既存のツールチェーンはそれを必要以上に難しくしていた
  • Tauri も試したが、Rust はすべての開発者に適しているわけではないと判断し、当時 Bun は 1.0 リリース数か月前の状態だったため自ら開発に着手

macOSからクロスプラットフォームへ

  • 当初は macOS アプリのみビルド可能だったが、現在は macOS、Windows、Ubuntu のすべてでビルド・配布を第一級にサポート
  • インストーラー、自動更新アーティファクト、差分パッチ(differential patches) がすべて自動生成される
  • 静的ホスト(R2、S3、GitHub Releases)を接続するだけで配布完了
  • 差分更新は、C から Zig へ移植し SIMD と zstd で最適化した zig-bsdiff が担当
  • BunのFFI が安定化したことで、従来書いていた Zig FFI 層の大半を Bun に置き換え
  • アーキテクチャは前向きに転換し、Bun がワーカー生成時に 共有メモリ を使うため、マルチプロセスでも効率を維持

リリース済み機能

  • 現在は完全なフレームワークとして、クロスプラットフォームのウィンドウ制御、メニュー、ショートカット(accelerators)、グローバルショートカット、クリップボード、ダイアログ、WebViewパーティション、セッションストレージ、ページ内検索(find-in-page)、バンドル・更新ツーリングなどを提供
  • OOPIF(Out-of-Process Iframe) 実装が実際に動作するレベルに到達
    • Electron の <webview> タグは Chromium で deprecated になったが、いまだ代替手段は用意されていない状態
    • <electrobun-webview> は、DOMポジショニング、プロセス分離、レイヤリングが正常に動作する真の "super iframe"
    • カーソルのちらつき(cursor flicker)問題なしに、ブラウザエンジンのパッチなしでクロスプラットフォーム動作

プラットフォーム対応状況

  • macOS 14+: 公式サポート
  • Windows 11+: 公式サポート
  • Ubuntu 22.04+: 公式サポート
  • その他の Linux ディストリビューション(gtk3、webkit2gtk-4.1): コミュニティサポート

今後の計画

  • co(lab) を Electrobun 上に 全面的に再構築 し終え、v1 安定化を基盤に co(lab) 開発へ本格的に集中
  • フレームワークが プラットフォーム変動(platform churn) に揺さぶられることなく、野心的な長期プロダクトを構築できるほど安定化したことが核心目標
  • Discord コミュニティは成長中で、ベータテスト・Issue提出・フィードバックで貢献したユーザーたちがフレームワーク形成に寄与
  • Electrobun は Blackboard が公開する最初の主要プロダクト

5件のコメント

 
myname1260 2026-03-03

co(lab) の全面的な書き直しと書かれていたので、Google と一緒に ipynb 実行向けクラウドの安定性を改善してくれるものだと思ったが、まったく関係のない Blackboard チームの開発プロジェクトだった

それでも、npx でインストールする OOPIF にアクセスできるのは重要な経験に見える

 
geekbini 2026-02-24

「コード署名・公証・配布・アップデートの過程が、アプリ開発よりフレームワークと戦っている感覚」

本文の制作背景に上記のような言及がありますが、
実際のアプリ開発より配布のほうに多くの工数がかかる場合があります。
この問題を解決したという点だけでも高く評価します。

 
bus710 2026-02-24

Flutter に zig を組み合わせるのも、かなり簡単にできるようですね。
Dart/C FFI のドキュメントと大きな違いもなく…

 
mammal 2026-02-24

> なぜ主要な Linux ディストリビューションが標準の WebView を提供していないのか疑問です。アプリのエコシステム拡大の大きな障害です。

GUI 環境の OS であれば、今や WebView は標準コンポーネントとして定着すべきだと思います。

 
GN⁺ 2026-02-24
Hacker Newsのコメント
  • こんにちは、Electrobun の作者です
    今回 v1 安定版をリリースしました。アーキテクチャは固定されており、もし バグ や Electron/Tauri で使っていた API が必要なら、GitHub issue に残してもらえれば優先的に対応する予定です
    この1か月で5万行のコードを修正し、安定化作業を完了しました
    Electrobun で作ったオープンソースプロジェクト Colab(Webブラウザ + コードエディタ + PTY ターミナル)の デモ動画 もあります
    Electrobun は基本的にシステム WebView を使いますが、bundleCEF オプションで CEF を含めることもできます。構造的に WebView に依存しないため、Servo や Ladybird の準備が整えばすぐに置き換え可能です
    また各リリースごとに zstd ベースの自動圧縮パッケージ を生成し、初回ダウンロードサイズを減らしつつ、アップデートは 14KB 程度の小ささに保てます

    • 型定義がドキュメントと一致しているのか気になります。たとえば BrowserWindow に partition キーを入れると TypeScript エラーが発生します
    • Electrobun を作ってくれてありがとうという感謝
  • Electrobun はとても有望に見えます。次のプロジェクトはこれで作る予定です
    フル TypeScript スタック の中では最も生産性が高いです。Rust や長いコンパイル工程なしに、Electron より軽くて速い代替を得られるのがうれしいです

    • 最初の Tauri アプリ をちょうど完成させたところですが、Windows ビルドにあまりに時間がかかって驚きました。Electrobun をぜひ試してみるつもりです
  • Discord では多くの ゲーム開発者 が Electrobun でデスクトップゲームを試しています
    Steam のインディーゲーム市場で Electron の一部を置き換える可能性があります
    特に bun --watch game.ts による 即時リロード 付きの TypeScript ゲーム開発体験はとても速くて滑らかです

    • Web 開発をよくする立場からすると、ツール云々を抜きにしても Bun は 性能面で大きな飛躍 です
    • Electron 製のゲームはそれほど多くありません。CrossCode くらいしか思い出せません。大半は Unity や Godot を使っています
    • どの Discord サーバーでそうした実験が行われているのか気になります。参加したいです
    • Node も今では watch モード と TypeScript 実行をサポートしています
  • Tauri の主な問題は、システム WebView の品質 が OS ごとに違う点です
    Linux には公式の WebView がなく、Windows 7 や初期の 10 では Edge WebView を使いません。こうした違いのせいで起動に20秒以上かかることもあります
    100MB 節約するためにこうしたトレードオフを受け入れるべきなのか疑問です
    ほとんどのユーザーは高速なインターネットを使っているので、ダウンロード速度は大きな問題ではありません
    Electrobun が 内蔵 Chromium レンダラー をサポートしているのか気になりましたが、ドキュメントでは明確ではありませんでした

    • Electrobun は基本的にシステム WebView を使いますが、必要に応じて CEF (Chromium) をバンドルできます。公式ドキュメント に明記されています
    • 製品サイトにも “System’s native webview as renderer, CEF optional” と書かれています。つまり選択可能です
    • Windows で Tauri アプリを作るときは embedded bootstrapper を使う必要がありました。Electrobun はこうした問題をうまく解決しているようでうれしいです
    • なぜ主要な Linux ディストリビューションが標準で WebView を提供しないのか疑問です。アプリのエコシステム拡大における大きな障害です
    • Tauri でも CEF ベース版が開発中です。関連ブランチ を参照できます。OS WebView の品質が低いため、このアプローチの方がはるかに良い改善策になりそうです
  • タイトルに、この記事が プロジェクト回顧ブログ記事 だと明記してほしかったです
    実際のプロジェクトは 公式ドキュメントへのリンク で見るほうが適切です

  • プロジェクトのメインページは こちら です
    インターフェースはすっきりして見えますし、自分は Zig に慣れているので Rust より取っつきやすそうです

  • 今週会社で新しい Electron アプリ を配布する予定ですが、Electrobun があと1年早く出ていてくれたらよかったのにと思います
    Electron Builder がアップデートや署名の過程をある程度簡略化してくれるとはいえ、依然として面倒です
    次の個人プロジェクトでは Electrobun を試してみるつもりです

  • 記事では notarizing と stapling の問題に触れていましたが、Xcode を使わないと Apple はこの工程を非常に難しくしています
    Windows でも CI 自動化は簡単ではありません。Electrobun がより良いソリューションを提供するならとても興味があります

    • ほとんどの場合、デフォルト設定で対応できます。環境変数をいくつか設定して notarize: true でビルドすれば大丈夫です
      Electrobun で署名と公証を何度もやりましたが問題ありませんでした。複雑なケース向けの escape hatch も用意されています
      助けが必要なら Discord で DM を送ってください。(Electrobun 関係者ではありませんが、Apple の公証システムのつらさはよくわかっています)
  • Electron アプリが 500MB 以上なら、Electrobun の 14MB は本当に 小さいサイズ に感じられます

    • 一般的な macOS 向け Electron アプリ(DMG)は約 80MB ですが、Electrobun は約 16MB 程度です
  • Ubuntu 以外のディストリビューションが現時点では サポート対象外 なのは残念です
    関連する議論は issue コメント で確認できます