はじめに
C# と ASP.NET Core MVC/Blazor と ElectronNET.API を利用することで簡単にクロスプラットフォームGUIアプリケーションを作成することができます.
それを F# でもやろう!という話です.
ところで、F# でも ASP.NET Core MVC が使えることを知っているでしょうか?
F# は何かと Visual Studio からの扱いが不遇なため, 利用できないと思っている方も多いと思います.
例えば以下は C# から ASP.NET Core Webアプリケーション を作成する際の画面ですが,
F# 側では以下のようになっています.
Visual Studio からしかプロジェクトを作成したことがない方はこの画面だけしか見る機会がないため, F# では ASP.NET Core MVC を利用できないと思ってしまうのも無理はないと思います.
しかし dotnet コマンドを利用してプロジェクト作成をしている方は F# でも ASP.NET Core MVC が利用できることを把握しているかもしれません.
もしくは, Visual Studio からしかプロジェクトを作成したことがない方でも, F# でWebアプリケーションを作成したくて検索した結果, 利用できるという事実を知った方もいるかと思います.
dotnet のリファレンスを見れば利用できることは自明なのですが, --help を利用することでも知ることができます.
というわけで, 今回は F# + ASP.NET Core MVC + ElectronNET.API を利用して, クロスプラットフォームGUIアプリケーション用プロジェクトの作成方法について紹介していきたいと思います.
プロジェクト作成方法
今回は PowerShell と Visual Studio Code(= VSCode) を利用していきます.
Windows の方は cmd や Windows Terminal でも問題ありませんし, Mac や Linux を利用している方は zsh や bash を利用しても問題ありません.
1. 今回の環境
| 名称 | |
|---|---|
| OS | Windows 10 Pro (x64) |
| Editor | Visual Studio Code |
| .NET | .NET Core 3.1.201 |
2. ElectronNET.CLI ツールをインストールする
dotnet tool install ElectronNET.CLI -g
3. ASP.NET Core MVC プロジェクトを作成する
-
適当なワーキングディレクトリに移動する
powershellcd D:/work -
dotnet newコマンドを利用して,ASP.NET Core MVCプロジェクトを作成するpowershelldotnet new mvc -lang=F# -o=FsharpElectronApp -
作成したプロジェクトのディレクトリに移動する
powershellcd ./FsharpElectronApp -
dotnet addコマンドを利用して,ElectronNET.APIを導入するpowershelldotnet add package ElectronNET.API -
Visual Studio Codeで作成したプロジェクトを開くpowershellcode . -
FsharpElectronApp.fsprojをFsharpElectronApp.csprojに書き換える -
electronize initでプロジェクトの初期化を行うpowershellelectronize init -
FsharpElectronApp.csprojをFsharpElectronApp.fsprojに書き戻す🚧この工程を忘れるとプロジェクトのビルドが失敗するので忘れず行うこと🚧
-
dotnet restoreを 実行するpowershelldotnet restore
4. プロジェクトを実行する
-
Program.fsを修正するProgram.fsopen ElectronNET.API // <-- この行を追加 // (中略) let CreateHostBuilder args = Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(fun webBuilder -> webBuilder.UseElectron args |> ignore // <-- この行を追加 webBuilder.UseStartup<Startup>() |> ignore) -
Startup.fsを修正するStartup.fsopen ElectronNET.API // <-- この行を追加 // (中略) member this.Configure(app: IApplicationBuilder, env: IWebHostEnvironment) = //(中略) Electron.WindowManager.CreateWindowAsync() |> ignore // <-- この行を追加 -
electronize startで実行する初回はアプリが起動するまでに結構時間がかかるので注意
powershellelectronize start -
アプリが起動する
5. その他の情報
おわりに
プロジェクト作成までの手順は以上となります.
あとは C# と使い方については同様となりますので, そちらの情報を適宜探すことでアプリケーションを作成することが可能だと思います.








