2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
LINEファミリーサービス ( LINE LIVE ) のAndroid開発(全1記事)
提供:LINE株式会社
リンクをコピー
記事をブックマーク
諏訪宏行氏(以下、諏訪):LINEのファミリーサービスの1つであるLINE LIVEについて内容を説明いたします。開発3センター HチームでLINE LIVEの開発をしている諏訪と申します。よろしくお願いします。
今回のセッションではサービスの紹介や、実際のエンジニアの開発の環境、あとは業務や開発に関する技術的な内容についても説明できればなと思っています。よろしくお願いします。
まずサービスの紹介ですが、LINE LIVEはライブ配信アプリです、誰でも簡単に配信できたり、配信を見ることができるようになっていて、配信としては有名人であったり、LINEライバーと言われるような、LINE LIVEの中で活躍されているような配信者の配信を見るようなことができます。あとは見るだけではなく、その人たちにコメントを付けたり、応援アイテムを送ったりしてインタラクションでコミュニケーションできるようなアプリになっています。
過去に配信した有名人として、レぺゼン地球(現・Repezen Foxx)や広瀬すずさんなど、そういった有名な方も配信したりしています。また、ライバー向けに毎月多くのオーディションを開催していて、歌手やモデルを目指すライバーたちのサポートをするような、そういったイベントも多く開催しています。東京ガールズコレクションやファッション誌のモデル、そういったオーディションを開催していたりします。
次に機能の紹介です。大きく3つに分けて説明していこうと思います。視聴機能と配信機能、あとはその他という感じで説明していきます。
視聴機能ですが、まずは動画再生。こちらはストリーミングを視聴する機能ですね。あとは応援。さっきも言ったようにアイテムを送って応援したりなど、インタラクションが取れるかたちになっていて。あとはチャットですね。この画面の真ん中下に書いてある、細かくユーザーのコメントをリアルタイムで反映して表示して、この一覧がオートでスクローリングするかたちなんですが、また自分も投稿できるような感じになっています。
あとはザッピングと書いてありますが、これは動画間移動を簡単にしたツールで、上下にスワイプすることで別の動画に移動できる、回遊できる機能です。あとはPIP、これはPicture in Pictureですね。ミニプレイヤーを表示して配信を見ながら別の配信を探したり、別のことができるような機能になっています。
あとは最後にLINE Streaming Viewerと書いてあって、このLINE LIVE自体単体のアプリではあるのですが、それとは別にLINE LIVEは、LINE本体にも機能の一部を提供していて、LINEからLINE LIVEの配信を見たり、コメントを打ったりできるようになっていますが、そのためのモジュールを提供しています。
次に配信の機能ですが、まずは録画です。カメラを通して撮影した内容、あとはマイクを通して音声の入力の内容をRTMPを使って送出している機能がまず1つあります。あとはフェイスステッカーと書いてありますが、これは配信者の顔の動きをトラッキングして、メイクしたりデコレーションを表示したり、アバターを使って同じように顔の動きをトラッキングして、そのアバターを動かしたり表示したりできる機能です。
karaoke機能と書いてありますが、これは配信者が歌を歌う場合に利用できる機能で、歌詞とあとはカラオケの音源を流して提供できて、それをミキシングして配信に載せることができるようになっていますね。
そして、コラボ機能というのがあって、これはアプリ内でmatchと呼んでいますが、配信者同士をつないで一緒に配信できる機能ですね。matchを起動すると、1個の配信画面の中で配信者が2人表示されて、セッションしながら配信できるという内容。各配信者の応援ポイントみたいなものを競って勝負できる機能になっています。
その他、ナビゲーションと書いてありますが、検索であったりレコメンデーションだったり、ユーザーが見たい配信を探すための機能を提供していて、応援ポイントによるランキングの一覧を表示して見れるようになっていたりします。あとはカテゴリですね。有名な配信者さんであったり、あとはさっき言ったmatchの受付中の配信であったり。あとはルーキーの配信であるとか、配信の属性に合わせて一覧で探すことができる機能を提供したりしています。
あとはダイレクトメッセージ。こちらは配信者が視聴者さんに対して、直接メッセージを送れるような機能になっています。お礼であったり、あとは配信の予定を送ったりするというようなことができるようになっているんですね。画像を送ったりもできる、そんな機能になっています。あとはプロフィールと書いてありますが、これはパーソナル関連の設定で、名前や視聴履歴であったり。
あとはこの人が配信の枠で、ある配信チャンネルを持っている場合はそのチャンネルの設定であったり、画像であったり、そういった設定もできるようになっています。その他の設定でいうと、SNSの連携であったり、あとは通知設定であったり、画質であったりも設定できるものになっています。機能については、だいたいこんな感じになっています。
次に開発環境について紹介していきます。現状は、こちらに書いてあるように、社内3名のエンジニアと外部の委託業者と協業して進めているかたちになっています。他のパネラーからもあったんですが、私たちも基本的に完全リモートワークで仕事をしています。各々の家に会社で貸し出されたPCを持って帰って、VPNでつないで作業していますね。
あと、同じく会社で貸与された検証用の端末を使ってテストとか開発を進めたり、エミュレーターも、もちろん使って開発をしたりしています。あとは会議なのですが、基本的にZoomを使って会議を進めています。
私たちの場合だと週に1回、まずAndroidチーム内での会議、そしてiOSやサーバーチームなどといった開発全体を含めた会議が1個と、あとプロジェクト全体ですね。LINE LIVEのプロジェクト全体、企画とかも含めた全体的な会議が、それぞれ週1であるというような感じになっています。
次に業務の流れ、どんな感じに業務を進めているのかという話ですが、基本的にまず企画者が機能を選定し策定して、wikiにまとめて、それを私たちエンジニアやデザイナーが、それぞれの観点でレビューを進めていきます。
レビューを進めていって仕様がまとまってきたら、基本的に私たちは機能ごとに開発者をアサインするようにしています。機能単位ごとにアサインはしているんですが、機能というのも大小あるので、大きなものについては分担したり、あるいは進行していく中で分業が必要になったりする場合もフレキシブルに担当を変えるようにしています。
ここらへんが決まったら次はデザインを決めるターンで、デザイナーがその仕様をもとにデザインを策定していって、zeplinというデザインのレイアウトや素材を共有するツールがあるのですが、そちらにアップロードして再びレビューを開始します。こちらで問題がなければここから開発開始になります。
アプリもそうなのですが、アプリにAPIを提供しているサーバー開発者たちとも連携して仕様を詰めつつ、開発を進めているという感じです。開発で私たちはGitHubを使っていますが、GitHubでプルリクエストを出して、開発者同士でレビューをしてマージをしていく感じです。
CIはJenkinsを使っていまして、リリースのブランチごとに更新があったらそのタイミングでCIが動いて、CIがパスすればアプリのバイナリを検証者たちが触れるような場所にデプロイするようになっています。
開発が完了すると今度はQAを開始します。これは先ほどデプロイされたバイナリを利用してQAを進めてもらって、問題があればBTSに起票されて、それぞれが対応するという感じです。
BTSは、先ほど岡本からもありましたが、botを使用してSlackと連携して、通知するようなかたちになっています。BTSを回しながら、フィードバックで改善していって、最終的にリリースするかたちになっています。
次に技術関連ですが、配信の部分ですね。先ほど配信で、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株式会社
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05