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.2k
1人月で最高のUXを作り上げるまで DJ7誕生秘話
PWA Night 3/18
Takaya Imagawa
March 18, 2020
Tweet
Share
Other Decks in Programming
See All in Programming
Tailwind CSSを本気でカスタマイズする方法
fsubal
13
5.3k
コーンフレークから始める モデリング会話入門
ogurotakayuki
0
370
if constexpr文はテンプレート世界のラムダ式である
faithandbrave
3
650
単体テストを書かない技術 #phpcon_odawara
o0h
PRO
27
8.3k
初心者のためのRubyKaigi入門/RubyKaigi Introduction
a_matsuda
2
780
Let's learn code review
riofujimon
2
420
educure_カリキュラム生操作マニュアル.pdf
linew_official
0
810
検証も兼ねて個人開発でHonoとかと向き合った話
hanetsuki
1
1.1k
StoreKit2によるiOSのアプリ内課金のリニューアル
kangnux
0
110
try!Swift Tokyo 2024 参加報告 LT
akidon0000
1
220
ADRを一年運用してみた/adr_after_a_year
hanhan1978
7
2.4k
SwiftUIで使いやすいToastの作り方 / How to build a Toast system which is easy to use in SwiftUI
lovee
3
150
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
14
1.5k
Building Better People: How to give real-time feedback that sticks.
wjessup
355
18k
Code Review Best Practice
trishagee
55
15k
The Cult of Friendly URLs
andyhume
74
5.7k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
244
20k
VelocityConf: Rendering Performance Case Studies
addyosmani
320
23k
Build The Right Thing And Hit Your Dates
maggiecrowley
24
2k
Agile that works and the tools we love
rasmusluckow
325
20k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
Making the Leap to Tech Lead
cromwellryan
124
8.5k
Stop Working from a Prison Cell
hatefulcrawdad
266
19k
Building Applications with DynamoDB
mza
88
5.6k
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