世界を動かす技術を、日本語で。

Show HN: RomM – オープンソースのセルフホステッドROMマネージャーおよびプレーヤー

2025年6月11日原文(github.com)

概要

RomM は、レトロゲームのROM管理とブラウザ上でのプレイを可能にする 自宅ホスト型アプリ です。 自動メタデータ取得 やアートワーク表示、複数プラットフォーム対応が特徴。 エミュレータ連携 により、N64やPS1など多機種のゲームを直接ブラウザで遊べます。 コミュニティ主導開発 で、オープンソースかつAGPLv3ライセンス。 多様な拡張や連携 も進行中、ROM管理の決定版を目指すプロジェクト。

RomM(ROM Manager)とは

  • 自宅サーバーで動作 するレトロゲーム用ROM管理アプリ
  • PlexやJellyfinのROM版 としての位置付け
  • フォルダ内ROMを自動スキャン し、オンラインから メタデータやアートワークを取得
  • EmulatorJSやRuffleRS を利用し、ブラウザ上で直接ゲームプレイ可能
  • N64、Game Boy Advance、Nintendo DS、PlayStation 1 など多機種対応

主な機能

  • IGDB、Screenscraper、MobyGames などからのメタデータ自動取得
  • SteamGridDB からのカスタムアートワーク取得
  • Retroachievements による実績表示
  • 400以上のプラットフォーム に対応したメタデータカバレッジ
  • EmulatorJS/RuffleRS によるブラウザ内エミュレーション
  • フレンドへの共有機能 (アクセス権限設定可)
  • Playnite、muOS 向け公式アプリ提供
  • マルチディスク、DLC、MOD、ハック、パッチ、マニュアル の管理
  • タグ付きファイル名の解析・フィルタリング
  • Webブラウザ上でのゲーム追加・編集・削除操作

インストール・導入

  • クイックスタートガイド を公式ドキュメントで提供
  • トラブルシューティング ページで一般的な問題を解決
  • 最新デモ (動作はやや遅め):https://demo.romm.app/

コミュニティと貢献

  • オープンソース(AGPLv3) で開発
  • Discord での質問・アイデア投稿・交流・コレクション自慢
  • コントリビューションガイド で貢献方法を案内
  • Playnite(Windows)、muOS(Anbernic)、Decky Loader(Steam Deck) 連携
  • romm-comm(Discord Bot)・DeckRommSync(SteamOS同期)・CasaOSアプリ などコミュニティ製拡張

サポート・支援

  • GitHubリポジトリでのIssue投稿 による技術サポート
  • Open Collective での開発支援受付

参考プロジェクト

  • EmulatorJS :埋め込み型ブラウザエミュレータ
  • RetroDECK :SteamOS/Linux向けレトロゲーミング
  • ES-DE Frontend :Linux/macOS/Windows用エミュレータフロントエンド
  • Gaseous :Webエミュレータ搭載ROMマネージャ
  • Retrom :ゲームライブラリ一元管理サービス
  • Steam ROM Manager :Steam用ROM管理アプリ

特徴まとめ

  • 2年以上の開発実績、少人数の友人グループによる運営
  • 企業支援なし、純粋なコミュニティドリブン
  • 拡張性・カスタマイズ性 が高く、今後も新機能追加予定

Hackerたちの意見

AGPLv3でいてくれてありがとう!必要なディレクトリ構造を明確に示してくれたのも大感謝。時々、分かりにくいこともあるからね。全体的にドキュメントも素晴らしいよ!

それ聞いて嬉しいよ!

RetroArchやLakka.tv、Emulator Station、EmuDeck(これらのいくつかを包むSteam Deck用のラッパー)と比べて、これを使うメリットを教えてもらえる?個人的にはブラウザでプレイするのはちょっとマイナスに感じるんだよね。

これは自己ホスティングのソリューションだから、君が挙げたソフトウェアとは違うよ。Dockerを使ってサーバーにインストールして、クリーンなインターフェースでROMライブラリを管理できるんだ。Web UI自体でプレイできるのも追加機能で、emulatorjs(emulatorjs.orgから)を統合したばかりなんだ。

理想的には両方を使って、コミュニティがEmuDeckがサーバーからゲームを引っ張ってきて、セーブデータをサーバーに同期するような統合を作ってくれるといいね。私は普段WindowsでPlaynite(https://playnite.link/)を使ってプレイしていて、プラグイン(https://github.com/rommapp/playnite-plugin)を使うと、各システムのゲームリストを引っ張って表示してくれるから、プレイしたいゲームをPCにインストールできるんだ。

RomMは素晴らしいプロジェクトだね!統合が進んでいくのが楽しみだよ。たくさんのレトロボックスをセットアップしてきた者として、一度設定しておけば自宅のサーバーから他のデバイスにコレクションを配信できるのはすごく魅力的だ。ウェブベースのエミュレーションはかなり進化したけど、やっぱり個々のデバイスでプレイするのが好きなんだ。多くのデバイスはブラウザのサポートが良くないからね。それぞれのシステムを設定するのには何時間もかかるけど、BatoceraのインスタンスやES-DEのセットアップをサーバーに向けて、ROMやBIOSファイル、スクリーンショットなんかが自動でポップアップするのは夢のようだ。これがエミュレーションエコシステムの未来かもしれないし、すごくワクワクする!

君のビジョンと熱意が大好きだよ!もうしっかりしたセットアップができていて、RomMの未来バージョンにぴったりな使い方をしてるみたいだね。

以前アイデアを思いついたことがあるけど、作る時間もモチベーションもなかったんだ。ゲームデザインのデータベースで、ゲームプレイのスニペットへのリンクを含むもの。例えば、「2Dプラットフォーミング」についてのアーティクルがあって、スーパーマリオの実装を議論し、「デモ」ボタンを押すと特定のジャンプセクションを示すセーブステート付きのウェブエミュレーターが立ち上がるみたいな。法的には危険かもしれないけど、私の法律に詳しくない頭ではフェアユースだと思う、特にエミュレーターがフルゲームをプレイさせないなら。どうかな、でもこれはネット上でユニークなものになると思う。追記:これすごいね、私も個人用のインスタンスをすぐにセットアップするつもりだよ。

面白いアイデアだね、週末プロジェクトやPOCとして楽しそう!EmulatorJS(https://emulatorjs.org/)のチームは、静的なウェブサイトにプレイヤーを簡単に埋め込むことができるようにしてくれたし、事前にロードされたゲームやカスタム設定もできるんだ。

法的に危険かもしれないけど、法律の専門家じゃない私の頭では、それはフェアユースだと思う。特にエミュレーターがフルゲームをプレイさせない場合はね。よくわからないけど、インターネット上でユニークなものになると思う。私は法律の専門家じゃないけど、多くの人が理解していないのは、「フェアユース」は防御手段だってこと。つまり、裁判で主張する準備が必要ってことだよ。多くの潜在的なフェアユースは、その段階に至る前に潰されちゃうんだ。それに、バランスのテストでもあるから、事実や文脈に依存していて主観的なんだ。だから、多くのケースでは、実際に裁判に行くまでわからないことが多いんだよね。

MAME/MESSはそれにGIFファイルを使ってたよ。

ROMを削除すれば、フェアユースの主張がもっと強くなると思うよ。そんなに難しくないはず!数秒だけ動かして、メモリアクセスを全部記録して、ヒットしなかったものはゼロにしちゃえばいいんだ。

Hacker Newsで議論の続きを見る