この度F#に新たにチャレンジをしようと思いMacで開発環境を整えたので、備忘も含めて記事にしました。
MacでF#の開発環境を構築する
F#で開発する際のIDEとしてはVisual Studio、Visual Studio Code、JetBrain Riderの3つがメジャーみたいです。
自分の場合はVisual Studio Codeが使い慣れているため、今回の記事もVisual Studio Codeを使った環境構築に関して記載していきます。
今回、環境構築に必要なものは以下です。
.NET Core SDKをインストールする
F#のランタイムは.NETとmonoがあるようですが、今回は.NETを使って環境構築を行います。
まずは、.Net Core SDKからSDKをダウンロードしてMacにインストーします。
インストールが完了したらターミナル等で下記のコマンドを実行します。
dotnet --version
バージョンが表示されたら無事にインストール完了です。
Visual Studio Codeをインストールする
Visual Studio Codeは既にインストール済みの人が多いかもしれませんので、インストール済みの場合はこの手順はスキップしてVisual Studio Codeの拡張機能のインストールに進んでください。
Visual Studio Codeはここからダウンロードが可能です。
Visual Studio Codeのインストールが完了したら次は拡張機能のインストールに進みます。
Visual Studio Codeの拡張機能をインストールする
今回は2つの拡張機能をインストールします。
Ionide-fsharpは必須で、Bracket Pair Colorizerは任意でインストールします。
Ionide-fsharpをインストールする
Visual Studio Codeを起動し、左側のサイドバーから拡張機能を選択して、Ionide-fsharpを検索します。
※ちなみに頭文字はLの小文字ではなくiの大文字です。
検索したらあとは Install をクリックするだけです。
Bracket Pair Colorizerをインストールする
こちらの拡張機能は任意になります。
機能としては対になる括弧を同じ色にしてくれる機能となります。
関数プログラミングの場合は括弧を多用するので、この機能があると便利です。
ただF#の構文はPythonと同じようにのオフサイドルール(括弧ではなく、インデントでコードのブロックを指定する規則)が採用されているため、どこまで活躍するかは勉強前の時点では不明なのですが、自分は一旦インストールしました。
こちらもIonide-fsharpと同様にVisual Studio Codeの拡張機能からBracket Pair Colorizerで検索してインストールします。
検索するとBracket Pair ColorizerとBracket Pair Colorizer2の2つが出てくると思います。
Bracket Pair Colorizer2は無印と機能は全く同じであるが、2の方が速度的なパフォーマンスは良いそうです。
ただ2022年以降の開発予定はないって記載があったので、自分は無難に無印を選択しました。
これでVisual Studio Codeの設定も完了です。
せっかく環境構築が完了したので、プロジェクトを作成して簡単にコードを実行してみようと思います。
実際にF#を実行してみる
実際にコードを動かすにあたって今回はテンプレートからアプリケーションを作成して動かそうと思います。
アプリケーションの作成は.Net Core SDKがインストール済みであればコマンドで一発です。
アプリケーションを作成したい任意のディレクトリに移動して、下記のコマンドを実行します。
dotnet new console -lang F# -o Sample
上記のコマンドを簡単に説明すると、「F#で実装されたSampleという名前のアプリケーションをConsole Applicationのテンプレートを使って作成する」です。
今回の場合はSampleという名前にしたので、コマンドを実行するとSampleというディレクトリが作成されていると思います。
作成したアプリケーションをVisual Studio Codeで開いてみると下図のようになっています。
問題なくアプリケーションの作成ができたみたいなので、実際に実行してみます。
コンソールからアプリケーションを実行する
実行するには、まずアプリケーションのディレクトリに移動します。
cd Sample
移動したら下記のコマンドを実行します。
dotnet run
するとProgram.fsに実装されているHello from F#が表示されました。
VS Codeからアプリケーションを実行する
続いてはVisual Studio Codeから実行またはデバッグできるように設定をしていきます。
まずVisual Studio CodeでSampleディレクトリを開きます。
ここではSample.fsprojファイルが配置されているディレクトリをVisual Studio Codeで開く必要があります。
今回の場合だとSampleディレクトリを開きます。
Program.fsを開いたらF5を押下します。
すると選択肢が表示されると思うので、.NET 5+ and .NET Coreを選択します。
選択するとlaunch.jsonが作成されて、右下にAdd Configurationと表示されるので、Add Configurationを押下します。
するとlaunch.jsonの7行目あたりにカーソルが移動すると思うので、そこで.NETと入力します。
候補が表示されると思うので、.NET: Launch .NET Core Console Appを選択します。
すると自動で設定が入力されるので、必要な箇所を書き換えていきます。
書き換えが必要な場所は12行目あたりの、target-frameworkとproject-name.dllの2つです。
まず、target-frameworkですが、これは使うdotnetのバージョンに依存するもので、Sample.fsprojファイルのTargetFrameworkに記載されているものと同じものに書き換えます。
自分の場合はnet6.0だったのでnet6.0に書き換えました。
続いてはproject-name.dllの書き換えです。これはアプリケーション名になる部分なので、今回の場合はSample.dllと書き換えます。
※dllの拡張子も必要なので忘れないようにしてください。
以上を踏まえて変更した結果は下記の通りです。
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Launch (console)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/bin/Debug/net6.0/Sample.dll",
"args": [],
"cwd": "${workspaceFolder}",
"stopAtEntry": false,
"console": "internalConsole"
}
]
}
書き換えが完了したら改めてF5を押下します。
すると画像のようにエラーメッセージがでると思うので、Configure Taskを押下します。
するとまた選択肢が表示されるのでCreate tasks.json file from templateを選択します。
選択肢の中から.NET Coreを選択します。
するとtasks.jsonが作成されると思います。
今はtasks.jsonに手を加える必要はありません。
これで準備は完了です。
再度F5を押下します。
Hello from F#が表示されればOKです。
黄色い文字でたくさんメッセージが出ていますが、これはデバッグ実行によるデバッグメッセージです。
デバッグメッセージを表示したくない場合はControl + F5で通常実行すればOKです。
通常実行すると下図のようにデバッグメッセージが消えます。
これでVisual Studio Codeで実行する設定も完了です。
これで環境構築と動作確認は完了です!
余談
試しにちょっとコードを書いてみましたが、補完も効くようなので便利!
まとめ
今回は環境構築がメインだったのでアプリケーションの作成には一番簡単であろう、Console Applicationを選択しました。
実務レベルで実際にアプリケーションを作成していくとなると、ソリューションを作成したり、プロジェクト作成時の引数を変更して自分が実装したいアプリケーションに近いテンプレートを選択することも考える必要があるのではないかと思います。
実際にどのようなテンプレートが使えるのかは下記のページで記載されています。
F#で使えるのはまだ半分程度ですね。。
とりあえず環境構築が完了したので今回はOKです。
みなさまの役に立ちますと幸いです。
コメント