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
1人月で最高のUXを作り上げるまで DJ7誕生秘話
Search
Takaya Imagawa
March 18, 2020
Programming
3
1.3k
1人月で最高のUXを作り上げるまで DJ7誕生秘話
PWA Night 3/18
Takaya Imagawa
March 18, 2020
Tweet
Share
Other Decks in Programming
See All in Programming
NEWT Backend Evolution
xpromx
1
170
[Codecon - 2025] Como não odiar seus testes
camilacampos
0
100
なぜあなたのオブザーバビリティ導入は頓挫するのか
ryota_hnk
4
530
202507_ADKで始めるエージェント開発の基本 〜デモを通じて紹介〜(奥田りさ)The Basics of Agent Development with ADK — A Demo-Focused Introduction
risatube
PRO
5
1.3k
Claude Code派?Gemini CLI派? みんなで比較LT会!_20250716
junholee
1
760
顧客の画像データをテラバイト単位で配信する 画像サーバを WebP にした際に起こった課題と その対応策 ~継続的な取り組みを添えて~
takutakahashi
4
1.4k
QA x AIエコシステム段階構築作戦
osu
0
220
SwiftでMCPサーバーを作ろう!
giginet
PRO
2
210
코딩 에이전트 체크리스트: Claude Code ver.
nacyot
0
1k
Gemini CLI のはじめ方
ttnyt8701
1
110
「次に何を学べばいいか分からない」あなたへ──若手エンジニアのための学習地図
panda_program
3
680
ソフトウェア設計とAI技術の活用
masuda220
PRO
25
7k
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Docker and Python
trallard
45
3.5k
Agile that works and the tools we love
rasmusluckow
329
21k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
A better future with KSS
kneath
238
17k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
Transcript
1ਓ݄Ͱ࠷ߴͷUXΛ࡞Γ্͛Δ·Ͱ DJ7ੜൿ 5BLBZB*NBHBXB PWA Night 3/18
Takaya Imagawa • ͷITاۀۈ • SairiLabॴଐ • ඇσβΠφʔ ࣭ਵ࣌ϚγϡϚϩͰ ड͚͚͍ͯ·͢ʂ
marshmallow-qa.com/imataka7 @imataka7
DJ7ͱʁ
None
DJ7ͱʁ dj7.io • YouTubeΛಉ࣌ࢹௌ͢ΔαʔϏε ◦ ෳਓͰಉ͡ಈըΛಉ͡λΠϛϯάͰΈΔ • Qiitaͷհهࣄ 700͍͍Ͷ ◦
ެ։ޙ3ؒτϨϯυ1Ґ
ࠓճ͓͢Δ͜ͱ
͢͜ͱ • DJ7ͷ։ൃఔ • 1ϲ݄Ͱඞཁ࠷ݶͷUXΛ උ͑ΔʹͲ͏͢Δ͔ ͞ͳ͍͜ͱ • UI/UXͷࡉ͔͍ཧͷ
ΞδΣϯμ • DJ7ͷ։ൃఔ ◦ ։ൃલ ◦ ։ൃ1ि ʙ ։ൃ5ि ◦
ެ։ • ಘΒΕͨԠ • ·ͱΊ • ࠓޙͷల
։ൃલ
طଘͷಉظ࠶ੜαʔϏεͱͦͷ 1. MusicBot 2. CyTube 3. Vynchronize ͳͲ... ։ൃલ
MusicBot • DiscordͰ༻Ͱ͖Δπʔϧ (Discord ≒ Slack + Ի௨) • Ի௨தʹYouTubeΛBGMͱͯ͠ྲྀ͢͜ͱ͕Ͱ͖Δ
։ൃલ / ͍··Ͱͷಉ࣌ࢹௌ νϟοτཝΛλʔϛφϧͷΑ͏ʹ ༻ͯ͠ۂΛՃ͢Δ
CyTube, Vynchronize • WebͰYouTubeΛಉظ࠶ੜͰ͖ΔαʔϏε • 2, 3΄Ͳલ͔Β͋Δ • CyTubeຊޠ൛͋ΓɺҰఆͷϢʔβ͕ډΔ ։ൃલ
• ͍ํ͕ײత͡Όͳ͍ ◦ ಈըͷෳՃ͢Βग़དྷͳ͍ ◦ ࠶ੜͪۂͷฒͼସ͑͢Βࠔ • ͍Βͳ͍ػೳ͋Δ ◦
νϟοτ΄Μͱ͏ʹඞཁʁ ։ൃલ ͳͲɺڍ͛ͨΒຕڍʹ͍ͱ·͕ͳ͍ɾɾɾ
ຬͰ͖Δͷ͕ͳ͍
ຬͰ͖Δͷ͕ͳ͍ ➔ ͳΒɺࣗͰͭ͘Ζ͏
࣮ݱ͍ͨ͠ͷ • WebͰ༻Մೳ • Իָͷಉظ࠶ੜ ◦ YouTubeΛಉ࣌ʹݟΒΕΕྑ͍ • طଘαΠτͷෆຬΛղফɺ͍͘͢ •
PWAʹରԠ͢Δʂ • 1ϲ݄Ͱͭ͘Δʂʂ ◦ Ϣʔβ͕͔ͭ͘Ͳ͏͔खΛ͔͚ͯ࡞ΔલʹΘ͔Δ ։ൃલ
࣮ݱ͍ͨ͠ͷ • WebͰ༻Մೳ • Իָͷಉظ࠶ੜ ◦ YouTubeΛಉ࣌ʹݟΒΕΕྑ͍ • MusicBot /
طଘαΠτͷෆຬΛղফ • PWAʹରԠ͢Δʂ • 1ϲ݄Ͱͭ͘Δʂʂ ◦ Ϣʔβ͕͔ͭ͘Ͳ͏͔खΛ͔͚ͯ࡞ΔલʹΘ͔Δ ։ൃલ ಉظ࠶ੜΛΑΓۙʹʂʂ
։ൃεέδϡʔϧ 2020/01 ։ൃલ 1ि 2ि 3ि 4ि 5ि ɾٕज़બఆ ɾߏΛߟ͑Δ
ɾϓϩτλΠϓ ࡞ ɾඞཁͳػೳ ચ͍ग़͠ ɾػೳ࣮ ɾಈըՃ ɾׂΓࠐΈ ɾͳͲ... ɾσβΠϯ ɾϓϨΠϠʔ ɾΩϡʔ ɾཤྺ ɾͳͲ... ɾσβΠϯ ɾϞόΠϧ ɾτοϓϖʔδ ࡞ ɾಡΈࠐΈૣ͘ ͢Δௐ ɾ໊લܾΊΔ ɾυϝΠϯऔಘ ɾϩΰ࡞ ɾΞυηϯε ɾQiitaهࣄࣥච x 2 PoC ػೳͷ࡞ UI࡞ UIҎ֎ͰUXڧԽ ެ։
։ൃ1ि
։ൃεέδϡʔϧ 1週目 2週目 3週目 4週目 5週目 ・技術選定 ・構成を考える ・プロトタイプ 作成
・必要な機能 洗い出し ・必要な機能 洗い出し ・機能実装 ・動画追加 ・割り込み ・など... ・デザイン ・プレイヤー ・キュー ・履歴 ・など... ・デザイン ・モバイル ・トップページ 作成 ・読み込み早く する調整 ・名前決める ・ドメイン取得 ・ロゴ作成 ・アドセンス ・Qiita記事執筆 x 2 1週目 ・技術選定 ・構成を考える ・プロトタイプ 作成
PoC; αʔϏείϯηϓτʹՁ͋Δ͔ʁ
ϓϩτλΠϓ࡞ͷత ։ൃ1ि ΄Μͱ͏ʹधཁ͋Δͷ͔ʁ ಉظ࠶ੜͷ֓೦Λ͍͑ͨʂ
ٕज़બఆ • PWA ◦ WebΛΞϓϦͷΑ͏ͳ༻ײʹͯ͘͠ΕΔ ◦ ΫϩεϓϥοτϑΥʔϜͷରԠ͕ΊͬͪΌϥΫ • Vue.js ◦
HTML + TypeScript + CSSͰ͔͚Δͷ͕ྑ͍ ◦ ެࣜͷπʔϧΛ༻͢ΔͱPWAͷରԠ͕ϥΫ • Firebase ◦ FirestoreͷϦΞϧλΠϜ௨ػೳ͕ ಉظ࠶ੜͱ૬ੑ͕ྑ͍ ։ൃ1ि
None
ϙδςΟϒͳײΛΒ͑ͨ ➔ धཁͷ֬৴ ͬͯΒ͍ͳ͕Β ։ൃΛ͢͢ΊΔ͖͔͚ͬʹ
։ൃ2ि
։ൃεέδϡʔϧ 1週目 2週目 3週目 4週目 5週目 ・技術選定 ・構成を考える ・プロトタイプ 作成
・必要な機能 洗い出し ・必要な機能 洗い出し ・機能実装 ・動画追加 ・割り込み ・など... ・デザイン ・プレイヤー ・キュー ・履歴 ・など... ・デザイン ・モバイル ・トップページ 作成 ・読み込み早く する調整 ・名前決める ・ドメイン取得 ・ロゴ作成 ・アドセンス ・Qiita記事執筆 x 2 2週目 ・必要な機能 洗い出し ・機能実装 ・動画追加 ・割り込み ・など...
࠷ݶඞཁͳػೳͳʹ͔ʁ
ඞཁͳػೳΛચ͍ग़͠ • ͕࣌ؒͳ͍ɺͲΕ͜Ε࣮Ͱ͖ͳ͍ • Ͱɺ࠷ݶඞཁಧ͚Δ͖ػೳɾମݧͱʁ • αʔϏεͷझࢫ͔ΒͣΕͳ͍Α͏ͳػೳ • ࣮ࡍʹͬͯΒͬͯɺͳ͍ͱෆศʹײͨ͡Β࣮ ։ൃ2ि
ιϑτΣΞҰͭͷ͜ͱΛ্ख͘Δ • UNIXֶͱͯ͠༗໊ ͜ΕΛDJ7Ͱஔ͖͑Δͱɺ • αʔϏεͷझࢫಉظ࠶ੜ • ͜Ε͔Β֎ΕΔػೳͷ࣮͠ͳ͍ ◦ 例えば、コミュニケーションの機能は実装しない
◦ Discord, Slack, Spectrum, Line, Twitter.... ։ൃ2ि
࣮ͨ͠ػೳ • ࠶ੜঢ়ଶͷಉظ • Ұ࣌ఀࢭ • εΩοϓ • Իྔௐ •
Ωϡʔ ◦ Ճ ◦ আ ◦ ࠶ੜ͞Ε͍ͯΔۂͷೖΕସ͑ • γʔΫόʔૢ࡞ • ׂΓࠐΈ • ಈըͷݕࡧɾՃ ◦ ΩʔϫʔυɾURL ◦ ϓϨΠϦετ ◦ ෳՃՄೳ • ཤྺ ◦ ཤྺ͔ΒͷՃ • ෦ͷ࡞ • ϩάΠϯ ։ൃ2ि
ࢄγεςϜ • Firestore͕Ͱ͖Δͷσʔλͷอ࣋ͱߋ৽ͷ௨ͷΈ • Ϣʔβ͕ओମతʹߋ৽Λ͠ʹߦ͘Έ͕ඞཁ • αʔϏεͷߏΛখ͘͢͞Δ͜ͱʹޭͨ͠ ։ൃ2ि ঢ়ଶߋ৽ มߋ௨
ϦΞϧλΠϜੑΛߴΊΔ • Ͱ͖Δ͚ͩݟ͍ͯΔͷΛҰॹʹ͢Δ • γʔΫόʔͷಉظ ◦ ΄͔ͷαΠτͰ෦ͷϗετ͚ͩͩͬͨΓɺͦͦग़དྷͳ͔ͬͨΓ ◦ ͯ͢ͷϢʔβ͕ฏʹߦ͑Δͷࠓճ͕ॳΊͯʁ •
࣌ࠁͷζϨΛิਖ਼͢Δ ◦ PCͷதͷ࣌ࠁࢥ͍ͬͯΔΑΓζϨ͍ͯΔ ◦ ϦΞϧλΠϜੑ֬อҎ֎ʹɺෆ۩߹ͷࢭʹͳͬͨ ։ൃ2ि
։ൃ3ि
։ൃεέδϡʔϧ 1ि 2ि 3ि 4ि 5ि ɾٕज़બఆ ɾߏΛߟ͑Δ ɾϓϩτλΠϓ ࡞
ɾඞཁͳػೳ ચ͍ग़͠ ɾඞཁͳػೳ ચ͍ग़͠ ɾػೳ࣮ ɾಈըՃ ɾׂΓࠐΈ ɾͳͲ... ɾσβΠϯ ɾϓϨΠϠʔ ɾΩϡʔ ɾཤྺ ɾͳͲ... ɾσβΠϯ ɾϞόΠϧ ɾτοϓϖʔδ ࡞ ɾಡΈࠐΈૣ͘ ͢Δௐ ɾ໊લܾΊΔ ɾυϝΠϯऔಘ ɾϩΰ࡞ ɾΞυηϯε ɾQiitaهࣄࣥච x 2 3ि ɾσβΠϯ ɾϓϨΠϠʔ ɾΩϡʔ ɾཤྺ ɾͳͲ...
UXΛϢʔβʹϦʔν͢Δʹʁ
σβΠϯͷํ ։ൃ3ि ࣮ࡍʹ༻ͯ͠Βͬͯ ͲͷػೳඞཁͰ͋Δ͜ͱ࣮ূࡁΈ ݟͨΛ՚͔ʹ͢ΔͷͰͳͯ͘ɺ Ϣʔβ͕֤ػೳʹΞΫηε͍͢͠Α͏ʹ͢Δ
ᶅ ը໘Λ͘͏ ᶃ ػೳͷத৺Ωϡʔ ΞΫηε͘͢͢͠Δʹʁ ։ൃ3ि ᶆ ΫϦοΫΛগͳ͘ ᶄ ػೳΛ͍ۙॴʹ
։ൃ3ि
։ൃ3ि ݕࡧ ཤྺ Ωϡʔ ϓϨΠϠʔ
։ൃ3ि ݕࡧ ཤྺ Ωϡʔ த৺ʹஔ ϓϨΠϠʔ
։ൃ3ि ݕࡧ ཤྺ Ωϡʔ Ճ Ճ ಈըͷՃΛ͍ۙॴʹ ϓϨΠϠʔ
։ൃ3ि φϏήʔγϣϯόʔΛ ஔ͢ΔͷԼ͚ͩ ͜ͷ෦Λ࠷େݶ͘ ϓϨΠϠʔ
։ൃ3ि φϏήʔγϣϯόʔΛ ஔ͢ΔͷԼ͚ͩ ͜ͷ෦Λ࠷େݶ͘ ڱ͗͢ʂʂʂ
։ൃ3ि φϏήʔγϣϯόʔΛ ஔ͢ΔͷԼ͚ͩ ͜ͷ෦Λ࠷େݶ͘ ϓϨΠϠʔ
։ൃ3ि ͋ΒΏΔػೳΛ 1ΫϦοΫͰߦ͑ΔΑ͏ʹ
࣮ݱ͍ͨ͠ͷ • WebͰ༻Մೳ • Իָͷಉظ࠶ੜ ◦ YouTubeΛಉ࣌ʹݟΒΕΕྑ͍ • MusicBot /
طଘαΠτͷෆຬΛղফ • PWAʹରԠ͢Δʂ • 1ϲ݄Ͱͭ͘Δʂʂ ◦ Ϣʔβ͕͔ͭ͘Ͳ͏͔खΛ͔͚ͯ࡞ΔલʹΘ͔Δ ։ൃલ ࠶ܝ
ಈըΛͨ͠ཧ༝ • Ұ൪ͷ͖͔͚͕ͬMusicBot͔ͩͬͨΒԻָͷಉظ࠶ੜ͕ Ͱ͖ΕΑ͍ͱߟ͍͑ͯͨɻ • ͔͠͠։ൃΛ͍ͯͯ͠ɺҰॹʹ͍ͬͯΔ͏ͪʹ ಈըΛҙݟΛަΘ͠ͳ͕ΒݟΔ͜ͱͷָ͠͞Λͬͨɻ ◦ ͬͯΒ͍ͳ͕Β։ൃ͢Δྑ͕͞ग़ͨ •
ͰͬͺΓಈըΑΓɺԻָͷ࠶ੜ ◦ ࣮ࡍʹɺDJ7Ͱ࠷ॳ͔Βಈը͕࠶ੜ͞Ε͍ͯΔΘ͚Ͱͳ͍ ◦ ࠷ॳʹΞΫηε͢ΔͷԻָͷࢹௌɺΩϡʔͷૢ࡞ ։ൃ3ि
։ൃ4ि
։ൃεέδϡʔϧ 1ि 2ि 3ि 4ि 5ि ɾٕज़બఆ ɾߏΛߟ͑Δ ɾϓϩτλΠϓ ࡞
ɾඞཁͳػೳ ચ͍ग़͠ ɾඞཁͳػೳ ચ͍ग़͠ ɾػೳ࣮ ɾಈըՃ ɾׂΓࠐΈ ɾͳͲ... ɾσβΠϯ ɾϓϨΠϠʔ ɾΩϡʔ ɾཤྺ ɾͳͲ... ɾσβΠϯ ɾϞόΠϧ ɾτοϓϖʔδ ࡞ ɾಡΈࠐΈૣ͘ ͢Δௐ ɾ໊લܾΊΔ ɾυϝΠϯऔಘ ɾϩΰ࡞ ɾΞυηϯε ɾQiitaهࣄࣥච x 2 4ि ɾσβΠϯ ɾϞόΠϧ ɾτοϓϖʔδ ࡞ ɾಡΈࠐΈૣ͘ ͢Δௐ
UIҎ֎ͰUXΛߴΊΔʹʁ
ಉظ࠶ੜ·ͰͷಋઢΛ͘ • ग़ձͬͯ3ඵͰಉظ࠶ੜ • αΠτΛ։͘Ҏ֎ʹඞཁͳखଓ͖͕ͳ͍ ։ൃ4ि
ಡΈࠐΈͷ࣌ؒΛ͘ • ඞཁͳDOMͷੜΛগͳ͘ • Service Workerͷઃఆ ◦ ΩϟογϡͷϙϦγʔ ◦ όʔδϣϯΞοϓ
όοΫάϥϯυͰΔΑ͏ʹ ։ൃ4ि º 2000
։ൃ5ि
։ൃεέδϡʔϧ 1ि 2ि 3ि 4ि 5ि ɾٕज़બఆ ɾߏΛߟ͑Δ ɾϓϩτλΠϓ ࡞
ɾඞཁͳػೳ ચ͍ग़͠ ɾඞཁͳػೳ ચ͍ग़͠ ɾػೳ࣮ ɾಈըՃ ɾׂΓࠐΈ ɾͳͲ... ɾσβΠϯ ɾϓϨΠϠʔ ɾΩϡʔ ɾཤྺ ɾͳͲ... ɾσβΠϯ ɾϞόΠϧ ɾτοϓϖʔδ ࡞ ɾಡΈࠐΈૣ͘ ͢Δௐ ɾ໊લܾΊΔ ɾυϝΠϯऔಘ ɾϩΰ࡞ ɾΞυηϯε ɾQiitaهࣄࣥච x 2 5ि ɾ໊લܾΊΔ ɾυϝΠϯऔಘ ɾϩΰ࡞ ɾΞυηϯε ɾQiitaهࣄࣥච x 2
Ϣʔβʹҹ͚ΔͨΊʹʁ
αʔϏε໊ɺυϝΠϯɺϩΰ • ͲΕαΠτʹΞΫηε͢ΔલʹݟΔͷ ◦ ୈҰҹΛࠨӈ͢Δ • Α͘͏αʔϏεͳΒ໊લ͘ɺ؆ܿʹ ։ൃ5ि dj7.io
Qiitaͷهࣄࣥච (1ຊ) • 2݄ೖ͙ͬͯ͢ʹߘ • จࣈଟΊͰαʔϏεͷղઆΛॻ͍ͨ • ؾ࣋ͪτϨϯυ1ҐऔΔؾຬʑ 1ܦͬͨ݁Ռ... ͍͍Ͷ4ͭɺɺɺ
։ൃ5ि
Qiitaͷهࣄࣥච (2ຊ) • 1ຊͷهࣄͰαʔϏεͷՁ͕ΘΒͳ͔ͬͨ • ը૾ଟΊɺݴ༿ݣ͍Θ͔Γ͢͞ॏࢹ • TwitterͰએ ݁Ռ... ։ൃ5ि
Qiitaͷهࣄࣥච (2ຊ) ։ൃ5ि
ެ։ޙ
ಘΒΕͨԠ • ಉظ࠶ੜʹର͢Δ ◦ ໘ന͍ ◦ ͍ΖΜͳ༻్ʹ͑ͦ͏ ◦ ΄͍͠ͱࢥͬͯͨ ◦
طଘͷͭͱҧͬͯγϯϓϧ͔ͩΒ ଞͷਓʹનΊ͍͢ • ͍ΖΜͳ༻్Λߟ͑ͯ͘Εͨ ◦ ήʔϜͷϓϨΠͷৼΓฦΓ ◦ ͓٬͞Μͱͷଧͪ߹Θͤ ◦ VTuberͷհ ◦ ৽͍͠ۂɺಈըΛΔ͜ͱ͕ Ͱ͖Δॴʹ ެ։
;Γ͔͑Γ • ಉظ࠶ੜͷधཁʹؒҧ͍ͳ͔ͬͨ ◦ ࣮ࡍʹͬͯΒ͍ͳ͕Β։ൃͨ͠ͷ͕ޭΛͨ͠ • γϯϓϧʹಉظ࠶ੜΛָ͠ΜͰΒ͑ͨ ◦ ඞཁͳͷΛͪΌΜͱݫબ͔ͨ͠Β ◦
γϯϓϧʹͨ͜͠ͱʹΑͬͯझࢫʹϒϨ͕ͳ͔ͬͨ ެ։
;Γ͔͑Γ • ಉظ࠶ੜͷधཁʹݟޡΓͳ͔ͬͨ ◦ ࣮ࡍʹͬͯΒ͍ͳ͕Βͬͨͷ͕ޭΛͨ͠ • γϯϓϧʹಉظ࠶ੜΛָ͠ΜͰΒ͑ͨ ◦ ඞཁͳͷΛͪΌΜͱݫબ͔ͨ͠Β ◦
γϯϓϧʹͨ͜͠ͱʹΑͬͯझࢫʹϒϨ͕ͳ͔ͬͨ ◦ ͍ΖΜͳ༻్Λߟ͑ͯΒ͑ͨ ެ։ తΛਾ͑ͯ։ൃΛ͢͢ΊΔ͜ͱͷ ॏཁ͞Λ࠶֬ೝͰ͖ͨ ಉظ࠶ੜΛۙʹͰ͖ͨ
·ͱΊ 1. ΞΠσΞͷՁΛূ໌͠Α͏ 2. ඞཁͳػೳΛߟ͑Α͏ 3. ਓʹͬͯΒ͓͏ 4. UI࣮ͨ͠ػೳʹΞΫηε͍͢͠ͷΛ࡞Ζ͏ 5.
αʔϏεͷଘࡏΛप͠Α͏ + 1ਓ݄Ͱ࡞͠Α͏ ެ։ޙ
https://trello.com/b/NRLsPQ4Z/sairilab-dj7
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ dj7.io @imataka7 Special Thanks: SairiLab Members
SairiLabͱʁ ݸਓ։ൃऀ͕ू·ΔίϛϡχςΟ 2020ʮ1ਓ݄1ͭҎ্ͷαʔϏεϩʔϯνʯͱ͍͏աࠅͳඪ https://discord.gg/hNWjDBd ܾࢉΧϨϯμʔ DJ7 ;Ή;Ή܅ Violets ג୳֦ு Sairi
Stalk