SlideShare a Scribd company logo
1 of 50
Download to read offline
WebVR空間の巨大スクリーンで
teratailを見れるか試してみた話
@afroscript
いつもは
スライド70枚以上話しますが、
今日は50枚しかありません
ちょい早くらいでいきます
まずは…
自己紹介
■名前:
 木下 雄策(27歳・福岡出身) @afroscript10
■略歴:
 九州大学大学院で宇宙の研究
 2013年 レバレジーズ入社
■今のお仕事:
 日本のエンジニア業界を最強にすること!!
 →エンジニア特化型Q&Aサイト【teratail】のDevRel担当
■その他
 ・Gs'ACADEMY2期生/WebGLスクール3期生
 ・LIGブログ「0エンジニアから0.5エンジニアへ」連載中
 ・元アフロ、フリースタイルバスケットボーラー
 ・最近は、Web3DやWebVRが好き
では、さっそく
今回やりたかったこと
VR空間でWebサイトを見たいっ!!
・VR空間でWebサイト見れたらなんか近未来っぽくて楽しそう
VR空間でWebサイトを見たいっ!!
・VR空間でWebサイト見れたらなんか近未来っぽくて楽しそう
・YoutubeもVR空間の巨大スクリーンで見れたら、超大迫力で楽しめそう、
 もはや大型テレビなんて足元にも及ばない
VR空間でWebサイトを見たいっ!!
・VR空間でWebサイト見れたらなんか近未来っぽくて楽しそう
・YoutubeもVR空間の巨大スクリーンで見れたら、超大迫力で楽しめそう、
 もはや大型テレビなんて足元にも及ばない
VR空間でWebサイトを見たいっ!!
・VR空間でWebサイト見れたらなんか近未来っぽくて楽しそう
・YoutubeもVR空間の巨大スクリーンで見れたら、超大迫力で楽しめそう、
 もはや大型テレビなんて足元にも及ばない
・リープモーションとかとかけ合わせて、宙にういたWeb画面を
 手の動きで操作できたらSF映画っぽくてかっこよさそう...
VR空間でWebサイトを見たいっ!!
・VR空間でWebサイト見れたらなんか近未来っぽくて楽しそう
・YoutubeもVR空間の巨大スクリーンで見れたら、超大迫力で楽しめそう、
 もはや大型テレビなんて足元にも及ばない
・リープモーションとかとかけ合わせて、宙にういたWeb画面を
 手の動きで操作できたらSF映画っぽくてかっこよさそう...
VR空間でWebサイトを見たいっ!!
ということで、
teratailを使ってVR空間の巨大スクリーンで
Webページを見れないか挑戦してみました
どうやらThree.jsの中に、
「CSS3DRenderer.js」というものがあって、
3D空間にHTML要素をレンダリングできるらしい
■CSS3DRenderer.jsのGitHub:
  https://github.com/mrdoob/three.js/ blob/master/examples/js/renderers/CSS3DRenderer.js
■参照ネタ:
  http://learningthreejs.com/blog/2013/04/30/closing-the-gap-between-html-and-webgl/
■参照先のDemo:
  http://learningthreejs.com/data/2013-04-30-closing-the-gap-between-html-and-webgl/index.html
VR化は
「WebVR Boilerplate」を使うと簡単そう
■WebVR BoilerplateのGitHub:
  https://github.com/borismus/webvr-boilerplate
■参照ネタ:
  https://html5experts.jp/edo_m18/18552/
■参照先のDemo:
  https://github.com/edom18/html5-exp-webvr-demo
■参照先のソースコード:
  https://github.com/edom18/html5-exp-webvr-demo
これらを使って、初心者なりにモガいてみた
結果!!
VR化までは至らず、失敗…orz
(サクっと実現できるものではなさげ)
現在teratailで回答募集中...
WebVR BoilerplateがCSS3DRenderer.jsにまだ対応してない...??
そこを自力で頑張る必要がありそう、three.js内でできるだろうか…??
■teratail質問ページ:
  https://teratail.com/questions/43627
