SlideShare a Scribd company logo
1 of 41
WebRTCサービスを
個人で運営してみた話
2016/02/17
WebRTC Conference Japan ショートセッション4本勝負!
mzsm (@mzsm_j)
おまえだれよ
• 名前…mzsm
• 仕事…新大阪のサブスレッドという小さい会社で働いてます
• 言語…PythonとJavaScript(TypeScript)
• 仕事では(今のところ)WebRTC使ってません…
今日お話しすること
好きなゲームをもっと楽しく
遊ぶためにWebRTCサービス
を作ってみた話
スプラトゥーンとは
• 2015年5月28日に発売されたWii U用ゲームソフト
• イカに相手を撃ち殺すかではなく、イカに多くの陣地を塗るか、
という新感覚シューティングゲーム
• ブキを使ってインクを塗るヒト形態と、塗られたインクを泳い
で素早く移動できるイカ形態を随時切り替えながら戦う
• 全世界のプレイヤーとネットワーク対戦
• 国内売上累計120万本突破
• Wii Uを持ってる人の3人に1人はイカも持ってる計算
とりあえず紹介映像見て
僕は1年待ち続けた…
1年待ち続けた期待の新作
• 2014年6月のE3(※)でサプライズ的に発表
(※…米国ロサンゼルスで開催される世界最大のゲームの展示会・見本市)
• さっきの映像がそのとき流されたもの
• 紹介映像を少し見ただけで直感的にわかる面白さ
• スプラトゥーン購入を前提に事前にWii U購入
• スマブラもあったしね…
• 発売前に開催された体験イベントにも参加
• ニコニコ超会議2015 (2015/4/26, 27)
• 完成披露試射会 (2015/5/9, 24)
• 発売日は有休取って前日夜からずーっとプレイ
• その日のうちにランクカンスト(当時の上限ランク20)
(自分の周りの)
ITエンジニア界隈でイカが大流行
• なんかみんなイカやってる
• これきっかけでWii Uを同時購入した人もけっこういた
• Wii Uのフレンド登録数が一気に増加
• おとなのちから(経済力的な意味で)ってすげー
ある日のこと…
仲間で集まって皆でバトル
• フレンド合流機能
• フレンドがいる“部屋”に次のバトルから合流する
• チーム分けはランダム
• フレンドと同じチームに必ずしもなれるわけではない
• Google Hangoutでチャットしながら
• バトルが終わって次のバトルが始まるまでの間に感想を書き込む
• バトル中は書き込む暇なんてない
ボイスチャットをしたいけど…
• チーム分けはバトルごとにランダム
• 同チームだったプレイヤーが次のバトルでは相手チームになる可能性
• あらかじめチームに分かれて通話するということはできない
• 全員で通話してると相手チームに情報がバレる
• ワイワイ楽しむだけなら別にそれでもいいけど…
• どうせなら戦略的な会話をしながらのほうが楽しそう
• 「このへん敵いないから塗っておくね」
• 「左のほうに敵が行ったから注意」みたいな
• 「誰とは通話できる」「誰とは通話できない」を素早く切替え
られるボイスチャットツールはないの?
「WebRTCを使えば
作れるかも…」
とりあえず作ってみた
• 当時WebRTCの知識はゼロ
• 名前くらいは聞いたことあったけど中身にはまったく触れたことなし
• 仕事から帰宅後、夜中にコツコツ開発
• WebRTC自体について調べるところから
• 3日でプロトタイプ完成
• フレンド合流で遊んでた仲間で実際に使って遊んでみた
• なかなか好評
• 「ライフチェンジングだ」
• 構想3日、開発1週間
ネーミングは重要
• イカは名前に入れたいよね
• ボイスチャットより電話っていうほうが
キャッチーな感じがする
• そういえばイエデンワっていう変な特徴
的なPHSあったよね
命名
イカデンワ
URLにもこだわってみる
• .com? .net? .jp?
• なんか新gTLDで面白いのがないか探してみる
• 印刷用インクや署名といった意味があることから、筆記具や印刷機器、
サイン作成サービス等のサイトでの利用が期待されている.ink
• イカちゃんの正式名称がインクリングだし、ちょうどいい
• ikadenwa.inkに決定
• .inkドメインを使ったスプラトゥーン関連サービス
• fest.ink
• stat.ink
• downy.ink/gear/
• ↑完全に僕のせい
• インキ業界の人ごめんなさい
満を持してリリース!
思ってもみない大反響をいただく
• ニュースサイト等に掲載
• KAI-YOU.net
• GIGAZINE
• 2chまとめブログ
• はてブ ホッテントリ入り
• ブクマ数約70
• WebRTC界隈からも反響が
• ちょっとかじっただけなのにすみません…と思ってた
• ここまでの反響は個人的に初めての経験
• スプラトゥーン人気あってこそ…
デモ
ここまでWebRTCの話題ほとんど無し(ごめんなさい)
イカデンワの仕組み
作りはシンプル
• シグナリングサーバはEasyRTCほぼそのまま
• PeerJSに比べてルーム機能が標準で備わってたので楽そうだった
• ルーム一覧を取得できる機能だけ殺してある
• でも改めてPeerJSベースで作りなおそうと画策中…
• ミュート/アンミュート指令はWebSocketで送信
• わざわざデータチャネルが必要なほどでもないので
• ミュートは受信側で再生音量を0にしている
• 送信側で無音状態にしてから送信するより簡単に実装できるから
最大何人まで同時通話できるか
• 単純なフルメッシュ接続
• SFUは使ってない
• 音声だけならフルメッシュでも相当な人数いけるらしい
• Vの人「WebRTCでつらいのは映像」
• 想定していたのはゲームの対戦人数である8人まで
• それ以上は保証してない
• 17人で使ったっていう画像がTwitterに上がってた
運営してみて大変だったこと
SSLを導入しないといけなくなった問題
• Chrome 47からHTTPのページではgetUserMediaが利用不可に
• SSLサーバ証明書の導入必須
• 早めに対応しておこう
• 2015年8月のイカデンワ正式リリースに合わせて導入
• 当時はLet’s Encryptサービス開始前…
• 1,000円くらいでRapidSSLのサーバ証明書を購入
• 当初のURLに付いていたはてブのブクマ数が0に戻った
• 70→0→12(現在)
• なんか悲しい
Skype障害の余波をモロに受けた事件
• 2015年9月22日、Skypeでログイン障害が発生
• Skypeで通話していた人たちが避難先としてイカデンワを利用
• 通常の10倍以上の利用者
• アプリケーション・シグナリングサーバはさくらVPS、
STUN・TURNサーバはConoHaの、それぞれメモリ1Gプラン
• さくらVPSには自分のブログなど他にもいろいろ相乗り
• アクセス激増を受け、耐え切れず陥落
• その日1日だけで約1ヶ月分の広告収入
• ただしそもそも1ヶ月分がしょぼいので…
その日のトラヒック
1週間のグラフ
STUN・TURNが機能してなかった事件
• STUN・TURNのデフォルトポートはUDP3478
• 制限のきつい環境でも使えるかも…と思ってポート80で起動
• STUNが応答しない
• プロセスは動いてる
• テストコマンドを実行すると応答する
• ポート80以外で起動させるとちゃんと応答する
• ConoHaがUDP 80へのインバウンド通信を制限していた
• その事実がConoHaのサポートページに書いてなかった
• その制限を開始したメンテ時のメールをブログで発見
• ↑についてメールで問い合わせたらサポートページに追記された
• めんどいのでUDP3478で起動させるようにした
Webアプリだと思われてない問題
• 「イカデンワってあるんだ、今度ダウンロードしておこう」
• ネイティブアプリだと思われてる
• スマホのブラウザでボイスチャットができるなんて発想はない
• スマホユーザーにリーチするためにはネイティブアプリのほう
が有利なんだなぁ…と改めて思う
任天堂の開発チームに認知されてた事件
• ディレクターの天野さんに言及される
• 海外のゲームニュースサイトに掲載された記事
デモ動画(ニコ動)
今後の予定とか野望とか
• iOS対応
• iPhoneだから使えないっていう声を聞くと心苦しい
• iOSプログラミングできないので誰か…
• スプラトゥーン以外のゲームに合わせたVCサービス
• 今でも別にイカ以外に使っちゃいけないわけじゃないけど…
• モンハンとか他のゲームで使いたいっていう人がよくいる
• いろんなゲームに合わせたシステムを提供できたら便利かな
求ム:イカエンジニア
• イカ関連サービスを作るIT技術者増えてます
• IkaLog
• HDMI映像をキャプチャ・画像認識して戦績を記録するアプリ
• stat.ink
• IkaLog等で記録した戦績を溜め込んで集計するサイト
• イカナカマ
• 一緒に遊ぶ仲間(チーム)を募集できるサイト
• スーパーイカメーカー
• パーツを組み合わせて自分好みのイカちゃんを作れるWebアプリ
などなど…
• イカ関連サービスは注目度が違う
• 作る人も使う人も皆イカちゃんへの愛があふれてる
最後にちょっと宣伝
WebRTCの解説記事を書きました
• 昨年末のコミケ89で頒布した同人誌
• 技術サークル TechBooster
• 技術書で壁サークル
• WebRTCのほかにAngular2, WebGLなど
内容盛りだくさん
152ページ
厚み約1cm
の
「薄い本」
電子書籍の通販やってます
https://techbooster.booth.pm/
Special Thanks
• しぶき素材画像
• STARWALKER STUDIO (http://starwalkerstudio.com/)

More Related Content

What's hot

WebブラウザでP2Pを実現する、WebRTCのAPIと周辺技術
WebブラウザでP2Pを実現する、WebRTCのAPIと周辺技術WebブラウザでP2Pを実現する、WebRTCのAPIと周辺技術
WebブラウザでP2Pを実現する、WebRTCのAPIと周辺技術
Yoshiaki Sugimoto
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
kumake
 

What's hot (20)

Newman アルゴリズムによるソーシャルグラフのクラスタリング
Newman アルゴリズムによるソーシャルグラフのクラスタリングNewman アルゴリズムによるソーシャルグラフのクラスタリング
Newman アルゴリズムによるソーシャルグラフのクラスタリング
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
 
コールバックと戦う話
コールバックと戦う話コールバックと戦う話
コールバックと戦う話
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!
 
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveDXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
 
WebブラウザでP2Pを実現する、WebRTCのAPIと周辺技術
WebブラウザでP2Pを実現する、WebRTCのAPIと周辺技術WebブラウザでP2Pを実現する、WebRTCのAPIと周辺技術
WebブラウザでP2Pを実現する、WebRTCのAPIと周辺技術
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
Docker Desktop WSL2 Backendで捗るWindows PCのコンテナ開発環境
Docker Desktop WSL2 Backendで捗るWindows PCのコンテナ開発環境Docker Desktop WSL2 Backendで捗るWindows PCのコンテナ開発環境
Docker Desktop WSL2 Backendで捗るWindows PCのコンテナ開発環境
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキング
 
GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出
 
FizzBuzzで学ぶJavaの進化
FizzBuzzで学ぶJavaの進化FizzBuzzで学ぶJavaの進化
FizzBuzzで学ぶJavaの進化
 
UniTask入門
UniTask入門UniTask入門
UniTask入門
 

Similar to WebRTCサービスを個人で運営してみた話

クラウドのご紹介
クラウドのご紹介クラウドのご紹介
クラウドのご紹介
Junpei Nakada
 
Podcastock 2014 WoodStreamのデジタル生活 公開収録 本当は楽しいマイクロソフトのテクノロジー
Podcastock 2014 WoodStreamのデジタル生活 公開収録 本当は楽しいマイクロソフトのテクノロジーPodcastock 2014 WoodStreamのデジタル生活 公開収録 本当は楽しいマイクロソフトのテクノロジー
Podcastock 2014 WoodStreamのデジタル生活 公開収録 本当は楽しいマイクロソフトのテクノロジー
Tomokazu Kizawa
 

Similar to WebRTCサービスを個人で運営してみた話 (20)

Gaming technight #1 Milkcocoaやろうぜ!
Gaming technight #1 Milkcocoaやろうぜ!Gaming technight #1 Milkcocoaやろうぜ!
Gaming technight #1 Milkcocoaやろうぜ!
 
Jazug tokyo-night bot-frameworkとかbotとか
Jazug tokyo-night bot-frameworkとかbotとかJazug tokyo-night bot-frameworkとかbotとか
Jazug tokyo-night bot-frameworkとかbotとか
 
クラウドのご紹介
クラウドのご紹介クラウドのご紹介
クラウドのご紹介
 
JavaOne報告会 ライトニングトーク
JavaOne報告会 ライトニングトークJavaOne報告会 ライトニングトーク
JavaOne報告会 ライトニングトーク
 
Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介
Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介
Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介
 
Nutanixログほいほい作ってみた.pdf
Nutanixログほいほい作ってみた.pdfNutanixログほいほい作ってみた.pdf
Nutanixログほいほい作ってみた.pdf
 
座談会資料 事前配布 20170225
座談会資料 事前配布 20170225座談会資料 事前配布 20170225
座談会資料 事前配布 20170225
 
What is Device Driver
What is Device DriverWhat is Device Driver
What is Device Driver
 
非ゲーム業界のデザイナーが CEDECに参加してきた
非ゲーム業界のデザイナーが CEDECに参加してきた非ゲーム業界のデザイナーが CEDECに参加してきた
非ゲーム業界のデザイナーが CEDECに参加してきた
 
誰でも今日から実践できるUnity x PlayFab(Demoパート)
誰でも今日から実践できるUnity x PlayFab(Demoパート)誰でも今日から実践できるUnity x PlayFab(Demoパート)
誰でも今日から実践できるUnity x PlayFab(Demoパート)
 
ブロックチェーンを活用した次世代芸能エージェント
ブロックチェーンを活用した次世代芸能エージェントブロックチェーンを活用した次世代芸能エージェント
ブロックチェーンを活用した次世代芸能エージェント
 
お安く、楽にWEBアプリを支える技術
お安く、楽にWEBアプリを支える技術お安く、楽にWEBアプリを支える技術
お安く、楽にWEBアプリを支える技術
 
スムーズなアニメーションを実装する
スムーズなアニメーションを実装するスムーズなアニメーションを実装する
スムーズなアニメーションを実装する
 
CONBU API の開発
CONBU API の開発CONBU API の開発
CONBU API の開発
 
Make TypingGame in JavaScript
Make TypingGame in JavaScriptMake TypingGame in JavaScript
Make TypingGame in JavaScript
 
Podcastock 2014 WoodStreamのデジタル生活 公開収録 本当は楽しいマイクロソフトのテクノロジー
Podcastock 2014 WoodStreamのデジタル生活 公開収録 本当は楽しいマイクロソフトのテクノロジーPodcastock 2014 WoodStreamのデジタル生活 公開収録 本当は楽しいマイクロソフトのテクノロジー
Podcastock 2014 WoodStreamのデジタル生活 公開収録 本当は楽しいマイクロソフトのテクノロジー
 
クラウドサービスで作成するノンコーディングBot
クラウドサービスで作成するノンコーディングBotクラウドサービスで作成するノンコーディングBot
クラウドサービスで作成するノンコーディングBot
 
一年ツイッター
一年ツイッター一年ツイッター
一年ツイッター
 
窓の中の箱の世界
窓の中の箱の世界窓の中の箱の世界
窓の中の箱の世界
 
東方ゲームAIとその歴史
東方ゲームAIとその歴史東方ゲームAIとその歴史
東方ゲームAIとその歴史
 

Recently uploaded

Recently uploaded (11)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

WebRTCサービスを個人で運営してみた話