🐪

OCaml: Windows環境でOCamlをセットアップする

2024/03/05に公開

はじめに

この記事では、Windows環境で関数型プログラミング言語OCamlを容易にセットアップする方法を紹介します。
DkMLインストーラーを使用することで、OCamlのビルドとインストールを自動化し、手間を大幅に削減できます。

OCamlは、型推論、パターンマッチング、モジュールシステムなどを特徴とし、型安全性と高パフォーマンスを提供する関数型プログラミング言語です。

Windows環境では、WSL上に OCaml環境を構築することが推奨されています。
しかし、Windows環境にOCamlをインストールすることで、使い慣れた Windows環境でOCamlが使用できます。

技術用語

この記事で取り上げる重要な技術用語を以下に解説します。

  • OCaml: 型推論、パターンマッチング、モジュールシステムを特徴とする関数型プログラミング言語。
  • DkML: Windows環境でOCaml をインストールするためのインストーラー。複雑な依存関係を自動で解決し、インストールプロセスを簡素化する
  • opam: OCaml のパッケージマネージャー。依存関係の管理やパッケージの更新を容易にする
  • XDG Base Directory: UNIX系OS のディレクトリ標準仕様。Windows でも、この仕様に従うことでファイルの整理が容易になる
  • Visual Studio BuildTools: コマンドラインで使用する開発ツールセット、OCaml のビルドに使用される
  • utop: OCamlREPLを拡張し、高度な編集機能やタブ補完機能を提供するパッケージ

1. 前提条件

この記事を始める前に、以下の条件が満たされている必要があります。
これらの条件を確認し、必要なら準備してください。

  • wingetコマンドが使用可能: Windows パッケージマネージャーを使用してソフトウェアをインストールする。
  • OCamlのインストール先:c:\lang\ocaml: このディレクトリはインストール中に指定できる。
  • XDG Base Directoryの採用:Windows でも UNIX系OS のファイルシステム標準に従うことで、設定やデータファイルの管理を一元化する。これは、$XDG_DATA_HOME環境変数を設定することで達成される。
  • 環境変数の設定: 環境変数OPAMROOT$XDG_DATA_HOME/opamに設定します。これにより、opamが管理するファイルを整理しやすくします。

以上です。

2. 初期設定


OCamlをインストールする前に、あらかじめ必要な設定を行います。

注意:
この記事ではPowerShellを使用しています。他のシェルを使用している場合は、適宜コマンドを調整してください。

2.1 Pathの設定

環境変数PathOCamlの実行ディレクトリc:\lang\ocaml\binを追加します。
このためには、システムの環境設定画面を開いてシステム環境変数Pathc:\lang\ocaml\binを追加します。

次の手順で、Pathを設定します。

  1. システムのプロパティを開く:
    [設定]>[システム > バージョン情報]>[システムの詳細設定]として、[システムのプロパティ]を開く。

    あるいは、[Win]+Rかコマンドラインから、次のコマンドを実行する。

    SystemPropertiesAdvanced.exe
    

    以上で、[システムのプロパティ]を開く。

    システムのプロパティ
    システムのプロパティ

  2. [環境変数]ダイアログを開く:
    [環境変数]ボタンをクリックして、[環境変数]ダイアログを開く
    環境変数
    環境変数

  3. [システム環境変数]のPathを編集する:
    "システム環境変数"のPathを選び、[編集(I)]をクリックする。

    Pathの編集
    環境変数: システムPath

  4. 実行ディレクトリを追加する:
    [新規]をクリックし、C:\lang\ocaml\bin を追加する。

    Pathの編集
    環境変数: システムPath

  5. ダイアログを閉じる:
    各ダイアログの[OK]をクリックし、各ダイアログを閉じる。

以上で、環境変数の設定は完了です。

2.2 OPAMROOTの設定

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

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

  1. powershellで環境変数設定コマンドを実行する:

    [System.Environment]::SetEnvironmentVariable("OPAMROOT", $env:XDG_DATA_HOME+"/opam", "User")
    
    

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

2.3 Terminalの再起動

ここまでで設定したPathや環境変数をWindows Terminalに反映させるため、Windows Terminalを再起動します。
この再起動により、新しく設定した環境変数が Terminal 環境に適用され、OCaml および関連ツールを問題なく使用できるようになります。

次の手順で、Windows Terminalを再起動します:

  1. exitコマンドでWindows Terminalを終了する:

    exit
    
  2. wtコマンドを実行し、Windows Terminalを起動する:

    wt
    

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

3. OCamlのインストール

このセクションでは、まずDkMLをインストールし、DkMLを使って Windows版OCamlをインストールします。
DkMLOCamlを Windows環境にて簡単にインストールできるインストーラーです。
これは、OCamlがもともと UNIX/Linux系OS用に設計されているためで、DkMLを使用することで Windows での運用の差異を吸収します。

3.1 DkMLのインストール

DkMLOCamlを Windows 環境にて機能させてインストールするインストーラーです。
次の手順で、DkMLをインストールします:

  1. wingetで、DkMLをインストールする:

    winget install Diskuv.OCaml --location c:\lang\OCaml
    

以上で、DkMLのインストールは完了です。
次に、インストールしたDkMLを使ってOCamlをインストールします。

3.2 Visual Studio BuildToolsのインストール

Visual Studio BuildToolsはコマンドラインでビルドを行なう開発ツールセットです。
DkMLインストーラーはBuildToolsを使ってOCamlをビルドするため、DkMLを実行する前にBuildToolsをインストールしておく必要があります。

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

  1. wingetコマンドで、BuildToolsをインストールする:
    winget install Microsoft.VisualStudio.2019.BuildTools --override "--wait --passive --installPath C:\VS --addProductLang Ja-jp --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended"
    

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

