これまでWindows専用だったLINQPadですが、LINQPad 8になってmacOSがベータサポートされました。今回はLINQPad for macOS (Beta)をApple M2、macOS Sequoia 15.2で試してみましょう。
LINQPad for macOSの状況
LINQPad 8ページからLINQPad for Macベータ版をダウンロードできます。
レンダリング
気になるUIはAvalonia.XPFを使うことで、WinForms & WPFと同じようにレンダリングしているようです。Windowsでの実装を利用できるのいいですね。
起動スプラッシュでもAvalonia.XPFのロゴが表示されます。
ライセンス
LINQPad 8と同じライセンスが利用できます。Windowsと同じように、ライセンスを入力するとNuGetやデバッガーも使えます。何ができるかはライセンスページで確認してください。私はPremiumを利用しており、Visual Studioと遜色なく使えています。買い切りかつアップグレード時に割り引かれたりすることや、組織でも無制限ユーザー向けライセンスがあって今でも割安度がすごいです。
実装状況
現在の実装状況はWebページでアナウンスされています。
未実装で気になるのはThe Roslyn Syntax Tree visualizerとILSpy integrationです。NuGetライブラリなどでステップインしたときにILSpyで見ることがあるので、Windows同様に使えるようになるといいですね。
使ってみた感じでは、私のように「C#挙動を確認するためのデバッガー付きのプレイグラウンド用途」であれば問題ないなという感触でした。例えば、NuGet参照、ブレークポイント、ローカル変数、ステップイン、ReadLine入力やDump出力ができるので、サクッとConsoleApp代わりにライトな使い方であれば問題なさそうです。
LINQPad for macOSを使ってみる
インストールからNuGetライブラリを使うまでサクッと試してみます。
インストール
LINQPad for macOSは次の流れでインストールします。いたって普通な.NETアプリケーションですね。
- .NET SDK 8.0 or 9.0をインストール
- LINQPad 8 for macOSをダウンロードして、Applicationにコピーする
LINQPadのインストールダイアログで、.NET SDKのインストールを促されるので、そこからインストールしてもいいでしょう。私は.NET SDK 9.0を入れてます。1
起動すると、macOSっぽいUIでLINQPadが起動します。
動作確認
適当に前の記事で紹介したUtil.Difも問題なく動作します。ちなみにWindows版のショートカットが踏襲されているので、デバッグ実行はF5です。
ブレークポイントを仕込んだりデバッガーも使えます。
ライセンスを入力するとインテリセンスも使えるようになります。
NuGetライブラリを使う
NuGetもF4 > Add NuGetで使えます。(ライセンスがないとNuGet画面で警告が出ます)
適当にProcessXをインストールしてみましょう。
namespaceも設定できるので、Zxを入れておきます。
これでZxが使えます。awaitできていますね。
サクッとプロセス一覧をとってみます。組み込みシェル結果をとれていますね。
await "echo foobar"; var processes = await "ps aux"; foreach (var item in processes.Split(Environment.NewLine).Where(x => x.Contains("LINQPad"))) { item.Dump("filtered"); }
設定画面
LINQPadの設定画面はmacOSのアプリケーションお作法通りLINQPad > Settingsで開けます。
設定内容もおおむねWindows版と同じですが、配置は結構違います。2
Windows版の設定画面を見ると、この古さ...って感じがあるので、macOSのUIなだけでいい感じに見えますね。
細かい挙動
LinqPadは、C# StatementやC# Programを切り替えることができます。StatementからProgramに変更すると「void Main()とブロックが追加されてインデントされる」のですがmacOSでも機能します。3
SatementからProgramへの切り替え (Windows)
SatementからProgramへの切り替え (macOS)
ほかにも細かい挙動が気になる気がしますが、いったんここまでで。また気づいたことがあれば追記します。
まとめ
LINQPad for macOS (Beta)はベータと言いつつも、すでに普段使いできるレベルになっていると感じました。Windows版と同じように使えるので、WindowsとmacOSをまたがって使う私にはありがたいです。
しかし、macOSのファンクションキーはデフォルトFnキーを併用しないといけないので、macOSデフォルトとファンクションキー連動はあんまり相性よくないですね。macOSのキーボード設定でFnキーをデフォルトにするといい感じになりますが、それもmacOSの普段の操作とずれるので、どうしようかなと思っています。