開発環境

Haskellのインストール方法(Windows)

Haskellのインストール方法(Windows)

HaskellをLinuxにインストールする方法について解説します。具体的には、Windows11を対象にします。

Haskellの環境構築(Windows)

Haskellは、高度な純粋関数型プログラミング言語で、強力な型システムと静的型付けを特徴としています。関数型プログラミングを学ぶには最適な言語のひとつです。

本記事では、Haskellの開発環境をWindowsで用意するための方法について紹介しますが、Linuxでも環境は用意できます。LinuxのUbuntuにインストールする方法は「Haskellのインストール方法 (Linux)」でまとめているのでLinuxをお使いの方はこちらを参考にしてください。

なお、Haskellは、WindowsとLinuxの両方の環境で使用されますが、一般的にはLinuxがより好まれる傾向にあります。これは、多くの開発者やシステム管理者がLinuxを好むため、より多くのオープンソースプロジェクトや開発ツールがLinux環境に最適化されているためです。HaskellはどちらのOSでも動作しますが、Linux環境では特にパッケージ管理や環境設定が容易であると言われています。

ただし、これは一般的な傾向であり、特定のプロジェクトやチームによってはWindows環境でHaskellを積極的に使用している場合もあります。また、開発者の個人的な好みや特定のプロジェクトの要件によっても、使用されるOSは異なる可能性がありますので必要に応じて検討してください。

本記事では、Haskellの開発環境をWindowsで用意する方法について説明します。なお、本記事の前提として使用したOSとしては、Windows11とします。

Haskellのインストール

Haskell関連のインストールは、Haskellの公式ダウンロードページの情報を参考に行います。

Haskell インストール
公式ダウンロードページ ※記事執筆時点のため画面構成は変わっている可能性があります

本記事では、GHCのインストーラーであるGHCupを使用してGHCのインストールを行います。

GHC (Glasgow Haskell Compiler)は、最も広く使われているHaskellコンパイラであり、GHCupは、Haskell環境構築のためのインストーラのことです。

インストール手順

Haskellダウンロードページの「GHCup」ボタンをクリックすると、GHCupのページに遷移します。初期表示時にはWindowsのインストールに関する表示がされていると思います。

GHCup インストール windows

WindowsのPower Shellを開いて、表示されている以下のコマンドを実行します。上記画面のコピーボタンからコピーできます。

Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; try { Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true } catch { Write-Error $_ }

上記のコマンドについて簡単に説明すると以下のようになります。

コマンド概要
Set-ExecutionPolicy Bypass -Scope Process -Force;PowerShellの実行ポリシーを設定するコマンドです。Bypassオプションにより、すべてのスクリプトと構成ファイルが制限なしに実行できるようになります。-Scope Processオプションは変更が現在のプロセスにのみ適用されることを意味します。-Forceオプションは確認なしで実行ポリシーを変更します。
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;この行は、.NETのServicePointManagerを使用して、セキュリティプロトコルの設定を変更しています。-bor 3072は、TLS 1.2 (値を3072)で追加します。
try { Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true } catch { Write-Error $_ }例外処理のtry...catch構文を使用しています。エラーはWrite-Error $_の部分で表示します。
コマンドの意味は以下です。
Invoke-Command: PowerShellコマンドやスクリプトを実行するために使用します。
ScriptBlock: 実行するコマンドまたはスクリプトのブロックを定義します。
Invoke-WebRequest: 指定したURLからデータを取得します。ここではHaskellのインストールスクリプトbootstrap-haskell.ps1を取得しています。
-UseBasicParsing: HTML解析を行うためのオプションです。
-ArgumentList $true: スクリプトに引数$trueを渡します。

すごく簡単に言ってしまうとPowerShellの実行ポリシーを変更しつつ、Haskellのインストールのためのps1ファイルをインストールしてきて実行するということです。

コマンドを実行すると以下のような表示がされます。インストールパスとしてCドライブいかにインストールされることが表示されます。問題がなければenterをクリックしてください。

次に、GHCupのインストールパスの表示がされます。問題がなければenterをクリックしてください。

haskell-language-server (HLS)のインストールをするか確認があります。HLSは、Haskellプログラミング言語のための高度な言語サーバーで、Haskell開発において多くの利点を提供してくれるため、インストールしておきます。「Y」を入力してENTERをクリックします。

stackの設定を実行するか確認があります。「Y」を入力して有効化するようにします。stackは、Haskellのプロジェクト管理およびビルドのためのツールです。

Desktopにショートカットを作るか聞かれるので「Y」を入力してENTERをクリックします。

MSys2のインストールの確認があるので「Y」を入力してENTERをクリックします。MSys2はWindowsでUnixのような開発環境とツールチェーンを提供するソフトウェアです。

その後にダウンロードやインストールが順次進んでいきます。

画面が勝手に切り替わったりと比較的時間がかかりますので、しばらく待ちましょう。表示されるプロンプトの全ての処理が終わればインストールは完了です。

今回Windows11環境で構築し、インストールおよび動作することは確認していますが、GHCupのSupported platformsでは明確にWindows11のサポートの表示がされていません。勉強用などで環境を作る分にはよいと思いますが、実際の開発などで利用する際にはサポートされた環境を使うようにすると良いでしょう。
※記事執筆時点の情報のため最新ではサポートされている可能性があります。

GHCiの実行

Haskellの実行環境の確認する方法としては、GHCのインタラクティブな対話型シェルであるGHCiを確認してみることです。コマンドプロンプトで以下を実行してみてください。

ghci

GHCiが起動すると以下のような表示となります。

GHCiは、インタラクティブな対話型シェルのため、その場で計算を実行したり、Haskellプログラム(.hs)をロードして実行するといったことが可能です。「GHCiの主要なコマンド」でGHCiの主要なコマンドを説明しているので、参考にして触ってみてもらえると面白いかと思います。

Haskellの開発環境の準備

Haskellがインストールできたら開発環境を準備して実際の開発をします。

Haskellの開発環境としては、他の言語の開発でもよく使用されるVisual Studio Code (VSCode)が使用できます。VSCodeは、拡張機能の豊富さ、そしてHaskell Language Serverとの互換性により、シンタックスハイライト、コード補完などの機能が利用できます。

VSCodeでの環境の準備方法については「VSCodeでHaskellの開発環境を構築する方法」でまとめていますので参考にしてください。

まとめ

HaskellをLinuxにインストールする方法について解説します。具体的には、Windows11を対象にします。

Haskellは、高度な純粋関数型プログラミング言語で、強力な型システムと静的型付けを特徴としています。Haskell環境を構築して、是非Haskellでのプログラム開発や学習に役立ててもらえたらと思います。

なお、記事冒頭でも紹介したようにHaskellはLinuxでも環境を構築できます。Linuxにインストールしたい場合は「Haskellのインストール方法 (Linux)」を参考にしてください。