C/C++のポータブルな実行環境としてのGoogle NaCl

 ここ数日、Google NaClを使ってC++コードをweb上で実行できるようにするということを試していました(できたのはこれです)。使ってみた感想としては、この仕組みがwebサービスとして使われるようになるかは分かりませんが、C/C++コードで書かれたアプリケーションを実行できる状態で見せるといった用途では、現段階でも十分に使えるんじゃないかというものでした。

 Google NaClを使うと、C/C++コードをweb上で動かすことができます。ちょうど、ruby, pythonなどのC APIを使った拡張モジュールのようなことがブラウザ上で動くJavaScriptでもできるようになったようなものだと思ってください。(ただし、NaClプラグインが動くのは現在のところGoogle Chromeだけです)

 というのも、C/C++で書かれたプログラムを実行しようと思ったら、まず自分以外の環境でもビルドできるようにしないといけませんし、すぐ使えるようにするためにはDebianパッケージ(使ったことしかないのであやふやですが)などの形で提供しないといけないわけですが、NaClの場合には自分の環境でコンパイルしてwebにアップしてしまえば、メジャーなOS(win, Mac, Linux..)なら実行できるようにできます。

ブラウザさえあれば実行できることの利点について


NaClモジュールはJavaScriptの関数として使えるので、JSUnitなどを使って一気にテストコードを書くことができます。この点はPythonなどの場合と同じで、シェルスクリプトで書くより、テストコードが書きやすいという点で利点があります。もう一つはC/C++コード、またはシェルスクリプトも知らない、ソースをビルドすることもできない場合でも、JavaScriptさえ知っていればこの作業はできるので、別の人に手伝ってもらうことも容易にしてくれると思います。JavaScriptは本当にブラウザさえあれば実行できる言語なので、書ける人が多いという点と、実行できるようなサーバーは特に用意することに困らなくて、DropBoxでも実行環境として機能するという点に利点があると思います。

NaClを使う場合の欠点


 nexeファイルを作るには、NaCl SDKが用意したコンパイラでビルドする必要があります。そのため、使えるライブラリが制限されてしまうという点はマイナスだと思います。