Jetpack Composeで柔軟なメディアアプリ構築を支援する仕組み:EasyBangumi事例
好きなシリーズやアニメを見たいのに、5つの異なるサイトを行き来したり、終わりないバナーを閉じたり、壊れたプレイヤーと戦わなければならない、そんな経験はありませんか?オープンソースコミュニティの開発者たちは Often、根本的な解決策として自分たちのアグリゲーターを作成します。
EasyBangumiプロジェクト(作者たちは「Clean Anime Viewing」と呼んでいます)は、単なるプレイヤーに留まりません。モダンな.techスタックに基づいて構築されたフル機能のAndroidクライアントで、異なるコンテンツソースの混沌を1つの整理されたライブラリに変換します。興味深いことに、このプロジェクトは当初、Jetpack Composeのテストとオーディオ・ビデオ技術に取り組むための訓練場として作成されました。

このオールインワンアプリの内部
EasyBangumiはモジュラー原則に基づいて動作します。アプリ自体は、プレイヤーとカタログ化のロジックを備えた空のシェルです。すべてのコンテンツはプラグインシステムを通じて流入します。これにより、作者たちは著作権問題を回避し、ユーザーに完全な自由を与えます。
このアプリにはすでに適切な機能リストが実装されています:
- ホーム画面でのフル検索とレコメンデーション。
- 新エピソードを追跡するための「お気に入り」システム。
- テーマ切り替え、再生速度制御、視聴履歴を備えた高度なプレイヤー。
- TVへのストリーミング用のCastサポート。
- オフライン視聴用のエピソードダウンロード。
- その場でGIFとしてビデオクリップを録画 — モバイルプレイヤーではめったに見られない楽しい機能。
技術スタックとアーキテクチャ
ソースコードを見ると、作者たちが明確にKotlinに舵を切っていることがすぐにわかります。このプロジェクトは、レガシーなXMLビューのない.modern Android開発がどのようなものかを示す素晴らしい例です。
中核となるJetpack Compose
インターフェース全体がComposeで書かれています。これにより、動的テーマと非常にスムーズなトランジションの実装が可能になりました。宣言型UIに移行したばかり라면、EasyBangumiのコードは достаточно大きなアプリケーションでのナビゲーションと状態管理がどのように organizedされているかを示しています。
プラグインシステム
開発者にとって最も価値のある部分は、「ソース」メカニズムです。アプリには組み込みのプラグインマーケットプレイスがあります。これは動的ロード 통해実装されており、アプリの更新なしに新しいソースサイトを追加できます。
|
|
|
|
|:---------------------------------:|:----------------------------------:|:----------------------------------:|
|
|
|
|
これを学ぶべき理由
アニメファンでなくても、EasyBangumiはアーキテクチャのケーススタディとして興味深いです。チュートリアルプロジェクトは often、シンプルなTodoリストや天気クライアントに留まります。ここでは、重いコンテンツとの実際の作業が見られます:
- データキャッシュ:インターフェースを遅くすることなく履歴とビデオ進行状況を保存する方法。
- ビデオ処理:カスタムUIオーバーレイを持つExoPlayer(またはMedia3)に基づくカスタムプレイヤーの実装。
- ネットワーク処理:サードパーティリソースの解析と制限の回避。
ちなみに、開発者たちはPC版の.launchとクラウドデータ同期を計画しています。プロジェクトがGitHubでほぼ4,000個の星を集めていることを考えると、コミュニティは активно расширять авторов。
誰がこのプロジェクトから恩恵を受けるか
第一に — 中級Android開発者です。GoogleのチュートリアルからComposeを学ぶのは一回事ですがtonsの画面、プラグイン、複雑なプレイヤーを備えた実際のアプリがそれで構築されているのを見るのは、全く異なる経験です。
第二に — 自分の好みに合わせたメディアセンターを構築したい人。コードはApache 2.0ライセンスの下でオープンしているため、forkingや自分のニーズへの適応を禁止する人はいません(たとえば、映画や教育课程的オンラインシネマ用)。
1つの注意点:READMEとインターフェースの一部は Originally中国語で書かれていますが、コード構造は透明で、パーサーを書いたことがある人ならプラグインロジックは明確です。
実際のタスクで.modern KotlinがComposeとどのように連携するかを確認したい場合は、EasyBangumiリポジトリを確認してください。
関連プロジェクト