しかし!
CSS3DRenderer.jsを用いて、
3D空間でWebページを表現することは
できました:)
こんな感じ。
↓
Demo:http://usaqwako.sakura.ne.jp/3Dteratail/
ソースコード:https://github.com/afroscript/3Dteratail
ということで、
きっとそのうちWebVR Boilerplateなどが、
CSS3DRenderer.jsにも対応してくれるだとうと
勝手に期待を込めて、
今回は、CSS3DRenderer.jsの使い方を
ご紹介しようと思います:)
まずはThree.jsとCSS3DRenderer.jsを読み込む
まずはThree.jsとCSS3DRenderer.jsを読み込む。(※Three.jsはr79を使用)
※Three.js:
 https://github.com/mrdoob/three.js
※CSS3DRenderer.js
  https://github.com/mrdoob/three.js/blob/master/examples/js/renderers/CSS3DRenderer.js
まずは読み込む
<index.html>
レンダラーは
WebGLRendererとCSS3DRendererの2つを用意
WebGLを用いたレンダラーを new THREE.WebGLRenderer()で生成。
レンダラーの生成
<main.js>
同様に、CSS3Dを用いたレンダラーを new THREE.CSS3DRenderer()で生成。
CSS3Dレンダラーの生成
<main.js>
シーンも2つ用意する
THREE.SceneでWebGLレンダラー用のシーンとCSS3Dレンダラー用のシーン、
2つをつくります。
シーンは2つ生成
<main.js>
カメラは1つでOK
カメラは普通に1つ用意します
カメラは1つでOK
<main.js>
OrbitControls.jsは、
マウスでグリグリうごいて便利なので
入れときましょう
OrbitControls.jsを使うと簡単にマウスでグリグリ動くように:)
※OrbitControls.jsのGitHub:
 https://github.com/mrdoob/three.js/blob/dev/examples/js/controls/OrbitControls.js
マウスでグリグリ動かす
<index.html>
<main.js>
WebGLのシーンに平面オブジェクトを追加する
THREE.PlaneGeometryで平面オブジェクトを生成してWebGLのシーンに追加。
これをあとでWebページのレンダリングと合体させます。
WebGLのシーンに平面オブジェクトを追加
CSSのシーンに、
iframe要素を持ったCSS3Dオブジェクトを
追加して、
さっきの平面オブジェクトと連動させる
iframe要素(参照先はteratail)を持つCSS3Dオブジェクトを生成。
CSS3Dのシーンにもオブジェクトを追加
ここで表示したい
URLを指定!
さっきの平面オブジェクトと座標とrotationを一致させて、CSSシーンに追加
CSS3Dのシーンにもオブジェクトを追加
レンダリングは2つ重ねてやります。
WebGL用のレンダラーでWebGLのシーンをレンダリング、
そこにCSS3D用のレンダラーでCSSシーンをレンダリング
レンダリングは2つ重ねる感じ
完成っ!
※Lightとかちょっとだけ説明省いてます!
簡単でしょ??:)
まとめ
・VR空間でWebサイトは見れなかったけど、
 3D空間でWebサイト見れるだけでもけっこうテンション上がる
・CSS3DRenderer.js便利
・ポイントは座標と回転を一致させてレンダリングを重ねるってとこ
・Three.jsのヴァージョン違いには注意!!(1週間無駄にした…orz)
まとめ
teratailで回答お待ちしておりますm(_ _)m
■teratail質問ページ:
  https://teratail.com/questions/43627
ご清聴ありがとうございましたm(_ _)m

More Related Content

What's hot

Electronからはじめるnodejs
ElectronからはじめるnodejsElectronからはじめるnodejs
ElectronからはじめるnodejsHirata Tomoko
 
エンジニアが Webを学ぶために やっててよかったこと
エンジニアが Webを学ぶために やっててよかったことエンジニアが Webを学ぶために やっててよかったこと
エンジニアが Webを学ぶために やっててよかったことHirata Tomoko
 
