SlideShare ist ein Scribd-Unternehmen logo
1 von 66
WebRTCで
ドラゴンボールごっこ
         2012/07/21
  #daiNagoyaJS @girigiribauer
WebRTCとは

• RTCは、Real Time Communication の略
• ローカルデバイスにアクセスするための
 getUserMedia API
• ブラウザとブラウザ同士が直接通信する
 Peer-to-Peer connections API
WebRTCとは

• getUserMedia は   gUM と略されることも
  あるっぽい

• 時代はリアルタイム
ドラゴンボールとは

• みんな大好きドラゴンボール
• 説明不要


          http://www.dragonball2013.com/ より引用
対応状況(※2012/07/21時点)

• みんなの味方、 “When can I use”
 http://caniuse.com/#feat=stream

• Operaはすでに対応
• Chromeもオプションいじればプレ
 フィックス付きで使える
対応状況(※2012/07/21時点)
• Firefox 16(今のNightly)は
 getUserMedia のみに対応予定
 http://hacks.mozilla.org/2012/07/getusermedia-is-
 ready-to-roll/

• これからどんどん増えていきそうで
 楽しみ!
getUserMedia API で
 どんなことできるの?


• 写真とって投稿するのが
 Webアプリでできる

• ARで遊ぶとか
getUserMedia API で
  どんなことできるの?

• 顔認識させたり
 (試してみたけどけっこう重い、
 特別な理由がない限りはネイティブア
 プリ向き?)
 https://github.com/liuliu/ccv
Peer-to-Peer connections API
 でどんなことできるの?

• (Peer to Peer なので)サーバに負荷の
 かかりにくい、双方向なビデオチャッ
 トとか

• (HTML5エロチャットサイトとか
 乱立しそう。。。)
Peer-to-Peer connections API
 でどんなことできるの?


• スマートフォンとか需要ありそうなの
 で、早く対応してくれたらいいな

• 今回はこっちは触れる程度で。。。
JavaScriptでカメラいじれるなら、
   いろいろいじりたい!
JavaScriptでカメラいじれるなら、
    いろいろいじりたい!


• HTMLの要素として扱える
• スタイルもあてられる
• canvasの要素としても
 エフェクト(画像処理)かけられる
これだ!

• Jaylen Becomes A Super Saiyan
  http://www.youtube.com/watch?v=u8szR7LnmlI
これだ!

• 今回はこれが元ネタ
• リアルタイムでやりたい!
ということで、
本日のレシピ
• 1. getUserMedia で映像と音が取れるか
 検証

• 2. 今までのHTML技術との組み合わせ
• 3. Tipsとか
• 4. まとめ
1. getUserMedia で
映像と音が取れるか
      検証
chromeでの API の許可
chromeでの API の許可


• chrome://flags にアクセス
• 「MediaStreamを有効にする」に
 チェックして再起動
getUserMedia APIの
        基本的な使い方
• 仕様はこちら
 http://dev.w3.org/2011/webrtc/editor/
 getusermedia.html#navigatorusermedia

• 呼び出し方は以下の通り
 navigator.webkitGetUserMedia(
    constraints, // devices
    successCallback, // ok
    errorCallback // ng
 );
getUserMedia APIの
     基本的な使い方

• constraints は、どのデバイスに許可
 出すかの指定をオブジェクトで行う

• successCallback は、ユーザーが許可した
 ときに呼ばれるコールバック関数
getUserMedia APIの
      基本的な使い方

• successCallback の引数として
 LocalMediaStream オブジェクトが取得で
 きる

• errorCallback は、それ以外のときに
 呼ばれるコールバック関数
過去に仕様が変わっていて、
動かないサンプルが多いので注意


• 主に第1引数が変わってて、それで動か
 ないサンプルが多い(仕様策定と実装
 が平行で進められているのでしょうが
 ない)
過去に仕様が変わっていて、
動かないサンプルが多いので注意


• "video audio" という文字列指定が、
 { "video": true, "audio": true } のオブジェ
 クト指定に変わった
 http://www.webrtc.org/blog/
 changestoourwebrtcapiimplementation
