本日はWantedlyをきっかけに、約1年半前にAbemaTVにジョインしたAndroidエンジニアの松村のお話をお届けします。これまでのキャリア・松村が担当した「動画ダウンロード機能」の半年に渡る開発の裏側についてもインタビューしました。
「動画ダウンロード機能」とは、AbemaTVで見逃した番組をいつでも見ることが出来る「Abemaビデオ」にある番組の中から(※1)、事前にWi-Fi環境下で好きな番組をダウンロードしておけば通信量をほぼゼロにして、番組をみることが出来るようになる機能で、(※2)月額960円(税込)の「プレミアムプラン」に登録されている方のみお楽しみいただけるものです。
(※1)一部、「動画ダウンロード機能」対象外の作品もあります。
(※2)本機能はiOS11.0以降,Android4.4以降を搭載したスマートフォン・タブレットでお使いいただけます。ダウンロード再生時には、最小限の通信が発生します。
松村 勇輝
大学卒業後、メーカー系Androidアプリ/フレームワークの開発やキャリア系アプリのプロダクトオーナーを経て、2017年1月サイバーエージェント中途入社。入社以来AbemaTVのAndroidエンジニアとして従事している。
ーー入社のきっかけは何だったのでしょう?
Wantedly経由でAbemaTV開発本部長の長瀬からランチに誘われたことが1番最初のきっかけです。それまではSlerで経験を積んでいたのですが、内製でサービス開発している環境で働きたいと考えており、転職活動を始めようと思っていた頃でした。
当時AbemaTVは既に世に出ており、外から見ても技術力の高さが伺えるUI/UXだと思いましたし、特に番組表の操作性やUIは他ではあまり見ない作りで面白そうだと思いました。実際に会って話を聞いてみると、これまでSNSで情報をキャッチアップしていたエンジニアが働いていることなども知り、技術力の高さが決め手となり入社を決めました。
ーー入社以降、どんな開発に携わってきましたか?
縦画面表示やAbemaビデオ機能の開発、72時間ホンネテレビの負荷対策に携わってきました。直近では4月に提供開始した「動画ダウンロード機能」の開発に従事していました。
数万行のコードを捨てる決断が、良い結果に繫がった
ーー4月に提供開始した「動画ダウンロード機能」についてお伺いします。まずは開発体制について教えてください。
ディレクターが1人いて、エンジニアチームはiosとAndroidそれぞれ2人づつ、あとはサーバーサイドとデザイナーが1人づついました。Androidチームは私ともう1人のメンバーがいましたが、明確に役割を決めるわけでなく、実装などの作業は2人で分割しながら進めていました。
ーー「動画ダウンロード機能」の開発で難しかった点や苦労したことを教えてください。
大変だった点は主に2つあり、1つ目は「初めての挑戦」が故の大変さです。それまでAbemaTVで私が携わった開発案件は、ベースがある中でそれをどう組み立てるか、という類のものでしたが「動画ダウンロード機能」に関しては、実装をゼロから考え、作る必要がありました。AbemaTVにとってどう作ることがベストか、手探りの状況で毎日チームメンバーと調査・議論を重ね、数ヶ月かけて数万行のコードを書いたことは、想像以上に苦労しました。
ーーそれは喜びもひとしおですね。
けれど、結局そのコードは使っていないんです。というのも、開発当初はリリースターゲットが近く、ExoPlayerのダウンロード機能がまだ使える状態ではありませんでした。しかし、途中でリリース計画の変更がありリリースターゲットが延びた結果、ExoPlayerのダウンロード機能リリースが間に合ったのです。ダウンロード処理も実現でき、完成間近というタイミングでしたので、そのまま自前のダウンローダで進めようか悩んだのですが、長期的な運用を考えた際にExoPlayerのダウンローダを使った方が良いと判断して、数ヶ月かけて書いた数万行のコードを捨てたのです。結局、ほぼ1からやり直しになりましたが、"ダウンロード処理"の理解が随分と得られていたので、ExoPlayerのダウンローダの取り込みもスムーズに行えて、結果的には良かったと思っています。
ーーもう1つの苦労したポイントはどんなことですか?
「大規模なリファクタリング」です。AbemaTVはFluxアーキテクチャを採用しているのですが、ダウンロード機能の実装をよりFluxアーキテクチャにあわせるよう見直しました。Fluxに沿って作ることで多少冗長にはなりますが、安定し変更にも強くなると判断して1ヶ月かけてリファクタリングしました。このリファクタリングでコードの量を減らすことができ、とてもシンプルな構造にすることができました。振り返ってみると、ダウンロード再生のQAテストでバグが数件しかでなかったのも、ExoPlayerのダウンローダへ乗り換えたことと、リファクタリングに踏み切ったことが良かったと思っています。
ーーリリースから約1ヶ月半が経ちますが、ユーザーの反応はいかがですか?
もともと動画ダウンロード機能はユーザーからの希望も多かったので、好意的な声を多く頂いています。ダウンロード機能利用率も想定を少し上回る推移で、ひとまず安心といったところです。
問題解決だけじゃなく、問題定義もできる環境だから、積極的にならざるを得ない
ーー働き出して約1年半が経ちますが、いかがですか?
Sler時代と比較すると、チャレンジできることが多くなり刺激的な毎日です。以前は技術者としての成長は実感しつつも、自分の力ではどうしようもない部分でお客様の意思決定が下されてしまうことに多少の物足りなさを感じたり、お客様のサービスだから技術選択をするにも保守的になることがありました。それが今では問題解決だけじゃなく、問題定義もできる環境だから積極的にならざるを得ないのです。だからこそ細かな部分にも気がいきますし、良いサービス作りをしたい、という気持ちが日に日に高まっています。
ーーAbemaTVの開発チームの雰囲気を教えてください
自由でフラットな雰囲気です。年齢や入社タイミング関係なく、意見を言いやすい環境だから、それぞれから多くの意見が出て、サービス改善に活かされるし、新しい技術の採用スピートも驚くほど早い。サービスを良くしたい志が強いチームです。
ーー最後に今後の展望を聞かせてください
常に新しい技術に挑戦しながら、良いものづくりをしていきたいです。エンドユーザーはもちろんですが、エンジニアからも高く評価してもらえるようなAbemaTVにしていきたいです。
▼AbemaTVではAndroidエンジニアを募集しています!
株式会社AbemaTV's job postings