はじめに
VSCodeのDevcontainer機能を使うとHaskellの環境構築がとても簡単だったため紹介します。
HLS(Haskellの言語サーバ)が自動で用意されるため、自動補完などのコーディング支援機能が使える状態になります。
前提
以下のソフトウェアを使用します。
- Visual Studio Code(VSCode)
- Docker
準備
Devcontainerで使用するDockerファイルを準備します。
- 好きな場所にプロジェクト用のフォルダを作成し、VSCodeで開きます。
この記事では「haskell-learn」という名前にしてみました。 - VSCodeの拡張機能「Dev Containers」をインストールします。
https://github.com/microsoft/vscode-dev-containers/tree/main/containers/haskell - ウィンドウ左下の緑色のアイコンをクリックします。
- 「開発コンテナー構成ファイルを追加...」をクリックします。
- 「Haskell」で検索し、「Haskell コミュニティ」を選択します。
- いくつか選択画面が表示されるため、すべて「OK」を選択してください。
- 最後まで選択するとプロジェクトフォルダ直下に「.devcontainerフォルダ」が作られます。
Devcontainerの起動
Devcontainerを起動します。
- ウィンドウ左下の緑色のアイコンをクリックします。
- 「コンテナーで再度開く」を選択します。 選択するとコンテナが起動します。
初回の場合、コンテナのビルドを行うため時間がかかります。 - コンテナの起動が成功すると、プロジェクトフォルダがコンテナに接続された状態になります。
これでHaskellプログラムをビルド・実行できるようになりました。
Hello Worldをやってみる
Hello Worldをやってみます。
-
VSCodeで開いているプロジェクトフォルダの直下に以下のファイルを作成します。
hello.hsmain = putStrLn "Hello World"
-
ターミナルで以下のコマンドを実行します。
runghc hello.hs
-
ターミナルに
Hello World
と表示されれば成功です。
Devcontainerの終了
Devcontainerを終了し、ホストOSでフォルダを開いた状態に戻します。
- 起動時と同様にウィンドウ左下の緑色のアイコンをクリックします。
- 「フォルダーをローカルで再度開く」を選択します。
参考サイト
- Devcontainer(Remote Container) いいぞという話 ~開発環境を整える~
https://qiita.com/yoshii0110/items/c480e98cfe981e36dd56 - 今回利用したHaskell用DevcontainerのGitHub
https://github.com/microsoft/vscode-dev-containers/tree/main/containers/haskell - Haskellの実行 まずはHello World
https://qiita.com/Nipper1357/items/4b4b9d60d8067fcf238c