現時点でオーディオの入力デバイス
(マイク)にアクセスできない(!)

• getUserMedia では、audio指定しても、
 現時点ではまだ取得できない

• 詳しいやりとりはこのへんっぽい
 http://code.google.com/p/chromium/issues/detail?
 id=112367

• 対応してくれるのをおとなしく待つ
「はああああ!!!」とか
言って反応させるとか、
まだできない・・・!?
「はああああ!!!」とか
言って反応させるとか、
まだできない・・・!?




   このタイミングでちょっと萎えた
取得した LocalMediaStream オブジェク
トをきちんと表示するところまで(1)



• canvas要素を作る、もしくは予め作った
    要素を参照する

•   var canvas = document.getElementById('canvas');
    var context = canvas.getContext('2d');
取得した LocalMediaStream オブジェク
トをきちんと表示するところまで(2)


• createObjectURL にさっきの
    LocalMediaStream オブジェクトを
    ぶちこんで、BlobURL(リソースを参照
    してる)を取得する

•   var videoUrl = createObjectURL(stream);
取得した LocalMediaStream オブジェク
トをきちんと表示するところまで(2)

• デバイスをBlobURLとして受け取ること
  で、同様のインターフェースで扱える
  (URL参照 ≒ デバイス参照)

• Blobは Binary Large OBject の略、
  FileAPI 周りでよく使われてる
取得した LocalMediaStream オブジェク
トをきちんと表示するところまで(3)

• video タグの src 属性に、
    さっきの BlobURL をつっこむ

•   var video = document.getElementById('video');
    video.src = videoUrl;
    video.autoplay = true;

• ※autoplay 属性がないと最初の1コマだ
    けで止まっちゃうのでつける
取得した LocalMediaStream オブジェク
トをきちんと表示するところまで(4)

• あとは連続して canvas に video 要素を
    反映してやるだけ

•   var render = function() {
      context.drawImage(video, 0, 0, w, h);
      requestAnimationFrame(render);
    };
    requestAnimationFrame(render);
ここまでのサンプル


•   http://web-utage.com/sample/
    dragonball_super_saiyan/
軽くまとめ
• 1. 表示用の canvas を用意(表示するだ
 けなら video タグだけでOK)

• 2. createObjectURL を使って、デバイス
 アクセス用のBlobURLを取得する

• 3. video タグの src に BlobURL をつっこ
 む(と表示される)
軽くまとめ

• 4. canvas に毎フレーム反映する

• これだけでカメラ画像取得できる、
 なんという素敵な時代に生まれたのか
本日のレシピ
• 1. getUserMedia で映像と音が取れるか
 検証

• 2. 今までのHTML技術との組み合わせ
• 3. Tipsとか
• 4. まとめ
2. 今までのHTML技術
 との組み合わせ
今までのHTML技術との
     組み合わせ

• 音が取れない以上、
 今回はこっちでがんばるしかない
考えられる組み合わせ

• 1. canvas をピクセル単位で
 いろいろいじる

• 2. CSS filter でエフェクトかける
• 3. その他、既存手法いろいろ
1. canvas をピクセル単位で
        いろいろいじる
• context.getImageData()
  配列でピクセルの値を取得

• context.putImageData()
  配列のピクセルの値をセット

• この間でピクセルの数値を変えちゃえ
  ば、簡単にエフェクトかけられる
1. canvas をピクセル単位で
           いろいろいじる
•   var data = context.getImageData(0, 0, 370, 370);
    (中略、黒→黄色とか)
    context.putImageData(data, 0, 0);

• きっと画像処理の分野から応用すれ
    ば、いろいろ良さげなライブラリたく
    さん出てきそう
2. CSS filter
• Chrome18から使える
 http://caniuse.com/#feat=css-filters

• 任意の要素に対して、CSS でフィルター
 かけられる(bodyタグでも)

• このページが比較的分かりやすい
 http://www.html5rocks.com/en/tutorials/filters/
 understanding-css/
2. CSS filter
• grayscale : 白黒フィルター、0 ∼ 100% の
 範囲

