Electron と React を組み合わせて構築されたデスクトップアプリ「Streambert」は、映画・TVシリーズ・アニメを広告ゼロ・トラッキングなしで視聴・ダウンロードできるオープンソースプロジェクトだ。2026年2月に公開されてから3ヶ月余りで GitHub スター数が 1,400 を超え、フォーク数も 120 を超えた。Windows・Linux・macOS の3プラットフォームに対応したインストーラーを GitHub Releases で配布しており、Node.js の知識がなくても数クリックで使い始められる設計になっている。

本記事では Streambert のアーキテクチャ・機能・セットアップ手順を公式 README と package.json を一次ソースとして詳しく解説する。

Streambert とは何か

Streambert は truelockmc 氏が開発する個人 OSS プロジェクトで、GPL-3.0 ライセンスのもとで公開されている。一言で表せば「Electron 製の動画集約プレイヤー」だが、その設計思想は明快だ。

**Streambert の3つのコアコンセプト** 1. **ゼロ広告・ゼロトラッキング** — ブラウザで動画を視聴するときに避けられない広告とトラッキングスクリプトを、アプリ層でブロックする設計 2. **メタデータと動画ストリームの分離** — TMDB / AniList から取得するリッチなメタデータ(ポスター・評価・概要)と、VidSrc などから取得する実際の動画ストリームを独立して扱う 3. **クロスプラットフォームの実用性** — Windows (.exe)・Linux (.deb / .AppImage / .pacman)・macOS (.dmg / arm64) 向けのバイナリを毎リリースで提供

2026年5月18日時点の最新版は v2.4.0(2026年4月30日リリース)で、全プラットフォーム向けバイナリが提供されている。

アーキテクチャと技術スタック

Streambert の内部構造は Electron の典型的な Main/Renderer プロセス分離モデルに従いつつ、フロントエンドを Vite + React で高速化している。

