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
自作サービスProspectsWatcherの開発報告
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
KishiKyosuke(Kyo18)
November 18, 2022
Programming
0
93
自作サービスProspectsWatcherの開発報告
KishiKyosuke(Kyo18)
November 18, 2022
Tweet
Share
More Decks by KishiKyosuke(Kyo18)
See All by KishiKyosuke(Kyo18)
Railsのオートリロード機能の仕組み
kishikyousuke
0
17
Railsアップグレード
kishikyousuke
0
71
Terraform超超入門
kishikyousuke
0
150
OAuthと仲良くなりたかった
kishikyousuke
0
1.2k
Other Decks in Programming
See All in Programming
Oxlintはいいぞ
yug1224
5
1.4k
要求定義・仕様記述・設計・検証の手引き - 理論から学ぶ明確で統一された成果物定義
orgachem
PRO
1
230
AIと一緒にレガシーに向き合ってみた
nyafunta9858
0
250
疑似コードによるプロンプト記述、どのくらい正確に実行される?
kokuyouwind
0
390
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
230
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
2.5k
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
200
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
21
7.4k
MUSUBIXとは
nahisaho
0
140
2026年 エンジニアリング自己学習法
yumechi
0
140
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
今から始めるClaude Code超入門
448jp
8
9.1k
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Statistics for Hackers
jakevdp
799
230k
Discover your Explorer Soul
emna__ayadi
2
1.1k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
120
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Into the Great Unknown - MozCon
thekraken
40
2.3k
ラッコキーワード サービス紹介資料
rakko
1
2.3M
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
400
Utilizing Notion as your number one productivity tool
mfonobong
3
220
Producing Creativity
orderedlist
PRO
348
40k
Why Our Code Smells
bkeepers
PRO
340
58k
Transcript
৽ਓݚमՌใࠂ ࣗ࡞αʔϏεProspectsWatcherͷ։ൃ ؛ ګี 2021/02/12
͘͡ • ࣗݾհ • ݚमͷ༰ • ࣗ࡞αʔϏεProspectsWatcherʹ͍ͭͯ • ։ൃͷதͰۤ࿑ͨ͠ •
ݚमΛ௨ֶͯ͠Μͩ͜ͱ • ࠓޙͷ՝
ݚमͷ༰ʹ͍ͭͯ ݚमͷ༰ → ࣗ࡞αʔϏε → ۤ࿑ͨ͜͠ͱ → ݚमͰͷֶͼ → ࠓޙͷ՝
ݚमͷ༰ • FjordBootCampͷΧϦΩϡϥϜͷҰͰ͋Δࣗ࡞αʔϏε։ൃΛݚम ͷதʹΈࠐΜͰ͍ͨ • 12/1ʙ1/15·Ͱࣗ࡞αʔϏε։ൃʹऔΓΉ • ฒߦͯ͠ϑΟϤϧυͷεΫϥϜ։ൃʹऔΓΉ • 1ϲ݄Ͱࣾൃද͕Ͱ͖Δܗʹ͢Δ͜ͱΛඪͱͨ͠
ࣗ࡞αʔϏε։ൃͷྲྀΕ ※ൃදલʹͦΕͬΆ͘ฒͼସ͑ͯࡱӨͨ͠ͷͰ͢ 1ɽIssueͷ࡞ͱऔΓΉIssueͷબ
2ɽػೳͷ࣮ɺPull Requestͷ࡞ ࣗ࡞αʔϏε։ൃͷྲྀΕ
3ɽίʔυϨϏϡʔɺࢦఠͷमਖ਼ ࣗ࡞αʔϏε։ൃͷྲྀΕ
4ɽReviewApproveޙMargeɺεςʔδϯάڥʹσϓϩΠ 1ʹΔˠ ࣗ࡞αʔϏε։ൃͷྲྀΕ
औΓΜͩIssueɿ38݅ ࡞ͨ͠PRɿ36ݸ ։ൃ࣮
ࣗ࡞αʔϏε ProspectsWatcherʹ͍ͭͯ ݚमͷ༰ → ࣗ࡞αʔϏε → ۤ࿑ͨ͜͠ͱ → ݚमͰͷֶͼ →
ࠓޙͷ՝
ͲͷΑ͏ͳαʔϏεΛ࡞Δ͔ʁ ͋ͳ͕ͨࣗͷΛղܾ͢Δͱ͖ɺ͋ͳ͕ͨຊؾʹͳΔπʔϧΛ࡞Γ·͢ɻ ΔؾɾΩʔϫʔυͰ͢ɻ ͱͭ·Γɺ͋ͳ͕ͨຊʹ͍͍ͨɺຊʹΑ͍͖͍ͯͨ͘͠ɺͱࢥ͏ ͜ͱͰ͢ɻͦͯ͠ɺಉ༷ʹଞͷਓʹΛ༩͑Δํ๏ʹͳΓ·͢ɻ TJHOBMTz(FUUJOH3FBMzΑΓҾ༻ →ϓϩٿʹؔ͢ΔπʔϧΛ࡞Ζ͏❗
ࣗͷ͍͍ͨͷͱʁ • ֤νʔϜͷ͍ͯ͠ΔબखͷΛ֬ೝ͍ͨ͠ • ಠࣗͷࢹͰͷൺֱ͕ߦ͍͍ͨ • ্هͷχʔζΛຬͨ͢αʔϏε͕·ͩͳ͍… ࣗͷ͓ؾʹೖΓͷબखΛొͯ͠ Λ֬ೝɾൺֱͰ͖ΔαʔϏεΛ࡞Ζ͏❗
ϓϩٿӾཡαʔϏε ProspectsWatcher
ओͳػೳͱ͍ํ 1ɽؾʹͳΔબखΛొ νʔϜ͔Β୳͢ํ๏ͱɺબख໊Ͱ୳͢2छྨͷํ๏Λ༻ҙ
2ɽ͓ؾʹೖΓબखͷΛνΣοΫ ొͨ͠બख࠷৽ͷΛҰཡͰ֬ೝͰ͖Δʢσʔλຖߋ৽ʣ ֤ࢦඪ͝ͱʹιʔτ͢Δػೳ࣮ ओͳػೳͱ͍ํ
3ɽ1ର1ͰͷൺֱʹରԠ ೋਓͷબखͷΛݟ͘͢ൺֱදࣔ͢Δ͜ͱՄೳ ओͳػೳͱ͍ํ
࣮ࡍͷΞϓϦέʔγϣϯͰσϞ
։ൃͷதͰۤ࿑ͨ͠ ݚमͷ༰ → ࣗ࡞αʔϏε → ۤ࿑ͨ͜͠ͱ → ݚमͰͷֶͼ → ࠓޙͷ՝
σβΠϯ໘ 1. CSSϑϨʔϜϫʔΫͷબ 2. CSSϑϨʔϜϫʔΫͷӨڹൣғͷ͞ 3. શମͷϨΠΞτ৭
͋·ΓϝδϟʔͰͳ͍ ElementUIΛબ https://element.eleme.io/#/en-US ͦͷ݁Ռɾɾɾ 😫ίϯϙʔωϯτͷબࢶ͕গͳ͍ʂ 😫ʹର͢Δղܾࡦͷใগͳ͍ʂ 1ɽCSSϑϨʔϜϫʔΫͷબ
Railsͷviewʹ Materialize Vueίϯϙʔωϯτʹ Vuetify ༻ՕॴɿϔομʔɺϩάΠϯը໘ etc… ༻ՕॴɿνʔϜҰཡͷ֦ுύωϧɺλϒ etc… 1ɽCSSϑϨʔϜϫʔΫͷબ
࣮͢Δίϯϙʔωϯτ͕ܾ·͍ͬͯΔ߹ ֤ίϯϙʔωϯτʹରԠͰ͖Δ͔Λݕ౼ͯ͠ CSSϑϨʔϜϫʔΫΛબͿ
2ɽCSSϑϨʔϜϫʔΫͷӨڹൣғͷ͞
2ɽCSSϑϨʔϜϫʔΫͷӨڹൣғͷ͞ ݕূπʔϧΛͬͯௐͯΈΔͱɺMaterialize͕উखʹνΣοΫϘοΫεʹ "opacity: 0;" ΛՃ͍ͯ͠Δ͜ͱ͕໌ʂ
2ɽCSSϑϨʔϜϫʔΫͷӨڹൣғͷ͞ opacity1.0ʹॻ͖͑ɺpositioninitialͰଧͪফ͠Λ͢Δ͜ͱͰղܾ❗
CSSϑϨʔϜϫʔΫศར͕ͩ ༧ظ͠ͳ͍෦ʹద༻͞Εͯ͠·͏͜ͱ͋ΔͨΊ ҙͯ͠༻͢Δ
3ɽશମͷϨΠΞτ৭ BEFORE
3ɽશମͷϨΠΞτ৭ BEFORE
BEFORE 3ɽશମͷϨΠΞτ৭ ৭ຯ͕গͳ͍ ʮө͑ʯͳ͍ ཁૉͷҐஔ͕͔ΓͮΒ͍ ༨ന͕গͳ͍ ใͷڥ͕ͳ͍
3ɽશମͷϨΠΞτ৭ AFTER
3ɽશମͷϨΠΞτ৭ AFTER
ࠒ͔Β༻͍ͯ͠ΔαʔϏε ͦͷσβΠϯͷཪʹ͋ΔҙਤΛߟ͑ͳ͕Β ͏Α͏ʹ͢Δ
ػೳ໘ 1. ιʔτػೳͷ࣮ 2. νʔϜҰཡը໘ͷVueͷඳըͱඇಉظॲཧͷ λΠϛϯά
1ɽιʔτػೳͷ࣮ 😫 0ͰදͤΔͱͦ͏Ͱͳ͍͕͋Δʢଧ".000"ͱ"-"ผʣ
1ɽιʔτػೳͷ࣮ ग़ͷ༗ແͰ1ͱ0Λ֨ೲ͢ΔඇදࣔͷΧϥϜΛՃ ςʔϒϧදࣔͷࡍʹॳظιʔτ͓ͯ͘͜͠ͱͰԼ෦ʹݻఆ❗
2ɽνʔϜҰཡը໘ͷVueͷඳըͱඇಉظॲཧͷλΠϛϯά axiosͰඇಉظͰσʔλΛऔಘ͠ɺશબखΛදࣔ͢ΔॲཧΛ࡞ 😫 σʔλ͕nullͰ͋ΔͱେྔͷΤϥʔ͕ൃੜ…
2ɽνʔϜҰཡը໘ͷVueͷඳըͱඇಉظॲཧͷλΠϛϯά v-for νʔϜσʔλ VueΠϯελϯε ʹఆٛ બखσʔλ axiosͰඇಉظऔಘ props νʔϜҰཡը໘ͷVueίϯϙʔωϯτͷߏ ίϯϙʔωϯτ
ࢠίϯϙʔωϯτ
2ɽνʔϜҰཡը໘ͷVueͷඳըͱඇಉظॲཧͷλΠϛϯά ίϯϙʔωϯτͷcreateޙʹ࣮ߦ͞ΕΔඇಉظॲཧ͕ྃ͢Δલʹ ࢠίϯϙʔωϯτͷඳը͕ߦΘΕ͍ͯͨ Vue axios create ඳը σʔλऔಘॲཧ σʔλະऔಘ error!
σʔλऔಘྃ ࠶ඳը ࢠ ࢠ ಈ͍ͯΔͷʹ େྔͷΤϥʔ
2ɽνʔϜҰཡը໘ͷVueͷඳըͱඇಉظॲཧͷλΠϛϯά v-ifΛ༻ͯ͠ɺaxiosͷσʔλऔಘॲཧ͕ऴ͔ྃͯ͠Βࢠίϯϙʔωϯτ ͕ඳը͞ΕΔΑ͏ʹॲཧΛมߋͨ͠ Vue axios create σʔλऔಘॲཧ σʔλະऔಘ σʔλऔಘྃ ඳը
ࢠ v-if="false" v-if="true" ඳը ࢠ
Ұ݅མணɾɾɾʁ🤔
2ɽνʔϜҰཡը໘ͷVueͷඳըͱඇಉظॲཧͷλΠϛϯά v-for νʔϜσʔλ VueΠϯελϯε ʹఆٛ બखσʔλ axiosͰඇಉظऔಘ props νʔϜҰཡը໘ͷVueίϯϙʔωϯτͷߏ ίϯϙʔωϯτ
ࢠίϯϙʔωϯτ
2ɽνʔϜҰཡը໘ͷVueͷඳըͱඇಉظॲཧͷλΠϛϯά v-for props νʔϜҰཡը໘ͷVueίϯϙʔωϯτͷߏ ίϯϙʔωϯτ ࢠίϯϙʔωϯτ ·ͱΊͯAPI͔Βऔಘ͢Εྑ͍ͷͰʁ νʔϜσʔλ VueΠϯελϯε ʹఆٛ
બखσʔλ axiosͰඇಉظऔಘ
2ɽνʔϜҰཡը໘ͷVueͷඳըͱඇಉظॲཧͷλΠϛϯά v-for props νʔϜҰཡը໘ͷVueίϯϙʔωϯτͷߏ ίϯϙʔωϯτ ࢠίϯϙʔωϯτ νʔϜσʔλ VueΠϯελϯε ʹఆٛ બखσʔλ
axiosͰඇಉظऔಘ [ {team: "ڊਓ", batter: […], pitcher: […]}, {team: "ࡕਆ", batter: […], pitcher: […]}, {team: "த", batter: […], pitcher: […]}, … ] ͜ͷσʔλΛv-forͰճͤOKʂʂ
ݚमΛ௨ֶͯ͠Μͩ͜ͱ ݚमͷ༰ → ࣗ࡞αʔϏε → ۤ࿑ͨ͜͠ͱ → ݚमͰͷֶͼ → ࠓޙͷ՝
ݚमΛ௨ֶͯ͠Μͩ͜ͱ 1. DRYͳίʔυΛิͯ͠Γग़͢ 2. ίϛοτϝοηʔδɺPRͷdescriptionͷॻ͖ํ 3. GitHub Issueͷ༗༻ੑ
70ߦҎ্ͷίʔυ͕ RakeϑΝΠϧʹ💦 1ɽDRYͳίʔυΛΓग़͢
֤ॲཧΛΫϥεʹΓग़͠ modelsԼʹอ 70ߦҎ্ͷίʔυ͕ ͨͬͨ20ߦ΄Ͳʹ 1ɽDRYͳίʔυΛΓग़͢
2ɽίϛοτϝοηʔδɺPRͷઆ໌ͷॻ͖ํ • ͳͥͦͷมߋΛՃ͑ͨͷ͔ • PRͷతɺมߋ • ਃ͠ૹΓࣄ߲ • ύοέʔδgemͷใ
3ɽGitHub Issueͷ༗༻ੑ Θ͔Βͳ͍͜ͱ͕͋Δ߹ ͦͷύοέʔδͷIssueΛݟʹߦ͘ ։ൃऀࣗΒ͕ճ͍ͯ͠ΔͨΊ ৴པੑ͕ߴ͍ใ͕ଟ͍
ࠓޙͷ՝ ݚमͷ༰ → ࣗ࡞αʔϏε → ۤ࿑ͨ͜͠ͱ → ݚमͰͷֶͼ → ࠓޙͷ՝
ࠓޙͷ՝ɿެ։Ͱ͖Δܗʹ্͛ΔͨΊʹ • ςετΛॻ͘ • τοϓϖʔδͷ࣮ • ϨεϙϯγϒσβΠϯͷରԠ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