• sepia : セピア色、上に同じく
• saturate : 油絵の具で塗ったような感じ
• hue-rotate : 色相を回転させる
• invert : 色を反転させる
2. CSS filter
• opacity : 不透明度(なんでこれあるのか
 分からないけど、読む限りハードウェ
 アアクセラレーションでこっちのがパ
 フォーマンスが良いらしい)

• brightness : 明るさの変化、白く飛ばし
 た感じ
2. CSS filter

• contrast : コントラスト比をいじる
• blur : ぼかし
• drop-shadow : 影効果(これもopacityと
 同じで、CSSにbox-shadowってのがあ
 る)
2. CSS filter

• スペースでつなげて複数指定もできる
    (ただやりすぎると重くなるので注意)

•   -webkit-filter: brightness(0.5) grayscale(1.0);
    →元々黄色いやつを白く飛ばしておくとか
3. その他いろいろ
• かけたいエフェクトにもよるけど、
 複雑なものはPNGとかでテキトーに
 作ってかぶせた方が早い

• JavaScript で canvas のピクセルいじれば
 なんとかできるけど時間の無駄になる
 ことが多い(&めんどくさい)
ここまでのサンプル


•   http://web-utage.com/sample/
    dragonball_super_saiyan/
軽くまとめ
• 結局 canvas に反映しちゃえば、あとは
 canvas に対する操作と何ら変わらない

• Chrome に限れば CSS filter も使えるの
 で表現の幅が広がる
 (&canvas なら楽できる)

• 後は既存の手法とのいいとこ取り
本日のレシピ
• 1. getUserMedia で映像と音が取れるか
 検証

• 2. 今までのHTML技術との組み合わせ
• 3. Tipsとか
• 4. まとめ
3. Tipsとか
navigator.getUserMedia は
       別名で呼べない
• TypeError: Illegal invocation ってエラー
• navigator.getUserMedia を別変数で参照し
  て呼んでもダメ

• プレフィックスの違いを吸収したいと
  きは、関数呼び出しをまるごと返す
navigator.getUserMedia は
                 別名で呼べない
      var getUserMedia = function(t, onsuccess, onerror) {
        if (navigator.getUserMedia) {
          return navigator.getUserMedia(t, onsuccess, onerror);
        } else if (navigator.webkitGetUserMedia) {
          return navigator.webkitGetUserMedia(t, onsuccess, onerror);
        } else if (navigator.mozGetUserMedia) {
          return navigator.mozGetUserMedia(t, onsuccess, onerror);
        } else if (navigator.msGetUserMedia) {
          return navigator.msGetUserMedia(t, onsuccess, onerror);
        } else {
          onerror(new Error("No getUserMedia implementation found."));
        }
      };
http://www.html5rocks.com/ja/tutorials/webgl/jsartoolkit_webrtc/#toc-webrtc より
毎フレームの処理が重くなりがち、
requestAnimationFrame を使った方が
               よさげ



• これは WebRTC に限った話じゃないの
 で、「requestAnimationFrame」でぐぐる
 とたくさん出てくる
毎フレームの処理が重くなりがち、
requestAnimationFrame を使った方が
               よさげ

 var requestAnimationFrame = (function() {
   return window.requestAnimationFrame ||
   window.webkitRequestAnimationFrame ||
   window.mozRequestAnimationFrame ||
   window.msRequestAnimationFrame ||
   window.oRequestAnimationFrame ||
   function(callback, element) {
     setTimeout(callback, 1000 / 60);
   };
 })();
LocalMediaStream→video→canvasの
とき、必ずしもvideoはDOMツリーに
        入れなくともよい


• 今回、特に入力映像をそのまま表示す
  る必要がなかったので、video タグは
  設置してない

• canvas タグだけあればOK
なぜ映像は取れて、
  音だけ使えないのか?
• ゆくゆくは WebRTC と WebAudioAPI と
 の統合が図られているから、かも?
 (英語ちょっと自信ない。。)

• このへんとか参考になるかも
 http://www.html5rocks.com/en/tutorials/
 getusermedia/intro/#toc-webaudio-api
必ずしもJavaScriptで
    解決しなくてもよい
