2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
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.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.20
成果が目立つ「攻めのタイプ」ばかり採用しがちな職場 「優秀な人材」を求める人がスルーしているもの
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.21
40代〜50代の管理職が「部下を承認する」のに苦戦するわけ 職場での「傷つき」をこじらせた世代に必要なこと
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.19
がんばっているのに伸び悩む営業・成果を出す営業の違い 『無敗営業』著者が教える、つい陥りがちな「思い込み」の罠
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2024.11.15
好きなことで起業、赤字を膨らませても引くに引けない理由 倒産リスクが一気に高まる、起業でありがちな失敗