OCaml: Windows環境でOCamlをセットアップする
はじめに
この記事では、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
:OCaml
のREPL
を拡張し、高度な編集機能やタブ補完機能を提供するパッケージ
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
を使用しています。他のシェルを使用している場合は、適宜コマンドを調整してください。
Path
の設定
2.1 環境変数Path
にOCaml
の実行ディレクトリc:\lang\ocaml\bin
を追加します。
このためには、システムの環境設定画面を開いてシステム環境変数Path
にc:\lang\ocaml\bin
を追加します。
次の手順で、Path
を設定します。
-
システムのプロパティを開く:
[設定]>[システム > バージョン情報]>[システムの詳細設定]として、[システムのプロパティ]を開く。あるいは、
[Win]+R
かコマンドラインから、次のコマンドを実行する。SystemPropertiesAdvanced.exe
以上で、[システムのプロパティ]を開く。
システムのプロパティ -
[環境変数]ダイアログを開く:
[環境変数]ボタンをクリックして、[環境変数]ダイアログを開く
環境変数 -
[システム環境変数]の
Path
を編集する:
"システム環境変数"のPath
を選び、[編集(I)]をクリックする。
環境変数: システムPath -
実行ディレクトリを追加する:
[新規]をクリックし、C:\lang\ocaml\bin
を追加する。
環境変数: システムPath -
ダイアログを閉じる:
各ダイアログの[OK]をクリックし、各ダイアログを閉じる。
以上で、環境変数の設定は完了です。
OPAMROOT
の設定
2.2 OPAMROOT
はopam
がパッケージを管理する場所を指定する環境変数です。
OPAMROOT
を指定しない場合は、Windows は、$USERPROFILE/.opam
でパッケージを管理します。
この記事では、XDG Base Direcory
に準じたOPAMROOT
を設定することで、環境をクリーンに保ちます。
次の手順で、OPAMROOT
を設定します。
-
powershell
で環境変数設定コマンドを実行する:[System.Environment]::SetEnvironmentVariable("OPAMROOT", $env:XDG_DATA_HOME+"/opam", "User")
以上で、OPAMROOT
の設定は完了です。
Terminal
の再起動
2.3 ここまでで設定したPath
や環境変数をWindows Terminal
に反映させるため、Windows Terminal
を再起動します。
この再起動により、新しく設定した環境変数が Terminal
環境に適用され、OCaml
および関連ツールを問題なく使用できるようになります。
次の手順で、Windows Terminal
を再起動します:
-
exit
コマンドでWindows Terminal
を終了する:exit
-
wt
コマンドを実行し、Windows Terminal
を起動する:wt
以上で、Windows Terminal
の再起動は完了です。
OCaml
のインストール
3. このセクションでは、まずDkML
をインストールし、DkML
を使って Windows版OCaml
をインストールします。
DkML
はOCaml
を Windows環境にて簡単にインストールできるインストーラーです。
これは、OCaml
がもともと UNIX/Linux系OS用に設計されているためで、DkML
を使用することで Windows での運用の差異を吸収します。
DkML
のインストール
3.1 DkML
はOCaml
を Windows 環境にて機能させてインストールするインストーラーです。
次の手順で、DkML
をインストールします:
-
winget
で、DkML
をインストールする:winget install Diskuv.OCaml --location c:\lang\OCaml
以上で、DkML
のインストールは完了です。
次に、インストールしたDkML
を使ってOCaml
をインストールします。
Visual Studio BuildTools
のインストール
3.2 Visual Studio BuildTools
はコマンドラインでビルドを行なう開発ツールセットです。
DkML
インストーラーはBuildTools
を使ってOCaml
をビルドするため、DkML
を実行する前にBuildTools
をインストールしておく必要があります。
次の手順で、BuildTools
をインストールします:
-
winget
コマンドで、BuildTools
をインストールする:
winget install Microsoft.VisualStudio.2019.BuildTools --override "--wait --passive --installPath C:\VS --addProductLang Ja-jp --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended"
以上で、BuildTools
のインストールは完了です。
DkML
の初期設定
3.3 次の手順で、DkML
を初期設定します:
-
dkml init
でDkML
を初期化する:dkml init --disable-sandboxing --system
注意:
Windows 環境では、標準のサンドボックス機能がうまく機能しない場合があるため、--disable-sandboxing
オプションを使用しています。
以上で、DkML
の初期設定は完了です。
これにより、opam
コマンドが使えるようになります。
opam
の初期設定
3.4 DkML
に続いてopam
を初期設定します。
次の手順で、opam
を初期設定します:
-
opam
を初期設定する:opam init --disable-sandboxing --bare --switch=playground --shell=pwsh -a
以上で、opam
の初期設定は完了です。
3.5 初期設定スクリプトの設定
OCaml
を実行するためには、いくつかの環境変数を設定しておく必要があります。
次の手順で、初期設定スクリプトを設定します:
-
エディタで初期設定スクリプト
$profile
を開きます -
`$profile'の末尾に次の行を追加します:
$profile(& opam env) -split '\r?\n' | ForEach-Object { Invoke-Expression $_ }
-
$profile
を保存して、エディタを終了します
以上で、初期設定スクリプトの設定は完了です。
opam env
コマンドは、環境変数設定スクリプトを出力します。上記コマンドでは、出力された環境変数ごとにInvoke-Expression
を実行して環境変数を設定しています。
Terminal
の再起動
3.6 ここまでで設定したPath
や環境変数をWindows Terminal
に反映させるため、Windows Terminal
を再起動します。
次の手順で、Windows Terminal
を再起動します:
-
exit
コマンドでWindows Terminal
を終了する:exit
-
wt
コマンドを実行し、Windows Terminal
を起動する:wt
以上で、Windows Terminal
の再起動は完了です。
utop
のインストール
3.7 utop
は、OCaml
のREPL
に各種拡張機能を提供するパッケージです。
次の手順で、utop
をインストールします。
-
opam
を使って、utop
パッケージをインストールする:opam install utop -y
以上で、utop
のインストールは完了です。
OCaml
の起動、終了
4. OCaml
を正常にインストールしたか確認します。
そのため、OCaml
を起動し、そのあと、終了させます。
OCaml
の起動
4.1 次のコマンドで、OCaml
を起動します。
ocaml
以下のように、プロンプトが表示されれば成功です。
The OCaml version 4.14.0
Enter #help;; for help.
#
注意:
OCaml
を起動する際に、"アプリを選択してください"ダイアログが表示された場合は、$OPAMROOT/playground/bin
にある Linux用の起動スクリプトocaml
が原因です。このスクリプトは Windows 環境では不要なので、削除してください。
OCaml
の終了
4.2 OCaml
を終了して、PowerShell
に戻ります。
以下の 2つの方法があります。
-
#quit
ディレクティブを使う:
#quit;;
とコマンドと終端記号を入力します# #quit;; >
上記のように、
powershell
のプロンプトに戻ります。 -
Clrl+Z
(EOF
)を入力する:
プロンプトの先頭で、Ctrl+Z
(EOF
) を入力します注意:
Windows 環境では、EOF
はCtrl+Z
で入力します。# ^Z [`Ctrl+Z`を入力] >
上記のように、powershell
のプロンプトに戻ります。
以上で、OCaml
の終了は完了です。
utop
の起動と終了
5. OCaml
と同様に、utop
が起動、終了することを確認します。
utop
の起動
5.1 高度な編集機能を使いたいときは、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
の起動は終了です。
utop
の終了
5.2 utop
を終了して、PowerShell
に戻ります。
以下の 2つの方法があります。
-
#quit
ディレクティブを使う:
#quit;;
とコマンドと終端記号を入力しますutop # #quit;; >
上記のように、
powershell
に戻ります。 -
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
を利用する方法について解説した記事。
Discussion