はじめに
Windows Subsystem for Linux の Ubuntu 18.04 で OCaml 開発環境を作りました。難しいことは何もありません。Windows での OCaml 開発環境がアレだったのはひと昔、今や WSL でサクッと快適な OCaml 開発環境が作れます。
手順
Microsoft Store で Ubuntu 18.04(無料) をインストールします。
その後 Linux 上で次のように実行します。質問にはてきとうに y
と答えましょう。それぞれ時間がかかりますので、時間があるときにやりましょう。
$ sudo apt update
$ sudo apt install emacs m4 opam
$ opam init
$ opam install tuareg ocp-indent utop merlin user-setup
$ opam user-setup install
$ eval `opam config env`
最後の eval `opam config env`
は環境変数がクリアされる毎に実行する必要があります。面倒な方は .bashrc
なりなんなりに書くといいと思います。
基本的にはこれで終わりです。
何を入れさせられているのか不安かもしれませんので、明示的に入れたものを軽く説明しておきます。
名前 | 説明 |
---|---|
emacs | 言わずと知れたエディタです。vim は Ubuntu18.04 に最初から入ってます。 |
m4 | テキストマクロプロセッサです。直接使うことはあまりないと思いますが、これを入れないで opam init しようとすると、「多くのパッケージが m4 に依存するから入れた方がいいよ」と言われます。 |
opam | OCaml 用パッケージマネージャです。 |
tuareg | emacs 用の OCaml major-mode です。 |
ocp-indent | emacs/vim 用の OCaml インデンタです。 tuareg と共存できます。 |
utop | ocaml コマンド単独よりも賢い repl を提供してくれます。 |
merlin | OCaml 用のコード補完ツールです。 |
user-setup | tuareg, ocp-indent, utop, merlin 用の設定を .emacs や .vimrc に書き込んでくれる。 |
もう少し便利にする
コード補完
emacs
実は既に設定は済んでいます。
let () =
print_
として、 print_ の末尾にカーソルを合わせてから、 M-x completion-at-point
もしくは M-x co-at
とすると、補完ができます。
Frame が分割されてダサいと思われる方は company を入れると良いと思います。emacs で M-x list-packages
とするとメニューが出てくるので、そこで company を install して、 emacs を再起動しましょう。いい感じになります。
company では print_
とタイプして少し間をおくと自動的に補完メニューが出てきます。
vim
実は既に設定は済んでいます。
let () =
print_
として、 print_ の末尾にカーソルを合わせてから、挿入モードで Ctrl-X Ctrl-O とすると、補完メニューが出ます。
jbuilder と .merlin
.merlin、めんどくさいですよね。昨今はビルドシステムの dune(jbuilder) さんが自動的に作ってくれます。何かの依存関係の関係でインストールも終わっていると思います。
とりあえず例ですが、まず test.ml
というファイルだけのプログラムの場合、同じディレクトリに次の様な内容の jbuild という名前のファイルを作ります。
(jbuild_version 1)
(executable
((name test)))
そして次のようにするとビルドできます。
$ jbuilder build test.exe
このとき .merlin まで自動で作ってくれます。
細かいところは本家documentationやKeigo Imaiさんの記事を見ると良いと思います。
emacs を X Window で使いたい
Windows用 X Server はいくつかありますが、私は VcXsrv というのを入れました。Windows 側で VcXsrv を install して、立ち上げてから Linux 側で
$ emacs --display=localhost:0.0
もしくは
$ DISPLAY=localhost:0.0 emacs
とすると X Window で emacs を実行できます。
おわりに
というわけで Windows でも OCaml 開発環境が簡単に作れるようになりました。便利な世の中になりましたね。