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
権限を使わず、ユーザー権限のみでサンドボックスを実現するツール
以上です。
OCaml
とは
1.
OCaml
の特徴
1.1 OCaml
は、静的型付けの関数型プログラミング言語で、主に次のような特徴があります。
- 厳密な型チェック
- 型推論による型の自動推定
- パターンマッチング
- モジュールシステム
- オブジェクト指向プログラミングのサポート
OCaml
は「マルチパラダイム言語」とも呼ばれ、関数型、手続き型、オブジェクト指向の要素を併せ持っています。
opam
(OCaml
パッケージマネージャー)
1.2 opam
はOCaml
用のパッケージマネージャーです。
OCaml
自身もopam
で提供されており、複数のバージョンのOCaml
を切り替えて使うことができます。
opam
により提供されるパッケージには、さまざまなパッケージがあります。
たとえば、utop
というパッケージは、OCaml
のREPL
を大幅に機能拡張し、編集機能やタブ補完機能を追加します。
ほかのさまざまなパッケージは、opam list -a
で見ることができます。
2. 前提条件
この記事では、次の環境が前提となります。
-
WSL
環境にHomebrew
がインストール済み -
XDG Base Directory
仕様の各環境変数が設定済み -
dotfiles
によるbash
環境が構築済み
環境がまだの場合は、WSL開発環境の構築まとめ記事を参考に環境構築をしてください。
OCaml
のインストール
3. OCaml
をインストール手順は、次の通りです。
OPAMROOT
の設定
3.1 OPAMROOT
はopam
がパッケージを管理する場所を指定する環境変数です。
OPAMROOT
を指定しない場合は、~/.opam
でパッケージを管理します。
この記事では、XDG Base Direcory
に準じたOPAMROOT
を設定することで、環境をクリーンに保ちます。
次の手順で、OPAMROOT
を設定します。
-
envrc
に次の行を追加する:~/.config/envrc# ocaml export OPAMROOT="$XDG_DATA_HOME/opam"
以上で、OPAMROOT
の設定は完了です。
bubblewrap
のインストール
3.2 bubblewrap
は、ユーザー権限でサンドボックスを作成するツールです。
OCaml
では、サンドボックス機能を実現するために使われています。
次の手順で、bubblewrap
をインストールします。
-
brew
でインストール:
brew install bubblewrap
以上で、bubblewrap
のインストールは完了です。
3.3 ターミナル (WSL)の再起動
ここまでで設定した環境変数をWSL
に反映させるため、ターミナルWSL
を再起動します。
次の手順で、ターミナルを再起動します。
-
ターミナルの終了
exit
を入力し、ターミナルを終了します:exit
-
WSL の起動
Windows Terminal
のプルダウンメニューで、Debian
を選択します。
以上で、WSL の再起動は完了です。
opam
のインストール
3.4 パッケージマネージャーopam
は、brew
を使ってインストールします。
次の手順で、opam
をインストールします。
-
brew
で、opam
をインストールする:brew install opam
以上で、opam
のインストールは終了です。
opam
の初期化
3.5 opam
の各種コマンドを使えるように、opam
を初期化します。
次の手順で、opam
を初期化します。
-
opam init
でopam
を初期化します:opam init --bare --shell=bash -a
以上で、opam
の初期化は終了です。
opam switch
でのOCaml
のインストール
3.6 opam switch
は複数のバージョンのOCaml
をインストールできる機能です。
インストールしたOCaml
は、opam switch
で切り替えられます。
次の手順で、OCaml
をインストールします。
-
OCaml
をインストールする:opam switch create current 5.1.1
注意:
上記の5.1.1
は、OCaml
のバージョンを指定します。
どのバージョンが指定できるかは、opam switch list-available
を使用してください。
以上で、OCaml
のインストールは終了です。
profile
の設定
3.7 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 の再起動は完了です。
OCaml
の起動、終了
4. OCaml
が正常にインストールできたかどうかを確認するため、OCaml
を起動、終了します。
OCaml
の起動
4.1 次のコマンドで、OCaml
を起動します。
ocaml
以下のように、プロンプトが表示されれば成功です。
The OCaml version 5.1.1
Enter #help;; for help.
#
以上で、OCaml
の起動は終了です。
OCaml
の終了
4.2 起動した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