F#でもElectronNET.APIを使うためのHOW TO


はじめに

C#ASP.NET Core MVC/BlazorElectronNET.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アプリケーション用プロジェクトの作成方法について紹介していきたいと思います.

プロジェクト作成方法

今回は PowerShellVisual Studio Code(= VSCode) を利用していきます.

Windows の方は cmdWindows Terminal でも問題ありませんし, MacLinux を利用している方は zshbash を利用しても問題ありません.

1. 今回の環境

名称
OS Windows 10 Pro (x64)
Editor Visual Studio Code
.NET .NET Core 3.1.201

2. ElectronNET.CLI ツールをインストールする

powershell
dotnet tool install ElectronNET.CLI -g

3. ASP.NET Core MVC プロジェクトを作成する

  1. 適当なワーキングディレクトリに移動する

    powershell
    cd D:/work
    
  2. dotnet new コマンドを利用して, ASP.NET Core MVC プロジェクトを作成する

    powershell
    dotnet new mvc -lang=F# -o=FsharpElectronApp
    
  3. 作成したプロジェクトのディレクトリに移動する

    powershell
    cd ./FsharpElectronApp
    
  4. dotnet add コマンドを利用して, ElectronNET.API を導入する

    powershell
    dotnet add package ElectronNET.API
    
  5. Visual Studio Code で作成したプロジェクトを開く

    powershell
    code .
    
  6. FsharpElectronApp.fsprojFsharpElectronApp.csproj に書き換える

    🚨この工程を忘れると次の作業が失敗するので必ず行うこと🚨

  7. electronize init でプロジェクトの初期化を行う

    powershell
    electronize init
    

  8. FsharpElectronApp.csprojFsharpElectronApp.fsproj に書き戻す

    🚧この工程を忘れるとプロジェクトのビルドが失敗するので忘れず行うこと🚧

  9. dotnet restore を 実行する

    powershell
    dotnet restore
    

4. プロジェクトを実行する

  1. Program.fs を修正する

    Program.fs
    open ElectronNET.API    // <-- この行を追加
    
    // (中略)
    
    let CreateHostBuilder args =
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(fun webBuilder ->
                webBuilder.UseElectron args |> ignore    // <-- この行を追加
                webBuilder.UseStartup<Startup>() |> ignore)
    
  2. Startup.fs を修正する

    Startup.fs
    open ElectronNET.API    // <-- この行を追加
    
    // (中略)
    
    member this.Configure(app: IApplicationBuilder, env: IWebHostEnvironment) =
    
        //(中略)
    
        Electron.WindowManager.CreateWindowAsync() |> ignore    // <-- この行を追加
    
  3. electronize start で実行する

    初回はアプリが起動するまでに結構時間がかかるので注意

    powershell
    electronize start
    

  4. アプリが起動する

5. その他の情報

おわりに

プロジェクト作成までの手順は以上となります.
あとは C# と使い方については同様となりますので, そちらの情報を適宜探すことでアプリケーションを作成することが可能だと思います.