Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
thrree.js入門
Search
kaidouji85
June 16, 2017
Technology
1.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
thrree.js入門
kaidouji85
June 16, 2017
More Decks by kaidouji85
See All by kaidouji85
サーバーレスをどこまで使う? WebRTC対戦ゲームで選んだVPSとの共存設計
kaidouji85
0
300
AbortControllerでPromiseをキャンセルする
kaidouji85
0
56
一発芸!!なんちゃってローカライズ
kaidouji85
0
120
AWSだけでネット対戦できるブラウザゲームを作った話
kaidouji85
0
97
GitHub CopilotでJavaScript開発効率を爆上げする
kaidouji85
0
130
Serverless + Fargate構成で継続的デリバリーの速度を劇的に改善した話
kaidouji85
0
1.1k
サーバーレスアーキテクチャこそ"ヘキサゴナルアーキテクチャ"
kaidouji85
0
130
サーバーレスでターンベース制のネット対戦ゲームを作った話
kaidouji85
0
680
CDKで構築したFargateのデプロイ時間を改善した話
kaidouji85
2
610
Other Decks in Technology
See All in Technology
.NET WebAssemblyで実現するクライアントサイドAI推論:NuGetからViteまで、2つのエコシステムを繋ぐビルド戦略
yamachu
0
410
2026-09-08 そのJavaモダナイゼーション、AIに丸投げで大丈夫?IBM Bobで変わる品質と効率
yutanonaka
1
120
技術的負債から考える、AI時代のエンジニアリング投資 — ビズリーチの技術的負債と向き合った経験から、変更し続けられるソフトウェアを考える/ technical-debt-con2026
visional_engineering_and_design
4
3.5k
`t*(42&t>>10)`だけで音楽が鳴る、Swiftで実装するBytebeat / iOSDC Japan 2026
yutailang0119
0
130
AI時代の「技術的負債」の変質ー概念の終焉と再解釈、エージェントと共に向かう先
nwiizo
1
3.1k
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
370
その Lambda、8分で 管理者権限まで奪われます
k1nakayama
7
3.5k
絵ではじめるKubernetesセキュリティ
aoi1
4
690
AIに賢く動いてもらうためのコンテキスト〜Snowflake女子会 vol.8
snowwmn0824
0
140
事業課題から技術的負債に向き合う
sansantech
PRO
2
2.2k
Railsのように考える: See through the Master
snoozer05
PRO
5
1.2k
ADKで始める業務改善 - AIエージェント開発時の考えと設計
harappa80
2
250
Featured
See All Featured
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
430
We Are The Robots
honzajavorek
0
380
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
460
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
480
WCS-LA-2024
lcolladotor
0
830
How to build a perfect <img>
jonoalderson
1
6k
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
A Soul's Torment
seathinner
8
3.6k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
710
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
500
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
460
Transcript
UISFFKTೖ ϓϩάϥϛϯάੜ์ૹษڧձୈճ !αΠϘζגࣜձࣾদࢁΦϑΟε ɹ༎հ
ࣗݾհ ɹ༎հ ϓϩάϥϚʔͬͯ·͢ +4͕େ͖Ͱ͢ ϓϩੜͪΌΜՄѪ͍ʂʂ
দࢁͱ͍͑ळࢁܑఋ
ळࢁܑఋͱ͍͑ઓ؋ࡾּ
ࡾּ UISFF
ͱ͍͏༁Ͱ UISFFKTͷΛ͠·͢
ΞδΣϯμ UISFFKTΛ͏ཧ༝ UISFFKTೖ %ϓϩάϥϛϯάUJQT ·ͱΊ
ΞδΣϯμ UISFFKTΛ͏ཧ༝ UISFFKTೖ %ϓϩάϥϛϯάUJQT ·ͱΊ
UISFFKTͱ +BWB4DSJQUͰ%͕؆୯ʹ͑ΔΑ͏ʹͳΔ ϥΠϒϥϦͰ͢ +BWB4DSJQUʹ8FC(-ͱ͍͏ඪ४Ͱ %Λѻ͏ػೳ͕͋Γ·͢ 8FC(-Λ͏ͷେมͰ͢ ˢԿނ͔ͱݴ͏ͱɺͦΕʜʜ
8FC(-㱠+BWB4DSJQU
γΣʔμʔݴޠ 8FH(-Λ͏ʹ+BWB4DSJQUͱશʹผͷ γΣʔμʔݴޠΛֶͿඞཁ͕͋Γ·͢ +4෦ߦྻܭࢉ͕ଟͯ͘େมͰ͢ attribute vec3 aVertexPosition; uniform mat4 uMVMatrix;
uniform mat4 uPMatrix; void main(void) { gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0); }
UISFFKTͰָͯ͠ 8FC(-Λ͍·͠ΐ͏
ΞδΣϯμ UISFFKTΛ͏ཧ༝ UISFFKTೖ %ϓϩάϥϛϯάUJQT ·ͱΊ
UISFFKTͰIFMMPXPSME ཱํମΛදࣔ͢ΔϓϩάϥϜΛ࡞Γ·͢ ιʔεͪ͜Βʹ͋Γ·͢ IUUQTHJUIVCDPNLBJEPVKJIFMMPUISFFKT
var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(
75, window.innerWidth/ window.innerHeight, 0.1, 1000 ); var renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); var geometry = new THREE.BoxGeometry( 1, 1, 1 ); var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); var cube = new THREE.Mesh( geometry, material ); scene.add( cube ); camera.position.z = 5; var render = function () { requestAnimationFrame( render ); cube.rotation.x += 0.1; cube.rotation.y += 0.1; renderer.render(scene, camera); }; render();
Կ͜Εɺ ҙຯ͔Μͳ͍
େৎɺ %ʹऀ͕ଟ͍ͷͰ ͘͠ݟ͑Δ͚ͩͰ͢
UISFFKTͷओͳऀ 3FOEFS 4DFOF $BNFSB (FPNFUSZ .FTI .BUFSJBM
UISFFKTͷओͳऀ 3FOEFS 4DFOF $BNFSB (FPNFUSZ .FTI .BUFSJBM
3FOEFS ϒϥβʹ%ը໘Λඳը͢Δͷ 3FOEFSҎԼύϥϝʔλͰ%ඳը͠·͢ 4DFOF %ମ͕ஔ͔Ε͍ͯΔੈք $BNFSB 3FOEFSΛࣸਅʹྫ͑Δͱ͔Γ͍͢Ͱ͢
3FOEFS 4DFOF $BNFSB
UISFFKTͷओͳऀ 3FOEFS 4DFOF $BNFSB (FPNFUSZ .FTI .BUFSJBM
$BNFSB %ۭؒΛࡱӨ͢ΔΧϝϥͰ͢ ݱ࣮ͷΧϝϥಉ༷ɺ༻్ʹԠͯ͡৭ʑͳͷ͕ ͋Γ·͢ αϯϓϧίʔυͰ1FSTQFDUJWF$BNFSB ಁࢹӨΧϝϥ Λ͍ͬͯ·͢ IUUQTXXXBUXJLJKQUISFFKTQBHFT IUNM
UISFFKTͷओͳऀ 3FOEFS 4DFOF $BNFSB (FPNFUSZ .FTI .BUFSJBM
4DFOF %ϞσϧɺޫݯͳͲΛஔ͢ΔͷͰ͢ %ۭؒͷੈքͦͷͷͰ͢
UISFFKTͷओͳऀ 3FOEFS 4DFOF $BNFSB (FPNFUSZ .FTI .BUFSJBM
.FTI %ۭؒʹஔ͢ΔମͰ͢ ΩϟϥΫλʔɺՈɺϏϧͳͲͷഎܠͳͲ͕ .FTIʹ֘͠·͢
.FTI (FPNFUSZ .BUFSJBM ܗঢ় ɹ৭ ɹࡐ࣭ ɹςΫενϟ
UISFFKTͷओͳऀ 3FOEFS 4DFOF $BNFSB (FPNFUSZ .FTI .BUFSJBM
(FPNFUSZ ମͷܗঢ়σʔλ αϯϓϧϓϩάϥϜͰཱํମΛ͍ͬͯΔ ଞʹฏ໘ɺٿମͳͲجຊతͳܗ͕ ༻ҙ͞Ε͍ͯΔ
UISFFKTͷओͳऀ 3FOEFS 4DFOF $BNFSB (FPNFUSZ .FTI .BUFSJBM
.BUFSJBM ମͷࡐ࣭ΛܾΊΔͷ ৭ɺޫͷࣹ۩߹ɺෆಁ໌ͳͲΛઃఆͰ͖Δ ςΫενϟͷઃఆΛ͢Δͷ͜͜
͏Ұαϯϓϧίʔυ ΛݟͯΈ·͠ΐ͏
var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(
75, window.innerWidth/ window.innerHeight, 0.1, 1000 ); var renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); var geometry = new THREE.BoxGeometry( 1, 1, 1 ); var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); var cube = new THREE.Mesh( geometry, material ); scene.add( cube ); camera.position.z = 5; var render = function () { requestAnimationFrame( render ); cube.rotation.x += 0.1; cube.rotation.y += 0.1; renderer.render(scene, camera); }; render();
var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(
75, window.innerWidth/ window.innerHeight, 0.1, 1000 ); var renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); var geometry = new THREE.BoxGeometry( 1, 1, 1 ); var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); var cube = new THREE.Mesh( geometry, material ); scene.add( cube ); camera.position.z = 5; var render = function () { requestAnimationFrame( render ); cube.rotation.x += 0.1; cube.rotation.y += 0.1; renderer.render(scene, camera); }; render(); UISFFKTͷऀΛ ॳظԽͯ͠Δ͚ͩ
var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(
75, window.innerWidth/ window.innerHeight, 0.1, 1000 ); var renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); var geometry = new THREE.BoxGeometry( 1, 1, 1 ); var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); var cube = new THREE.Mesh( geometry, material ); scene.add( cube ); camera.position.z = 5; var render = function () { requestAnimationFrame( render ); cube.rotation.x += 0.1; cube.rotation.y += 0.1; renderer.render(scene, camera); }; render();
var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(
75, window.innerWidth/ window.innerHeight, 0.1, 1000 ); var renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); var geometry = new THREE.BoxGeometry( 1, 1, 1 ); var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); var cube = new THREE.Mesh( geometry, material ); scene.add( cube ); camera.position.z = 5; var render = function () { requestAnimationFrame( render ); cube.rotation.x += 0.1; cube.rotation.y += 0.1; renderer.render(scene, camera); }; render(); ͋ͱ͜ͷ෦͕ Α͔͘Βͳ͍
͍͜͜ΘΏΔ ήʔϜϧʔϓͰ͢
ήʔϜϧʔϓͱ ήʔϜը໘ΛΞχϝʔγϣϯͤ͞ΔΈ ήʔϜը໘ύϥύϥອըͷཁྖͰɺ ΞχϝʔγϣϯΛ͍ͯ͠Δ ύϥύϥອըΛϓϩάϥϜͰ࠶ݱ͢Δͱɺ ແݶϧʔϓʹͳΔ
SFRVFTU"OJNBUJPO'SBNF ϒϥβͰήʔϜϧʔϓΛ࣮ݱ͢Δͱ͖ʹ ͏ؔ ಈ͖ͱͯ͠ɺϒϥβը໘࠶ඳըલʹ ొͨ͠ίʔϧόοΫؔΛݺͿͱݴ͏ͷ IUUQTEFWFMPQFSNP[JMMBPSHKBEPDT8FC "1*8JOEPXSFRVFTU"OJNBUJPO'SBNF
ήʔϜϧʔϓ࣮ݱํ๏ var render = function () { requestAnimationFrame( render );
cube.rotation.x += 0.1; cube.rotation.y += 0.1; renderer.render(scene, camera); }; render(); ᶃSFOEFSΛ࣮ߦ ᶄSFRVFTU"OJNBUJPO'SBNFʹSFOEFSΛొ ᶅSFOEFS͕ؔऴྃ͢Δ ᶆϒϥβ࠶ඳըલʹSFOEFS͕ݺΕΔ ᶃʹΔ
ήʔϜϧʔϓͷॲཧ var render = function () { requestAnimationFrame( render );
cube.rotation.x += 0.1; cube.rotation.y += 0.1; renderer.render(scene, camera); }; render(); ᶃ ᶄ ᶃཱํମͷYɺZ࣠ํͷճస֯Λ ͢Δ ᶄ%ը໘Λඳը͢Δ
UISFFKTجຊ·ͱΊ %ੈքͷجຊͱͳΔγʔϯɺͦͷੈքΛݟΔ ͨΊͷΧϝϥ ମͰ͋Δ.FTIɺܗঢ়σʔλ(FPNFUSZɺ ࡐ࣭σʔλ.BUFSJBM͔ΒΔ ήʔϜϧʔϓͱݺΕΔύϥύϥອըͷख๏Ͱɺ ήʔϜը໘͕ಈ͍͍ͯΔΑ͏ʹݟ͑Δ
৭ʑग़͖ͯ·͕ͨ͠ɺ
.FTI 3FOEFS 4DFOF $BNFSB (FPNFUSZ .BUFSJBM ·ͣओͳऀΛ ཧղ͠·͠ΐ͏
ΞδΣϯμ UISFFKTΛ͏ཧ༝ UISFFKTೖ %ϓϩάϥϛϯάUJQT ·ͱΊ
͡Ίʹ ͔͜͜ΒUJQTूʹͳΓ·͢ ൃදऀ͕ࣗ࡞ήʔϜΛ࡞ΔࡍʹಘͨݟΛ ڞ༗͠·͢ ࠷ऴతʹ͜Ε͘Β͍࡞ΕΔΑ͏ʹͳΓ·͢ IUUQTHPPHMEOZ23#
࡞ྫ खલຯͰ͕͢ʣ
࡞ྫͷίʔυ IUUQTHJUIVCDPNLBJEPVKJTUVEZUISFF KTDPNNJUTNBTUFS
UJQTҰཡ ϏϧϘʔυΛ࣮ݱ͢Δ εΧΠϘοΫεΛ࣮ݱ͢Δ ࣗ࡞ϞσϧΛಡΈࠐΉ
UJQTҰཡ ϏϧϘʔυΛ࣮ݱ͢Δ εΧΠϘοΫεΛ࣮ݱ͢Δ ࣗ࡞ϞσϧΛಡΈࠐΉ
ɹϏϧϘʔυͱ ৗʹΧϝϥͷํʹදࣔ͞ΕΔɺ ൘ঢ়ͷΦϒδΣΫτ %ۭؒʹ࣍ݩը૾Λද͍ࣔͤͨ࣌͞ʹɺ Α͘ΘΕ͍ͯ·͢ ࡞ྫͩͱɺϩϘοτɺ͕ϏϧϘʔυͰ͢ ࣮ࡏͷήʔϜͩͱɺϖʔύʔϚ˓Φ31(ɺ εύ˓ϘͳͲ
ϏϧϘʔυ࣮ํ๏ ϏϧϘʔυͷRVPUBOJPO ճస֯ ʹɺ ΧϝϥͷRVPUBOJPOΛηοτ͠·͠ΐ͏ ˢ্هॲཧΛΔͷɺήʔϜϧʔϓͷதͰ͢ mesh.quaternion.copy(camera.quaternion);
ͬͱৄ͍͠ίʔυྫ IUUQTHJUIVCDPNLBJEPVKJTUVEZUISFF KTCMPCNBTUFSTSDTUBHFTDIPPMTDIPPM CVJMEUSFFCJMMCPBSEKT
UJQTҰཡ ϏϧϘʔυΛ࣮ݱ͢Δ εΧΠϘοΫεΛ࣮ݱ͢Δ ࣗ࡞ϞσϧΛಡΈࠐΉ
εΧΠϘοΫεͱ ശͷଆʹԕܠͷը૾ΛషΓ͚ͯɺ ͞ແݶͷੈքʹ͍ΔΑ͏ʹࡨ֮ͤ͞Δख๏ ࡞ྫͰۭɺ໘ͳͲʹεΧΠϘοΫεΛ༻
εΧΠϘοΫε࡞ํ๏ ԕܠը૾ΛࣗͰඳ͘ͷେมͳͷͰɺ 5FSSBHFOΛ͍·͠ΐ͏ 5FSSBHFOͱ%Ͱ৭ʑͳܗΛ࡞Δ͜ͱ͕ Ͱ͖ΔιϑτͰ͢ ํ ্Լͷܭຕͷը૾Λ༻ҙ͠·͠ΐ͏
εΧΠϘοΫεը૾ྫ
۩ମతͳखॱ ʮ5FSBHHFOɺεΧΠϘοΫεʯͰάάΔͱ ݁ߏώοτ͠·͢ ݸਓతʹɺ͜ͷϒϩά͕Φεεϝ IUUQEIBUFOBOFKQ OBLBNVSB
UJQTҰཡ ϏϧϘʔυΛ࣮ݱ͢Δ εΧΠϘοΫεΛ࣮ݱ͢Δ ࣗ࡞ϞσϧΛಡΈࠐΉ
UISFFKTͷϞσϧϑΝΠϧ UISFFKTઐ༻ͷKTPOϑΝΠϧ͕͋Γ·͢ ༗໊ͳ%ιϑτʹݢฒΈUISFFKTઐ༻KTPOΛ ॻ͖ग़͢ϓϥάΠϯ͕͋Γ·͢ .FUBTFRVPJBɺ#MFOEFSΛࢼ͠·͕ͨ͠ɺ ͲͪΒ҆ఆ͠·ͤΜͰͨ͠
.FUBTFRVPJB ݴΘͣͱΕͨࠃ࢈ϞσϦϯάπʔϧ ඪ४ͰUISFFKTઐ༻KTPOͷग़ྗʹରԠ ςΫενϟ্͕Լٯ͞·ʹදࣔ͞ΕΔҎ֎ɺ ಛʹ͋Γ·ͤΜͰͨ͠
.FUBTFRVPJB UISFFKT ࣮ࡍͷঢ়
ෆ۩߹ͷճආࡦ ը૾ϑΝΠϧΛ্Լɺࠨӈٯʹ͢Ε ͳ͘දࣔͰ͖·͢ .FUBTFRVPJBެࣜ##4Ͱ࣭ͨ͠Βɺ ˢͷΑ͏ͳճΛ͖·ͨ͠
#MFOEFS ࠃࡍతʹ༗໊ͳ%ιϑτ ϑϦʔͳͷʹػೳ͕ϋΠΤϯυͳιϑτʹ ඖఢ͢Δ UISFFKTઐ༻KTPOΛॻ͖ग़͢ϓϥάΠϯ͕͋Δ ͕ɺͦͦϞσϧ͕දࣔ͞Εͳ͔ͬͨ
࠷ޙʹ͓·͚Ͱ
1SPKFDU%0("
1SPKFDU%PHBͱ ੵΈײ֮Ͱ%Ϟσϧ͕࡞ΕΔιϑτ ࠷ॳ͔Β༻ҙ͞Ε͍ͯΔύʔπ͕ଟͯ͘ɺ ૉਓͰͦΕͬΆ͍ͷ͕࡞ΕΔ ެࣜαΠτʹՃύʔπ͕͋ΔͷͰɺ શ෦ೖΕͨํ͕͍͍ ࡞ྫͷϩϘοτ͜ΕͰ࡞Γ·ͨ͠
None
None
None
ૉਓͰ ͜Ε͚ͩͷͷ͕ ࡞Ε·͢
%PHBҙ ͍ΘΏΔϩʔϙϦϞσϧͰͳ͍ͷͰɺ ήʔϜͰͦͷ··͏ʹෆ͖ ˢϏϧϘʔυͱͯ͠͏ͳΒશવ͋Γ ϝΧܥҎ֎গۤ͠ख ͔Δਓʹ%PHBͬͯΔͳͱҰൃͰόϨΔ
ΞδΣϯμ UISFFKTΛ͏ཧ༝ UISFFKTೖ %ϓϩάϥϛϯάUJQT ·ͱΊ
·ͱΊ UISFFKTͱ+BWB4DSJQUͰ؆୯ʹ%Λ ͏ͨΊͷϥΠϒϥϦͰ͋Δ UISFFKTʹऀ͕ͨ͘͞Μ͍ΔͷͰɺ ·ͣͦΕΒΛҰͭҰͭཧղ͠Α͏ .FUBTFRVPJBɺ5FSSBHFOɺ%PHBͳͲͰUISFFKT ༻ͷࣗ࡞ૉࡐΛͲΜͲΜ࡞Ζ͏
͝੩ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