LoginSignup
4
4

More than 5 years have passed since last update.

Opa Javascript frameworkをインストールしてみた

Last updated at Posted at 2014-09-16

まえがき

メルマガでこういうページを紹介していたので読んでみた(今更Swift)。
Appleの新言語Swift、10の特徴(後)
すると

ScalaやOpaといった新進のプログラミング言語と同様に、Swiftは型推論を行う。

Scalaは知ってるがOpaって何だ?と思って調べたら
http://opalang.org/
Opa Javascript Frameworkってのがあるんですね。これはまず入れてみなくては。

環境
筆者の環境はubuntu 14.04.1なのでDebian系のインストールのしかたに準じますが他のプラットフォームでも(dpkg以外)同じようなものでしょう。
https://github.com/MLstate/opalang/wiki/Getting-started#install

インストール方法

方法は大きく分けて3つあります。
1. vagrantを使ってVMごとインストール
2. Debian用のパッケージをdpkg -iでインストール
3. ソースからインストール

vagrantを使ってVMごとインストール

一番今風のインストール方法。VMにはOpa Frameworkが必要とするnode.jsなども全部含まれているのでvagrantさえ使えれば一番楽…なはず。
https://github.com/MLstate/opalang/wiki/Opa-with-Vagrant
に従ってやってみる…
~$ vagrant init mlstate/opa
~$ vagrant up
あれれ?失敗する…


Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'mlstate/opa' could not be found. Attempting to find and install...
default: Box Provider: virtualbox
default: Box Version: >= 0
==> default: Loading metadata for box 'mlstate/opa'
default: URL: https://vagrantcloud.com/mlstate/opa
==> default: Adding box 'mlstate/opa' (v1.2.0) for provider: virtualbox
default: Downloading: https://vagrantcloud.com/mlstate/boxes/opa/versions/1/providers/virtualbox.box
The box failed to unpackage properly. Please verify that the box
file you're trying to add is not corrupted and try again. The
output from attempting to unpackage (if any):

bsdtar: Error opening archive: Unrecognized archive format


ダウンロード先のURLを見てみると
https://drive.google.com/uc?export=download&id=0B1UEOBxsn2GiN3ZpbFdMek1FNjQ
だめじゃん、要するにGoogle Driveのウイルスチェックできないよというメッセージにひっかかってダウンロードできてない。
ということでこのページからopa.boxをダウンロードして手でvagrantに登録する必要があります。/home/hoge/opa.boxにダウンロードしたとして…
~$ vagrant box add opa.box --name file:///home/hoge/opa.box
~$ vagrant init opa.box
~$ vagrant up
でうまくするとインストール完了。ただ筆者の環境では default: Warning: Remote connection disconnect. Retrying...が延々出た。最後うまく行ったようだけど…
後は
~$ vagrant sshでログインするとopa frameworkが使える環境になっています。

Debian用のパッケージをdpkg -iでインストール

MLstate/opalangから最新の.debを拾ってくる…ただし筆者の環境ではocaml/opamがパッケージからではなくインストールされており、このdebだと依存関係が満たせなくて断念。

ソースからインストール

ここを参考に
~$ git clone https://github.com/MLstate/opalang
でgit clone。OpaはOcamlで記述されています。前提条件としてnode.jsが必要です。
~$ cd opalang
~$ ./configure
すると不足しているocamlのモジュールが列挙されるので例えば
~$ opam install ulex camlzip ocamlgraph
のようにしてインストール。再度 configure して不足のモジュールがなくなったら
~$ make
~$ sudo make install (/usr/localのパーミッション次第でsudoは不要)
これでインストールできます。

Hello, World

Hello, Worldの例は

hello.opa
Server.start(
   Server.http,
   { title: "Hello, world"
   , page: function() { <h1>Hello, world</h1> }
   }
)

これを
~$ opa hello.opa
でコンパイルするとhello.jsが生成されます。中身は先頭にshebangがついていてそのまま実行できます。
~$ ./hello.js(ポート8080が他で使われている場合は ~$ ./hello.js --port 9090 などとします)
あとはブラウザで http://localhost:8080 を見てHello, Worldが表示されていればまずは成功。

ところでこの強力そうな言語仕様で何をどう書くか…というのはyesod(HaskellのRailsみたいなやつ)見た時と同じ気持ちなんだよなあ…

4
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4