20160219 Developers Summit 2016 gusukuハンズオン
20160219 Developers Summit 2016 gusukuハンズオン20160219 Developers Summit 2016 gusukuハンズオン
20160219 Developers Summit 2016 gusukuハンズオンMidori Ikegami
 
20160220 座駆動LT大会 合同勉強会in大都会岡山
20160220 座駆動LT大会 合同勉強会in大都会岡山20160220 座駆動LT大会 合同勉強会in大都会岡山
20160220 座駆動LT大会 合同勉強会in大都会岡山Midori Ikegami
 
Javaから見たRubyの世界
Javaから見たRubyの世界Javaから見たRubyの世界
Javaから見たRubyの世界Takafumi Yoshida
 
JSRとJEPとJBSの見方や調べ方について
JSRとJEPとJBSの見方や調べ方についてJSRとJEPとJBSの見方や調べ方について
JSRとJEPとJBSの見方や調べ方についてAya Ebata
 
JavaScriptで出来る、あんなことこんなこと
JavaScriptで出来る、あんなことこんなことJavaScriptで出来る、あんなことこんなこと
JavaScriptで出来る、あんなことこんなことMayu Kimura
 
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipmIT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm鉄次 尾形
 
20160430 kintone Café 沖縄女子会 Vol.1 kintoneデモ環境紹介
20160430 kintone Café 沖縄女子会 Vol.1 kintoneデモ環境紹介20160430 kintone Café 沖縄女子会 Vol.1 kintoneデモ環境紹介
20160430 kintone Café 沖縄女子会 Vol.1 kintoneデモ環境紹介Midori Ikegami
 
スケジュールに意志を込める〜納期と品質、立ちはだかる優先度。 その時君は何をすべきか。〜
スケジュールに意志を込める〜納期と品質、立ちはだかる優先度。 その時君は何をすべきか。〜スケジュールに意志を込める〜納期と品質、立ちはだかる優先度。 その時君は何をすべきか。〜
スケジュールに意志を込める〜納期と品質、立ちはだかる優先度。 その時君は何をすべきか。〜Syun Fuji
 
20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回都元ダイスケ Miyamoto
 
Node.js 奮闘日記
Node.js 奮闘日記Node.js 奮闘日記
Node.js 奮闘日記sasaron 397
 
30億のデバイスで走るjavaを支えるjavaエコシステム
30億のデバイスで走るjavaを支えるjavaエコシステム30億のデバイスで走るjavaを支えるjavaエコシステム
30億のデバイスで走るjavaを支えるjavaエコシステムShinya Mochida
 
Scala、play初心者が触った感想 share用
Scala、play初心者が触った感想 share用Scala、play初心者が触った感想 share用
Scala、play初心者が触った感想 share用amkt922
 
ぼくのビルドはにゃあとなく
ぼくのビルドはにゃあとなくぼくのビルドはにゃあとなく
ぼくのビルドはにゃあとなくTomoki YAMASHITA
 
第6回 学生エンジニア限定LT大会 in 大阪の白虎のスライド
第6回 学生エンジニア限定LT大会 in 大阪の白虎のスライド第6回 学生エンジニア限定LT大会 in 大阪の白虎のスライド
第6回 学生エンジニア限定LT大会 in 大阪の白虎のスライドTakemori Masaki
 
どう見る?Class Reference
どう見る?Class Referenceどう見る?Class Reference
どう見る?Class ReferenceTadahisa Motooka
 
20130927 perlbeginners 10 time-piece
20130927 perlbeginners 10 time-piece20130927 perlbeginners 10 time-piece
20130927 perlbeginners 10 time-pieceSyun Fuji
 
HTML5 Conference 2015 WebGLハンズオン資料
HTML5 Conference 2015 WebGLハンズオン資料HTML5 Conference 2015 WebGLハンズオン資料
HTML5 Conference 2015 WebGLハンズオン資料Kazuya Hiruma
 