• ガタガタ揺らすエフェクトは、
  JavaScript で CSS の position プロパティ
  いじるとか、斜めなら canvas 内の
  ピクセルいじるしかない

• 今なら CSS animation 内で transform を
  使うだけで揺らせる(斜めにも)
本日のレシピ
• 1. getUserMedia で映像と音が取れるか
 検証

• 2. 今までのHTML技術との組み合わせ
• 3. Tipsとか
• 4. まとめ
4. まとめ
4. まとめ

• WebRTC の可能性
• Web がネイティブになる世界
• リアルタイム性
WebRTC の可能性

• デバイスへのアクセスが一般化すると、
 Webアプリで展開できる種類も増える

• スマートフォン(iOS, Android,
 WindowsPhone)にWebRTCが普及し
 出したころが本当のスタートかも
Web がネイティブになる世界

• デバイスとかの機能を Web API で呼ぶ
 といった、インターフェースが徐々に
 Web ベースになってきてる

• そのうちネイティブはブラウザエンジ
 ンだけになって、やがて Web がネイ
 ティブになる世界(例 : FirefoxOSとか)
リアルタイム性
• パーソナライズ(個々のユーザーに最
 適化)されたものを提供するには、
 その場で作ってその場で返すリアルタ
 イム性が大事

• 単一なものではなく、自分ならではの
 何かが欲しい人たち向け
リアルタイム性
• 誰もキャプチャしてエフェクトつけて
 YouTubeにアップとかしない(2, 3人居たけど)

• でもその場でできるなら、
 ちょっとやってみようかなって気になる

• WebRTC 試してみよう!
 変身コンテンツとか作ってみよう!
ありがとうございました!

Weitere ähnliche Inhalte

Was ist angesagt?

うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?
Masahiro Sano
 
商用VPSのここだけの話
商用VPSのここだけの話商用VPSのここだけの話
商用VPSのここだけの話
joeswebhosting
 
Vim = VM
Vim = VMVim = VM
Vim = VM
Shougo
 
20130222 osc13tk osc.cms
20130222 osc13tk osc.cms20130222 osc13tk osc.cms
20130222 osc13tk osc.cms
usptomo
 
コンパイラ指向ReVIEW
コンパイラ指向ReVIEWコンパイラ指向ReVIEW
コンパイラ指向ReVIEW
Masahiro Wakame
 

Was ist angesagt? (20)

