suji - Electronの代替
(github.com/ohah)Zigで作ったElectronライクなものです。
タイトルは実は格好よく書きましたが、要するにZig製のデスクトップフレームワークです。
Electronは、デスクトップアプリを開発するなら避けて通れないアプリだと思っています。
特にMacとWindowsの環境を同時に考慮しつつ、高い生産性を得たいという点では、Electronほど魅力のあるフレームワークはないと思います。
JSエコシステムをそのまま活用でき、市場でも実証されており(VS Code、Slack、Discordなど)、
その汎用性と長所の大きさだけに使いどころも多く、短所もよく知られていて批判も多いフレームワークですね。
私もそうした不満を持つユーザー層の一人で、
それが嫌でTauriも使ってみましたが、TauriもシステムWebViewという
慢性的な限界(?)があり、バックエンド言語もTauriを使うとRustに制限され、
Electronを使うとNodeに制限され、
Wailsを使うとGoに制限されるのが嫌でした。
もちろんFFIを使えば他の言語も入れられますが……
実際、特に最近のように言語の壁がかなり低くなった時代に、フレームワークのせいで言語制約があるのが嫌でした。
zig, rust, go, lua, node
をそれぞれのバックエンド言語として選べて、同時に複数の言語を選んでバックエンド言語を複数構成にすることもできます。
バックエンド言語は今後も可能な限り追加していくつもりです。
PythonやRubyもです。
複数の言語を入れられる分、それぞれのバックエンド言語同士でIPCを通じて通信できます。
たとえばsqliteを呼び出すとき、Nodeでは
better-sqlite3をインストールして使う必要がありますが、sqliteのような場合は組み込みプラグインとして含まれており、NodeがZigを直接呼び出して使うという特徴を持っています。
モバイル向けにもビルド可能な状態ですが、まだMacを除くそれ以外は不安定です。
iOSだけはポリシー上、バックエンド言語としてNodeを使えません。
現在Macは実際にビルドおよび製品開発が可能な状態で、WindowsとLinuxは一部補完が必要です。
モバイルも対応予定です。
Tauriで経験したシステムWebViewの欠点のため、
MacではシステムWebViewを使うつもりはありません。
APIや使い方はできるだけElectronのAPIと同じになるように整えており、
AIが開発しやすいドキュメントと仕様があるので、実際にはドキュメントのリンクだけ貼っておけばE2Eまで自動で検証してくれるため、他の競合(?)フレームワークに比べてAI生産性が圧倒的に高い(?)フレームワークだと言えるかもしれません。
実のところ、単にElectronとTauriにうんざりして作ったもので、
個人的には今ではDXツールやデスクトップアプリを作るときはsujiを使って開発しています。
私の測定が間違っている可能性もありますが、FFI経由の呼び出しよりこの構造のほうが高速に言語間通信できる形になっていて、その点でも満足しています。
簡単なアプリ制作や、言語に制約されずに何かを素早く作るという点では、ElectronやTauriよりも速いと個人的には感じていて満足していますが、
これが単に自分で作ったものだから満足しているだけなのかも気になるし、ほかの方々はこういうアイデアやアプローチをどう思うのか聞いてみたくて投稿しました!
まだコメントはありません。