コンテンツにスキップするには Enter キーを押してください

イカデンワとWebRTCのそんなに濃くない話

この記事はSplatoon Advent Calendarの7日目の記事です。

こんにちは、最近スプラトゥーン以上にマリオメーカーにもハマってしまったmzsmです。

今日は僕が開発・運営しているスプラトゥーンプレイヤー向けボイスチャットサービス「イカデンワ」の紹介と、今後の展望なんかについてお送りしようと思って記事を書いていたんですが、公開前日の12月6日の担当だったひなさんの記事を読んでたらなんか最後に

明日はイカデンワの濃い話をmzsmさんがしてくれるはずです。お楽しみに。

とか書かれてて、公開30分前になって慌ててちょこちょこと書き足してます。ひえー!

改めてイカデンワのご紹介

イカデンワは、スプラトゥーンを仲間同士で遊ぶときに使うことを目的としたボイスチャットWebアプリです。

スプラトゥーンにはボイスチャット機能はありません。
僕は任天堂のその判断は正しかったと思っていますし、これからも付けるべきではないと思います。

公式でその機能を用意してしまうと、それを使うことが暗黙の了解(=ボイスチャットを使わない奴とは遊びたくない、的な)のようになってしまう恐れがあり、特に子供が安心して遊べることを大事にしていると思われる任天堂にとって、そのリスクは受け入れられないものでしょう。

それとは別に、開発者チームがなんかの記事でも話してた覚えがありますが、コミュニケーションが制限されているがゆえの面白さというのもあるでしょう。

我々の間には「チームプレイ」などという都合のよい言い訳は存在せん。
有るとすればスタンドプレイから生じる、チームワークだけだ
(攻殻機動隊S.A.C. 第5話 荒巻大輔)

いきなり攻殻機動隊S.A.C.の名セリフを引用してみましたが、実際スプラトゥーンのランダムマッチの面白さはこういうことだと思っていて、見知らぬ相手と限られたコミュニケーションだけを頼りに協調して動けたときの何とも言えない達成感はボイスチャットがあったら味わえないでしょう。

とはいえ。

やっぱり友達と一緒に遊ぶときは何らかの手段でコミュニケーションをとってワイワイしながら遊びたい。
そう思う人は公式の機能に頼るんじゃなくて各自好きな外部サービスを使ってやる、というのがボイスチャットについてのちょうどいいスタンスかな、と思っています。

で、どうせボイスチャットを使うんならただワーワー言うだけじゃなくて、戦略的な会話をしながら遊んでみたいなーと思ったんですが、ここでひとつ問題が。

スプラトゥーンでは(野良マッチの場合)バトルごとにランダムでチーム分けされて敵味方が入れ替わるので、同じチームになった人とだけ通話するのがなかなか難しい。

そのバトルで味方になった人とだけ通話ができるような機能を持ったツールはないかな?と思って調べてみたんですけど、良いのがなかったので自分で作ったのがイカデンワです。

プライベートマッチやタッグマッチができるようになってからも、アカウント作成もフレンド登録も不要で、手軽に誰かとボイスチャットできることが受け入れられているようです。

WebRTCという最新技術を利用することで、プラグイン等をインストールすることなくブラウザだけでボイスチャットを実現しているのですが、いまだにダウンロードしてインストールするアプリだと思われているフシがあるのはまだまだ宣伝が足りないせいなのか。

イカデンワの仕組み

イカデンワがどういう処理をしているのかを簡単に説明します。
というか簡単なことしかしてないです。

WebRTCは簡単に言えばユーザ同士がPeer to Peer(P2P)で接続して、音声だったり映像だったりバイナリデータだったりをやりとりできる技術です。
なのでイカデンワ利用中はユーザ同士がP2P接続している、というのは当然なのですが、それに加えてイカデンワのサーバとも繋がりっぱなしの状態でいます(ちなみにこちらはWebSocketという技術を使っています)。
これは大きく3つの目的があって、

  1. チャットルームの参加者リストを受け取る
  2. 別のユーザとP2P接続するための準備情報をやりとりする
  3. 別のユーザとミュート状態にしたいあるいは解除したいという情報をやりとりする

ということをしています。

3番目に挙げたミュート状態の情報について、サーバはユーザ間の橋渡しをしているだけで、実は誰が誰とミュート状態になっているかというような情報はサーバ側は管理していません。ミュート状態については各ユーザがそれぞれ管理しています。

さて、別のユーザとミュート状態になった場合、そのユーザに対しては音声データを送らなくする…というような処理はしていません。
音声データ自体は実はミュート状態になっている相手にも送り続けていて、受信した側で音声を再生するときに音量を0にして聞こえないようにしています。そのほうが実装が簡単だったので。

今後実装予定の新機能

