OCaml: WindowsのWSL環境にOCamlをセットアップする方法
はじめに
この記事では、Windows のWSL環境にOCamlをセットアップする手順を詳しく説明します。
OCamlは ML系の関数型プログラミング言語で、静的型付け、型推論、パターンマッチング、モジュールシステム、オブジェクト指向プログラミングを特徴としています。
OCamlをセットアップして、関数型プログラミングの世界を楽しみましょう。
Enjoy!
技術用語と注釈
この記事で使用する技術用語について、説明します。
-
OCaml:
型安全性を持ち、静的型付け、型推論、パターンマッチング、モジュールシステム、およびオブジェクト指向プログラミングをサポートする関数型プログラミング言語 -
WSL(Windows Subsystem for Linux):
Windows上で Linux のバイナリ実行ファイルを直接実行できる互換レイヤー -
opam(OCaml Package Manager):
OCamlのパッケージマネージャー。OCaml自体やさまざまなOCamlパッケージの管理、インストールが可能 -
パターンマッチング:
値の構造に基づいて条件分岐を行なう機能 -
静的型付け:
プログラムの実行前に変数や関数の型が決定され、型の一貫性がチェックされるシステム -
型推論:
プログラマが明示的に型を指定しなくても、コンパイラが式の型を自動的に推定する機能 -
モジュールシステム:
コードを論理的な単位に分割し、名前空間の管理や再利用を容易にする機能 -
オブジェクト指向プログラミング:
データと操作をオブジェクトとして組織するプログラミングパラダイム -
XDG Base Directory:
UNIX/Linux における設定ファイル、データファイルなどを配置するディレクトリの標準仕様 -
bubblewrap:
root権限を使わず、ユーザー権限のみでサンドボックスを実現するツール
以上です。
1. OCamlとは
1.1 OCamlの特徴
OCamlは、静的型付けの関数型プログラミング言語で、主に次のような特徴があります。
- 厳密な型チェック
- 型推論による型の自動推定
- パターンマッチング
- モジュールシステム
- オブジェクト指向プログラミングのサポート
OCamlは「マルチパラダイム言語」とも呼ばれ、関数型、手続き型、オブジェクト指向の要素を併せ持っています。
1.2 opam (OCamlパッケージマネージャー)
opamはOCaml用のパッケージマネージャーです。
OCaml自身もopamで提供されており、複数のバージョンのOCamlを切り替えて使うことができます。
opamにより提供されるパッケージには、さまざまなパッケージがあります。
たとえば、utopというパッケージは、OCamlのREPLを大幅に機能拡張し、編集機能やタブ補完機能を追加します。
ほかのさまざまなパッケージは、opam list -aで見ることができます。
2. 前提条件
この記事では、次の環境が前提となります。
-
WSL環境にHomebrewがインストール済み -
XDG Base Directory仕様の各環境変数が設定済み -
dotfilesによるbash環境が構築済み
環境がまだの場合は、WSL開発環境の構築まとめ記事を参考に環境構築をしてください。
3. OCamlのインストール
OCamlをインストール手順は、次の通りです。
3.1 OPAMROOTの設定
OPAMROOTはopamがパッケージを管理する場所を指定する環境変数です。
OPAMROOTを指定しない場合は、~/.opam でパッケージを管理します。
この記事では、XDG Base Direcoryに準じたOPAMROOTを設定することで、環境をクリーンに保ちます。
次の手順で、OPAMROOTを設定します。
-
envrcに次の行を追加する:~/.config/envrc# ocaml export OPAMROOT="$XDG_DATA_HOME/opam"
以上で、OPAMROOTの設定は完了です。
3.2 bubblewrapのインストール
bubblewrapは、ユーザー権限でサンドボックスを作成するツールです。
OCamlでは、サンドボックス機能を実現するために使われています。
次の手順で、bubblewrapをインストールします。
-
brewでインストール:
brew install bubblewrap
以上で、bubblewrapのインストールは完了です。
3.3 ターミナル (WSL)の再起動
ここまでで設定した環境変数をWSLに反映させるため、ターミナルWSLを再起動します。
次の手順で、ターミナルを再起動します。
-
ターミナルの終了
exitを入力し、ターミナルを終了します:exit -
WSL の起動
Windows Terminalのプルダウンメニューで、Debianを選択します。

