Electron フレームワークや NW.js を使用せずに JavaScript アプリを作成する方法を探している開発者には、Carlo という別の選択肢が加わりました。
Google Chrome LabsがApacheライセンスの下でリリースしたCarloは、Chromeブラウザのサポート下で、デスクトップアプリとしてパッケージ化したり、コマンドラインから起動したりできるNode.jsアプリケーションを作成するためのフレームワークです。Carloは、ChromiumとNode.jsを単一のランタイムにバンドルするのではなく、ローカルにインストールされたChromeバージョンを使用するという点で、ElectronやNW.jsと異なります。
「Electronとは異なり、CarloではNode v8とChrome v8のエンジンが分離されており、基盤となるコンポーネントを個別にアップデートできるメンテナンス性の高いモデルを提供しています」とプロジェクトのFAQには説明されています。「Carloはブランディングよりも生産性を重視し、バンドルのコントロールをユーザーに委ねることを重視しています。」
Google Chrome 69はURLボックスで世界中のウェブの実行を停止します
続きを読む
Carlo アプリは特定の Chromium ビルドに縛られることがなく、新しいビルドを待つのではなく、ローカル Chrome インスタンスを通じてブラウザ基盤のアップデートを受け取るため、より安全になります。
また、Chromiumコードの重荷を持ち歩く必要がなくなるため、より軽量化も期待できます。Carloは、Chromeとの通信を処理するPuppeteerプロジェクトの助けを借りて、このバイトサイズの負担を回避しています。
Puppeteerは、API経由でChromeまたはChromiumを制御するためのNodeライブラリです。ブラウザウィンドウのないChrome APIである「ヘッドレスChrome」や、Carloのように完全なブラウザの存在に依存する「ヘッドフル」アプリとのやり取りに使用できます。
Carlo のセキュリティ上の利点には欠点もあります。Chrome の API が変更された場合、Chrome のアップデート後にアプリが動作しなくなる可能性があります。しかし、基本的な DOM やレンダリングシステムでは、そのようなことはそれほど頻繁には起こりません。
Carloは依存関係の不足を許容しません。ローカルシステムにChromeが存在しない場合はエラーが発生します。また、Node.jsのバージョンは7.6.0以上が必要です。Carloをスタンドアロンアプリとしてパッケージ化したい場合は、Zeitのpkgプロジェクトをご利用ください。®