nikkie-ftnextの日記

イベントレポートや読書メモを発信

F#で Minimal API のはじめ方

はじめに

七尾百合子さん、お誕生日 111日目 おめでとうございます! nikkieです。

F#やdotnetとはあくまでビジネス上の付き合いなのですが、Hello Worldで少しだけ手を動かしてみて学びがありました。

目次

dotnet newコマンドが便利!

dotnet new web -lang F#1

% dotnet --version
8.0.411
% mkdir App
% cd App
% dotnet new web -lang F#

learn.microsoft.com

webの指定で「ASP.NET Core Empty」を指定
https://learn.microsoft.com/ja-jp/dotnet/core/tools/dotnet-new-sdk-templates#web

dotnet new webだけでHello World

dotnet new webしただけで動かせました!

% cd ..
% dotnet run --project App 

Hello Worldが表示されます。

おなじみのものも追加

    app.MapGet("/", Func<string>(fun () -> "Hello World!")) |> ignore
+    app.MapGet("/sakana", Func<string>(fun () -> "ちんあなご〜")) |> ignore

    app.Run()

Minimal APIというのか〜

関数型まつりの学びの1つです。

所属先のブログに分かりやすい記事!

ゼロイチのところは未経験だったので、いくつか学びがありました。
dotnetコマンド、便利ですね〜2

  • dotnet new sln(ソリューションファイル作成)
  • dotnet sln add
    • ソリューション ファイルに 1 つ以上のプロジェクトを追加します。

  • dotnet watch
    • ソース コードの変更が検出されたときに、指定されたアプリケーションを再起動またはホット リロード するか、指定した dotnet コマンドを実行します。

IResult型など、Hello Worldの先の内容も載っています。
関数型まつりの発表資料にも繋がりますね(同じ方です)

終わりに

自分の手でF#・Minimal APIでHello Worldしてみて、便利なdotnetコマンドがいくつもあることを知りました。

リポジトリはこのあたりです:


  1. 過去にconsoleを指定したことがあります
  2. 慣れ親しんだPythonではスキャフォールディング機能は標準にはありません。cookiecutterなどサードパーティツールが考えられます(uvxやpipx run!)