F# アプリケーションを作成する
ここまでで、REPL を使用することができ、fsx スクリプト ファイルまで作成できたかもしれません。 これでアプリケーションを大きくする準備ができました。さらに多くのファイルを含める必要があります。また、アプリケーションをパッケージ化して配布する機能も必要になります。 これを行うには、プロジェクトを作成する必要があります。 .NET SDK には、あらゆる種類のアプリケーションの構築を開始するのに役立つさまざまなプロジェクト テンプレートが用意されています。
.NET テンプレートとは
.NET SDK をインストールすると、プロジェクトやファイルを作成するための十数個もの組み込みテンプレートが用意されます。
- コンソール アプリ
- クラス ライブラリ
- 単体テスト プロジェクト
- ASP.NET Core Web アプリ
- 構成ファイル
F# では、テストや Web からクラス ライブラリまで、さまざまなテンプレートがサポートされています。 サポートされているプロジェクトの完全な一覧については、コンソールで dotnet new -l
を実行してください。
テンプレートを使用してアプリケーションを作成する
新しいアプリケーションを作成するには、dotnet new
.NET CLI コマンドを使用します。 たとえば、F# コンソール アプリケーションを作成する場合は、次のコマンドを使用します。
dotnet new console --language F# -o MyFSharpApp
一部のシェルは #
を特殊文字として解釈します。 その場合は、dotnet new console --language "F#" -o MyFSharpApp
のように、言語を引用符で囲みます。
dotnet new console
コマンドでは、組み込みのコンソール .NET テンプレートを使用して、新しいコンソール アプリケーションがスキャフォールディングされます。
数秒後、F# アプリケーションのコードを含む MyFSharpApp という名前のディレクトリが表示されます。
プロジェクト構造
MyFSharpApp ディレクトリには、次の 2 つのファイルがあります。
- Program.fs - アプリケーションのエントリ ポイント。
- MyFSharpApp.fsproj - ビルド情報と手順を含む MSBuild プロジェクト ファイル。 MSBuild は、アプリケーションをビルドするためのプラットフォームです。ビルド プラットフォームによるソフトウェアの処理方法およびビルド方法を制御する、プロジェクト ファイルの XML スキーマが提供されます。
Program.fs ファイルには、次のコードが含まれます。
// Learn more about F# at https://learn.microsoft.com/dotnet/fsharp
open System
// Define a function to construct a message to print
let from whom =
sprintf "from %s" whom
[<EntryPoint>]
let main argv =
let message = from "F#" // Call the function
printfn "Hello world %s" message
0 // return an integer exit code
このアプリケーションでは、System
クラス ライブラリを使用します。これは open
キーワードを使用してインポートされます。
from
関数では、whom
文字列パラメーターを使用して、文字列メッセージを作成および書式設定します。
main
関数は、アプリケーションのエントリ ポイントです。 from
関数を使用して "from F#" というメッセージが作成され、その値が message
にバインドされます。 次に、printfn
関数を使用して、"Hello world from F#" がコンソールに出力されます。
アプリケーションのビルド
これでコンソール アプリケーションが作成できたので、次は dotnet build
コマンドを使用してビルドします。 dotnet build
コマンドは、プロジェクトとその依存関係をバイナリ セットにビルドします。 バイナリには、拡張子が
- プロジェクトの種類が .NET Core 3.0 以降を対象とする実行可能ファイルである場合、アプリケーションの実行に使用できる実行可能ファイル。
- 拡張子が
* .pdb* であるデバッグに使用されるシンボル ファイル。 - アプリケーションまたはライブラリの依存関係が列挙されている
* .deps.json* ファイル。 - アプリケーションの共有ランタイムとそのバージョンを指定する、
* .runtimeconfig.json* ファイル。 - (プロジェクト参照または NuGet パッケージの参照を介して) プロジェクトが依存する他のライブラリ。
出力ファイルは既定の場所 (bin/<configuration>/<target>) に書き込まれます。 デバッグは既定の構成ですが、--configuration
オプションを使用してオーバーライドできます。 target ではターゲット フレームワークが参照されます。これは fsproj ファイルの TargetFramework
プロパティで指定されます。 ターゲット フレームによって、アプリまたはライブラリで利用できるようにする API のセットが指定されます。 たとえば、.NET 5 アプリケーションを使用して dotnet build
を実行した場合、その出力は bin/Debug/net5.0 に配置されます。
アプリケーションを実行する
実行可能なアプリケーションの場合、dotnet run
コマンドによって、アプリケーションを実行する便利なオプションが提供されます。 dotnet run
コマンドでは、出力ディレクトリ内の .dll または実行可能ファイルを検索し、dotnet
ドライバーを使用して、アプリケーションのエントリ ポイント (Program.fs) の定義に従ってコードを実行します。
ヒント
dotnet run
コマンドを使用すると、dotnet build
も自動的に実行されます。 そのため、アプリケーションを明示的にビルドする手順を省略できます。