Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SVGアニメーションをやってみたら結構いい感じにできた話
Search
inureo
April 23, 2015
Programming
1
150
SVGアニメーションをやってみたら結構いい感じにできた話
inureo
April 23, 2015
Tweet
Share
More Decks by inureo
See All by inureo
IGNITION: What we did to provide a high-quality experience
inureo
0
96
リアルタイム回答集計システムを作って、実際にイベントで使った話
inureo
1
830
はじめてのexpress+socket.io
inureo
1
4.1k
Other Decks in Programming
See All in Programming
go.mod、DockerfileやCI設定に分散しがちなGoのバージョンをまとめて管理する / Go Connect #3
arthur1
10
2.4k
僕がつくった48個のWebサービス達
yusukebe
18
17k
CSC305 Lecture 13
javiergs
PRO
0
130
レガシーな Android アプリのリアーキテクチャ戦略
oidy
1
170
詳細解説! ArrayListの仕組みと実装
yujisoftware
0
480
Amazon Neptuneで始めてみるグラフDB-OpenSearchによるグラフの全文検索-
satoshi256kbyte
4
330
Realtime API 入門
riofujimon
0
110
Jakarta Concurrencyによる並行処理プログラミングの始め方 (JJUG CCC 2024 Fall)
tnagao7
1
230
Webの技術スタックで マルチプラットフォームアプリ開発を可能にするElixirDesktopの紹介
thehaigo
2
920
GCCのプラグインを作る / I Made a GCC Plugin
shouth
1
150
gopls を改造したら開発生産性が高まった
satorunooshie
8
240
/←このスケジュール表に立ち向かう フロントエンド開発戦略 / A front-end development strategy to tackle a single-slash schedule.
nrslib
1
590
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
43
13k
Designing Experiences People Love
moore
138
23k
Into the Great Unknown - MozCon
thekraken
31
1.5k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
The Invisible Side of Design
smashingmag
297
50k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
107
49k
Adopting Sorbet at Scale
ufuk
73
9k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Measuring & Analyzing Core Web Vitals
bluesmoon
1
40
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Teambox: Starting and Learning
jrom
132
8.7k
Transcript
SVGΞχϝʔγϣϯΛͬͯΈͨΒ ݁ߏ͍͍ײ͡ʹͰ͖ͨ גࣜձࣾnanapi ख௩ ྄ @inureo
ࣗݾհ ख௩ ྄ @inureo גࣜձࣾnanapi ΤϯδχΞ - άϥϑΟοΫσβΠϯͷઐֶߍΛଔۀ - Web੍࡞ձࣾ
5 - 201310݄ nanapiʹΤϯδχΞͱͯ͠ೖࣾ དྷྺ ※ ݩʑσβΠφʔͳͷͰϑϩϯτपΓ͕ಘҙ ϝΠϯͷۀͰRailsʴTypeScript+Markup ɹCapybara+PoltergeistͰE2Eςετ͕͖ʹͳΔ
ࠓ͍͑ͨ͜ͱ 47(Ξχϝʔγϣϯ ݁ߏΑ͘ͳ͍ʁ
ࠓ͍͑ͨ͜ͱ ࠓճ47(Λಈతʹ ಈ͔ͯ͠Έ͓ͨΛ͠·͢ʂ
1. SVGΞχϝʔγϣϯ࡞ͬͯΔͳ͏ 2. SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ 3. canvasͱൺͯΈΔ 4. ·ͱΊ ࠓͷΞδΣϯμ
1. SVGΞχϝʔγϣϯ࡞ͬͯΔͳ͏ 2. SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ 3. canvasͱൺͯΈΔ 4. ·ͱΊ ࠓͷΞδΣϯμ
SVGΞχϝʔγϣϯ࡞ͬͯΔͳ͏ ԿΛ࡞ͬͯΔͷ͔
SVGΞχϝʔγϣϯ࡞ͬͯΔͳ͏ InTHEnetͷΦʔϓχϯάΞχϝʔγϣϯ InTHEnetͱ ౦ژϝτϩΦʔϓϯσʔλίϯςετʹԠืͨ͠ʮϝτ ϨϙʯɺYahoo!ϓϩτλΠϓίϯςετ’14 Ͱ४άϥ ϯϓϦɾUIΛ֫ಘͨ͠ʮϋϛΨίʯΛ࡞ͬͨνʔϜ
SVGΞχϝʔγϣϯ࡞ͬͯΔͳ͏ InTHEnetͷΦʔϓχϯάΞχϝʔγϣϯ InTHEnetͱ ౦ژϝτϩΦʔϓϯσʔλίϯςετʹԠืͨ͠ʮϝτ ϨϙʯɺYahoo!ϓϩτλΠϓίϯςετ’14 Ͱ४άϥ ϯϓϦɾUIΛ֫ಘͨ͠ʮϋϛΨίʯΛ࡞ͬͨνʔϜ σϞ
SVGΞχϝʔγϣϯ࡞ͬͯΔͳ͏ *MMVTUSBUPSͷϊϦ͕௨͡Δ ɹɹɹɹɹ⾪ ɹɹTWHKTͱ͍͏ศརͳϥΠϒϥϦ ɹɹɹɹɹ⾫ ࠲ඪυϦϒϯΘ͔Γ͍͢ ɹɹɹ⾪ ɹɹԿΑΓ͍ܰ ɹɹɹ⾫ ʊਓਓਓਓਓਓʊ
ʼɹఱ࠽͔Αɹʻ ʉ?:?:?:?:?ʉ
1. SVGΞχϝʔγϣϯ࡞ͬͯΔͳ͏ 2. SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ 3. canvasͱൺͯΈΔ 4. ·ͱΊ ࠓͷΞδΣϯμ
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ ྑ͍ͱݴͬͯ Կ͕͍͍ͷ͔ʁ ͭ͋ΔΑʂ
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ 47(+4͕ศརʂ 47(+4ͱ͍͏ϥΠϒϥϦ͕͋ͬͯɺͦΕΛ͏ͱ DBOWBTฒʹ؆୯ʹ47(Λѻ͏͜ͱ͕Ͱ͖Δʂ
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ TWH47( TFMFDUPS TJ[F
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ TWH47( TFMFDUPS TJ[F b ඳը͢Δ47(Λઃఆ͢ΔͰʔ
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ TWH47( TFMFDUPS TJ[F b ඳը͢Δ47(Λઃఆ͢ΔͰʔ TWHQPMZHPO
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ TWH47( TFMFDUPS TJ[F b ඳը͢Δ47(Λઃఆ͢ΔͰʔ TWHQPMZHPO
ࡾ֯Ͱ͖ͪΌ͏ʜ
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ TWH47( TFMFDUPS TJ[F b ඳը͢Δ47(Λઃఆ͢ΔͰʔ TWHQPMZHPO
ࡾ֯Ͱ͖ͪΌ͏ʜ TWHSFDU
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ TWH47( TFMFDUPS TJ[F b ඳը͢Δ47(Λઃఆ͢ΔͰʔ TWHQPMZHPO
ࡾ֯Ͱ͖ͪΌ͏ʜ TWHSFDU ࢛֯Ͱ͖ͪΌ͏ʜQYQYͷʜ
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ TWH47( TFMFDUPS TJ[F b ඳը͢Δ47(Λઃఆ͢ΔͰʔ TWHQPMZHPO
ࡾ֯Ͱ͖ͪΌ͏ʜ TWHSFDU ࢛֯Ͱ͖ͪΌ͏ʜQYQYͷʜ TWHSFDU Y Z pMM b⒎⒎⒎` TUZMF bPQBDJUZ`
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ TWH47( TFMFDUPS TJ[F b ඳը͢Δ47(Λઃఆ͢ΔͰʔ TWHQPMZHPO
ࡾ֯Ͱ͖ͪΌ͏ʜ TWHSFDU ࢛֯Ͱ͖ͪΌ͏ʜQYQYͷʜ TWHSFDU Y Z pMM b⒎⒎⒎` TUZMF bPQBDJUZ` QYਖ਼ํܗ͔ͭ࠲ඪ͕ Ͱಁ໌ͳ࢛͕֯Ͱ͖Δ
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ ͪΖΜఆٛϑΝΠϧ͋ΔͷͰ 5ZQFTDSJQU͔͚ΔΑ
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ ΠϥϨͷਤܗΛͦͷ··͑Δʂ *MMVTUSBUPSͰਤܗΛ࡞ͬͯ47(Ͱอଘ͢Εɺ ෳࡶͳਤܗ1PMZHPOܗࣜʹͳΔͷͰ͍͍͢ʂ
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ ΠϥϨͷਤܗΛͦͷ··͑Δʂ *MMVTUSBUPSͰਤܗΛ࡞ͬͯ47(Ͱอଘ͢Εɺ ෳࡶͳਤܗ1PMZHPOܗࣜʹͳΔͷͰ͍͍͢ʂ ͨͩ͠ɺɺ
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ ಈతʹ࡞Δ߹ ࠲ඪΛྻͰ࣋ͭͷͰਏ͍
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ ॻ͖ग़࣌͠ҙ 47(ॻ͖ग़࣌͠ʹ࠲ඪͷ খͷܻΛ૿ͯ͠ ͓͔ͳ͍ͱ൵͘͠ͳΔ
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ খΛ૿͞ͳ͍ͱ͜͏ͳΔΑ σϞ
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ খΛ૿͢ͱ͜͏ͳΔΑ σϞ
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ ૿ͯ͠ղܾ͠ͳ͍͜ͱ͋Δ
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ ͦ͏͍͏࣌*MMVTUSBUPSΈ͍ͨʹ ઢΛ͚ͭͯղܾ͢Δͱૣ͍ʜ TUZMF TUSPLF ⒎⒎⒎ TUZMF TUSPLFXJEUI
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ Ξχϝʔγϣϯ؆୯ʂ TWH@FMFNFOU BOJNBUF EVSBUJPO FBTJOH EFMBZ NPWF Y
Z ͜Ε͚ͩͰ͵Δ͵Δͬͱಈ͍ͪΌ͏ʜ
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ Ξχϝʔγϣϯ؆୯ʂ TWH@FMFNFOU BOJNBUF EVSBUJPO FBTJOH EFMBZ NPWF Y
Z ͜Ε͚ͩͰ͵Δ͵Δͬͱಈ͍ͪΌ͏ʜ ͔͠ɺɺ
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ ϨεϙϯγϒʹͰ͖ͪΌ͏ʂ *MMVTUSBUPSͷάϧʔϓԽͷΑ͏ʹɺ ΞχϝʔγϣϯΛHͰғͬͯάϧʔϓԽ͢Εɺ άϧʔϓશମΛTDBMFϝιουͰ֦େͰ͖ΔͷͰɺ DBOWBTͱҧͬͯɺࡉ͔͍ௐΛ͠ͳ͍͍ͯ͘ʂ
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ 1. SVG.JS͕ศརʂ 2. ΠϥϨͷਤܗͦͷ··͑Δʂ 3. Ξχϝʔγϣϯ͕؆୯ʂ ·ͱΊ
SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ 1. SVG.JS͕ศརʂ 2. ΠϥϨͷਤܗͦͷ··͑Δʂ 3. Ξχϝʔγϣϯ͕؆୯ʂ ·ͱΊ ͱ͍͑ࠓճ*O5)&OFUͷϩΰͱ 47(Ξχϝʔγϣϯͷ૬ੑ͕
Α͔ͬͨײ͕ڧ͍ͷͰࢀߟ·Ͱʹʂ
1. SVGΞχϝʔγϣϯ࡞ͬͯΔͳ͏ 2. SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ 3. canvasͱൺͯΈΔ 4. ·ͱΊ ࠓͷΞδΣϯμ
canvasͱൺͯΈΔ
canvasͱൺͯΈΔ DBOWBTॻ͍ͨ͜ͱ ͳ͔ͬͨʜ
canvasͱൺͯΈΔ ͰൺͯΈΔ w ϙΠϯτΛࢦఆͯ͠ΦϒδΣΫτ͕ඳըͰ͖Δ w $44Ͱมߋ͕Մೳ w ͭͷ1PMZHPOɺ3FDUɺ1BUI͕%0.ཁૉ w ֦େ͕؆୯ʢஔҐஔཁ੍ޚʣ
ϝϦοτ w ΦϒδΣΫτ͕ͭͣͭ%0.ʹͳΔͷͰɺΦϒ δΣΫτ͕૿͑Δͱॏͦ͏ σϝϦοτ
1. SVGΞχϝʔγϣϯ࡞ͬͯΔͳ͏ 2. SVGΞχϝʔγϣϯΛ࡞ΔϙΠϯτ 3. canvasͱൺͯΈΔ 4. ·ͱΊ ࠓͷΞδΣϯμ
·ͱΊ IllustratorϊϦͰͰ͖ΔͷͰ ෑډָ͕͍͍͠͠Αʙʂ օͰSVGΞχϝʔγϣϯ͠Α͏ʂ Sin! Cos! Tan!
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