IRIAM 開発ブログ

「IRIAM」の開発・運用によって得た知見、「IRIAM」の裏側をお届けします

ASP.NET CoreとUnityで実現した、レスポンス速度とネイティブライクUIの話

f:id:sonocom:20181205221326j:plain

こんにちは、DUOの高張です。 簡単に自己紹介しますと、現在は開発部のマネージャーとIRIAMのサーバーサイドエンジニアとして働いています。DUO入社以前は、独立系SIerでWebシステムの受託開発、ソーシャルゲーム会社でゲーム開発、大手IT企業でWebサービスの開発・運用などを経験してきました。 DUOには2018年5月に入社していますが、CEO・塚本の熱量に将来性を感じたこと、優秀なエンジニアメンバーと働ける機会に惹かれたこと、経営陣はじめチーム全体の意思決定が速く、高速でPDCAを回せるところなどから入社を決めました。

さて本題です。この開発ブログも始まったばかりなので、まずはIRIAMの開発において技術的に特にこだわったポイントについて概要を書いていきます。以下二点です。

1. ASP.NET Coreによるレスポンス速度の向上
2. ネイティブアプリに近いUIをUnityで実現

1.ASP.NET Coreによるレスポンス速度の向上

f:id:sonocom:20181205221710p:plain
まずレスポンス速度について。IRIAMのコンセプトは「キャラと"ガチ恋距離"で会話できるバーチャルライブアプリ」。ライバーさんとユーザーさんのコミュニケーションに重きをおいています。"ガチ恋距離"を実現するには、大量のアクセスをさばきつつ、コメントをリアルタイムに近い状態で配信者と視聴者に表示することが必須です。

高速なレスポンスタイムのための技術選定として、開発言語はC#フレームワークASP.NET Coreを採用しています。 以前までC#でサーバーサイドを開発するとなるとWindows上でしか動かないASP.NETを使用していましたが、2015年にクロスプラットフォームで動くASP.NET Coreがリリースされました。ASP.NET Coreは従来のASP.NETと比べ処理速度が速く、より大量のアクセスがさばけるようになっています。C#ASP.NET Coreは継続的にバージョンアップが行われており、今後さらにパフォーマンスが向上することが期待されています。

どう実装しているかという点については今後の記事に譲るとして、結果的にこの技術選定は正解でした。具体的な数字は出せませんが、業界ではかなり速いレスポンスタイムが出ています。 クライアントエンジニアには「サーバーサイドの処理が速すぎて異常系の調査ができない」と言われています。

ネイティブアプリに近いUIをUnityで実現

次にUIについて。今回はIRIAMアプリの開発にUnityを使用しています。Unityは元々ゲームを作るためのもので、スマートフォン向けゲーム以外の一般的なアプリでの採用はかなり珍しい事例かと思います。 Unityを選択した理由としては、前述の通りIRIAMは「キャラと"ガチ恋距離"で会話できるバーチャルライブアプリ」ですので、Vライバーのモーションデータの滑らかな動きを実現するために『モーションライブ方式』で開発するためです。

幸い、DUO開発チームには元UnityTechnologiesJapanエバンジェリストの伊藤周さんをはじめとしたUnityエンジニア陣が揃っています。Unityでネイティブライクなアプリの開発は難しいところもありますが、IRIAMのUIは、Unityを使いながらもかなりネイティブアプリに近いものとなっています。(例えばスクロール機能など) 個人的にも、Unityでは普通ありえないシステムを実装できたのは、ひとつ大きな経験になりました。

IRIAM開発で今後改善していきたいこと

結果として、「キャラと"ガチ恋距離"で会話できるバーチャルライブアプリ」を実現するためにASP.NET CoreとUnityを採用したことは正解だったと現時点では言えそうです。 速度やモーションもリリース時点としては高いクオリティを保っていますが、もちろん今後もユーザーさんとライバーさんの声を聞きつつ、IRIAMのコンセプトとの整合性を考えてアップデートをかけていこうとしています。

個人的には、ライバーの一覧画面のUIを改善したいと考えています。現状100名ほどのライバーが配信していますが、今後ライバーが増えていくことを考えると、今のUIだとライバーを探すのに苦労することが予想されます。検索機能や、ライバーごとに属性をつけて抽出するといった機能の検討が必要です。 また、IRIAMは現在さまざまなサーバーと連携して稼働しているのですが、やや非効率的な連携になっているので、この辺りをどんどん効率化していきます。サービス拡大を考えると、これはマストだと思っています。

おわりに

現在、IRIAM開発チームではエンジニアを積極採用中です。 VTuberやIRIAMが好きな人、技術だけではなくサービス拡大にコミットできる人とぜひ一緒に働きたいと思います。実際に、IRIAM開発チームのエンジニアはみんなIRIAMが大好きで、それぞれ推しライバーがいます。 読んでくれた方の中に、IRIAM好きなエンジニアの方がいれば、ぜひ一度お話ししましょう。

Unityでバーチャル配信アプリを開発する、クライアントエンジニア募集! - 株式会社DUOのモバイルエンジニア中途・契約・委託の求人 - Wantedly

バーチャル配信アプリIRIAMを支える、サーバーサイドエンジニア募集! - 株式会社DUOのWeb エンジニア中途・契約・委託の求人 - Wantedly