※この記事では、にじさんじライバーの配信にまつわる技術的な話題が多数含まれます。
重要なのは配信を守るため「とにかくアプリを止めない」こと
――ANYCOLORのUnityエンジニアとして、システム設計・実装などの業務上で特に意識していることはありますか?
エンジニア F:僕は、先ほど(前編)話した「ライバーさんが使いやすいように意識する」が一番ですね。ライバーさんがシンプルな操作で使えるということは常に意識しないといけないなとは思ってますね。たくさんのライバーさんがいらっしゃって、パソコンが苦手な方もいますから誰でも使えるものでないといけません。
テクニカルクリエイティブ部副部長 K(以下、副部長 K):そうですね、アプリを使うのは僕たちエンジニアではありませんから。
リードエンジニア О:あと配信はリアルタイムでやるものがほとんどなので、とにかくアプリを止めないこと・止まらないことも大切ですね。止まったら配信自体ができなくなってしまいますから。
エンジニア F:そうですね。そしてなるべくパフォーマンスが安定していることも大事です。ゲーム的に言うと、「一定のfps(※1)が出せて、かつ不意に落ちたりすることがない」というのは守っていかないといけないなと思っています。
※1→frame per secondの略。動画・ゲームにおいて1秒あたりのフレーム数の単位で、数値が高いほど映像が滑らかになる。
副部長 K:何かシステムトラブルが起きたときに「回避策があるかどうか」は、機能追加を考えるジャッジのポイントになっていますね。例えば先ほど出た、にじさんじアプリのコラボサーバーをリプレイスするという案を例に出すと、まず既存のシステムがあって、そしてОさんが作った新しいシステムがありますよね。もし新しいシステムが何かしら不具合で使えなくなった場合、古いシステムに即座に切り替えられるような要素をしっかり残した状態でリリースするように、トラブル回避の策も一緒に用意するんです。ライバーさんの配信が立ち行かなくなることはできるだけ起きないようにしよう、というのはかなり重視しているポイントですね。
リードエンジニア О:そうですね。配信を止めちゃうと、もう取り返しがつかないので。
副部長 K:配信にはファンの方がたくさん来てくださっていますしね。新機能をリリースしたばっかりの頃は、配信で使ってくださるライバーさんが増えるじゃないですか。「大丈夫かなあ……」ってヒヤヒヤしませんか?
エンジニア F:基本的にずっとヒヤヒヤしています。
副部長 K:(笑)。でもファンの方々の反応が、僕たちのうれしさややりがいにもつながりますよね。アイテム機能を追加することは、にじさんじフェス2023の閉会式で発表したんですけど、実際に閉会式に集まっていた方々のリアクションを見ることができましたし。リリースした機能を配信で使ってもらってうまくいったときや、そもそも自分たちの作った機能が使われている様子を見るのもうれしいです。あの喜びと、ファンの皆さんの反応をダイレクトに感じられることは、おそらくこの仕事の大きな魅力ですよ。
ライバーの要望に寄り添い「もう一歩に、こだわる。」
――ライバーさんからもスタッフからも新しい機能や修正の要望があるそうですが、先ほどおっしゃっていたパフォーマンスの担保だったり、そもそもマンパワーが足りなかったり……とご事情もありますよね? そのような「やりたいけど、できない」というご苦労は、過去にどのようなものがあったんでしょうか。
エンジニア F:パフォーマンスを考えて諦めるということはそこまでないんですが、実装までの工数やスケジュールを踏まえると難しい……というときはもちろんあります。
リードエンジニア О:パフォーマンス面で一番妥協しないのはKさんですね。特に僕の作業領域なんですが、けっこう難しい機能を実装するとき「これぐらいの挙動であればいいんじゃないかな」と、言い方は悪いんですがちょっと“甘えて”提案したとすると、Kさんはそういう姿勢にだいたい気付いて「これじゃあダメだ」と。
コラボサーバーをリプレイスするときの話ですが、ライバーさん100名のコラボを実現するとなると厳しいので「コラボできる最大人数を50名に絞ったら、パフォーマンスがちょっと上がるので、それでもいいですかね?」という話をしたんです。そのときKさんから、「100名でコラボできるということが1つの売りになる。リプレイスするならそれぐらいの売りがないとダメだ」とコメントしていただいたんです。だから、なんとかできるように努力をする、という。Kさんは優しい方ですが、ライバーさんの利益を一番に考えていらっしゃるので、僕たち実装者の甘えはあんまり許さないんです。
新スタジオ設立記念した大型特番「にじさんじ大感謝祭」。総勢50名のライバーが出演した。
副部長 K:確かに、「Оさんのスキルだったら、これぐらいやれそうだよな?」と思うようなところって、気付いちゃうんですよね……。本当に申し訳ない話なんですが、「ここをもうひとがんばりしたらもっとよくなりそう」というポイントが見つかって、かつ現実的にコストに見合わないわけではなさそうだなと思ったとき、指摘させていただくことは確かにあると思います。
リードエンジニア О:でも、僕たちコメントされる側はけっこうポジティブに受け止めていますよ。自分の出した結論になんの疑いもなかったらKさんに相談しないんですが、Kさんにコメントを返されるのは、だいたいが僕たち自身も悩んでいた箇所なので。「妥協せずに、ベストなものを出してほしい」と伝えてくださるので、僕たちも背中を押してもらえた気分になるんです。
副部長 K:作った人が「自分がこれを作ったんだぜ」と胸を張ってもらえるものを世に出したいですし、ライバーさんやほかのスタッフにも喜んでほしいですからね。もちろん本人にとって不可能な仕事を任せることはありません。本人のスキルを踏まえて、「作業日がもう少しあったら、もっといいものができそうだな」と感じたものは、「スケジュールは調整するので、やってみましょう!」と判断することがけっこう多いかもしれません。
――「もう一歩に、こだわる。」という姿勢はANYCOLORのバリューの1つでもありますね。皆さんはこれまでさまざまな開発を行ってきたかと思いますが、印象に残っているエピソードがあれば事例とともに教えていただけますでしょうか。
リードエンジニア О:ある機能改善をFさんが実施したら、その機能をリクエストしたライバーさんからマネージャーを通じて「本当にありがとうございました。これ、すごいです!」とお礼のメッセージが届いたことがありましたよね。
副部長 K:そうでしたね。その改善が行われるまで、にじさんじアプリからОBSなどの配信アプリケーションに映像を送るときに、アプリのUIなど本来配信に不要な情報が映りうる可能性のある仕組みになっていました。そのため、特定の映像フォーマットで出力できる機能を追加し、配信アプリで直接映像を受け取れるようにFさんが改良してくださったんですよ。ライバーさんたちにとっては不必要なものが映るリスクを排除して、配信の世界観を崩さずにファンの皆さんにお届けできることになったので、とても評判がよかったという話でしたね。
エンジニア F:事前に「この機能改修を行います」と告知したときに、ライバーさんの多くからいい反応があったと聞いていましたし、先ほどのお礼のようなフィードバックをいただけるのはやはりうれしかったですね。「自分がライバーさんたちの役に立てたんだ、にじさんじに少しでも寄与できたんだ」と思えました。
アプリをより強化するため、未来の仲間に求める要素
――一緒に働く仲間として、皆さんは今後どんな人にジョインしてほしいですか? 今のチームで特に必要とされているスキル、歓迎される経歴などもお聞きできましたら。
副部長 K:にじさんじアプリは今もFさんたちが積極的に開発を続けてくれているんですが、実際にやりたいことはもっともっとたくさんあるんです。ライバーさんたちから欲しい機能のリクエストをいただいていますし、スタジオやLive2Dチームがアプリを使ううえで求められている機能もそれぞれあるので、まずはにじさんじアプリそのものを一緒に開発するメンバーを強く求めています。
それにОさんが開発しているようなリアルタイムのコラボサーバーなどをはじめ、にじさんじアプリを動かすためのバックエンドシステムも必要になってきます。例えばにじさんじはライバーさんがたくさんいて、衣装を複数持っている方が多いのでそれらを管理するようなシステムなどですね。バックエンドシステムの開発自体は他部署がしてくれているんですが、いずれ我々のチームでしっかり担当できるようになりたいんです。ですから、バックエンド関連の知識がある方も是非来ていただきたいと思っています。
Unityの経験をたくさん積んできたエンジニアはもちろん大歓迎ですが、Webなどアプリ以外の領域でフロントエンド・バックエンドのエンジニアをやっていて「Unityは趣味で触っていた」という方でもANYCOLORに興味を持ってくださったら気軽に応募してほしいですね!
リードエンジニア О・エンジニアF:(うなずく)
副部長 K:そもそも弊社のUnityエンジニアとして求められる能力のベースは、「どういうものが必要とされているのか、そしてそれをどう作るか」を自分で考えられることですね。今チームにいるのは、みんなある程度それができる人たちです。
自分でどういうものを作り、それがどのようなメリットをもたらすのか、実装期間がどれほど必要なのかをある程度考えることができて、実装したシステムに関して責任を持てる、というのが必要な心持ちかなと思います。これらを踏まえて、これから一緒に働くメンバーとして求めている人物像をおふたりにも聞いてみたいですね。
リードエンジニア О:簡単なもので大丈夫なので、Web上に自分の作ったアプリを公開できるぐらいのスキルがあるといいかなと思います。自分でAWS(※2)上にサーバーを立ててWebページなどを運用できるようなサーバーアプリケーションを作ったり、既存のサービスのAPI(※3)でWebサービス作ってみたり、ですとか。
※2→Amazon Web Servicesの略称。サーバーやストレージ、データベースなどを提供するクラウドプラットフォーム。
※3→「Application Programming Interface」の略称。あるソフトウェアの機能やデータを、別のソフトウェアから安全かつ簡単に利用するための接続窓口や手順。
エンジニア F:そうですね。ОさんはサーバーやWeb寄りのお話をされたので、僕からアプリ側の話をすると、1人でモバイルアプリを作ってリリースしたことがある方がいてくれたらありがたいですね。モバイルアプリでなくとも、コンソール向けアプリや、WindowsなどのPCアプリをちゃんと全部自分で作った経験があると、うちのチームにおいては即戦力になりうるのではないかと思います。
リードエンジニア О:やっぱり自走できる人が強いと思うんです。やりたいことがあってそれを自分で考えて実現した経験がある人だと本当にありがたいですね。
エンジニア F:あとは、スキルというよりマインドの話になりますが、チーム内で円滑なコミュニケーションが取れる人が来てくださったらうれしいですよね。
副部長 K:そうですね。仕事をするうえで、自分の思いや「今やろうとしていることには、こういう理由がある」とある程度しっかり話せたほうが、本人も周囲もやりやすいですからね。
リードエンジニア О:先ほどお話しましたが、いろんなバックグラウンドを持つ人たちが集まっているチームなので、一緒に学ぶ姿勢がある人がいてくれるとすごくうれしいです。自分の知らないことに答えてくれるメンバーが周りにいて、そういう人たちと教えたり・教えられたりという関係が築かれていくので、「メンバーと一緒に学んでいきたい」というスタンスだと仕事が楽しくなるんじゃないでしょうか。
副部長 K:仕事もそうですけど、趣味の分野でも同じですよね。例えば新しい趣味が出来たメンバーが詳しい同僚に教えてもらう、という光景はけっこう見かけます。趣味の知識が仕事に活きることも多い会社なので、いろんなことに興味がある人は楽しく働ける環境だと思いますよ。
リードエンジニア О:例として挙げると、Fさんが3Dプリンターを使って、仕事用のデバイスの部品を試作してくれたことがありますよね。仕事として誰かに作ってほしいと頼まれるより前に、「こんな感じですかね?」と試作品を持ってきてくれて。その試作品がすごくよかったので、最終的には他社に発注して作ってもらっていますよね?
副部長 K:そうですね。正式に使うことになった部品は、Fさんが作ってくれたプロトタイプをもとにきちんと他社に発注して量産しています。
エンジニア F:3D分野の新しい機材を使うために、「こんな部品があるといいよね」と思ったら3Dプリンターで作れそうだったんですよ。やってみたら意外とできたので、3Dプリンターっていいなあと思い、趣味用にも買ったという経緯です。それからチーム内で雑談しているときに「3Dプリンターいいですよ」と言っていたら、2人ぐらい買いましたね(笑)。最近だと釣りに使うルアー用のケースを作ったので、けっこう実用的に使ってます。
――お話を聞いていると、仕事に直結する技術周りのトピックから趣味の分野まで気軽に情報交換をされているので、チーム内の雰囲気はとてもよさそうですね。
副部長 K:そうですね。うちのチームはリモート勤務を主体にしているんですけど、対面のコミュニケーションが必要な場合もあるので、週に1回は出社しているんです。その日に各作業の進捗報告や相談をしたあとに、雑談ベースで技術的な情報交流をする時間をあえて設けているんです。もちろん、趣味寄りの話をしてもОKです。「新しい技術を使ってこういうことをしている人たちがいるんだよ」と事例を共有したり、「にじさんじのカードゲームが作られるんだって」と会社の新しい話題について話したり。それが終わったら帰宅してリモート作業をしてもいいし、そのまま会社で仕事を続けてもいいし、と自由な形態を取ってもらっています。
エンジニア F:最近ホットなのはAI関連の話題ですよね。あとはスマートフォンやカメラなどのデバイスに関することもよく話しています。
リードエンジニア О:話しているうちに解消しないといけない課題が見つかって、その場で対応策を相談できるので、雑談が仕事に活きることもけっこうあるんですよ。誰かが試作品を持ち込んで「これ作ってみたから、みんな触ってみてくれない?」と言うこともありますし。だから僕は雑談会がすごく楽しいですよ。
エンジニア F:前にメンバーの1人が講師を務めて、数学の勉強会をしたこともありましたよね。僕の印象なんですが、新型コロナウイルス流行の影響で出社できなかったり、いろんな都合で直接対話することが難しい期間が続いたりすると、相手の顔が見えないのでコミュニケーションが少し粗雑になってしまいがちですよね。だからこうして顔を合わせて話す時間は大事だと思います。
副部長 K:この会は技術トピックを交換することよりも、みんなで直接話すことが目的として大きいです。週に1度はメンバー全員が集まる時間があるので、もし技術的に困ったことがあっても相談できますし、部内の目標を立てるなどメンバーの意見が必要なときはその時間を使えますから、けっこう大事にしている時間です。
ライバーの個性を形にし、“化学反応”を生む土壌作り
――最後にチーム全体として今後挑戦したい技術開発やシステム改善の方向性があれば教えてください。
副部長 K:にじさんじアプリについては先ほど軽く触れましたが、実装できていない機能や実現したいことがまだまだたくさんあるんです。ライバーさんが配信するときに感じた「こうできたらいいのにな」を叶える機能開発は、引き続きやっていきたいですね。
あとは、Live2DのSDKの強みをもっと活かしていろんな表現ができるようにアプリを整えていきたいという気持ちもあります。ガンガン開発していくためにいろんなバックグラウンドを持っている人を求めているので、是非いろんな方に応募してほしいと思っています。アイテム機能もまだやりたいことがいっぱいありますよね?
エンジニア F:本当にそうですね。あと一番大きい目標としては、ANYCOLORのスタジオは今なかなか空きがない状態だと思うので、本来スタジオじゃないとできなかった配信をライバーさんのご自宅などでもできるようにする、というのが僕らの至上命題になると思います。
副部長 K:ライバーさんがこれまでよりもリッチな配信を、自宅で簡単にできるようにしていきたいですよね。アイテム機能ももっと便利にしていきたいですし。そういう機能開発に注力していきたいです。
リードエンジニア О:3Dコラボもスタジオでの配信がメインになっていますよね。「うちのチームに求められるスキル」という話題のときにKさんもお話されていましたが、にじ3Dにも今後コラボ機能を追加して配信の幅を広げていけたらいいなとも思っています。
副部長 K:個人的には、ライバーさんが配信でできることを増やしたい、というのが一番の目的です。Live2Dでどう表現するのかにもよりますが、ゲーム配信の見せ方や、楽器演奏などご本人が配信でやりたいことを表現できる手段をもっと増やしたいんです。それによってにじさんじの配信でできることの幅が広がっていくとうれしいなと強く思っています。
にじさんじという事務所は常に大きくなっていて、「いろんな個性があってこそにじさんじ」だと思っているんです。にじさんじに集まったさまざまな個性が自分たちのやりたいことをたくさん発信して、そのうえでライバーさん同士のいい化学反応が起きると我々もうれしいですよね。そんな化学反応が起こる土壌を、我々の作ったアプリが支えられたらいいなという気持ちで、日々働いています。