3.3 DkMLの初期設定

次の手順で、DkMLを初期設定します:

  1. dkml initDkMLを初期化する:

    dkml init --disable-sandboxing --system
    


    注意:
    Windows 環境では、標準のサンドボックス機能がうまく機能しない場合があるため、--disable-sandboxingオプションを使用しています。

以上で、DkMLの初期設定は完了です。
これにより、opamコマンドが使えるようになります。

3.4 opamの初期設定

DkMLに続いてopamを初期設定します。
次の手順で、opamを初期設定します:

  1. opamを初期設定する:

    opam init --disable-sandboxing --bare --switch=playground --shell=pwsh  -a
    
    

以上で、opamの初期設定は完了です。

3.5 初期設定スクリプトの設定

OCamlを実行するためには、いくつかの環境変数を設定しておく必要があります。
次の手順で、初期設定スクリプトを設定します:

  1. エディタで初期設定スクリプト$profileを開きます

  2. `$profile'の末尾に次の行を追加します:

    $profile
    (& opam env) -split '\r?\n' | ForEach-Object { Invoke-Expression $_ }
    
  3. $profileを保存して、エディタを終了します

以上で、初期設定スクリプトの設定は完了です。

opam envコマンドは、環境変数設定スクリプトを出力します。上記コマンドでは、出力された環境変数ごとにInvoke-Expressionを実行して環境変数を設定しています。

3.6 Terminalの再起動

ここまでで設定したPathや環境変数をWindows Terminalに反映させるため、Windows Terminalを再起動します。

次の手順で、Windows Terminalを再起動します:

  1. exitコマンドでWindows Terminalを終了する:

    exit
    
  2. wtコマンドを実行し、Windows Terminalを起動する:

    wt
    

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

3.7 utopのインストール

utopは、OCamlREPLに各種拡張機能を提供するパッケージです。

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

  1. opamを使って、utopパッケージをインストールする:

    opam install utop -y
    
    

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

4. OCamlの起動、終了

OCamlを正常にインストールしたか確認します。
そのため、OCamlを起動し、そのあと、終了させます。

4.1 OCamlの起動

次のコマンドで、OCamlを起動します。

ocaml

以下のように、プロンプトが表示されれば成功です。

The OCaml version 4.14.0
Enter #help;; for help.

#


注意:
OCamlを起動する際に、"アプリを選択してください"ダイアログが表示された場合は、$OPAMROOT/playground/binにある Linux用の起動スクリプトocamlが原因です。このスクリプトは Windows 環境では不要なので、削除してください。

4.2 OCamlの終了

OCamlを終了して、PowerShellに戻ります。
以下の 2つの方法があります。

  1. #quitディレクティブを使う:
    #quit;;とコマンドと終端記号を入力します

    # #quit;;
    
    >
    

    上記のように、powershellのプロンプトに戻ります。

  2. Clrl+Z (EOF)を入力する:
    プロンプトの先頭で、Ctrl+Z (EOF) を入力します

    注意:
    Windows 環境では、EOFCtrl+Zで入力します。

    # ^Z [`Ctrl+Z`を入力]
    
    >
    

上記のように、powershellのプロンプトに戻ります。

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

5. utopの起動と終了

OCamlと同様に、utopが起動、終了することを確認します。

5.1 utopの起動

高度な編集機能を使いたいときは、OCamlの拡張REPLであるutopを起動します。

utop

─┬────────────────────────────────────┬──
  │ Welcome to utop version 2.13.1 (using OCaml version 4.14!│
  └────────────────────────────────────┘

Type #utop_help for help about using utop.( 17:59:00 )─< command 0>─────────────────{ counter: 0 }─
utop #

上記のように、プロンプトが出力されます。
以上で、utopの起動は終了です。

5.2 utopの終了

utopを終了して、PowerShellに戻ります。
以下の 2つの方法があります。

  1. #quitディレクティブを使う:
    #quit;;とコマンドと終端記号を入力します

    utop # #quit;;
    
    >
    

    上記のように、powershellに戻ります。

  2. Ctrl+D (EOF)を入力する:
    プロンプトの先頭で、Ctrl+D (EOF)を入力します

    utop # [`Ctrl+D`を入力]
    
    >
    

    上記のように、powershellに戻ります。

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

おわりに

以上で、Windows 環境にOCamlをセットアップし、OCamlの起動と終了ができました。
これにより、関数型プログラミングの学習環境が整いました。

次のステップでは、実際にOCamlを使って簡単なプログラムを書いてみましょう。
最初は、"Hello, World!"プログラムから始め、徐々にOCamlの豊富な機能に触れていくことをオススメします。

また、関数型プログラミングの理解を深めるために、指定された参考資料も活用してください。
継続的なプログラミングと学習で、プログラミングスキルの向上を目指しましょう。

それでは、Happy Hacking!

参考資料

Webサイト

  • OCaml公式:
    OCamlの基本から応用までを網羅的に学べる公式ドキュメント。初心者から上級者まで幅広く対応しています。
  • Windows版OCaml DkML:
    Windows 環境でOCamlを設定する際に役立つDkMLインストーラーの詳細情報。
  • WindowsにXDG Base Directoryを導入する:
    Windows 環境でXDG Base Directoryを利用する方法について解説した記事。

Webリソース

GitHubで編集を提案

Discussion