What's hot (20)

Electronからはじめるnodejs
ElectronからはじめるnodejsElectronからはじめるnodejs
Electronからはじめるnodejs
 
エンジニアが Webを学ぶために やっててよかったこと
エンジニアが Webを学ぶために やっててよかったことエンジニアが Webを学ぶために やっててよかったこと
エンジニアが Webを学ぶために やっててよかったこと
 
20160219 Developers Summit 2016 gusukuハンズオン
20160219 Developers Summit 2016 gusukuハンズオン20160219 Developers Summit 2016 gusukuハンズオン
20160219 Developers Summit 2016 gusukuハンズオン
 
Electron を知る
Electron を知るElectron を知る
Electron を知る
 
20160220 座駆動LT大会 合同勉強会in大都会岡山
20160220 座駆動LT大会 合同勉強会in大都会岡山20160220 座駆動LT大会 合同勉強会in大都会岡山
20160220 座駆動LT大会 合同勉強会in大都会岡山
 
Javaから見たRubyの世界
Javaから見たRubyの世界Javaから見たRubyの世界
Javaから見たRubyの世界
 
JSRとJEPとJBSの見方や調べ方について
JSRとJEPとJBSの見方や調べ方についてJSRとJEPとJBSの見方や調べ方について
JSRとJEPとJBSの見方や調べ方について
 
JavaScriptで出来る、あんなことこんなこと
JavaScriptで出来る、あんなことこんなことJavaScriptで出来る、あんなことこんなこと
JavaScriptで出来る、あんなことこんなこと
 
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipmIT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm
 
20160430 kintone Café 沖縄女子会 Vol.1 kintoneデモ環境紹介
20160430 kintone Café 沖縄女子会 Vol.1 kintoneデモ環境紹介20160430 kintone Café 沖縄女子会 Vol.1 kintoneデモ環境紹介
20160430 kintone Café 沖縄女子会 Vol.1 kintoneデモ環境紹介
 
スケジュールに意志を込める〜納期と品質、立ちはだかる優先度。 その時君は何をすべきか。〜
スケジュールに意志を込める〜納期と品質、立ちはだかる優先度。 その時君は何をすべきか。〜スケジュールに意志を込める〜納期と品質、立ちはだかる優先度。 その時君は何をすべきか。〜
スケジュールに意志を込める〜納期と品質、立ちはだかる優先度。 その時君は何をすべきか。〜
 
20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回
 
Node.js 奮闘日記
Node.js 奮闘日記Node.js 奮闘日記
Node.js 奮闘日記
 
30億のデバイスで走るjavaを支えるjavaエコシステム
30億のデバイスで走るjavaを支えるjavaエコシステム30億のデバイスで走るjavaを支えるjavaエコシステム
30億のデバイスで走るjavaを支えるjavaエコシステム
 
Scala、play初心者が触った感想 share用
Scala、play初心者が触った感想 share用Scala、play初心者が触った感想 share用
Scala、play初心者が触った感想 share用
 
ぼくのビルドはにゃあとなく
ぼくのビルドはにゃあとなくぼくのビルドはにゃあとなく
ぼくのビルドはにゃあとなく
 
第6回 学生エンジニア限定LT大会 in 大阪の白虎のスライド
第6回 学生エンジニア限定LT大会 in 大阪の白虎のスライド第6回 学生エンジニア限定LT大会 in 大阪の白虎のスライド
第6回 学生エンジニア限定LT大会 in 大阪の白虎のスライド
 
どう見る?Class Reference
どう見る?Class Referenceどう見る?Class Reference
どう見る?Class Reference
 
20130927 perlbeginners 10 time-piece
20130927 perlbeginners 10 time-piece20130927 perlbeginners 10 time-piece
20130927 perlbeginners 10 time-piece
 
HTML5 Conference 2015 WebGLハンズオン資料
HTML5 Conference 2015 WebGLハンズオン資料HTML5 Conference 2015 WebGLハンズオン資料
HTML5 Conference 2015 WebGLハンズオン資料
 