[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト
 
第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会
 
はじめてのクラウドサーバー AWSとGCEを使い比べてみた
はじめてのクラウドサーバー AWSとGCEを使い比べてみたはじめてのクラウドサーバー AWSとGCEを使い比べてみた
はじめてのクラウドサーバー AWSとGCEを使い比べてみた
 
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?
 
Build Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.jsBuild Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.js
 
第4回 一撃サーバー構築シェルスクリプト勉強会(もくもく) 発表資料 - さくらのクラウド操作案内
第4回 一撃サーバー構築シェルスクリプト勉強会(もくもく) 発表資料 - さくらのクラウド操作案内第4回 一撃サーバー構築シェルスクリプト勉強会(もくもく) 発表資料 - さくらのクラウド操作案内
第4回 一撃サーバー構築シェルスクリプト勉強会(もくもく) 発表資料 - さくらのクラウド操作案内
 
商用VPSのここだけの話
商用VPSのここだけの話商用VPSのここだけの話
商用VPSのここだけの話
 
Sass/Compassの導入と環境構築
Sass/Compassの導入と環境構築Sass/Compassの導入と環境構築
Sass/Compassの導入と環境構築
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
 
Vim = VM
Vim = VMVim = VM
Vim = VM
 
イマドキのコーダー環境構築2016
イマドキのコーダー環境構築2016イマドキのコーダー環境構築2016
イマドキのコーダー環境構築2016
 
JetsonでOpenCV
 JetsonでOpenCV JetsonでOpenCV
JetsonでOpenCV
 
modern X86 environment
modern X86 environmentmodern X86 environment
modern X86 environment
 
Unite vim
Unite vim Unite vim
Unite vim
 
Casper js エスキュービズム勉強会0718
Casper js エスキュービズム勉強会0718Casper js エスキュービズム勉強会0718
Casper js エスキュービズム勉強会0718
 
20130222 osc13tk osc.cms
20130222 osc13tk osc.cms20130222 osc13tk osc.cms
20130222 osc13tk osc.cms
 
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
コンパイラ指向ReVIEW
コンパイラ指向ReVIEWコンパイラ指向ReVIEW
コンパイラ指向ReVIEW
 

Andere mochten auch

社内勉強会資料、拡張現実感(Ar)
社内勉強会資料、拡張現実感(Ar)社内勉強会資料、拡張現実感(Ar)
社内勉強会資料、拡張現実感(Ar)
Kiyoaki Haba
 

Andere mochten auch (19)

社内勉強会資料、拡張現実感(Ar)
社内勉強会資料、拡張現実感(Ar)社内勉強会資料、拡張現実感(Ar)
社内勉強会資料、拡張現実感(Ar)
 
実際に遠隔作業支援にWebRTCを使ってみた
実際に遠隔作業支援にWebRTCを使ってみた実際に遠隔作業支援にWebRTCを使ってみた
実際に遠隔作業支援にWebRTCを使ってみた
 
40まで開発のリーダーだった男がインフラの運用のリーダー(見習い)になってみて
40まで開発のリーダーだった男がインフラの運用のリーダー(見習い)になってみて40まで開発のリーダーだった男がインフラの運用のリーダー(見習い)になってみて
40まで開発のリーダーだった男がインフラの運用のリーダー(見習い)になってみて
 
2013 WebRTC 概説 & ワークショップ
2013 WebRTC 概説 & ワークショップ2013 WebRTC 概説 & ワークショップ
2013 WebRTC 概説 & ワークショップ
 
死んで覚えるDeep Security 〜 意識高いポート編
死んで覚えるDeep Security 〜 意識高いポート編死んで覚えるDeep Security 〜 意識高いポート編
死んで覚えるDeep Security 〜 意識高いポート編
 
DeepSecurityでシステムを守る運用を幾つか
DeepSecurityでシステムを守る運用を幾つかDeepSecurityでシステムを守る運用を幾つか
DeepSecurityでシステムを守る運用を幾つか
 
WebRTCで動かす“テレイグジスタンス”ロボット
WebRTCで動かす“テレイグジスタンス”ロボットWebRTCで動かす“テレイグジスタンス”ロボット
WebRTCで動かす“テレイグジスタンス”ロボット
 
注目の最新技術「WebRTC」とは? -技術概要と事例紹介-
注目の最新技術「WebRTC」とは? -技術概要と事例紹介-注目の最新技術「WebRTC」とは? -技術概要と事例紹介-
注目の最新技術「WebRTC」とは? -技術概要と事例紹介-
 
Web RTCにより拓かれるコミュニケーションサービスの形 「新たなバリュー創造へ。ntt comのチャレンジ」webアプリケーション エバンジェリスト ...
Web RTCにより拓かれるコミュニケーションサービスの形 「新たなバリュー創造へ。ntt comのチャレンジ」webアプリケーション エバンジェリスト ...Web RTCにより拓かれるコミュニケーションサービスの形 「新たなバリュー創造へ。ntt comのチャレンジ」webアプリケーション エバンジェリスト ...
Web RTCにより拓かれるコミュニケーションサービスの形 「新たなバリュー創造へ。ntt comのチャレンジ」webアプリケーション エバンジェリスト ...
 
なぜ情報漏洩事故は繰り返されるのか? ~当社の運用事例にみる、サイバー攻撃の実際と効果的な対策~ NTTコミュニケーションズ セキュリティ・エバンジェリス...
なぜ情報漏洩事故は繰り返されるのか? ~当社の運用事例にみる、サイバー攻撃の実際と効果的な対策~ NTTコミュニケーションズ セキュリティ・エバンジェリス...なぜ情報漏洩事故は繰り返されるのか? ~当社の運用事例にみる、サイバー攻撃の実際と効果的な対策~ NTTコミュニケーションズ セキュリティ・エバンジェリス...
なぜ情報漏洩事故は繰り返されるのか? ~当社の運用事例にみる、サイバー攻撃の実際と効果的な対策~ NTTコミュニケーションズ セキュリティ・エバンジェリス...
 
Nttコミュニケーションズのクラウドサービスとopenstack クラウド エバンジェリスト 村上守
Nttコミュニケーションズのクラウドサービスとopenstack クラウド エバンジェリスト 村上守Nttコミュニケーションズのクラウドサービスとopenstack クラウド エバンジェリスト 村上守
Nttコミュニケーションズのクラウドサービスとopenstack クラウド エバンジェリスト 村上守
 
スマートマシンがもたらす社会創造と産業変革 2015106
スマートマシンがもたらす社会創造と産業変革 2015106スマートマシンがもたらす社会創造と産業変革 2015106
スマートマシンがもたらす社会創造と産業変革 2015106
 
2015 10-ntt-com-forum-miyakawa-revised
2015 10-ntt-com-forum-miyakawa-revised2015 10-ntt-com-forum-miyakawa-revised
2015 10-ntt-com-forum-miyakawa-revised
 
GotAPIの概要と技術解説
GotAPIの概要と技術解説GotAPIの概要と技術解説
GotAPIの概要と技術解説
 
IoTの規格標準化動向とデバイスWebAPI
IoTの規格標準化動向とデバイスWebAPIIoTの規格標準化動向とデバイスWebAPI
IoTの規格標準化動向とデバイスWebAPI
 
企業ICTのリスクマネジメントを強化する3つの視点 NTTコミュニケーションズセキュリティエバンジェリスト竹内文孝
企業ICTのリスクマネジメントを強化する3つの視点 NTTコミュニケーションズセキュリティエバンジェリスト竹内文孝企業ICTのリスクマネジメントを強化する3つの視点 NTTコミュニケーションズセキュリティエバンジェリスト竹内文孝
企業ICTのリスクマネジメントを強化する3つの視点 NTTコミュニケーションズセキュリティエバンジェリスト竹内文孝
 
WebRTCの技術解説 公開版
WebRTCの技術解説 公開版WebRTCの技術解説 公開版
WebRTCの技術解説 公開版
 
IoT/M2Mが切り拓く未来と課題 NTTコミュニケーションズ IoT・エバンジェリスト 境野 哲
 IoT/M2Mが切り拓く未来と課題 NTTコミュニケーションズ IoT・エバンジェリスト 境野 哲 IoT/M2Mが切り拓く未来と課題 NTTコミュニケーションズ IoT・エバンジェリスト 境野 哲
IoT/M2Mが切り拓く未来と課題 NTTコミュニケーションズ IoT・エバンジェリスト 境野 哲
 
2015-05-23 クラウドの運用になって インフラエンジニアは何が変わるのか?
2015-05-23 クラウドの運用になって インフラエンジニアは何が変わるのか?2015-05-23 クラウドの運用になって インフラエンジニアは何が変わるのか?
2015-05-23 クラウドの運用になって インフラエンジニアは何が変わるのか?
 

Ähnlich wie WebRTCでドラゴンボールごっこ

実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選
Drecom Co., Ltd.
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセス
Makoto Kato
 

Ähnlich wie WebRTCでドラゴンボールごっこ (20)

Node.js x Headless Chrome for WeRTC MCU / Node.js x Chrome headless で、お手軽WebR...
Node.js x Headless Chrome for WeRTC MCU / Node.js x Chrome headless で、お手軽WebR...Node.js x Headless Chrome for WeRTC MCU / Node.js x Chrome headless で、お手軽WebR...
Node.js x Headless Chrome for WeRTC MCU / Node.js x Chrome headless で、お手軽WebR...
 
MediaRecorder と WebM で、オレオレ Live Streaming
MediaRecorder と WebM で、オレオレ Live StreamingMediaRecorder と WebM で、オレオレ Live Streaming
MediaRecorder と WebM で、オレオレ Live Streaming
 
Google Meet でもバーチャル背景を使いたい (WebRTC Meetup Online)
Google Meet でもバーチャル背景を使いたい (WebRTC Meetup Online)Google Meet でもバーチャル背景を使いたい (WebRTC Meetup Online)
Google Meet でもバーチャル背景を使いたい (WebRTC Meetup Online)
 
Fabric + Amazon EC2で快適サポート生活 #PyFes
Fabric + Amazon EC2で快適サポート生活 #PyFesFabric + Amazon EC2で快適サポート生活 #PyFes
Fabric + Amazon EC2で快適サポート生活 #PyFes
 
実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選
 
.NET Compiler Platform
.NET Compiler Platform.NET Compiler Platform
.NET Compiler Platform
 
Web時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメWeb時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメ
 
JavaScript And Keywords
JavaScript And KeywordsJavaScript And Keywords
JavaScript And Keywords
 
Mvc conf session_5_isami
Mvc conf session_5_isamiMvc conf session_5_isami
Mvc conf session_5_isami
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセス
 
WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみたWASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみた
 
About WebRTC
About WebRTCAbout WebRTC
About WebRTC
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解docker
捕鯨!詳解docker
 
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
 
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
 
JSer Class #2
JSer Class #2JSer Class #2
JSer Class #2
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
 
大規模なJavaScript開発の話
大規模なJavaScript開発の話大規模なJavaScript開発の話
大規模なJavaScript開発の話
 
.NET vNext
.NET vNext.NET vNext
.NET vNext
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ
 

Mehr von girigiribauer

Webサイトのようには作れない!Webアプリ設計の考え方
Webサイトのようには作れない!Webアプリ設計の考え方Webサイトのようには作れない!Webアプリ設計の考え方
Webサイトのようには作れない!Webアプリ設計の考え方
girigiribauer
 
a-blog cms初心者が テンプレート作るまで
a-blog cms初心者が テンプレート作るまでa-blog cms初心者が テンプレート作るまで
a-blog cms初心者が テンプレート作るまで
girigiribauer
 

Mehr von girigiribauer (9)

黒い画面超入門 - tmux を使ってみよう
黒い画面超入門 - tmux を使ってみよう黒い画面超入門 - tmux を使ってみよう
黒い画面超入門 - tmux を使ってみよう
 
JSHint を自分好みにする話
JSHint を自分好みにする話JSHint を自分好みにする話
JSHint を自分好みにする話
 
CSS の Flexible Box Layout がヤバい
CSS の Flexible Box Layout がヤバいCSS の Flexible Box Layout がヤバい
CSS の Flexible Box Layout がヤバい
 
フロントエンドのツール Yeoman を勘違いしていた
フロントエンドのツール Yeoman を勘違いしていたフロントエンドのツール Yeoman を勘違いしていた
フロントエンドのツール Yeoman を勘違いしていた
 
Webアプリのマークアップ、どうすればいいの?
Webアプリのマークアップ、どうすればいいの?Webアプリのマークアップ、どうすればいいの?
Webアプリのマークアップ、どうすればいいの?
 
WebRTC + Web Audio API = スーパーサイヤ人
WebRTC + Web Audio API = スーパーサイヤ人WebRTC + Web Audio API = スーパーサイヤ人
WebRTC + Web Audio API = スーパーサイヤ人
 
Raphael.jsを使ってSVGをモーフィングさせてみた失敗の記録
Raphael.jsを使ってSVGをモーフィングさせてみた失敗の記録Raphael.jsを使ってSVGをモーフィングさせてみた失敗の記録
Raphael.jsを使ってSVGをモーフィングさせてみた失敗の記録
 
Webサイトのようには作れない!Webアプリ設計の考え方
Webサイトのようには作れない!Webアプリ設計の考え方Webサイトのようには作れない!Webアプリ設計の考え方
Webサイトのようには作れない!Webアプリ設計の考え方
 
a-blog cms初心者が テンプレート作るまで
a-blog cms初心者が テンプレート作るまでa-blog cms初心者が テンプレート作るまで
a-blog cms初心者が テンプレート作るまで
 

Kürzlich hochgeladen

Kürzlich hochgeladen (12)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: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
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: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...
 
論文紹介: 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
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

WebRTCでドラゴンボールごっこ

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n