Kuwapp's Blog

Android と Flutter やってます

ツイキャスの視聴用のAndroidアプリ作って公開してみた。

作ったもの

Casee-シンプルなツイキャス視聴アプリ - Google Play の Android アプリ

シンプルなツイキャスの視聴用アプリです。
今はツイキャスを見てコメント投稿するぐらいの機能しかありません。
今後いくつか機能を追加する予定です。
YouTubeのアプリを真似て動画を見つつ放送を探せるようにしました。
アプリ名は TwitcastingのCasと英語の見るのSeeを合わせました。

なぜ作ったのか

主に3つの理由です。
・ツイキャスのAndroidアプリのUIが自分には使いづらかった
・外部と通信を行うアプリが作りたい
・自分の能力を示すためのアプリが欲しかった

ツイキャスのAndroidアプリのUIが自分には使いづらかった

既存のツイキャスのアプリはリストスクロール時にかくついたり
動画を再生しながら他の動画を探せなかったりと不便な部分がありました。
ツイキャスはAPIも公開されていたので自分で勉強がてら作ってみようと思い開発しました。

外部と通信を行うアプリが作りたい

通信が必要なアプリは今まで単語帳を他人と共有するアプリを作ったことしかありませんでした。
単語帳の共有アプリはユーザーが入力したワードを単語帳に紐付けてアップロードし
そのワードを誰かに教えることで他のユーザーも単語帳をダウンロードできるというものでした。
このアプリはかなり単純なものだったので、技術力向上のためにも新しく何か作ってみようと思いました。

自分の能力を示すためのアプリが欲しかった

前職ではcocos2d-xやUnityでのゲームの開発を行っていたので
Javaで開発するAndroidアプリの業務経験がありません。
次はゲーム系以外で働きたい思いもあったので自分の能力を示せるポートフォリオ的なものが欲しいと思いました。

技術的なこと

技術的な部分で困ったこととか

動画の再生がうまくいかない

はじめは動画部分をWebViewでhtml5のビデオタグで再生していました。
いろいろ試行錯誤するとAndroid5.1では上手く動くようになったのですが
別の端末で試してみると自動で動画は再生されなかったりとかなりはまりました。

そんなときにVideoViewを知り実装。
こちらだと問題なく再生自体はできたのですが
VideoViewはSurfaceViewを使用しているのでアニメーションが上手く動かず断念。。
(SurfaceViewはViewというよりただのWindowだったりします。)
なんとかならないかググるとTextureViewなるものを発見。
動的にレイアウト移動できたりするようで、GitHubにもTextureVideoViewというライブラリがあったので早速使用。
最高でした!

github.com

ログインのAPIが非推奨になっていた

ログイン用のAPIが非推奨になっていました。
クッキーの中身を見るとログイン成功時にユーザーIDとセッションIDを保持しているようだったので
WebViewでログインさせページ遷移時にクッキーにユーザーIDとセッションIDの2つの情報が含まれているかでログインの判定を行うようにしました。
ログインが必要な通信はこれら2つのIDをヘッダに追加して行うようにしました。

コメント投稿のAPIが停止していた

コメント投稿のAPI自体は公開されていたのですが、停止しているようでした。
Webのソースを見てどうやってコメント投稿してるか見て実装しました。
Webはあまり詳しくないので、かなり試行錯誤しました。。

今後

既存のアプリのUIが自分には使いづらいかったため作りましたが、現状は既存のアプリより使いづらいです。。
というのも放送の検索や、放送のバックグラウンド再生、お気に入りのユーザーの放送開始を伝える通知などの機能が存在しません。
検索はAPIで提供されていないのでどうしようかなーと考え中。
サーバー立ててスクレイピングすることになるのかな?
あと個人的にChromecastよく使用してて便利だなーと思ってるのでそっちの対応もしてみたいなと思ってます。
ということで以下の機能を追加予定
・ライブの検索
・ユーザーの検索
・バックグランド再生
・横画面対応
・PUSH通知
・Chromecast対応

感想

とりあえず公開できて満足してます!
自分で何か作るのはやっぱ楽しいし、また他にも何か作っていきたいなーと思ってます。
いろいろとエラー処理が甘かったり、コードが汚かったりする場所があったけど次のアプリではそういうところも改善していきたいなー。