12/12/2016

Browsix: ブラウザの中でUnixプログラムを実行

Hacker Newsより。ブラウザ上にUnixライクなカーネルを持たせて、Unixプログラムを実行できる環境「Browsix」を開発したそうだ。以下、論文の概要。Chrome OSのNative Clientより良い...?

従来のオペレーティングシステム上で実行するために書かれたアプリケーションは通常、プロセス、パイプ、シグナル、ソケット、共有フィイルシステムのようなOSの抽象概念に依存している。これらのアプリケーションをウェブに移植するには、ブラウザはOSの機能性が欠けている既存のものとは違う実行環境を提供するため、今のところ大掛かりな書き直しあるいはコードの重要な一部をサーバサイドにホスティングする必要がある。

この論文は、従来のオペレーティングシステムとブラウザの間の大きなギャップを埋めるフレームワーク「Browsix」を提示し、プログラムを修正せずにブラウザの中で直接実行できるUnixライクな環境を可能にした。Browsixは2つのコア部分から成る: (1) ウェブアプリケーションにコアUnix機能(パイプ、並列プロセス、シグナル、ソケット、共有ファイルシステムなど)が利用できるようにするJavaScriptのみのシステム、(2) C、C++、Go、Node.jsのための拡張JavaScriptランタイムで、ブラウザの中でプロセスとしてこれらの言語で書かれたプログラムの実行をサポートする。BrowsixはPOSIXシェルの実行をサポートし、パイプを通じてアプリケーションに簡単に接続できる。

我々はブラウザにレガシーなアプリケーションを簡単に移植し、新しい機能を可能にする方法の事例を通じてBrowsixの機能を説明する。まず、pdfLaTeXやBibTeXの未修正版を実行することによって動くBrowsix対応のLaTeXエディタを紹介する。このブラウザ専用LaTeXエディタは数秒で文書を表示でき、実用するのに十分な速度を持っている。我々は更にBrowsixがネット接続がなくてもブラウザの中で完全実行するクライアントサーバアプリケーションを移植させる方法を示す。これらのアプリケーションを作るのに50行未満のグルーコードが必要で、コードの修正は必要なく、簡単にBrowsixは修正なしに既存のパーツから洗練されたウェブアプリケーションを作るのに利用できることを示している。