Linuxデスクトップ環境でラジオを聴くとき、意外と困るのが「気軽に使える専用プレイヤーが少ない」ことでした。
ブラウザからradikoを開けば聴くことはできます。
しかし、
- 毎回ブラウザを開く
- タブが増える
- デスクトップアプリ感がない
- Linux環境ではもっとシンプルに使いたい
という不満がありました。
そこで、自分用のLinux向けラジオプレイヤーを作ることにしました。
それが RadikoDeck です。
RadikoDeckとは
RadikoDeckは、Linuxデスクトップ向けに作成した非公式radikoプレイヤーです。
主な機能:
- 📻 ラジオ局一覧表示
- 🔎 局検索
- ⭐ Favorite管理
- ▶ ラジオ再生
- ⏸ Pause制御
- 🔊 音量変更
- 🔇 ミュート
- 🎵 M3Uプレイリスト生成
- 🌑 ダークテーマUI
を搭載しています。
開発環境
今回使用した主な技術:
| 項目 | 内容 |
|---|---|
| Language | Python 3.12 |
| GUI | CustomTkinter |
| Player | mpv |
| Control | mpv IPC |
| OS | Linux |
| Repository | GitHub |
Python標準のTkinterからスタートしましたが、最終的にはCustomTkinterへ移行しました。
初期バージョン
最初はシンプルなGUIでした。
構成は:
Station List
|
|
Play Button
|
|
mpv
という非常に単純なもの。
局を選択して再生する。
それだけでした。
しかし、機能追加を進めるにつれて問題が出てきました。
UI状態管理の問題
最初に苦労した部分が状態管理でした。
例えば:
- 今選択している局
- 現在再生中の局
- Favorite登録済みの局
これらは似ていますが、意味が違います。
最初は状態が混ざってしまい、
「局を再生するとFavorite表示まで変わる」
という問題が発生しました。
そこで状態を分離しました。
selected_station
playing_station
favorites
それぞれ独立して管理するよう変更。
結果:
☆ 通常局
★ Favorite局
▶ ★ 再生中Favorite局
という自然なUIになりました。
mpv IPC制御
再生部分にはmpvを利用しています。
単純に:
mpv URL
で起動するだけでは、GUI側から制御できません。
そこでmpv IPC socketを利用しました。
構成:
RadikoDeck GUI
|
|
Unix Socket
|
|
mpv
これにより:
- Pause
- Volume
- Mute
- Status取得
などがGUIから操作可能になりました。
CustomTkinterによるUI刷新
標準Tkinterでは少し古い印象があったため、CustomTkinterへ移行しました。
変更点:
- ダークテーマ
- モダンなボタン
- 高解像度ディスプレイ対応
- 局カード表示
現在は4Kディスプレイ環境でも利用できるよう調整しています。
プロジェクト構成
現在の構成:
RadikoDeck/
├── core/
│ ├── player.py
│ ├── stations.py
│ ├── favorites.py
│ └── playlist.py
├── interface/
│ ├── gui.py
│ └── gui_controls.py
├── collectors/
├── generators/
├── database/
├── data/
└── main.py
UI、プレイヤー、データ管理を分離しています。
Linuxデスクトップアプリ化
GUIアプリとして使いやすくするため、.desktopファイルも用意しました。
これにより:
アプリ一覧
↓
RadikoDeck
↓
起動
という一般的なLinuxアプリと同じ操作が可能になります。
GitHub公開
完成したRadikoDeckはGitHubへ公開しました。
公開にあたり:
- README.md作成
- .gitignore設定
- 不要ファイル整理
- 初回リリース
を実施しました。
今後追加したい機能
今後は:
- 📻 番組情報表示
- 🔔 通知機能
- 🎙 録音機能
- 🖥 システムトレイ常駐
- 📱 リモート操作
- 📦 インストーラー作成
などを検討しています。
まとめ
Linux環境で「ちょっとラジオを聴きたい」と思った時に、ブラウザではなく専用アプリとして使えるものが欲しくてRadikoDeckを作りました。
単純な再生ツールから始まりましたが、
- GUI設計
- 状態管理
- IPC制御
- Linuxデスクトップ統合
など、実際のアプリ開発に必要な要素を一通り経験できるプロジェクトになりました。
Linuxデスクトップで使える、自分専用のラジオプレイヤー。
それが RadikoDeck です。
※注意:RadikoDeckはradiko公式アプリではありません。利用についてはradikoの利用規約・配信仕様に従ってください。


コメント