Michi -GPSログ整形アプリを.NETへ移行する。

■要素
目的: Michi -GPSログ整形アプリ を.NETへ移行する。
input: GPSログ(NMEA-0183)、Google Maps API Key
output: Google Maps ページ + 速度グラフ(jpeg)、高度グラフ(jpeg)
build on: MonoDevelop 7.8.4 & GTK+
特徴: 元々はGUIツールとして作成したけど、コンソールアプリとしても動作します。

MonoDevelopもいずれは.NETに統合されるらしい(?)ので、ゆっくりと移行について考えていきます。ついでにグラフ出力に使用しているNPlotも永らく更新されていないので、置き換えたい。マルチプラットフォームにもできたらいいなぁ。

■概観
.NET + MAUIが良さそうだけど、MAUIはまだ正式版が出てないし、linuxサポートはコミュニティ版なのでさらに後になるでしょう。とりあえず、GUIは無くても困らないので、コンソールアプリ部分のみ移行を開始します。開発はVSCodeを使います。

■.NETインストール
参考:https://docs.microsoft.com/ja-jp/dotnet/core/install/linux-scripted-manual#scripted-install
スクリプトでのインストール
dotnet-install スクリプトは、SDK およびランタイムのインストールの自動化および管理者以外によるインストールのために使用されます。 このスクリプトは https://dot.net/v1/dotnet-install.sh からダウンロードできます。
$ ./dotnet-install.sh

■.NETのパスを通す
.NETを使うためにパスを通します。
.bashrc に以下を追記
export DOTNET_ROOT=~/.dotnet
export PATH=$PATH:$DOTNET_ROOT
次で反映する。
$ source .bashrc

■バージョンを確認
$ dotnet –list-sdks
6.0.104 [/home/miyajima/.dotnet/sdk]

チュートリアル: Visual Studio Code を使用して .NET コンソール アプリケーションを作成する
https://docs.microsoft.com/ja-jp/dotnet/core/tutorials/with-visual-studio-code?pivots=dotnet-6-0

■MonoDevelop版のソースをぶち込んでビルドしてみる。
なんかBitmap関連でエラーが出ている。
調べてみると…

■Bitmap クラス
System.Drawing.Common が Windows でしかサポートされない
https://docs.microsoft.com/ja-jp/dotnet/core/compatibility/core-libraries/6.0/system-drawing-common-windows-only

これらの API をクロスプラットフォーム アプリで使用するには、次のいずれかのライブラリに移行してください。
ImageSharp
SkiaSharp
Microsoft.Maui.Graphics

影響を受ける API
System.Drawing 名前空間:
Bitmap

先は長い。