ブログ

AIよ。.Net MAUI使うとHSPiPもMacで動くんかい?

隠遁Chemistと愛(AI)の交換日記

今、HSPiPの物性推算やSphere探索などを行うMB6.dllを開発している。
Abbott先生の作ったdllは構成が悪い。
しばらく拡張したところ、StackOverflowエラーが出るようになってしまった。
C#を勉強したのは、2008年ごろなので、新しいものにはついていかれていなかった。
ChatGPTに聞きながら地道にエラーを潰して行った。
dllは計算部分だけを扱っている。
するとデバッグしようにもデータを投入できない。巨大なHSPiPからジョブを投入してデバッグするのも効率が悪い。

Windows のフォームアプリを作った。GUIを使ってジョブを投入する。
最近本格的なデバッガーを使ったアプリ開発はしてこなかった。(ブラウザーのデバッガーばかり使っていた)本格的なデバッガーは本当に良い。
変数の値は押さえやすい。
すごく、プログラムがスッキリした。

計算ルーチンとインターフェイスを分けたことによって、良いこともたくさんある。
山本(LLC: pirika.com社CEO)が独自に作成した計算ルーチンをdllに埋め込む。
それをPirikaProと名付けたインターフェイスアプリから利用する。
dll自体はHSPiPとPirikaProの両方のアプリから共通に利用できる。
PirikaProをHSPiPのAdd-Onとして特別ユーザーに提供できる。

私はMacユーザーだ。windowsの実機をWindows Appを使ってMac上から使う。
プログラムを作ってもwindowsでしか動作しない。

パラレルを導入してwindowsを使うこともできるが、パラレルとWindowsを両方購入しなくてはならない。

それに対してCrossOverを導入すると、windowsのソフトをマックの上で動作させることができる。windows11は購入する必要ない。

PirikaProとdllをインストールするとMac上でそのまま動作する。
試しに、HSPiPをCrossOverにインストールすると何と動いてしまった。

昔、昔のCrossOverで試した時にはだめだったけど今のやつは動くようだ。(動作保証するわけでは無いが)

ポイントは.Net Frameworkだろう。JAVAのJDKみたいなものか。
計算ルーチンみたいなマシンに依存しないものはマシン用のFrameworkを用意すれば、同じソースコードでどんなマシンでも動作させる事ができる。

そういえば、.Net MAUIという、マルチプラットフォームアプリ用のFrameworkも提供されている。
それなら、今回作ったdllをMacから利用できるはずだ。(CrossOverすらいらない)
もともとはCommand Line Interface(CLI)で使う前提で作り始めたものだし。

ChatGPTに
C# のdllをMac から走らせる .Net MAUIについて簡単な例で教えて
って聞いてみた。

.NET MAUI とは(超短く)

  • C# + XAML で
  • Mac / Windows / iOS / Android を
  • 1つのプロジェクトで動かせる

👉 WinForms の後継ではない
👉 **「クロスプラットフォーム GUI」**が本質


まず必要なもの(Mac)

必須

  • macOS
  • .NET SDK(8 or 9) ← あなたはすでに入っている
  • Visual Studio for Mac は不要(※廃止された)
  • VS Code + ターミナルでOK

① MAUI ワークロードを入れる(1回だけ)

ターミナルで:

dotnet workload install maui

確認:

dotnet workload list

maui が出ればOK。


② 最小の MAUI アプリを作る

dotnet new maui -n MauiHello
cd MauiHello

このように丁寧にアプリの作り方を教えてくれる。
これまでのやり取りをベースにこちらのマシンに何がインストールされているかも把握している。(これは少し怖い)

さらに恐ろしいのが。。。。

聞いてもいないのに、本来の目的であるMB6.dllは流用。Macで動作するPirikaProの作り方まで教えてくれる。

PirikaPro / MB6 との関係(重要)

そのまま流用できるもの

  • MB6.Core(.NET Standard 2.0) ← 完璧に相性◎
  • 計算ロジック
  • クラス設計

作り直しが必要なもの

  • WinForms の Form / Button / TextBox
  • System.Windows.Forms

👉 UI だけ MAUI に書き換え
👉 中身(計算)は MB6.Core をそのまま参照


MAUI で MB6.Core を使う例

dotnet add reference ../MB6.Core/MB6.Core.csproj

などなど、丁寧な説明がつく



1) 画面の対応イメージ(WinForms → MAUI)
2) “PirikaProっぽい1画面” のMAUI例
3) MB6.Core を MAUI から呼ぶ(PirikaPro移植の肝)
4) 次にやると一気に“PirikaProらしく”なる改良
  設定保存:Preferences(最後の入力値を保持)
  画面をタブ化:TabBar / TabbedPage(YMB / Sphere / ActCoef)
  入力を一覧化:CollectionView(溶媒リスト、条件リストなど)
  計算中のUI:ActivityIndicator(ぐるぐる)

AIを使うと生産性が10倍になる。
実感として思い知らされた。

でも、HSPiP自体.Net Frameworkで動いているなら.Net MAUIに置き換えるのも簡単そうに思える。
そもそも私以外でHSPiPをMacで動かしたい奇特な人間がいるかどうかは疑問だけど。

事の本質は、DEEP Lが言語をどのような向きにでも翻訳するように、MacだWindowsだの言語変換は多分もっとずっと簡単にできるようになる。
WindowsのVSを使っているととても苛つく。
エディターはMacの方が使いやすい(慣れているせいもあるけど)。
Windows専用の良いソフトもある。
そんなものの境が無くなる。

いい時代になったものだ。

大学入試に”情報”とか入ったが、その学生が卒業する頃には、人間がプログラムするなんてありえないことになるだろうな。若い人は可愛そうだ。