Transcript
00:00:00これはXero Native。VercelによるZigベースのネイティブアプリビルダーで、システムのWebビューを使うか
00:00:05ElectronのようにChromium全体を同梱して、デスクトップやモバイル向けに超軽量なバイナリを提供します。
00:00:12開発時のリビルドも一瞬です。
00:00:14しかし、適切に使いこなすためにZigの知識が必要だという点は、JS開発者を遠ざけてしまうでしょうか?
00:00:18チャンネル登録をして、一緒に確かめていきましょう。
00:00:20BUNチームはZigからRustへ移行しつつありますが、Zigは依然として非常にクールな言語です。
00:00:28ボローチェッカーやライフタイムがなく、C言語を直接呼び出せるため、あらゆるCライブラリを
00:00:35グルーコードなしでインポートするだけで使えます。
00:00:37また、JavaScript開発者にとっても十分に習得可能な可読性を備えています。
00:00:39実際、私がゼロからZigのプログラミングを学ぶ様子を見たい方は、コメントで教えてください。
00:00:44それはかなり楽しい試みになると思います。
00:00:46基本的には、Xero NativeはフロントエンドをレンダリングするWebビューをホストする、薄いZigのシェルです。
00:00:51JSONブリッジを使用して、Webビュー内のJSとネイティブのZig層が相互に通信できるようになっており、
00:00:58それによってOSレベルのAPIにアクセスできるようになっています。
00:01:01「それってElectroBUNみたいだね」と思うかもしれませんが、まさにその通りです。
00:01:04ただし、決定的な違いが一つあります。それについては後ほど動画で説明します。
00:01:07まずは簡単なデモを見てみましょう。
00:01:10始めにZigをインストールする必要があります。私はMiezを使いましたが、
00:01:13Brewでも可能です。次にXero Nativeをインストールします。
00:01:16両方の準備ができたら、「xero-native init」コマンドで新しいプロジェクトを作成できます。
00:01:22プロジェクト名は何でも構いません。
00:01:25frontendフラグにReactを指定して、Vite Reactプロジェクトをインストールします。
00:01:30Svelte、Vue、Next、あるいはただのViteも選択可能です。
00:01:34実行すると、Xero Nativeがいくつかのディレクトリを追加します。
00:01:37プロジェクトに入ると、app.zonファイルが見えます。これは後で説明します。
00:01:43アイコンなどの静的資産用フォルダ、Zigビルドグラフ用のbuild.zig、
00:01:48JSブリッジ、Webエンジン、そしてフロントエンドコードを含むfrontendディレクトリがあります。
00:01:54中を見ると、JS開発者におなじみのファイルが並んでいます。
00:01:58ここで「zig build run」を実行すると、依存関係がインストールされ、アプリが別ウィンドウで開きます。
00:02:04既存のJavaScriptプロジェクトにXero Nativeを導入したい場合は、
00:02:08最小構成のVite版を使用し、frontendディレクトリの中身を自分のアプリのコードに入れ替えるのがお勧めです。
00:02:15Xero Nativeには、フロントエンドのライフサイクル全体を管理する優れた開発サーバーもあります。
00:02:19「zig build dev」を実行すると、バイナリをコンパイルしつつ開発サーバーが起動します。
00:02:24コードを編集すれば、ネイティブアプリにリアルタイムで反映されます。
00:02:28「zig build package」を実行すれば、配布用のネイティブアプリをビルドできます。
00:02:33zig-out/packageディレクトリに出力されたサイズはわずか2.9MB。非常に小さいですね。
00:02:39中には1MB以下に抑えられたケースもあるようです。
00:02:43アイコンや名前、Webエンジンを変更したい場合はどうすればいいでしょうか?
00:02:46そこでapp.zonファイルの出番です。アイコン、プロジェクト名、実行エンジン、ウィンドウサイズなどを設定できます。
00:02:55以上がXero Nativeの非常に簡単な概要です。
00:02:58システムトレイ、コード署名、iOS/Android向け埋め込みアプリなど、紹介しきれなかった機能が山ほどあります。
00:03:05もっと使い込んでみる必要がありそうです。また別の動画にするかもしれません。
00:03:09Xero Nativeは素晴らしいですが、同じくOSネイティブのWebビューを使うElectrobunとはどう違うのでしょうか?
00:03:17Electrobunでは、メインプロセスの記述にTypeScriptが必要なため、Bun自体が実行環境となります。
00:03:24Zigバイナリがアプリを起動しますが、コードはBunのWebワーカー内で動き、BunのFFI、C++、Objective-C層を介してネイティブAPIと通信します。
00:03:37一方 Xero Nativeは Zigのバイナリだけで十分です JavaScriptやBunも不要で ZigだけでOSレベルのAPIやCライブラリと シンプルなCインポートを介して通信できます
00:03:50結果として、Electrobunよりも極限まで薄いネイティブシェルを実現しています。
00:03:54ただ現時点では、望み通りの動作をさせるには少しZigを書くか、app.zonの設定を変更する必要があるかもしれません。
00:04:03また、Electrobunほど多機能ではなく、タイトルバーのスタイル変更やカスタムメニュー項目の追加などは、
00:04:11残念ながら現時点のapp.zonファイルではサポートされていません。
00:04:15macOSでのパッケージビルドが初回でうまくいかず、Issueを上げましたが、私のスキル不足かもしれません。
00:04:22とはいえ、開発チームは機能追加や問題修正、そしてモバイル対応に向けて懸命に取り組んでいるはずです。
00:04:29待ちきれないなら、オープンソースですから自分で解決もできます。
00:04:32コードをClaudeに渡して指示すれば、きっと機能を追加してくれるはずですよね?
Community Posts
No posts yet. Be the first to write about this video!
Write about this video