dwgx@blog:~$dwgx
> cd ../posts

mac で MC サーバーを束で管理する: JSM

// created

Swift macOS manager for Java, Paper, and Spigot Minecraft servers

JSM は macOS ネイティブのツールで、SwiftUI で書いた、Java 版 MC サーバー専用の管理ツールだ。Paper、Spigot、バニラのどれも扱える。ひとつのウィンドウで複数インスタンスを管理でき、新規作成・インポート・編集も全部その中にある。ターミナルを何枚も開いて java -jar を手打ちしてログをにらむ必要はもうない。リポジトリは github.com/dwgx/JSM

プロセスは起動・停止・再起動ができて、さらにクラッシュ時の自動復帰(restartOnCrashmaxRestarts)を載せてある。夜中に落ちても起き上がって手で拾い上げる必要はない。コンソールは WebKit でリアルタイム出力をレンダリングし、別にプレーンテキストの予備ビューも用意してあるので、WebKit が調子を崩しても逃げ道がある。実行時のメトリクスは CPU、常駐メモリ、スレッド数を proc_pidinfo で直接サンプリングしていて、外部ツールに依存しない。

設定はすべて YAML で通す。Yams を使って ~/Library/Application Support/JSM/servers.yaml に置かれ、単一設定でも bundle 一式でもインポート・エクスポートできる。パッケージングは ZIPFoundation で、マシンを乗り換えるときはそのまま持っていける。Java の検出は自動スキャンをやっていて、Homebrew や SDKMAN といった定番の場所を探しに行くので、毎回手でパスを埋める手間が省ける。起動は 3 通りに対応: jar パッケージ、メインクラス、またはスクリプトを渡す方式。問題が起きたら診断レポートをエクスポートして、環境情報を一気に吸い上げることもできる。

引っかかりどころが 2 つある。Java Options の欄には JVM 引数だけを入れること。java -jar ... を丸ごと突っ込んではいけない。でないと、とんでもないコマンドラインが組み上がる。それと App Sandbox。有効にすると、ユーザーが選んだディレクトリへのアクセスは security-scoped bookmark を通す必要がある。初回は Java Home ディレクトリ(bin/java が入っているやつ)の認可を求められ、権限を正しく与えないとプロセスはそもそも起動しない。

個人プロジェクト、バージョン 1.0、使えるがまだ手を入れている最中で、設定フォーマットは後で変わるかもしれない。動かすには Java 17 以上が要る。自分は 21 を使っている。ソースは GitHub、MIT。自分でビルドしたければ Xcode で JSM.xcodeproj を開いて JSM scheme を選べば、SwiftPM の依存は自動で取ってくる。