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 配布も考えます。
この記事が気に入ったらサポートをしてみませんか?