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 コマンドは、プロジェクトとその依存関係をバイナリ セットにビルドします。 バイナリには、拡張子が *.dll* である中間言語 (IL) ファイルのプロジェクトのコードが含まれます。 プロジェクトの種類や設定に応じて、次のような他のファイルを含めることもできます。

  • プロジェクトの種類が .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 も自動的に実行されます。 そのため、アプリケーションを明示的にビルドする手順を省略できます。