development· 8 min read

リアルタイムプレビュー:VULKがアプリをライブでレンダリングする仕組み

VULKのサーバーサイドプレビューシステムの技術的ディープダイブ。コードが数秒でライブアプリになる仕組みと、それがブラウザサンドボックスに勝る理由。

João CastroJoão Castro
リアルタイムプレビュー:VULKがアプリをライブでレンダリングする仕組み

2026年7月18日更新 — 現在のアーキテクチャを軸に書き直し:Firecracker microVM、Flutterビルドサービス、そして2026年7月にライブになったPHP + Pythonランタイム。

VULKはアプリをどうやってライブでレンダリングする?

完全な答え:AIが生成ファイルをストリーミングすると同時に、VULKはそれを専用プレビューサービスにプッシュし、あなたのアプリをFirecracker microVM内で実行します — 独自のカーネル、ファイルシステム、ネットワークを持つ本物の分離された仮想マシンで、ウォームプールから引き当てられるため数秒でアタッチされます。microVM内では本物のVite開発サーバーがホットモジュールリプレースメント付きでReactアプリを実行し、動いているアプリはエディタのiframeにプロキシされます。Flutterアプリは別のbuild-then-serveパイプライン(flutter build web、ビルドごとに約20〜60秒)を通り、2026年7月からはPHPとPythonのアプリも専用microVMランタイムでライブに動きます。

これはシミュレーションでもブラウザサンドボックスでもありません:本物のサーバーインフラで動くあなたの実際のアプリケーションが、画面にストリーミングされているのです。この速度こそがプラットフォームを定義する数字を可能にします — 中央値のビルダーはサインアップから動く生成アプリまで47秒で到達します(VULKプラットフォームデータ、2026年7月、N = 11,355プロジェクト)。

なぜプレビューがAIアプリ生成の難問なのか?

AIジェネレーターがコードを生成したら、結果をすぐに見る必要があります。ほとんどのプラットフォームは2つの方法のどちらかを取ります:静的スクリーンショットか、WebContainersやSandpackのようなツールでブラウザ内コンパイルか。どちらにも大きな限界があります。

静的スクリーンショットは明らかに不十分 — 操作もスクロールもボタンクリックも機能テストもできません。ブラウザ内コンパイルはましですが独自の問題を抱えます:ツールチェーンの大きなダウンロード、限定的なNode.js APIサポート、バックエンド実行不可、遅いコールドコンパイル、重いメモリ使用、多くのnpmパッケージを壊すサンドボックス制限。

VULKは第三の道を取ります:分離されたmicroVM上のサーバーサイドプレビューです。運用コストは高い — ユーザーのブラウザではなく本物のインフラが必要 — ですが、「プレビューが動く」が確実に「アプリが動く」を意味する唯一のアプローチです。

生成から目に見えるアプリまでの間に何が起こる?

ステップ1:コード生成。 AIモデルがレスポンスをストリーミングし、vulkAction XMLタグに包まれたファイルを生成。各ファイルが完成するたびにVULKがパスと内容を抽出します。

ステップ2:microVMの割り当て。 ファイルはプレビューサービス(webapp.vulk.dev)に送られ、事前起動済みウォームプールのFirecracker microVMにプロジェクトがアタッチされます。各microVMは正真正銘の仮想マシン — 共有コンテナではなくハードウェアレベルの分離 — で、プロジェクトのニーズに合ったrootfsイメージ(基本ウェブイメージ、3D対応イメージ、重い依存関係をプリインストールしたフルイメージ)を持ちます。

ステップ3:依存関係とサーバー起動。 VM内で依存関係は事前キャッシュ済みのnode_modulesレイヤーに対してインストールされます — コールドプレビューで最も遅いステップが、一般的なスタックでは数秒に短縮。React + ViteプロジェクトではVite開発サーバーが、他のスタックでは適切なランタイムが起動します。

ステップ4:iframeレンダリング。 動いているアプリケーションは一意のURLを通じてプロキシされ、VULKエディタのiframeに表示されます。部分的なレンダリングではなく、完全に動くアプリケーションが手に入ります。

