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
1.4k
3
Share
1人月で最高のUXを作り上げるまで DJ7誕生秘話
PWA Night 3/18
Takaya Imagawa
March 18, 2020
Other Decks in Programming
See All in Programming
LM Linkで(非力な!)ノートPCでローカルLLM
seosoft
0
470
Coding as Prompting Since 2025
ragingwind
0
820
AI-DLC Deep Dive
yuukiyo
7
1.3k
PHP でエミュレータを自作して Ubuntu を動かそう
m3m0r7
PRO
2
180
PHPのバージョンアップ時にも役立ったAST(2026年版)
matsuo_atsushi
0
300
PHP で mp3 プレイヤーを実装しよう
m3m0r7
PRO
0
250
CursorとClaudeCodeとCodexとOpenCodeを実際に比較してみた
terisuke
1
420
UIの境界線をデザインする | React Tokyo #15 メイントーク
sasagar
1
280
TiDBのアーキテクチャから学ぶ分散システム入門 〜MySQL互換のNewSQLは何を解決するのか〜 / tidb-architecture-study
dznbk
1
160
VueエンジニアがReactを触って感じた_設計の違い
koukimiura
0
170
Going Multiplatform with Your Android App (Android Makers 2026)
zsmb
2
390
「速くなった気がする」をデータで疑う
senleaf24
0
170
Featured
See All Featured
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
64
53k
Writing Fast Ruby
sferik
630
63k
The Cult of Friendly URLs
andyhume
79
6.8k
Believing is Seeing
oripsolob
1
110
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
[SF Ruby Conf 2025] Rails X
palkan
2
940
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
240
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1k
The Curious Case for Waylosing
cassininazir
0
300
We Are The Robots
honzajavorek
0
210
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