※この記事では、にじさんじライバーの配信にまつわる技術的な話題が多数含まれます。
担当業務は、配信の根幹を支えるアプリのすべて
――まず、TC部の全体の業務内容について教えてください。
テクニカルクリエイティブ部副部長 K(以下、副部長 K):テクニカルクリエイティブ部(以下、TC部)のチーム構成としてはテクニカルチームとクリエイティブチームとPM(プロジェクトマネージャー)チームの3つがあり、我々はテクニカルチームに所属しています。チームごとの役割を説明すると、クリエイティブチームはライバーさんたちの3D配信するために必要なモデル制作からセットアップまでを担当していて、PMチームはプロジェクトのマネジメントを担当しています。
我々テクニカルチームの中には、ライバーさんが普段の配信をするために必要となるにじさんじアプリ(※1)や“にじ3D”(※2)と呼ばれるアプリケーションを作るチームと、3Dスタジオ向けの配信ソフトを作っているチームがあります。今日集まっているメンバーはにじさんじアプリなどの開発をしているメンバーですね。
※1→にじさんじアプリ:ライバー専用アプリケーション。Live2Dの姿で配信するために使用される。
※2→にじ3D:ライバー専用アプリケーション。3Dの姿で配信するために使用される。読み方は「にじさんでぃー」。
――ありがとうございます。チームの中で皆さんがそれぞれご担当されている業務内容について教えていただけますか?
副部長 K:このメンバーの中では自分が一番古くからいる社員ですね。2018年4月に入社したんですが、ちょうどその頃にUnity(※3)で制作されていたにじさんじアプリを当時のスタッフから引き継いで、今のアプリの基礎となる部分の拡張作業などをしてきました。今はチームが大きくなってきたので、リーダーポジションとして、チームでやらなくてはいけないことの方向決めなどを担っているので、機能実装の現場からはちょっと離れている状況です。
※3→2D・3D問わずさまざまなプラットフォーム向けにコンテンツを制作できる開発エンジン。主にゲーム開発現場を中心に使用されている。
リードエンジニア О:僕はにじさんじアプリ内のコラボ機能という、複数のライバーさん同士でコラボ配信をするときに使うシステムの開発を担当しています。コラボ機能はサーバーサイドの通信を行うクライアントアプリケーションを使っているのでそこの開発と、スタジオ配信でも使用する機能ですから、スタジオチームがコラボ機能を管理するために使うWebアプリケーションの開発も僕の仕事です。
副部長 K:Оさんは2024年9月に入社されたんですが、当時あったシステムを全部作り変えてくださったんです。今はОさんの作ったシステムをベースに、軌道に乗って動き始めているんですよ。
リードエンジニア О:昨年の10月ぐらいにその作業に着手して、今に至るっていう感じですね。もともとはGo(※4、Golang)で作られたサーバーアプリケーションなんですけど、自分が作り変えるにあたって全部C#(※4)に置き換えました。
※4→いずれもプログラミング言語。GolangはGoogle、C#はマイクロソフトが開発した。C#についてはゲーム開発の現場でも用いられることが多い。
副部長 K:もともとあったシステムをメンテナンスできる人が、社内で少なくなってしまった時期があったんです。そのため新しく機能を拡張するのも難しいし、「もっと大人数でコラボ配信をしたい」というオーダーにも応えることが難しかった時期が続いていました。しかし、チームで検討した結果、改めてリプレイスの必要性を感じていたところで、Оさんという救世主が現れて「じゃあ1からシステムを作り直そう!」と、完全にシステムをリプレイスしてくださったんです!
リードエンジニア О:システムを制作された方が会社を離れてしまったので、保守もかなり大変な状態だったんです。なら、もうちょっと僕たちが保守しやすい形に変えた方がいいんじゃないかと思ったのでリプレイスしました。
――なるほど、では今コラボ配信が円滑にできているのはОさんのおかげでもありますね! では、Fさんもお願いします。
エンジニア F:僕はОさんがメインで開発しているコラボ機能以外の、にじさんじアプリの大体を作っています。にじさんじアプリには少しの間、新規の開発ができなかった期間があったんですよ。当時Unityチーム全体として3Dスタジオ配信用アプリに注力する方針だったこともあって、にじさんじアプリの開発に人を割くことが難しくなっていて。入社して半年ぐらい経った頃、僕がにじさんじアプリを引き継いで以来そちらの開発に注力しています。あとは、にじ3Dのシステムも少し担当していますね。
副部長 K:会社としても部としても、3D配信のほうに力を入れていた時期がけっこう長かったんですよ。僕も3Dスタジオ向けソフトウェアの方の開発にかかりきりになっていたときにFさんが入社してくれたこともあって、にじさんじアプリの開発をまるっと全部引き継いでいただきました。以降の機能追加については、コラボ機能以外の領域をすべてFさんがやってくださっています。
エンジニア F:自分が引き継いでから最初に開発を担当したのは「アイテム機能」というもので、アクセサリーなど任意のアイテムをライバーさんの動きに追従させられる機能です。これは他社のアプリでは当たり前のように実装されていた機能なんですが、ライバーさんたちからの要望も多かったため、にじさんじアプリでも取り入れましょうということになったんです。
【紹介動画】にじさんじアプリにアイテム機能が実装!
副部長 K:配信しながらアプリを操作をするのって大変なんですよ。そこでFさんは配信中でもライバーさんたちが簡単に操作できるような物理デバイスとの連携機能も追加してくれました。
リードエンジニア О:Fさんって、常にいろんな機能開発・追加を同時並行でやってますよね。
副部長 K:にじさんじアプリのUI(※5)デザインの更新についてもいろいろと意見を出してくださってます。またLive2Dモデラーさんやスタジオチームがにじさんじアプリを使ううえで感じた改善点を吸い上げて、時間があるときに作業して「これできました」とスッと出してくれますし(笑)。
※5→User Interface(ユーザーインターフェース)の略。ボタンやレイアウトなど、ユーザーとサービスの接点となる要素。
エンジニア F:(笑)
“熱烈なアプローチ”や別業界からの転職……三者三様の入社経緯
――皆さんの入社経緯について簡単に教えていただけますでしょうか?
副部長 K:僕は2018年4月に入社したとお話ししたんですが、実は当時就職活動中の大学生だったんですよ。その頃会社はANYCOLORではなく、いちからという社名でした。にじさんじが最初にバズったタイミングだったので「面白そうだな」と感じて、「ちょっとお話を聞かせてください」といちからのオフィスに遊びに行ったんです。個人でアプリを作ってたこともあってその場でスタッフに「いいじゃん。インターンとして一緒に働こうよ」と言ってもらえたんですが、当時のいちからには「面白そうだけど、なんだかよくわからない企業」という印象があったので……(笑)。
ですが、「自分の実力を本当に見てもらえるのであればうれしいな」と思い、自分のアプリのソースコードを全部持ってもう一度訪問したところ、当時のCTОに「これだけコードを書けるんだったらいいじゃん! 一緒にやろうよ」と言っていただき、インターンとして働くことが決まりました。そこから数カ月インターンとして在籍していたんですが、「せっかくこうして会社に入ってくれて、僕たちと一緒にやっていけているんだから正社員になってほしい」と打診されたんです。ですので、ほかの方々と比較するとちょっと変わった入社ルートかもしれないですが……。
――当時のいちからスタッフからの熱烈なアプローチがあったんですね。
副部長 K:別の企業から内々定をいただいてはいたんですが、インターンをしながら「こっちの会社のほうが楽しいし、面白い世界が待っていそうだな」と思っていたんですよ。オフィスにいるときに内々定をもらった企業から電話がかかってきて、「そうか、決断しなきゃいけないよな」と思って、その場でお断りの返事をしました。我ながら、人生何があるかわかんないなと感じています。
――それから今日まで社歴が続いているので、そのときの決断は間違っていなかったのではと思います。では、Оさんの入社経緯を教えていただけますでしょうか?
リードエンジニア О:僕はゲーム業界で働いていたんですが、参画したプロジェクトの開発が一段落したタイミングに、「自分のスキルはほかの業界ではどういう需要があるのかな」と考えたんです。ちょうど前職でつながりのあった方がANYCOLORで働いていて、会社についてお話を聞く機会があって。当時ANYCOLORはすでに小さな会社ではなかったものの、まだまだエンジニアが好きなことやれる環境なんだと感じたんです。
以前働いていた場所も大きな組織になり、その頃にはエンジニアの一存でどうこうできるような現場ではなかったということもあって、僕たちが一定の裁量を持ってプロジェクトを動かしていける環境というものに魅力を感じましたね。その後面接を受けさせていただき、入社しました。
――業界を変えてみて、気付いたことは何かありましたか?
リードエンジニア О:ゲーム業界にいたときはずっとゲームだけ作っている人たちの周りにいたんですが、ANYCOLORはとにかくいろんな業界の出身者が多いですよね。だから、僕が今まで知らなかった知識を持っている方が周りにたくさんいることが刺激になっています。エンジニア以外のスタッフにも、イベント関係の会社や広告代理店で働いていた方、アニメ業界にいた人など、本当にいろんな方が働いていることに驚きました。
エンジニア F:Оさんが入社した頃、ちょうどmocopiの検証をしているタイミングでしたよね。「そういうデバイスを使ったことがないんですよ」とおっしゃっていたので、Оさんにmocopiを装着してもらって、その場で確かめてもらって。
副部長 K:確か、Оさんに踊ってもらいましたよね?
リードエンジニア О:ちょっとダンスができるから「(mocopiを装着して)踊ってみて」って。しかも入社初日でしたね。ずっとソフトウェアの開発を担当していて、ハードウェアを絡めて検証することはなかなかなかったので、「初日にこんなことするんだ」と驚きました。
――「入社初日からmocopiでダンス」は新鮮な驚きでしたね(笑)。では、Fさんの入社経緯もお聞かせください。
エンジニア F:新卒で地元の機械系の会社に入社し、制御盤のプログラミングを担当していたんですが、3年ぐらい経った頃に「これは退屈すぎて死ぬな」と……(笑)。脳のキャパシティが余り過ぎてしまって、以前から興味があったゲーム業界で働きたいと思って上京したんです。そのとき受けた会社が「未経験でもUnityの扱い方を教えるから」と採用してくれたので、半年ぐらいUnityの修行をしました。
それがだいたい2019年ぐらいのことで、にじさんじが大きく盛り上がっていた頃だったんですよ。その頃趣味のゲームで仲良くなった人がいちからのスタッフだったので「うちで働かない?」と言ってくれていたんですが、「今の仕事にケリをつけてから」と断り続けていたんです。少し経って「そろそろ行けるかな」という状況になったので、入社させていただきました。
――FさんはもともとUnityを専門的に扱った経験がなかったんですね。
エンジニア F:なかったんですよ。だからUnityの経験は、他の人と比べると社会人経験のうち3年ぶんぐらい劣っていることになりますが、その間に携わっていた電気系の知識やデバイス周りのノウハウが無駄になってはないと思っています。前職でもディスプレイやタッチパネルなどのいわゆるIoT(※6)系のデバイスを使って、Unityで作ったアプリを入れて動かす、ということをやっていたので、その経験も生きてるんじゃないかな、と。
※6→Internet of Thingsの略。モノをインターネットに接続する技術。
副部長 K:もともと違う領域のプログラミングを担当されていましたけど、そこからUnityに転向して、今はにじさんじアプリのメイン機能をガンガン開発してくださっていますから、結果としてよかったですよね。
ベーシックなにじさんじアプリと自由なにじ3D、開発で大切なのは「気配り」
――皆さんがアプリ開発・運用に関して、担当している業務領域はどこまでなんでしょうか?
副部長 K:アプリに実装する機能の内容を考えて、自分たちで実装して、その後はアプリの運用・保守、トラブルやバグが発生したときはそれを直して……と基本的にはにじさんじアプリ・にじ3Dシステムにまつわる全般ですね。エンジニアに裁量が任されている現場なので、そこはうちのチームのメリットだと思いますし、「プロジェクトの開発領域を自分たちが責任を持って動かすことができる」という環境が好きな方なら、魅力的に感じていただけると思っています。
エンジニア F:最近ちょくちょく、「(裁量が)大き過ぎないか」と思うときがありますね(笑)。僕はKさんがおっしゃっていた、そういう環境が好きなタイプなので全然大丈夫なんですけど。
副部長 K:何かを決めないといけないときは、僕の責任で最終ジャッジしているので!(笑)。
――にじさんじアプリ・にじ3Dでは、それぞれ開発に際してどういった特徴や違いが挙げられますか? 業務の特性や求められるスキルなどに差異がありましたら、教えていただきたいです。
エンジニア F:にじさんじライバーさんはまずLive2Dモデルでデビューされるので、にじさんじアプリは「すべてのライバーさんが使わざるを得ないアプリ」なんです。一番の特徴はたぶん“そこ”かなと思っていますね。3Dお披露目を経てにじ3Dを使えるようになっても、配信の内容によってにじ3Dと相性がよくない場合もあるので、スタンダードに使われているかと言われれば決してそうではないですよね。ですので、にじさんじアプリの方がより多機能で、ライバーさんに寄り添った機能が追加されていると思います。
対して、にじ3Dは手を動かすなどLive2Dでは難しい表現が可能になりますし、最近だと全身を見せて配信するライバーさんもいらっしゃいますよね。にじさんじアプリがPCとスマートフォンだけで使えるのに対して、にじ3Dはほかにもデバイスが増えてしまうので、その分システムが複雑になると感じています。
――エンジニアとして2つのアプリで求められるスキルが違うということはあるんですか?
副部長 K:そもそも、にじさんじアプリはLive2Dを動かすことをベースにしているので、Live2DのSDK(※7)をどうやって生かすのか、2Dアプリケーションとしてあくまで平面空間の中でどのようなシステムを実装するか考えることがメインになります。それに対して、にじ3Dは3D空間の表現ですから、3Dモデルに対する知識やモーションキャプチャーに関する知識が必要になるので、求められる技術レイヤーが違うと思いますね。
※7→Software Development Kitの略。ソフトウェア開発のために必要となる開発ツールをパッケージ化したもの。
ただ、どちらのシステムも同じくUnityで作っていることは共通しています。今はまだありませんが「いつかにじ3Dにもコラボ機能をつけたいよね」という話もありますから、そういう場面でネットワークの知識や、C#でのプログラミングを踏まえた知識が必要になってきます。
エンジニア F:また、どちらのシステムもライバーさんが使うというところも共通しています。2Dと3Dという違いはあれど、アプリごとにUIが違うとライバーさんが困ってしまう場面があると思うので、明確なスキルというわけではありませんが、「使う人の立場になって考える」という気配りは大事だと思います。
前編はここまで。近日公開予定の後編もお楽しみに。