Help us understand the problem. What is going on with this article?

WSL の Ubuntu 18.04 で OCaml 開発環境を作る

More than 1 year has passed since last update.

はじめに

Windows Subsystem for Linux の Ubuntu 18.04 で OCaml 開発環境を作りました。難しいことは何もありません。Windows での OCaml 開発環境がアレだったのはひと昔、今や WSL でサクッと快適な OCaml 開発環境が作れます。

手順

Microsoft Store で Ubuntu 18.04(無料) をインストールします。

その後 Linux 上で次のように実行します。質問にはてきとうに y と答えましょう。それぞれ時間がかかりますので、時間があるときにやりましょう。

bash
$ 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

実は既に設定は済んでいます。

test.ml
let () =
  print_

として、 print_ の末尾にカーソルを合わせてから、 M-x completion-at-point もしくは M-x co-at とすると、補完ができます。

co-at.png

Frame が分割されてダサいと思われる方は company を入れると良いと思います。emacs で M-x list-packages とするとメニューが出てくるので、そこで company を install して、 emacs を再起動しましょう。いい感じになります。

company.png

company では print_ とタイプして少し間をおくと自動的に補完メニューが出てきます。

vim

実は既に設定は済んでいます。

test.ml
let () =
  print_

として、 print_ の末尾にカーソルを合わせてから、挿入モードで Ctrl-X Ctrl-O とすると、補完メニューが出ます。

vim.png

jbuilder と .merlin

.merlin、めんどくさいですよね。昨今はビルドシステムの dune(jbuilder) さんが自動的に作ってくれます。何かの依存関係の関係でインストールも終わっていると思います。

とりあえず例ですが、まず test.ml というファイルだけのプログラムの場合、同じディレクトリに次の様な内容の jbuild という名前のファイルを作ります。

jbuild
(jbuild_version 1)

(executable
 ((name test)))

そして次のようにするとビルドできます。

$ jbuilder build test.exe

このとき .merlin まで自動で作ってくれます。

細かいところは本家documentationKeigo 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 開発環境が簡単に作れるようになりました。便利な世の中になりましたね。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away