Similar to WebVR空間の巨大スクリーンでteratailを見れるか試してみた話

Getting start with knockout.js
Getting start with knockout.jsGetting start with knockout.js
Getting start with knockout.jsAkio Ishida
 
今さら始めるJavaScript
今さら始めるJavaScript今さら始めるJavaScript
今さら始めるJavaScriptAshitaba YOSHIOKA
 
10/12 WordBench神戸 WordPressの学習方法
10/12 WordBench神戸 WordPressの学習方法10/12 WordBench神戸 WordPressの学習方法
10/12 WordBench神戸 WordPressの学習方法Yoshiko Sarakai
 
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うことKazuhiro Serizawa
 
my-spirit-of-tdd
my-spirit-of-tddmy-spirit-of-tdd
my-spirit-of-tddYu Asano
 
Rails5クイックスタート
Rails5クイックスタートRails5クイックスタート
Rails5クイックスタートHirata Tomoko
 
DevLove四国_LT_yohhatu
DevLove四国_LT_yohhatuDevLove四国_LT_yohhatu
DevLove四国_LT_yohhatuYoh Nakamura
 
辛い開発を色々使って迂回した話
辛い開発を色々使って迂回した話辛い開発を色々使って迂回した話
辛い開発を色々使って迂回した話s2otsa
 
これからはじめるための JavaScript 開発環境
これからはじめるための JavaScript 開発環境これからはじめるための JavaScript 開発環境
これからはじめるための JavaScript 開発環境Ryo Higashigawa
 
クローズドソースから始めるオープンソース
クローズドソースから始めるオープンソースクローズドソースから始めるオープンソース
クローズドソースから始めるオープンソースTakafumi ONAKA
 

Similar to WebVR空間の巨大スクリーンでteratailを見れるか試してみた話 (11)

Getting start with knockout.js
Getting start with knockout.jsGetting start with knockout.js
Getting start with knockout.js
 
今さら始めるJavaScript
今さら始めるJavaScript今さら始めるJavaScript
今さら始めるJavaScript
 
10/12 WordBench神戸 WordPressの学習方法
10/12 WordBench神戸 WordPressの学習方法10/12 WordBench神戸 WordPressの学習方法
10/12 WordBench神戸 WordPressの学習方法
 
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
 
my-spirit-of-tdd
my-spirit-of-tddmy-spirit-of-tdd
my-spirit-of-tdd
 
Rails5クイックスタート
Rails5クイックスタートRails5クイックスタート
Rails5クイックスタート
 
DevLove四国_LT_yohhatu
DevLove四国_LT_yohhatuDevLove四国_LT_yohhatu
DevLove四国_LT_yohhatu
 
辛い開発を色々使って迂回した話
辛い開発を色々使って迂回した話辛い開発を色々使って迂回した話
辛い開発を色々使って迂回した話
 
JSつまみぐい
JSつまみぐいJSつまみぐい
JSつまみぐい
 
これからはじめるための JavaScript 開発環境
これからはじめるための JavaScript 開発環境これからはじめるための JavaScript 開発環境
これからはじめるための JavaScript 開発環境
 
クローズドソースから始めるオープンソース
クローズドソースから始めるオープンソースクローズドソースから始めるオープンソース
クローズドソースから始めるオープンソース
 

More from Yusaku Kinoshita

集まっTail(集まっている)#8
集まっTail(集まっている)#8集まっTail(集まっている)#8
集まっTail(集まっている)#8Yusaku Kinoshita
 
Bridging the Gap for Beginners in Developer Communities@DevRelConTokyo_20170729
Bridging the Gap for Beginners in Developer Communities@DevRelConTokyo_20170729Bridging the Gap for Beginners in Developer Communities@DevRelConTokyo_20170729
Bridging the Gap for Beginners in Developer Communities@DevRelConTokyo_20170729Yusaku Kinoshita
 