graph TD A["ユーザー操作
(Renderer Process)"] --> B["React UI
Vite + JSX"] B --> C["Electron IPC
preload.js"] C --> D["Main Process
main.js"] D --> E["TMDB API
メタデータ取得"] D --> F["AniList API
アニメメタデータ"] D --> G["VidSrc / 2Embed
動画ストリーム取得"] D --> H["AllManga.to
アニメ動画scraping"] D --> I["vid-dl-cli-only
+ ffmpeg ダウンロード"] D --> J["ローカルストレージ
ライブラリ・設定"] G --> K[".m3u8 プレイリスト
HLSストリーム"] K --> L["アプリ内プレイヤー"] H --> M[".mp4 ダイレクト取得"] M --> L

主要技術スタック

レイヤー 技術 バージョン
デスクトップフレーム Electron 40.4.1
UI ライブラリ React 18.2.0
ビルドツール Vite 7.3.1
パッケージャ electron-builder 26.7.0
ランタイム Node.js ≥22.12.0
ライセンス GPL-3.0
メタデータ(映画・TV) TMDB API
メタデータ(アニメ) AniList GraphQL
動画ソース(映画・TV) VidSrc / videasy.net / 2Embed
動画ソース(アニメ) AllManga.to

Renderer プロセス(React UI)から直接ネットワークアクセスをするのではなく、preload.js の IPC ブリッジを介して Main プロセスがすべての外部通信を担う設計になっている。これにより、広告・トラッキングスクリプトの混入をアプリ層でブロックしやすい構造になっている。

IPC モジュール構成

src/ipc/ 配下の6モジュールが機能別に責務を分離している。

src/ipc/
├── allmanga.js      # AllManga.to からアニメ動画ファイルを取得
├── blockStats.js    # ブロックした広告・トラッカーの統計管理
├── downloads.js     # vid-dl-cli-only + ffmpeg 連携ダウンロード
├── player.js        # 動画プレイヤー制御
├── storage.js       # ライブラリ・設定のローカル永続化
└── subtitles.js     # 字幕のダウンロード・管理

インストール方法

プリビルドバイナリを使う(推奨)

Node.js の知識がなくても使えるインストーラーが GitHub Releases から入手できる。

OS ファイル形式
Windows Streambert.Setup.2.4.0.exe
macOS (Intel) Streambert-2.4.0.dmg
macOS (Apple Silicon) Streambert-2.4.0-arm64.dmg
Linux (Debian/Ubuntu) streambert_2.4.0_amd64.deb
Linux (Arch Linux) streambert-2.4.0.pacman
Linux (AppImage) Streambert-2.4.0.AppImage

Linux への導入例(.deb / .AppImage / .pacman):

# Debian / Ubuntu
sudo dpkg -i streambert_2.4.0_amd64.deb

# Arch Linux
sudo pacman -U streambert-2.4.0.pacman

# AppImage(全ディストリビューション)
chmod +x Streambert-2.4.0.AppImage && ./Streambert-2.4.0.AppImage

Windows は .exe インストーラーを実行するだけで完了する。macOS の .dmg もダブルクリックでマウント→ /Applications にドラッグするだけだ。

**Arch Linux でのビルド時の注意点** `libcrypt.so.1` エラーが出る場合は `sudo pacman -S libxcrypt-compat`、`http-parser` 依存エラーには `yay -S http-parser`(AUR)で解消できる。

TMDB API キーのセットアップ

Streambert は映画・TVシリーズのメタデータ(ポスター・評価・あらすじ)を The Movie Database (TMDB) から取得するため、無料の TMDB API キーが必須になっている。

  1. https://www.themoviedb.org/ でアカウントを作成
  2. 設定 → API → 「Read Access Token」を発行
  3. Streambert を初回起動すると API キー入力画面が表示される
  4. 取得したトークンを貼り付けて保存

一度設定すればローカルに保存され、以後は入力不要。

ストリーミング機能の詳細

映画・TVシリーズ

動画ストリームは主に VidSrc から取得する。設定で videasy.net2Embed への切り替えも可能になっており、ソースが不安定な場合の代替として機能する。

具体的な仕組みは以下の通りだ:

  1. ユーザーが検索またはトレンドから作品を選ぶ
  2. Main プロセスが TMDB API から作品の ID・メタデータを取得
  3. その ID を使って VidSrc の埋め込みエンドポイントから .m3u8 プレイリスト URL を取得
  4. 取得した HLS ストリームをアプリ内プレイヤーで再生

ブラウザ経由ではなくアプリ内でストリームを直接処理するため、広告スクリプトが介在する余地がない。

アニメ

アニメの場合、メタデータ取得先が自動的に AniList(GraphQL API)に切り替わる。動画ファイルは AllManga.to から .mp4 を直接取得する仕組みで、これは有名な CLI アニメストリーマー ani-cli から着想を得たと README に明記されている。

// src/ipc/allmanga.js の役割(概念コード)
// AllManga.to から mp4 URL を scraping して IPC 経由で Renderer に返す
ipcMain.handle("fetch-anime-episode", async (event, { anilistId, episode }) => {
  const sources = await scrapeAllManga(anilistId, episode);
  return sources; // { url: "https://...mp4", quality: "1080p" }
});

アニメも映画と同様にダウンロードが可能で、取得した .mp4 ファイルをローカルに保存できる。

ダウンロード機能

仕組み

映画・TVシリーズのダウンロードは .m3u8 プレイリスト URL を利用する。クリック操作でプレイリスト URL を取得し、外部 CLI ツール vid-dl-cli-onlyffmpeg に渡してダウンロードする設計だ。

事前準備:

# ffmpeg のインストール(macOS: Homebrew)
brew install ffmpeg

# ffmpeg のインストール(Ubuntu / Debian)
sudo apt install ffmpeg

# vid-dl-cli-only を GitHub Releases から取得して PATH に追加
# https://github.com/truelockmc/vid-dl-cli-only/releases/latest
chmod +x vid-dl-cli-only
sudo mv vid-dl-cli-only /usr/local/bin/

マルチスレッドダウンロードに対応しており、「ブラウザより速くダウンロードできる」と README に記述されている。ダウンロードしたファイルはアプリ内プレイヤーでも再生可能で、外部ストレージに持ち出すこともできる。

字幕管理

Streambert は字幕のダウンロードと管理機能(src/ipc/subtitles.js)を持つ。字幕ソースとして OpenSubtitles などの外部サービスから字幕ファイルを取得し、再生中に適用できる。字幕設定は設定ページから言語・フォントサイズなどをカスタマイズ可能だ。

ライブラリ機能

src/pages/LibraryPage.jsx が担うライブラリ機能では:

  • 視聴履歴の記録 — どのエピソード・映画まで見たか自動で保存
  • ウォッチリスト — 「後で見る」リストへの追加
  • ダウンロード管理 — ダウンロード済みファイルの一覧・再生・削除

これらはすべて src/ipc/storage.js を介してローカルに保存され、外部サーバーへのデータ送信は行わない。

UI カスタマイズ

screenshots/customize-1.png / customize-2.png のスクリーンショットが示すように、インターフェースのカスタマイズに力を入れている。テーマカラーの変更・レイアウトの調整・動画ソースの切り替えなどを設定画面から操作できる。

src/components/KeyboardShortcutsModal.jsx が存在することから、キーボードショートカットの一覧確認もサポートされている。

ソースからのビルド

開発環境でソースからビルドする手順は以下の通りだ。

# 1. リポジトリのクローン
git clone https://github.com/truelockmc/streambert.git
cd streambert

# 2. 依存関係のインストール
npm install

# 3. ビルド(ターゲットを選択)
npm run dist:win        # Windows (.exe)
npm run dist:linux      # Linux (.deb + .AppImage + .pacman)
npm run dist:arch       # Arch Linux (.pacman のみ)
npm run dist:appimage   # Linux AppImage のみ
npm run dist:mac        # macOS (.dmg)

開発時のホットリロードは npm start で起動でき、vite build --watch がファイル変更を監視して Electron を再起動する。

ビルド成果物は electron-builder が生成し、asar 形式でパッケージングされる。ビルド設定は package.json"build" セクションに集約されており、アプリ ID(com.truelockmc.streambert)やアイコン・圧縮方式なども一元管理されている。

類似ツールとの比較

Streambert と類似するデスクトップ動画アプリをいくつかの観点で比較する。

比較項目 Streambert Stremio Plex Kodi
OSS ✅ GPL-3.0 ❌ プロプライエタリ ❌ プロプライエタリ ✅ GPL-2.0
広告なし ⚠️ 一部あり ⚠️ 無料版に広告
トラッキングなし
アニメ特化対応 ✅ AniList ⚠️ アドオン依存
ダウンロード機能 ❌ (Pro のみ) ⚠️ 一部 ⚠️ アドオン依存
TMDB 統合
Windows対応
Linux 対応 ✅ deb/AppImage/pacman
macOS 対応 ✅ Intel/M1
セットアップ難易度 低(API キーのみ)

Streambert の差別化ポイントは「ゼロ広告・ゼロトラッキング」と「アニメ特化対応(AniList)」の組み合わせにある。Kodi も OSS だが、アドオン管理が必要で初期セットアップの難易度が高い。Streambert は API キーを入力するだけで使い始められるため、ハードルが低い。

トレンド探索機能

src/components/TrendingCarousel.jsx が示すように、TMDB の Trending API を利用して毎日更新されるトレンドコンテンツをホーム画面に表示する。新しい映画・TVシリーズ・アニメを発見するための起点として機能する。

README のスクリーンショット(trending.png)でその UI を確認できる。作品カード(MediaCard.jsx)をクリックすると詳細ページ(MoviePage.jsx / TVPage.jsx)に遷移し、そこでストリーミング開始またはダウンロードを選択できる。

プライバシーとセキュリティ設計

Streambert の設計における最大の特徴のひとつが、プライバシーへの徹底したこだわりだ。この点は技術的な実装と思想の両面から理解できる。

広告・トラッカーブロックの仕組み

src/ipc/blockStats.js モジュールがブロックした広告・トラッカーの統計を管理している。ブラウザで動画サイトを開いた場合、ページには広告配信ネットワーク・分析ツール・ソーシャルメディアボタンなど多数のサードパーティスクリプトが読み込まれる。Electron アプリとして実装することで、これらのスクリプトが完全に排除される。

アプリ自体が通信するのは以下のエンドポイントのみだ:

  • TMDB API — メタデータ取得(ポスター・評価・説明文)
  • AniList GraphQL — アニメメタデータ取得
  • 動画ストリームソース — VidSrc / videasy.net / 2Embed / AllManga.to
  • GitHub Releases — アップデート確認(UpdateModal.jsx が管理)

これ以外のトラッキングピクセル・分析 SDK・広告ネットワークへの通信は一切行われない。TMDB の API キーはローカルに暗号化して保存されるため、外部に漏洩するリスクも低い。

TMDB API キーのローカル管理

// storage.js が管理するローカルデータ(概念コード)
// electron-store または localStorage ベースでローカルに保持
const store = {
  tmdbApiKey: "...",      // TMDB Read Access Token
  settings: { theme, videoSource, language },
  watchHistory: [...],    // 視聴履歴
  watchlist: [...],       // ウォッチリスト
  downloads: [...]        // ダウンロード済みファイル一覧
};

すべての設定データはローカルのみに保存され、クラウド同期・外部サーバーへの送信は行わない。これはプライバシーを重視するユーザーにとって重要な設計判断だ。

UI コンポーネント詳解

src/components/ には15のコンポーネントが存在する。各コンポーネントが担う役割を整理する。

コンポーネント 役割
SetupScreen.jsx 初回起動時の TMDB API キー入力画面
TrendingCarousel.jsx ホーム画面のトレンドコンテンツ横スクロール表示
MediaCard.jsx 映画・TVシリーズ・アニメの作品カード
SearchModal.jsx 全文検索モーダル(TMDB / AniList 横断)
DownloadModal.jsx ダウンロード設定・進行状況の表示
SubtitleDownloaderModal.jsx 字幕ファイルの検索・ダウンロード
TrailerModal.jsx 予告編再生モーダル
BlockedStatsModal.jsx ブロックした広告・トラッカーの統計表示
UpdateModal.jsx アップデート通知・ダウンロード
KeyboardShortcutsModal.jsx キーボードショートカット一覧
CloseConfirmModal.jsx アプリ終了確認ダイアログ
ErrorBoundary.jsx React エラーバウンダリ
Icons.jsx アイコンコンポーネント集
Sidebar.jsx 左側ナビゲーションサイドバー
WindowTitlebar.jsx カスタムタイトルバー(Electron フレームレスウィンドウ用)

WindowTitlebar.jsx の存在から、Electron のネイティブウィンドウフレームを非表示にした「フレームレスウィンドウ」構成を採用していることがわかる。これにより OS に依存しない統一されたデザインを実現している。

パフォーマンス設計

Vite による高速ビルドとバンドル最適化

// vite.config.js の設定(package.json から推測)
// devDependencies に terser が含まれていることから、
// 本番ビルドでは terser による JS ミニファイが適用される
{
  build: {
    minify: "terser",
    rollupOptions: {
      // Electron の main/preload と renderer を分離してビルド
    }
  }
}

devDependenciesterser が含まれており、本番ビルドでは JavaScript が圧縮される。Vite のコード分割機能により、初期起動に不要なコンポーネントは遅延ロードされる設計だ。

マルチスレッドダウンロード

ダウンロード機能は vid-dl-cli-only という専用 CLI ツールを介して行われる。HLS の .m3u8 プレイリストを並列で複数セグメントを同時ダウンロードするマルチスレッド設計により、「ブラウザより速い」とされるダウンロード速度を実現している。ffmpeg が各セグメントを最終的なファイルに結合する。

# vid-dl-cli-only + ffmpeg によるダウンロードの流れ(概念)
# 1. .m3u8 プレイリスト URL を取得
# 2. vid-dl-cli-only がセグメントを並列ダウンロード
vid-dl-cli-only "https://stream.example.com/playlist.m3u8" -o "movie.mp4"
# 3. ffmpeg が HLS セグメントを単一 MP4 ファイルに結合
ffmpeg -i "https://stream.example.com/playlist.m3u8" -c copy output.mp4

アップデート管理

src/components/UpdateModal.jsx の存在から、アプリ内でのアップデート通知に対応していることがわかる。GitHub Releases の最新バージョンと現在のバージョンを比較し、新しいリリースがある場合はモーダルで通知する仕組みだ。electron-builder の自動更新機能(electron-updater)を使わず、手動確認・手動ダウンロードの設計を採用している可能性が高い(package.jsonelectron-updater が含まれていないため)。

プロジェクト構造の全体像

Streambert のコードベースは Electron アプリの標準的な構成に従っている。

streambert/
├── index.html          # エントリポイント HTML
├── main.js             # Electron Main プロセス
├── preload.js          # IPC ブリッジ(contextBridge)
├── vite.config.js      # Vite ビルド設定
├── package.json        # 依存関係・ビルドスクリプト
└── src/
    ├── App.jsx         # ルートコンポーネント・ルーティング
    ├── main.jsx        # React レンダリングエントリ
    ├── components/     # UI コンポーネント(15ファイル)
    ├── ipc/            # Main プロセス向け IPC ハンドラ(6ファイル)
    ├── pages/          # ページコンポーネント(6ファイル)
    └── styles/         # グローバル CSS・フォント

pages/ には HomePage / MoviePage / TVPage / LibraryPage / DownloadsPage / SettingsPage の6ページが存在し、Electron アプリ内でのルーティングを担っている。components/SetupScreen.jsx が初回起動時の API キー入力画面として機能する。

開発経緯とコミュニティ

Streambert は 2026年2月17日に GitHub で公開された比較的新しいプロジェクトだ。3ヶ月半で ★1,431 / フォーク121 という数字は、「広告なし・トラッキングなし」というコンセプトへの需要の高さを示している。

作者の truelockmc 氏は [email protected](Protonmail アドレス)を連絡先として使っており、プライバシーへの意識の高さが開発思想にも反映されている。Issues タブでは機能リクエストやバグ報告が活発に行われており、v2.0 から v2.4 へのアップデートも精力的に行われている。

ライセンスと法的注意事項

Streambert は GPL-3.0 ライセンスで公開されており、ソースコードの改変・再配布も許可されている(ただし同一ライセンスでの公開が必要)。

**公式 README に明記されている法的注意事項(要約)** - Streambert はコンテンツをホスト・保存・配布しない - すべてのコンテンツはサードパーティプロバイダーから提供される - 利用者は自身の法的権利を確認する責任がある - 著作権侵害を推奨・助長しない - 本アプリは「検索エンジンアグリゲータ」として機能する - 開発者はコンテンツの著作権を主張せず、コンテンツから利益を得ていない

VidSrc や AllManga.to などのソースが配信するコンテンツに関する法的問題については、実際のコンテンツプロバイダーに帰属する。利用する国・地域の著作権法を必ず確認の上で使用すること。

まとめ

Streambert は Electron + React + Vite という現代的なスタックを活用し、映画・TVシリーズ・アニメを「広告ゼロ・トラッキングなし」で視聴・ダウンロードできるデスクトップアプリとして設計されている。TMDB/AniList による豊富なメタデータ、マルチスレッドダウンロード、字幕管理、ライブラリ機能など、実用的な機能が一通りそろっている。

セットアップは TMDB API キーの取得だけで始められる手軽さも魅力で、Linux の複数パッケージ形式対応など、幅広い環境への対応も評価できる。GPL-3.0 での公開により、フォークして自分用にカスタマイズすることも可能だ。


参照ソース