見出し画像

YouTube クライアントアプリを作っているお話

タイトル通りなんですが、趣味で Android の YouTube のクライアントアプリを作っています。
そのことについて色々書いてみようと思います。

※ スクショにある動画等は完全に自分の好みです。

どんなアプリか

YouTube の動画をお気に入りに登録し、お気に入りの動画をループで再生できるアプリです。
また、1 動画をリピート再生できたり、今話題のダークテーマにできるといった機能があります。

なぜ作ろうとしたのか

よく YouTube で MV とか見るので、1 つの動画だけリピートしたり、好きなプレイリストを再生したいなぁて理由で作りました。

YouTube のアプリて 1 動画のリピートができなかったり、プレイリストがアカウントに結びつくのが嫌だったんですよね。

開発のこと

まずアーキテクチャですが、最初は coroutines の勉強て意味で MVP (coroutines) で作成しようとしていました。
実装自体はできたのですが、正しい実装なのかよくわからないのと、coroutines もですが AAC も理解度が低く個人的に AAC の方が優先度高かったので、AAC (Android Archtecture Components) に書き換えました。
Google の AAC のサンプルを参考に実装していたんですが、ViewModel に通信ロジックが入ったり、Dagger が複雑になったりでしっくりきませんでした。

という感じで紆余曲折あり、MVP に AAC の ViewModel を組み合わせる感じで落ち着きました。(この話はまた別の機会に)

MVP (coroutines)

AAC (RxJava)

MVP + ViewModel (RxJava)

その他は beta 版の Android X や Material Components や MotionLayout を使ったりで、遊び場にはもってこいの環境になりました。

ついでに遊び心でダークテーマの実装もしました。

デザインについて

もちろん、自分がアプリを作るときは Material Design 一択です。
Material Components を採用しているので、新しい Material Design にしています。

MotionLayout や SharedElements で動きも加えたり、Lift On Scroll (コンテンツをスクロールすると Toolbar が浮き上がるやつ) を実装してます。

ダークテーマを初めて実装してみました。
(Material Components レベルで Dark Theme がサポートされるようですが)

配色が難しかったです。例えば、RippleEffect の色は暗くするのか明るくするのか (見やすかったので明るい方で実装しています)、実機で見たら境目がわからないなどなど。楽しかったですけどね。

今回のアプリはちゃんと作りたかったので、アイコンも地味に 3 パターンぐらい作成しました。
ちなみにアイコンの作成は Figma 使っています。

今後について

実は Material Components や MotionLayout のバグで実装したいデザインになっていません。ライブラリが修正されてから対応しようかなと思っています。
機能も何か欲しいのを思いついたら実装しようかなと、今はこれといって実装したい機能がないんですよね…

完全に遊び目的だったのでリリースする予定はないんですがコードは公開しているので、(API キーを取得してもらう手間はあるんですが) 自由に使ってください。 ほしいて人がいたら deploygate での apk 配布も考えます。


この記事が気に入ったらサポートをしてみませんか?