集まっtail#7「teratailより」
集まっtail#7「teratailより」集まっtail#7「teratailより」
集まっtail#7「teratailより」Yusaku Kinoshita
 
個人開発アプリのご紹介とあり得ない不具合に対する掲示板の活用事例
個人開発アプリのご紹介とあり得ない不具合に対する掲示板の活用事例個人開発アプリのご紹介とあり得ない不具合に対する掲示板の活用事例
個人開発アプリのご紹介とあり得ない不具合に対する掲示板の活用事例Yusaku Kinoshita
 
G'sアカデミー2期入学式資料(投影資料版)
G'sアカデミー2期入学式資料(投影資料版)G'sアカデミー2期入学式資料(投影資料版)
G'sアカデミー2期入学式資料(投影資料版)Yusaku Kinoshita
 
5分でわかるphalcon php
5分でわかるphalcon php5分でわかるphalcon php
5分でわかるphalcon phpYusaku Kinoshita
 
効率的かつユニークな学習法
効率的かつユニークな学習法効率的かつユニークな学習法
効率的かつユニークな学習法Yusaku Kinoshita
 
Google先生との付き合い方(lightwill氏)
Google先生との付き合い方(lightwill氏)Google先生との付き合い方(lightwill氏)
Google先生との付き合い方(lightwill氏)Yusaku Kinoshita
 
20150226 炎上を防ぐためにフロントエンドエンジニアとしてできること
20150226 炎上を防ぐためにフロントエンドエンジニアとしてできること20150226 炎上を防ぐためにフロントエンドエンジニアとしてできること
20150226 炎上を防ぐためにフロントエンドエンジニアとしてできることYusaku Kinoshita
 

More from Yusaku Kinoshita (11)

集まっTail(集まっている)#8
集まっTail(集まっている)#8集まっTail(集まっている)#8
集まっTail(集まっている)#8
 
Bridging the Gap for Beginners in Developer Communities@DevRelConTokyo_20170729
Bridging the Gap for Beginners in Developer Communities@DevRelConTokyo_20170729Bridging the Gap for Beginners in Developer Communities@DevRelConTokyo_20170729
Bridging the Gap for Beginners in Developer Communities@DevRelConTokyo_20170729
 
集まっtail#7「teratailより」
集まっtail#7「teratailより」集まっtail#7「teratailより」
集まっtail#7「teratailより」
 
Motohashi.#3
Motohashi.#3Motohashi.#3
Motohashi.#3
 
個人開発アプリのご紹介とあり得ない不具合に対する掲示板の活用事例
個人開発アプリのご紹介とあり得ない不具合に対する掲示板の活用事例個人開発アプリのご紹介とあり得ない不具合に対する掲示板の活用事例
個人開発アプリのご紹介とあり得ない不具合に対する掲示板の活用事例
 
G'sアカデミー2期入学式資料(投影資料版)
G'sアカデミー2期入学式資料(投影資料版)G'sアカデミー2期入学式資料(投影資料版)
G'sアカデミー2期入学式資料(投影資料版)
 
5分でわかるphalcon php
5分でわかるphalcon php5分でわかるphalcon php
5分でわかるphalcon php
 
効率的かつユニークな学習法
効率的かつユニークな学習法効率的かつユニークな学習法
効率的かつユニークな学習法
 
150612 middleman(ikuwow)
150612 middleman(ikuwow)150612 middleman(ikuwow)
150612 middleman(ikuwow)
 
Google先生との付き合い方(lightwill氏)
Google先生との付き合い方(lightwill氏)Google先生との付き合い方(lightwill氏)
Google先生との付き合い方(lightwill氏)
 
20150226 炎上を防ぐためにフロントエンドエンジニアとしてできること
20150226 炎上を防ぐためにフロントエンドエンジニアとしてできること20150226 炎上を防ぐためにフロントエンドエンジニアとしてできること
20150226 炎上を防ぐためにフロントエンドエンジニアとしてできること
 

WebVR空間の巨大スクリーンでteratailを見れるか試してみた話