ステップ5:編集時のホットリロード。 フォローアッププロンプトがファイルを変更すると、変更されたファイルだけがVMにプッシュされます。Viteのホットモジュールリプレースメントがフルリロードなしにiframeを更新 — 変更は1秒以内に見え、通常コンポーネントの状態も保持されます。

ステップ6:サスペンドとレジューム。 アイドル状態のプレビューはリソース解放のためサスペンドされ、必要に応じて再開されます — プロジェクトに戻ってもゼロから再構築にはなりません。

各プラットフォームは実際どうプレビューされる?

スタックごとに本当に異なるパイプラインを通ります — プラットフォーム別の正直なマップがこちら:

プラットフォーム プレビューの仕組み 典型的なレイテンシ
React + Vite Firecracker microVM、Vite開発サーバー、HMR 数秒;ホットリロードは1秒未満
Three.jsゲーム 同じmicroVMパイプライン;WebGLはあなたのブラウザのキャンバスでレンダリング Reactと同じ
Flutter Build-then-serve:専用ビルドサービスでflutter build web ビルドごとに約20〜60秒、ホットリロードなし
PHP / Laravel php-fpm 8.3 + nginxのmicroVM(2026年7月からライブ) 数秒
Python (FastAPI/Flask/Django/Streamlit) 起動コマンド自動検出のmicroVM(2026年7月からライブ) 数秒
React Native / Expo ❌ ライブプレビューなし — 正直な手順パネル;自分のデバイスのExpo Goでテスト —(開発中)
Shopify(テーマ/アプリ/Hydrogen) ❌ ライブプレビューなし — Shopifyのランタイムが必要;CLIワークフローを提供

最後の2行が重要です。MetroバンドルのReact Nativeはウェブプレビューで正直には動かせず、ShopifyコードはShopifyの管理画面とストアフロントのランタイムを必要とします。それらのレンダリングを偽装する代わりに、エディタは本当に動く場所での実行方法を正確に教えます。信頼できないプレビューは、プレビューがないより悪いのです。

なぜサーバーサイドがブラウザ内コンパイルに勝つ?

バックエンドコードが実際に動く。 VULK生成のフルスタックアプリは本物のAPIとデータベースアクセスを含みます — そして全生成アプリの62%がSQLスキーマを含みます(VULKプラットフォームデータ、2026年7月)。ブラウザサンドボックスはそのバックエンドを実行できず、モックするか省略します。VULKのプレビューでは全フローをテストできます:登録、ログイン、データ作成、APIコール。

サンドボックスの制限なし。 ブラウザベースのツールはService Worker内でNode.jsをエミュレートします;一部のnpmパッケージは静かに失敗し、ネイティブモジュールは動かず、ファイルシステムアクセスは制限されます。microVMは本物のLinux環境 — それらの制限は存在しません。

デバイス間で一貫。 ビルドはサーバーで実行されるため、格安ChromebookとMacBook Proが同一のプレビュー性能を得ます — そしてブラウザ内コンパイルが苦痛から不可能まであるモバイルブラウザでも問題なく動きます。

ハードウェアレベルの分離。 Firecracker microVMは仮想化レイヤーで分離します — AWS Lambdaと同じ技術です。あるユーザーの無限ループが別のユーザーのプレビューに触れることはなく、クラッシュしたVMは自動的にリサイクルされます。

忠実なレンダリング。 iframeは本物のサーバーが配信する本物のURLから読み込まれます — プレビューで見えるものは本番でユーザーが見るものと一致します。

生成中には何が見える?

VULKは生成全体が終わるのを待たせません。プレビューは段階的に更新されます:基本ファイル(index.htmlmain.tsxpackage.json)ができた瞬間に開発サーバーが起動し、コンポーネントファイルが流れ込むたびにファイルウォッチャーがホットアップデートをトリガーします。アプリが組み上がるのをリアルタイムで見られます — まずレイアウト、次にコンポーネント、そしてスタイル。

この段階的レンダリングは早期のフィードバックを与えます。AIが間違った方向に進んでいれば数秒で分かり、待たずに生成を止められます。そして生成後、VULKのレンダーゲートが同じ動いているプレビューを本物のChromiumインスタンスで読み込み、空白ページやエラーバウンダリをレンダリングする生成を失敗させます — プレビューはあなたの目のためだけでなく、検証の一部なのです。

