Froolaを公開しました

Froola https://github.com/ayumax/Froola Froolaは私の作成したUnreal Engineのコードプラグインを複数プラットフォーム同時にテストしたり、プラグインパッケージを生成したりするためのツールです。 もともと私はUEのプラグインをいくつか作っていたのですが、それらはWindows, Macのプラットフォームに対応していたため毎回パッケージの作成が面倒でした。 というのも、Windows環境ではWindows, Android, Linux向けにパッケージを作れますがMac, iOS向けには作れません。 そのため、WindowsとMacの両環境でプラグインのビルドをしたあとに、それらを組み合わせて1つのプラグインパッケージを作っていました。 Unreal Editorにそのような機能があればよかったのですが、私の調べた範囲では見つからなかったので毎回手動で組み合わせていました。 でも、どうせならこれらを1つのツールとしたほうがうれしい人もいるかもしれないと思い、Froolaを作りました。 GitHub ActionsなどのCI/CD機能との比較 上記のようなことをしたい場合、通常ならGitHub ActionsなどのCI/CD機能を利用することをまず思いつきます。 しかし、Unreal Engineをクラウドで動作させるのは主に金銭的に大変です。 Unreal Engineの1つのバージョンはだいたい50GBくらいになり、複数バージョン用意するとさらにストレージは必要になります。 またCPUもそこそこパワーがあるものが必要になるため、実行環境を用意するのが大変でした。 またMacはAWSなどでEC2を借りれたりもするのですが、最低1日単位でかなり高いです。ほかにもいくつかMacのクラウドサービスもありますが、それらも高価でした。 そこでおそらく多くの人はオンプレのサーバーをself-hosted runnerとして使っているのではないかと思います。 ただ個人でpublicなリポジトリを扱っている場合はセキュリティの観点からself-hosted runnerは避けたかったので、そうなると自分の開発PCで直接ビルドするのが一番よいなという結論になりました。 Froolaの構成 Froolaはマルチプラットフォーム対応のプラグインパッケージを生成しますが、やっていることは単純でWindowsとMacの両環境でプラグインをビルドしてから、それらを組み合わせて1つのプラグインパッケージを作っています。 またLinuxビルドは考えた結果WindowsのUEを使わずにLinuxのUEをDocker経由で使うようにしています。これについての理由は後述します。 そのため、以下のようなフローで動きます。 Windows環境にプラグインプロジェクトをリモートリポジトリからCloneする Windows環境にWindows, Linuxビルド用のディレクトリをつくりそこにリポジトリのファイルをコピー MacにSCPで(1)でCloneしたリポジトリのファイルをコピーする WindowsのUEと、Windows上のDockerのUEを同時に起動してプラグインをビルドする MacにSSHでMacのUEを使ってプラグインをビルドする MacでビルドしたパッケージをSCPでWindowsにダウンロード Windows, Mac, Linuxのビルドしたパッケージを組み合わせて1つのプラグインパッケージを作成する sequenceDiagram participant Windows participant Windows(Docker) participant Mac Windows->>Windows: リモートリポジトリからClone Windows->>Windows: Windows, Linuxビルド用ディレクトリ作成&ファイルコピー Windows->>Mac: SCPでリポジトリファイルをコピー Windows->>Windows: UEでプラグインビルド Windows->>Windows(Docker): Docker内UEでプラグインビルド Mac->>Mac: SSHでMacのUEを使いプラグインビルド Mac->>Windows: MacでビルドしたパッケージをSCPでWindowsにダウンロード Windows->>Windows: 各OSのビルドパッケージを組み合わせて1つのプラグインパッケージを作成 これを見るとまったく複雑なことはやっていないことがわかると思います。 シンプルイズベストです。 というかこれ以外にやれる方法は現状ないと思います。せいぜいWindwosのUEでLinux向けも一緒にビルドするくらい。 自動テストの存在 今回Froolaを作るにあたって、パッケージをつくるだけでなくテストの実行も各プラットフォームで行えるようにしました。 ...

2025-05-05 · 2 分 · 420 文字 · ayumax