以上で、WSL の再起動は完了です。
3.4 opamのインストール
パッケージマネージャーopamは、brewを使ってインストールします。
次の手順で、opamをインストールします。
-
brewで、opamをインストールする:brew install opam
以上で、opamのインストールは終了です。
3.5 opamの初期化
opamの各種コマンドを使えるように、opamを初期化します。
次の手順で、opamを初期化します。
-
opam initでopamを初期化します:opam init --bare --shell=bash -a
以上で、opamの初期化は終了です。
3.6 opam switchでのOCamlのインストール
opam switchは複数のバージョンのOCamlをインストールできる機能です。
インストールしたOCamlは、opam switchで切り替えられます。
次の手順で、OCamlをインストールします。
-
OCamlをインストールする:opam switch create current 5.1.1注意:
上記の5.1.1は、OCamlのバージョンを指定します。
どのバージョンが指定できるかは、opam switch list-availableを使用してください。
以上で、OCamlのインストールは終了です。
3.7 profileの設定
OCamlの環境を設定するため、$XDG_CONFIG_HOME/profileに次の行を追加します。
# opam configuration setup
test -r /home/atsushifx/.local/share/opam/opam-init/init.sh && . /home/atsushifx/.local/share/opam/opam-init/init.sh > /dev/null 2> /dev/null || true
注意:
上記の行のatsushifxは、適宜自ユーザー名に変更してください。
あるいは、opam initで追加する行が生成されるので、それをprofileにコピーしてください。
以上で、profileの設定は終了です。
3.8 ターミナル(WSL) の再起動
profileで設定したOCamlの設定を反映させるため、ターミナル (WSL)を再起動します。
次の手順で、ターミナルを再起動します。
-
ターミナルの終了
exitを入力し、ターミナルを終了します:exit -
WSL の起動
Windows Terminalのプルダウンメニューで、Debianを選択します。

以上で、WSL の再起動は完了です。
4. OCamlの起動、終了
OCamlが正常にインストールできたかどうかを確認するため、OCamlを起動、終了します。
4.1 OCamlの起動
次のコマンドで、OCamlを起動します。
ocaml
以下のように、プロンプトが表示されれば成功です。
The OCaml version 5.1.1
Enter #help;; for help.
#
以上で、OCamlの起動は終了です。
4.2 OCamlの終了
起動したOCamlを終了するには、quitディレクティブを入力する方法と、EOFを入力する方法の 2つがあります。
次の方法で、OCamlを終了します。
-
quitディレクティブを入力する:
#(ディレクティブ開始),quit(コマンド),;;(終端記号)を入力して、OCamlを終了させる# #quit;; $ -
EOFを入力する:
Ctrl+Dを打ち、EOFを入力する# [Ctrl+D を入力] $
以上で、OCamlの終了は完了です。
おわりに
ここまでの手順で、WSL上にOCamlの基本的な実行環境が構築できました。
今後はOCaml用の統合開発環境の導入や、さまざまなパッケージの活用などを通して、OCamlによる本格的な関数型プログラミングをするのも良いでしょう。
関数型プログラミングの面白さを体感し、プログラミングスキルの向上に役立ててください。
それでは、Happy Hacking!
参考資料
Webサイト
-
公式サイト:
OCaml公式サイト。OCamlの配布、パッケージの配布、チュートリアルの提供などを行っている。 -
OCaml-Wikipedia:
Wikipedia によるOCamlの解説。 -
WSL開発環境: 環境構築の記事まとめ:
この記事での前提となる WSL環境の構築方法の説明記事へのリンク集
Webリソース
-
OCamlチュートリアル(日本語):
公式サイトによる、OCamlチュートリアル日本語訳。 -
IoPLMaterials:
京都大学によるOCamlプログラミングの講義資料。 -
お気楽
Ocamlプログラミング入門:
広井誠氏によるOCamlプログラミング紹介ページ。機能紹介と演習など。
本 (含むPDF)
-
関数型言語で学ぶプログラミングの基本:
OCamlを使用した関数型プログラミングの基礎を学ぶことができる、入門者向けの書籍。 -
プログラミングの基礎:
お茶の水女子大の浅井健一先生による、プログラミング講義の教科書。 -
OCaml入門テキスト:
京都大学の五十嵐先生によるOCaml入門テキスト。1章は古いのでスキップ推奨。
Discussion