【ITニュース解説】PlxNative: A Fast Native Plex Client for LG webOS TVs, Built in Rust
2026年10月17日に「Dev.to」が公開したITニュース「PlxNative: A Fast Native Plex Client for LG webOS TVs, Built in Rust」について初心者にもわかりやすく解説しています。
ITニュース概要
PlxNativeは、LG webOS TV向けの非公式Plexクライアントだ。一般的なTVアプリと異なり、JavaScriptやブラウザを使わずRustで開発されたネイティブコードが直接画面を描画し、高速動作する。公式アプリが遅いと感じる開発者が、TVのハードウェアデコーダーを活かし快適な視聴を目指した。
ITニュース解説
PlxNativeは、LG製webOS TV向けに開発された、Plexメディアサーバー用の非公式クライアントアプリケーションだ。一般的なスマートTV向けアプリがウェブページとして動作し、JavaScriptやブラウザエンジンを介して画面に表示されるのに対し、PlxNativeはこれらの「中間層」を取り除き、ネイティブコードとして直接画面を描画することを目指している。このアプローチにより、開発者は既存の公式Plexアプリよりも高速で応答性の高いユーザー体験を提供したいと考えている。
このプロジェクトは、開発者自身が2019年製のLG TVでPlexライブラリを閲覧する際に「必要以上に遅い」と感じたことがきっかけで生まれた。既存のウェブアプリのパフォーマンスを改善するのではなく、まったく新しいネイティブアプリをRust言語で構築するという選択をしたのだ。PlxNativeはオープンソースプロジェクトとしてGPL-3.0-or-laterライセンスの下で公開されており、現在も活発に開発が進められている。
従来のスマートTVアプリが「アプリ(ウェブページ)→JavaScript→ブラウザエンジン→コンポジタ→OpenGL→GPU→スクリーン」という処理経路をたどるのに対し、PlxNativeは「アプリ(ネイティブコード)→OpenGL→GPU→スクリーン」という、よりシンプルなスタックを採用している。この簡素化により、ブラウザエンジンのオーバーヘッドが削減され、アプリケーションはグラフィック処理ユニット(GPU)に直接描画指示を送ることが可能になる。結果として、古いモデルのTVでも毎秒60フレーム(60fps)でのスムーズな動作が期待されている。
PlxNativeの主要な開発言語はRustで、全体のコードベースの大部分を占めている。ごく一部にC言語やC++が使われており、Rustで書かれたモジュールが静的ライブラリとして小さなC言語アプリケーションにリンクされるハイブリッドな構造を取っている。
ユーザーインターフェース(UI)の描画には、ゲーム開発などでも使われるSDL2と、組み込みシステム向けの軽量なグラフィックAPIであるOpenGL ESが利用されている。これにより、HTMLのDOM(Document Object Model)やウェブページのレイアウトエンジンを介さずに、アプリケーションが直接ピクセルを描画する。UIデザインは、映像を背景に半透明の「ガラス」パネルが重なるような視覚効果を特徴とし、開発者はこの「ガラス効果」の実現に必要なハードウェアリソースを考慮して設計を進めている。
動画再生に関しては、PlxNativeはソフトウェアによる動画デコードを行わない。代わりに、TV本体が内蔵するハードウェアデコーダを活用し、LG独自のStarfishメディアAPIを通じて動画データを処理する。これにより、H.264やHEVC(4Kおよび10ビット含む)、Dolby Vision、E-AC-3(Atmos)、一部のAV1やVP9といった多様なコーデック形式の動画を効率的に再生できる。これらTVが直接対応できない形式の動画は、Plexメディアサーバー側でリアルタイムに変換(トランスコード)されてから再生される仕組みだ。PlxNative自体も、動画処理ライブラリであるFFmpegのLGPLビルドを同梱している。
PlxNativeは、Plexユーザーが期待する多くの基本的な機能を提供している。スマートフォンでQRコードをスキャンしてTVからサインインする機能や、Plex Homeプロファイルの選択、PIN保護されたプロファイルのサポートなどが含まれる。ライブラリの閲覧では、「再生中の続き」や「最近追加された作品」といった一般的な表示に加え、ソート機能、未視聴コンテンツのみを表示するフィルタ、アルファベット順のレールなどがある。Plexメディアサーバー全体を横断して検索できる機能や、検索結果を種類ごとにグループ化して表示する機能も実装されている。
プレイヤー機能は充実しており、動画の途中からの再開(レジューム)、シーク(早送り・巻き戻し)、チャプター選択、複数のオーディオトラックや字幕トラック(画像形式の字幕も含む)の切り替えに対応している。Plex Passの加入者向けには、Boost dialogやNormalize loudnessといった音声調整機能も利用可能だ。さらに、Plexの「イントロをスキップ」「クレジットをスキップ」機能や「次に再生」機能もサポートされており、視聴履歴はPlexサーバーに同期される。
バージョン0.8.0では、プレイヤー内での字幕検索機能や、ASS/SSA形式の字幕のスタイル保持、Plexコレクションの閲覧、再生設定の追加、スペイン語やベラルーシ語への翻訳対応など、多くの改善と新機能が導入された。特筆すべきは、初回サインインが完了すれば、インターネット接続がない状態でもローカルネットワーク内のPlexサーバーと直接通信し、ライブラリの閲覧や動画再生が可能な点だ。また、プライバシーも重視されており、クラッシュレポートや利用状況分析はユーザーが明示的に許可(オプトイン)した場合にのみ送信され、作品名や検索語句などの個人情報は含まれない。
PlxNativeは現在、LG Content Storeにはまだ提供されておらず、審査中だ。そのため、インストールにはLG TVの「開発者モード」を利用するか、「Homebrew Channel」を導入するかのどちらかの方法を用いる必要がある。どちらの方法もTVのroot化は不要だ。
LG開発者モードを利用する場合、LGの開発者サイトでアカウントを作成し、TVに「Developer Mode」アプリをインストールし、PC上の「webOS Dev Manager」からTVに接続してPlxNativeの.ipkパッケージを直接インストールする。ただし、開発者モードのセッションには有効期限があり、期限が切れるとインストールしたアプリが削除されるため、定期的な延長作業が必要となる。
Homebrew ChannelがTVに導入済みであれば、そこからPlxNativeを簡単に見つけてインストールできる。Homebrew Channelはアップデートの確認と適用も自動で行う。最新の開発版である「Nightlyビルド」もHomebrew Channelに追加して試せるが、これらはTVでの動作テストがされていないため注意が必要だ。
PlxNativeは活発に開発されているが、いくつかの制限事項と既知の問題も存在する。現在対応しているのは映画とTV番組のみで、音楽、写真、Live TV、DVR機能は未サポートだ。また、Plexサーバーのアドレスを手動で入力する機能はなく、Plexアカウントから認識されたサーバーのみに接続する。特定のLG TVモデル、特に2019年製の一部チップセットを搭載したTVでは、開発者モード経由でインストールするとサンドボックスの制限により動画再生ができない問題が報告されている。また、2018年製TVのwebOS 3.9.3でも動画再生ができない問題があるが、こちらは特定の最新ビルドで修正済みだ。webOS 3.xではシーク時に動画ストリームが再起動してしまう挙動も見られる。
これらの情報から、PlxNativeはPlexの利用環境をより快適にしたいLG TVユーザー、特に既存の公式アプリのパフォーマンスに不満を感じているユーザーにとって魅力的な選択肢となるだろう。また、Rust言語でのネイティブUI開発や、組み込みシステムにおけるグラフィック処理に興味を持つ開発者にとっても、そのアーキテクチャや設計思想は非常に参考になるプロジェクトと言える。ただし、インストール方法や既知の制限事項を理解した上で利用することが重要だ。