CLOSE

LINEファミリーサービス ( LINE LIVE ) のAndroid開発(全1記事)

2021.10.18

Brand Topics

PR

「LINE LIVE」でユーザーと有名人をつなぐ ライブ配信に特化したAndroidアプリ開発の現場

提供:LINE株式会社

LINEのAndroid開発はどのように行われているのか——。LINEの7事業でそれぞれ募集するAndroid開発について、横断的に紹介する採用イベントで、諏訪宏行氏が「LINE LIVE」のAndroid開発について詳細を紹介しました。

ライブ配信アプリ「LINE LIVE」

諏訪宏行氏(以下、諏訪):LINEのファミリーサービスの1つであるLINE LIVEについて内容を説明いたします。開発3センター HチームでLINE LIVEの開発をしている諏訪と申します。よろしくお願いします。

今回のセッションではサービスの紹介や、実際のエンジニアの開発の環境、あとは業務や開発に関する技術的な内容についても説明できればなと思っています。よろしくお願いします。

まずサービスの紹介ですが、LINE LIVEはライブ配信アプリです、誰でも簡単に配信できたり、配信を見ることができるようになっていて、配信としては有名人であったり、LINEライバーと言われるような、LINE LIVEの中で活躍されているような配信者の配信を見るようなことができます。あとは見るだけではなく、その人たちにコメントを付けたり、応援アイテムを送ったりしてインタラクションでコミュニケーションできるようなアプリになっています。

過去に配信した有名人として、レぺゼン地球(現・Repezen Foxx)や広瀬すずさんなど、そういった有名な方も配信したりしています。また、ライバー向けに毎月多くのオーディションを開催していて、歌手やモデルを目指すライバーたちのサポートをするような、そういったイベントも多く開催しています。東京ガールズコレクションやファッション誌のモデル、そういったオーディションを開催していたりします。

「LINE LIVE」の視聴機能

次に機能の紹介です。大きく3つに分けて説明していこうと思います。視聴機能と配信機能、あとはその他という感じで説明していきます。

視聴機能ですが、まずは動画再生。こちらはストリーミングを視聴する機能ですね。あとは応援。さっきも言ったようにアイテムを送って応援したりなど、インタラクションが取れるかたちになっていて。あとはチャットですね。この画面の真ん中下に書いてある、細かくユーザーのコメントをリアルタイムで反映して表示して、この一覧がオートでスクローリングするかたちなんですが、また自分も投稿できるような感じになっています。

あとはザッピングと書いてありますが、これは動画間移動を簡単にしたツールで、上下にスワイプすることで別の動画に移動できる、回遊できる機能です。あとはPIP、これはPicture in Pictureですね。ミニプレイヤーを表示して配信を見ながら別の配信を探したり、別のことができるような機能になっています。

あとは最後にLINE Streaming Viewerと書いてあって、このLINE LIVE自体単体のアプリではあるのですが、それとは別にLINE LIVEは、LINE本体にも機能の一部を提供していて、LINEからLINE LIVEの配信を見たり、コメントを打ったりできるようになっていますが、そのためのモジュールを提供しています。

「LINE LIVE」の配信機能

次に配信の機能ですが、まずは録画です。カメラを通して撮影した内容、あとはマイクを通して音声の入力の内容をRTMPを使って送出している機能がまず1つあります。あとはフェイスステッカーと書いてありますが、これは配信者の顔の動きをトラッキングして、メイクしたりデコレーションを表示したり、アバターを使って同じように顔の動きをトラッキングして、そのアバターを動かしたり表示したりできる機能です。

karaoke機能と書いてありますが、これは配信者が歌を歌う場合に利用できる機能で、歌詞とあとはカラオケの音源を流して提供できて、それをミキシングして配信に載せることができるようになっていますね。

そして、コラボ機能というのがあって、これはアプリ内でmatchと呼んでいますが、配信者同士をつないで一緒に配信できる機能ですね。matchを起動すると、1個の配信画面の中で配信者が2人表示されて、セッションしながら配信できるという内容。各配信者の応援ポイントみたいなものを競って勝負できる機能になっています。

その他、ナビゲーションと書いてありますが、検索であったりレコメンデーションだったり、ユーザーが見たい配信を探すための機能を提供していて、応援ポイントによるランキングの一覧を表示して見れるようになっていたりします。あとはカテゴリですね。有名な配信者さんであったり、あとはさっき言ったmatchの受付中の配信であったり。あとはルーキーの配信であるとか、配信の属性に合わせて一覧で探すことができる機能を提供したりしています。

あとはダイレクトメッセージ。こちらは配信者が視聴者さんに対して、直接メッセージを送れるような機能になっています。お礼であったり、あとは配信の予定を送ったりするというようなことができるようになっているんですね。画像を送ったりもできる、そんな機能になっています。あとはプロフィールと書いてありますが、これはパーソナル関連の設定で、名前や視聴履歴であったり。

あとはこの人が配信の枠で、ある配信チャンネルを持っている場合はそのチャンネルの設定であったり、画像であったり、そういった設定もできるようになっています。その他の設定でいうと、SNSの連携であったり、あとは通知設定であったり、画質であったりも設定できるものになっています。機能については、だいたいこんな感じになっています。

「LINE LIVE」の開発環境

次に開発環境について紹介していきます。現状は、こちらに書いてあるように、社内3名のエンジニアと外部の委託業者と協業して進めているかたちになっています。他のパネラーからもあったんですが、私たちも基本的に完全リモートワークで仕事をしています。各々の家に会社で貸し出されたPCを持って帰って、VPNでつないで作業していますね。

