🐪

OCaml: WindowsのWSL環境にOCamlをセットアップする方法

2024/03/09に公開

はじめに

この記事では、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パッケージマネージャー)

opamOCaml用のパッケージマネージャーです。
OCaml自身もopamで提供されており、複数のバージョンのOCamlを切り替えて使うことができます。

opamにより提供されるパッケージには、さまざまなパッケージがあります。
たとえば、utopというパッケージは、OCamlREPLを大幅に機能拡張し、編集機能やタブ補完機能を追加します。

ほかのさまざまなパッケージは、opam list -aで見ることができます。

2. 前提条件

この記事では、次の環境が前提となります。

  • WSL環境にHomebrewがインストール済み
  • XDG Base Directory仕様の各環境変数が設定済み
  • dotfilesによるbash環境が構築済み

環境がまだの場合は、WSL開発環境の構築まとめ記事を参考に環境構築をしてください。

3. OCamlのインストール

OCamlをインストール手順は、次の通りです。

3.1 OPAMROOTの設定

OPAMROOTopamがパッケージを管理する場所を指定する環境変数です。
OPAMROOTを指定しない場合は、~/.opam でパッケージを管理します。

この記事では、XDG Base Direcoryに準じたOPAMROOTを設定することで、環境をクリーンに保ちます。
次の手順で、OPAMROOTを設定します。

  1. envrcに次の行を追加する:

    ~/.config/envrc
    #  ocaml
    export OPAMROOT="$XDG_DATA_HOME/opam"
    

以上で、OPAMROOTの設定は完了です。

3.2 bubblewrapのインストール

bubblewrapは、ユーザー権限でサンドボックスを作成するツールです。
OCamlでは、サンドボックス機能を実現するために使われています。

次の手順で、bubblewrapをインストールします。

  1. brewでインストール:
brew install bubblewrap

以上で、bubblewrapのインストールは完了です。

3.3 ターミナル (WSL)の再起動

ここまでで設定した環境変数をWSLに反映させるため、ターミナルWSLを再起動します。
次の手順で、ターミナルを再起動します。

  1. ターミナルの終了
    exitを入力し、ターミナルを終了します:

    exit
    
  2. WSL の起動
    Windows Terminalのプルダウンメニューで、Debianを選択します。
    Terminal-プルダウンメニュー

以上で、WSL の再起動は完了です。

3.4 opamのインストール

パッケージマネージャーopamは、brewを使ってインストールします。
次の手順で、opamをインストールします。

  1. brewで、opamをインストールする:

    brew install opam
    

以上で、opamのインストールは終了です。

3.5 opamの初期化

opamの各種コマンドを使えるように、opamを初期化します。
次の手順で、opamを初期化します。

  1. opam initopamを初期化します:

    opam init --bare --shell=bash -a
    

以上で、opamの初期化は終了です。

3.6 opam switchでのOCamlのインストール

opam switchは複数のバージョンのOCamlをインストールできる機能です。
インストールしたOCamlは、opam switchで切り替えられます。

次の手順で、OCamlをインストールします。

  1. 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に次の行を追加します。

$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)を再起動します。
次の手順で、ターミナルを再起動します。

  1. ターミナルの終了
    exitを入力し、ターミナルを終了します:

    exit
    
  2. WSL の起動
    Windows Terminalのプルダウンメニューで、Debianを選択します。
    Terminal-プルダウンメニュー

以上で、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を終了します。

  1. quitディレクティブを入力する:
    # (ディレクティブ開始), quit (コマンド), ;; (終端記号)を入力して、OCamlを終了させる

    # #quit;;
    
    $
    
  2. EOFを入力する:
    Ctrl+Dを打ち、EOFを入力する

    # [Ctrl+D を入力]
    
    $
    

以上で、OCamlの終了は完了です。

おわりに

ここまでの手順で、WSL上にOCamlの基本的な実行環境が構築できました。

今後はOCaml用の統合開発環境の導入や、さまざまなパッケージの活用などを通して、OCamlによる本格的な関数型プログラミングをするのも良いでしょう。

関数型プログラミングの面白さを体感し、プログラミングスキルの向上に役立ててください。
それでは、Happy Hacking!

参考資料

Webサイト

Webリソース

本 (含むPDF)

GitHubで編集を提案

Discussion