最近いろいろあってなかなか開発する時間がとれなかったのですが、これからまた開発を再開させていきたいと思っています。
現時点で開発を目論んでいる機能をいくつか紹介します。

プライベートマッチモード(仮)

現行のイカデンワは自分以外の各個人に対して個別に聞こえる・聞こえないを設定する操作方法ですが、プレイベートマッチでアルファチーム・ブラボーチームのどちらに属しているかを選ぶだけで、同じチームを選んだ人とだけ聞こえる状態に自動で切り替わる機能を考えています。

クランモード(仮)

アドベントカレンダー5日目に登場したイカナカマさんなどを利用してチーム(クラン)を組んでバトルを楽しむ人が増えています。
そんな人達向けに、ランダムマッチよりもタッグマッチで遊ぶときに特化した機能を作ろうと思いました。

例えば、イカナカマのアカウントと連携して、メンバーだけが利用できる専用のルームを用意。気にすること無く、いつも決まったURLでボイスチャットを楽しめる、というような機能とか。
バトルが始まる前は全員で会話、バトル中は相手クランを全員ミュート、バトルが終わった後は再び全員で会話できる、というようなものを考えています。

iOS対応

イカデンワで採用している最新技術WebRTCは、現在のところChrome、Firefox、Operaの各ブラウザが対応していますが、iOSだけはどのブラウザも対応していないため、iOSユーザーの方にはご利用いただけない状態です。

なのでiOSについてはアプリで対応する必要があるのですが、残念ながら僕はiOSの開発スキルを持ち合わせていないので、誰かに頼もうと思っていました。

そしたらなんか明日のAdvent Calendar担当者であるみっきー氏が作りたいみたいな話を以前していたので、お任せしたいところです。
仕様は教えますから。

イカデンワのその先

最初のほうで「良いのがなかったから自分で作った」って書いたんですが、実はつくったあとでTeamSpeak3というゲーム用ボイスチャットツールの存在を知りました。

これはチャットルームのなかにさらに「小部屋」を作れて、その小部屋にいる人だけで内緒話ができるという、まさに「そんなのないかなー」と思ってたツールでした。

イカデンワって名前だとスプラトゥーン専用みたいな感じになってしまうんですけど、イカだけじゃなくていろんなゲームを遊ぶときにも使えるよう、TeamSpeak3を置き換えるようなゲーム用ボイスチャットツールをWebRTCで作れたらいいな、と考えてます。

濃い話は…?

え、もっと濃い話を聞きたいですか…?

そんな人にお知らせです。

イカデンワを開発したことで、WebRTCについてそれなりに知識を得ることができました。

せっかく得られた知識は溜め込まずにエクスポートしないともったいないのでどこかで発表したいと思っていたところ、TechBoosterさんからお誘いをいただき、年末のコミケで頒布する新刊でWebRTCについて記事を書くことになりました。

ていうかもう書き終えました!疲れた!

これまでまとまった分量の技術系文章を書いた経験がなかったので、最初こそちゃんと書けるどうか不安だったものの、実際に書き始めると書きたいことがどんどん出てきてしまい、書き終えてみればなんと30ページ以上という大作に。

WebRTCとは何かから、大まかな仕組みの説明、デモアプリの作成、サーバーの設定まで、WebRTCを利用したアプリケーションを開発する上で必要な知識をひととおり紹介していきます。

スプラトゥーンを遊ぶためにイカデンワを作ったはずが、それをきっかけに原稿を書くことになり、そのために逆にスプラトゥーンを遊ぶ時間を削ることになってしまったわけですが、そのぶん内容には自信のあるものを書き上げることができました。

ちなみに今回TechBoosterではAndroid本、Web技術本等々合わせて新刊が5冊6冊(←多いわ!!!)あるのですが、僕が書いた記事が載るのはその中のひとつ
JavaScriptoon2
です!

前回に引き続きスプラトゥーンパロディのタイトル!
内容的にもぴったりで嬉しい!!

主宰のひつじさんに訊いてみたら表紙画像も出していいと言われたので公開します!

ドン!!

JavaScriptoon2 表紙画像
JavaScriptoon2 表紙画像

Firefox、Chrome、Edge(あれ、Safariはどこ行った?)モチーフのイカちゃんかわいいですね!

サークル配置は12/31 – 3日目 東地区シ-58a。壁です!

詳しくはてくぶのC89特設サイトを御覧ください。

当日は僕も会場に行って(←コミケ初参戦だー!)売り子やってたりすると思うので、みなさまどうぞよろしくお願いしますm(_ _)m

はい、最後は宣伝でした。

明日の予告

明日のSplatoon Advent Calendarは、Wii Uを柚子胡椒まみれにして故障させてしまうという不運にもめげずにイカパケット解析をした話をみっきー氏が書いてくれるようです。


コメントする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です