プレビューの限界は?

コールドスタート。 キャッシュされていない依存関係は初回生成で10〜30秒のインストールがかかることがあります。同じプロジェクトの以降の実行はキャッシュを再利用し、はるかに高速です。

Flutterにはビルドレイテンシがある。 ビルドごとに約20〜60秒(本物のflutter build web)、ビルド間のホットリロードなし — イテレーション速度と引き換えの忠実なレンダリングです。

ネイティブモバイルレンダリングはない。 FlutterはFlutter Webとしてプレビューされます — 機能的には正確、視覚的には近いですが、最終的なデバイステストはデバイス上で。React Nativeにはエディタ内プレビュー自体がまだありません。

リソース制限。 公平な共有のため各microVMにはCPUとメモリの上限があります;極端に重いワークロード(巨大データセット処理、複雑なシミュレーション)は上限に達することがあります。

ネットワーク分離。 セキュリティ上の理由から、プレビュー環境は任意の外部サービスを呼び出せません。サードパーティAPIコールはプレビューでは失敗し、デプロイ後に動きます。

プレビューと本番の間には何がある?

プレビューはアプリの別ビルドではなく、開発環境で動く同じコードです。Deployをクリックすると、VULKはその同じコードで本番ビルド(vite build)を実行し、出力を10〜30秒でCloudflare Pagesに届けます。テストしたものがユーザーに届くもので、そこにミニファイ、ツリーシェイキング、アセット最適化が加わります。


FAQ

プレビューは本物の動くアプリ? それともシミュレーション?

本物の動くアプリです。コードはFirecracker microVM — 独自カーネルを持つ分離された仮想マシン — 内で、本物のVite開発サーバー(スタックによってはphp-fpmやuvicorn)と共に実行されます。エディタのiframeはそのライブサーバーへの窓です。

編集はどれくらい速くプレビューに反映される?

React + Viteプロジェクトなら1秒未満:変更されたファイルだけがVMにプッシュされ、Viteのホットモジュールリプレースメントがリロードなしに動いているアプリを更新し、通常コンポーネントの状態も保持されます。Flutterは例外 — 編集ごとに約20〜60秒の新しいビルドがトリガーされます。

どのプラットフォームをライブプレビューできる?

React + Vite、Three.js、Flutter(build-then-serve)、そして2026年7月からPHP/LaravelとPython(FastAPI、Flask、Django、Streamlit)。React NativeとShopifyのプロジェクトは完全なコードを生成しますが、それぞれのエコシステム(Expo Go、Shopify CLI)でプレビューします;VULKは偽のレンダリングの代わりに正直な手順を表示します。

プレビューはバックエンドとデータベースも動かす?

はい。フルスタック生成はAPIとデータベースアクセスをプレビュー環境で実行するため、ログイン、登録、データ永続化をデプロイ前にテストできます — ブラウザサンドボックスのプレビューには構造的に不可能なことです。VULKのアプリの62%がSQLスキーマを含みます(VULKプラットフォームデータ、2026年7月)。つまりこれは普通のケースであって、端のケースではありません。

なぜ他のツールのようにWebContainersを使わない?

ブラウザ内コンパイルは動かせるものを制限します(本物のバックエンド不可、パッケージ非互換、Safariとモバイルの問題、重いメモリ使用)。サーバーサイドmicroVMは運用コストが高いものの、すべてを、あらゆるデバイスで、ハードウェアレベルの分離と共に実行します。VULKが有料のみなのはまさに、すべてのプレビューの裏に本物のインフラがあるからです — プランはBuilder $19.99/月から、$3.99からの3日間イントロ付き。


コーヒーが冷める前に、次のアイデアが動くのを見てください:vulk.dev

公開日: 執筆: João Castro · 8 min read

続けて読む

記事一覧
VULK サポート

オンライン

こんにちは!本日はどのようにお手伝いできますか?

人気のトピック

AI サポート • support.vulk.dev

リアルタイムプレビュー:VULKがアプリをライブでレンダリングする仕組み — Blog | VULK