あと、同じく会社で貸与された検証用の端末を使ってテストとか開発を進めたり、エミュレーターも、もちろん使って開発をしたりしています。あとは会議なのですが、基本的にZoomを使って会議を進めています。

私たちの場合だと週に1回、まずAndroidチーム内での会議、そしてiOSやサーバーチームなどといった開発全体を含めた会議が1個と、あとプロジェクト全体ですね。LINE LIVEのプロジェクト全体、企画とかも含めた全体的な会議が、それぞれ週1であるというような感じになっています。

「LINE LIVE」の業務の流れ

次に業務の流れ、どんな感じに業務を進めているのかという話ですが、基本的にまず企画者が機能を選定し策定して、wikiにまとめて、それを私たちエンジニアやデザイナーが、それぞれの観点でレビューを進めていきます。

レビューを進めていって仕様がまとまってきたら、基本的に私たちは機能ごとに開発者をアサインするようにしています。機能単位ごとにアサインはしているんですが、機能というのも大小あるので、大きなものについては分担したり、あるいは進行していく中で分業が必要になったりする場合もフレキシブルに担当を変えるようにしています。

ここらへんが決まったら次はデザインを決めるターンで、デザイナーがその仕様をもとにデザインを策定していって、zeplinというデザインのレイアウトや素材を共有するツールがあるのですが、そちらにアップロードして再びレビューを開始します。こちらで問題がなければここから開発開始になります。

アプリもそうなのですが、アプリにAPIを提供しているサーバー開発者たちとも連携して仕様を詰めつつ、開発を進めているという感じです。開発で私たちはGitHubを使っていますが、GitHubでプルリクエストを出して、開発者同士でレビューをしてマージをしていく感じです。

CIはJenkinsを使っていまして、リリースのブランチごとに更新があったらそのタイミングでCIが動いて、CIがパスすればアプリのバイナリを検証者たちが触れるような場所にデプロイするようになっています。

開発が完了すると今度はQAを開始します。これは先ほどデプロイされたバイナリを利用してQAを進めてもらって、問題があればBTSに起票されて、それぞれが対応するという感じです。

BTSは、先ほど岡本からもありましたが、botを使用してSlackと連携して、通知するようなかたちになっています。BTSを回しながら、フィードバックで改善していって、最終的にリリースするかたちになっています。

「LINE LIVE」の技術スタック

次に技術関連ですが、配信の部分ですね。先ほど配信で、RTMPで送出しているというような話をしていたと思いますが、ここらへんは全部社内製のSDKを利用してやっています。そのRTMPの送出であったり、あとはフェイスステッカーの合成、音声のミックス、あとは先ほど言ったmatchの部分などは社内のSDKを利用してやっているので、アプリチームとしては、このSDKを使って適用されたAPIを使って適用しています。

なので、コアに音声を合成したりなどを直接実装するのではなく、SDKのAPIを使って開発を進めていくというような感じになっています。

あとアーキテクチャはReduxを使っていて、これは、配信はけっこう入力が複数、APIのポーリングであったり、ユーザーの操作であったり、あとはチャットのペイロードであったりと入力がたくさんあって、それらをそれぞれがUIを一時的に変更するためにステートを1個持って、そのステートをもとにUIを変更するような感じで、一意性を持たせるようにしています。

配信についてはそんな感じで、あと再生については、プレイヤーはExoPlayer。Googleが提供しているライブラリ「ExoPlayer」を使っていますね。hlsと書いてありますが、先ほど動画はRTMPで、と言いましたが、動画はRTMPで送出されたものがエンコードサーバーで最終的にhlsに変換されてCDNに置かれます。

プレイヤーは、そのCDN上のhlsにアクセスして再生するというような感じになっています。ザッピング、上下にスワイプできるよと言っていたやつですね。これはViewPager2を使っています。あとはPIPについては、これもAndroidの純正のものを使っています。プレイヤー自体はActivityになっていて、それをPIP化してます。PIPは画面が小さくなるので、すべてを表示しても見づらくなるだけなので、チャットなどの表示を消したり、そういったUIの制御みたいなのをしていますね。

あとは、先ほども言っていたLINE Streaming Viewer、LINEに提供していると言っていた部分なんですが、こちらをモジュールとしてまず提供していて。こちらはもともと同じコードでやっていたんですね。アプリのコードと同様のコード。共通機能みたいなのを切り出して提供していたのですが、要件が移り変わるにあたって、別々の機能として成長していったというところもあって、現在は別々のコードになっている感じです。

更新が発生した場合は、そのモジュールを更新してQAを経てリリースするような感じになっています。LINE LIVE Androidについての説明は以上になります。ありがとうございました。

続きを読むには会員登録
(無料)が必要です。

会員登録していただくと、すべての記事が制限なく閲覧でき、
著者フォローや記事の保存機能など、便利な機能がご利用いただけます。

無料会員登録

会員の方はこちら

LINE株式会社

関連タグ:

この記事のスピーカー

同じログの記事

コミュニティ情報

Brand Topics

Brand Topics

  • ランサムウェア攻撃後、わずか2日半でシステム復旧 名古屋港コンテナターミナルが早期復旧できた理由 

人気の記事

人気の記事

新着イベント

ログミーBusinessに
記事掲載しませんか?

イベント・インタビュー・対談 etc.

“編集しない編集”で、
スピーカーの「意図をそのまま」お届け!