Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
週一でリリースし続けるためのフロントエンドにおける不確実性との戦い方 / Developers...
Search
Satoshi Takeda
July 21, 2020
Technology
1.5k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
週一でリリースし続けるためのフロントエンドにおける不確実性との戦い方 / Developers Summit 2020 Summer C-4
Developers Summit 2020 Summer C-4 で発表した資料です。
Satoshi Takeda
July 21, 2020
More Decks by Satoshi Takeda
See All by Satoshi Takeda
フロントエンド、私的リリース戦略史 / Connehito Marche Online Front-End release strategy
tkdn
0
150
mediba におけるフロントエンド, JavaScript / mediba & JavaScript development
tkdn
0
870
未学習領域におけるチーム{学習,プレイ}とは /au Web portal frontend, BIT VALLEY -INSIDE- Vol.8
tkdn
2
3.7k
フロントエンド全身ちぎれ節/BIT VALLEY -INSIDE- Vol4
tkdn
0
120
Other Decks in Technology
See All in Technology
個別開発で終わらせない。 現場の課題をプロダクトの強さに変える StockmarkのFDE
ktkrhr
0
580
1万名の社員が使う認証基盤で どう信頼性を担保するか?
kairim0
0
210
Claude起点の仕様駆動開発
tanakaseiya
0
380
AIに攻撃される前に、AIに攻撃させる
tsuchikazu
0
150
AI時代だからこそ推したい!Gitコマンド再入門
munakata
0
140
カンファレンスに参加した後の浮遊感とセルフケア
pauli
0
310
SDDの運用にめげずに向き合った話
sansantech
PRO
0
130
AI Made Us Faster at Solving the Wrong Problems
marceloancelmo
0
160
20260930_Gemma4_Hands-on
tsho
0
220
転んだ話が背中を預ける理由になる / A_story_about_falling_down_gives_you_a_reason_to_watch_each_other_s_backs.pdf
pauli
3
210
今こそ知りたいAmplifyGen2
mkdev10
2
150
FactoryBotアンチパターン / factory_bot anti-patterns
toshimaru
0
130
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
420
Typedesign – Prime Four
hannesfritz
42
3.2k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
460
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
250
Designing Powerful Visuals for Engaging Learning
tmiket
1
590
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
460
Tell your own story through comics
letsgokoyo
1
1.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
390
Transcript
िҰͰϦϦʔε͠ଓ͚ΔͨΊͷ ϑϩϯτΤϯυʹ͓͚Δ ෆ࣮֬ੑͱͷઓ͍ํ %FWFMPQFST4VNNJU4VNNFS $ EFWTVNJ$ גࣜձࣾ NFEJCBా ་
ձࣾհ גࣜձࣾ NFEJCB IUUQTXXXNFEJCBKQ ઃཱ ݄ ैۀһ ໊ ։ൃऀ
໊ ݄ݱࡏ ,%%*גࣜձࣾͷ BVεϚʔτύεΛத৺ͱͨ͠ BVؔ࿈αʔϏεӡӦͷଞɺ෯͍ͰαʔϏ εΛల։͠ɺϢʔβʔ͕ΠϯλʔωοτΛ௨͡ ͯඞཁͳ࣌ʹඞཁͳใʹΞΫηεͰ͖Δڥ ͮ͘ΓͷͨΊͷαʔϏεΛఏڙ͍ͯ͠·͢ɻ
ా ་ !ULEO גࣜձࣾ NFEJCB։ൃ( ϑϩϯτΤϯυΤϯδχΞ ΫϥΠΞϯταΠυ #''ͷ։ൃΛ୲ جຊతʹϒϥβ͕ओઓ ɿऀ
ɿάϩʔεΤΫεύʔτφʔζגࣜձࣾ ɿάϩʔεɾΠϯΫגࣜձࣾ ɿגࣜձࣾ NFEJCB ࣗݾհ
• ൃද༰ • νʔϜʹᴥᴪΛͳ͘͠ಉ͡ޠኮͰΞʔΩςΫνϟΛΜͰ͍͘ • #'' Ͱѻ͍ͬͯΔ (SBQI2- "1* ͕ϝΠϯͷ
• ϒϥβͰ͓͖Δྫ֎ "1* ͷΤϥʔΛ 6* ͰϑΥϩʔ͢Δ • ఆظతʹϦϦʔε͢ΔΈɺͦͯ͠·ͱΊ • ͞ͳ͍͜ͱ • "QPMMP 4FSWFS ʹ͍ͭͯ৮Ε·͕͢ϥΠϒϥϦͷ͍ํ͠·ͤΜ • ΫϥΠΞϯταΠυͰ 3FBDU Λ͍ͬͯ·͕͢ൃදʹ΄΅ग़͖ͯ·ͤΜ • ରऀ • νʔϜͰͷίϛϡχέʔγϣϯʹΜͰ͍Δํ • ։ൃ్தͰᴥᴪ͕ੜ·Εͨ··ϦϦʔε͕ͨ͠ೲಘͰ͖ͳ͔ͬͨํ • #'' Ͱ "1* Λ։ൃ͍ͨ͠ϑϩϯτΤϯυدΓͷ։ൃऀ • "QPMMP 4FSWFS Λͬͨ͜ͱͷ͋Δ։ൃऀ ൃද༰ͱఆରऀ
ຊʹೖΔલʹ গ͚ͩ͠લఏɾഎܠͷ͓
ϓϩμΫτɿʮຖϙΠϯτʯ λʔήοτɿBVϢʔβʔ͕ϝΠϯ ϏδωεϞσϧɿ$1$ ใुܕࠂ ˞ ϦϦʔε࣌ୡײىΛతͱͯ͠ϏδωεΑΓମݧΛ༏ઌ ఏڙ͍ͨ͠ମݧ BV8FCϙʔλϧ͔Β࢝·ΔϙΠϯτΛஷΊΔମݧΛߏஙৢ͢Δ ϙΠϯτ ΠϯηϯςΟϒΛ༻͍ͯBV8FCϙʔλϧΛັྗԽ͢Δ
׆༻ͯ͠Β͍͍ͨ ϙΠϯτʹର͢ΔϦςϥγʔΛߴΊར׆༻ͯ͠Β͏ ʑୡײΛײ͡ͳ͕Βश׳Խͯ͠΄͍͠ ϓϩμΫτͱഎܠ
ϓϩμΫτɿʮຖϙΠϯτʯ औΓר͘ঢ়گ • ݄ BV8"--&5ϙΠϯτ͔Β 1POUBϙΠϯτ • ΩϟογϡϨεܾࡁ BV1": •
BV*%ΩϟϦΞϢʔβʔͷΈͳΒͣΦʔϓϯͳ *% ෆ࣮֬ͳཁૉ͕ଟ͍ɺ.71 .JOJNVN7JBCMF1SPEVDU • ϢʔβʔχʔζɾϙΠϯτͷೝ • Ͳ͏͍ͬͨػೳΛՃ͠श׳Խͯ͠Β͏͔ • ϢʔβʔΛͲͷ͘Β͍ݟࠐΉ͔ ❌ ݕূͷͨΊͷ࡞Γࣺͯɾ࡞Γ͠ ⭕ ͋Δఔͷਫ਼Λ্࣋ͬͨͰݕূ͠ͳ͕ΒҭͯΔ ϓϩμΫτͱഎܠ
ϓϩδΣΫτͷഎܠɿͷͮ͘Γϓϩηε Ϣʔβʔத৺ͷʮͷͮ͘ΓΧϯύχʔʯͱͯ͠தظతͳ ઓུΛܝ࣮͛ݱ͚ͨ৫ମ੍Λཱ֬͢Δ IUUQXXXNFEJCBKQOFXT • ࡢͷͮ͘ΓϓϩηεΛੜ͢Δ෦ॺॴଐ • ༷ʑͳ৬छʹΑΔϓϩηεɾจԽৢ • ΑΓྑ͍ϫʔΫϑϩʔͷࡧࢼߦ
ʮϓϩδΣΫτʹؔΘΔ ʹ ͷͮ͘ΓΛ͢Δʯਓ ͨͪͷϓϩηεΛΑΓΑ͍ͷʹ͢ΔϩʔϧϞσ ϧͱͳΔɺॳΊͯͷ ͷϓϩδΣΫτ ϓϩμΫτͱഎܠ
ϓϩδΣΫτͷഎܠɿϑϩϯτΤϯυͷڧԽ ະֶशྖҬʹ͓͚ΔνʔϜ\ֶश ϓϨΠ^ͱ !#*57"--&:*/4*%& 7PM • ݄ BV8FCϙʔλϧϦχϡʔΞϧ • /FYUKT
Y(SBQI2-"1* • ϑϩϯτΤϯυڧԽͷͨΊνʔϜମ੍มߋ • ϑϩϯτΤϯυ։ൃऀͷΛ૿͢ • αʔόʔαΠυ։ൃऀͷεΩϧస • /PEFKT ʹΑΔϑϩϯταʔόʔӡ༻ • 443 (SBQI2- "1* ϓϩμΫτͱഎܠ
͜͜·Ͱ͕લఏɾഎܠͷ͓
࣍ #''ʹকདྷతͳมߋ༰қੑΛ ઓུϞϒͰ߹ҙɾҙࢥܾఆ͢Δश׳ ઓज़ϢʔεέʔεۦಈͰ։ൃ͢Δ ΤϥʔΠϕϯτͱվળ
ΫϥΠΞϯτ ϒϥβͷྫ֎ʹదͳ 6* Λ #''ΫϥΠΞϯτʹ࠷దͳ (SBQI2- &SSPS ·ͱΊɿ҆ఆͨ͠ఆظతͳϦϦʔεͷ࣮ݱ ࣍
࣍ #''ʹকདྷతͳมߋ༰қੑΛ ઓུϞϒͰ߹ҙɾҙࢥܾఆ͢Δश׳ ઓज़ϢʔεέʔεۦಈͰ։ൃ͢Δ ΤϥʔΠϕϯτͱվળ
ΫϥΠΞϯτ ϒϥβͷྫ֎ʹదͳ 6* Λ #''ΫϥΠΞϯτʹ࠷దͳ (SBQI2- &SSPS ·ͱΊɿ҆ఆͨ͠ఆظతͳϦϦʔεͷ࣮ݱ ϞϒͰ߹ҙɾҙࢥܾఆ͢Δश׳
.71εϐʔυΛٻΊΒΕ͍ͯΔɺ͕͔͠͠ ʮʓʓΛΓ͍ͨʯ ʮ˚˚ࠓճͷείʔϓʹؚΊ͍ͨʯ ͱݴͬͯͨͳʜ֬ূͳ͍͕ʜ ॳظϦϦʔεʹඞཁͳ͜ͱʜʁ ԿΛٻΊΒΕ͍ͯͯԿΛ༏ઌ͖͢ʜʁ ೝࣝͷᴥᴪͬͯͳ͍͔ʜʁ ૬ޓʹೝͷΈ͕ͳ͍͔ʜʁ ϞϒͰ߹ҙɾҙࢥܾఆ͢Δश׳
ݟͨ͜ͱ͋Δͭʢݟͨ͘ͳ͍ͭʣ ϞϒͰ߹ҙɾҙࢥܾఆ͢Δश׳
ʮԿΛ࡞ͬͯԿΛఏڙ͢Δ༧ఆͳͷ͔Ұ୴ཧ͠Α͏ʯ • 10ɺσβΠφʔɺ։ൃऀɺεΫϥϜϚελʔҰಉհ͢Δ • શһ͕ಉ͡ޠኮͰͤΔ͕ʮϢʔεέʔεʯ • γεςϜ༻ޠൈ͖ʹͯ͠શһ͕ཧղͰ͖Δݴ༿ • ࣗͣͱ༏ઌݟ͑ͯ͘Δ ϞϒͰ߹ҙɾҙࢥܾఆ͢Δश׳
ϞϒͰ߹ҙɾҙࢥܾఆ͢Δश׳ ϢʔβʔछผʹΑͬͯϙΠϯτ͕͑ͳ͍ ։ൃऀ ͳΔ΄Ͳʁʢॳࣖ σβΠφʔ ར༻ෆՄͷϢʔβʔʹέΞ͢Δը໘͕ඞཁͦ͏ 10 ϞϒͰ߹ҙɾҙࢥܾఆ͢Δश׳
ϞϒͰ߹ҙɾҙࢥܾఆ͢Δश׳ γʔζϯʢ։࠵ظؒʣͬͯγʔϜϨεʹͣͬͱଓ͘ʁ ։ൃऀ Ͳ͏͍͏͜ͱʁ ϝϯςφϯεதɺγʔζϯ֎ͷߟྀ͕ඞཁͦ͏ 10 ։ൃऀ ࿈ܞઌϝϯςφϯεΛߟྀ͢Δͱඇ࿈ଓతͰͳ͍ͱਏͦ͏ ϞϒͰ߹ҙɾҙࢥܾఆ͢Δश׳
ಉ͡ͷΛɺಉ͡ઢͰɺνʔϜڞ௨ͷݴޠͰ࡞Δ ϞϒͰ߹ҙɾҙࢥܾఆ͢Δश׳
༏ઌɿ҆શੑɺকདྷੑͱεϐʔυ • ҆શੑ զʑϢʔβʔࢿ࢈Λ༬͔͍ͬͯΔ • কདྷੑͱεϐʔυ ։ൃظؒͱϦϦʔεޙͷมߋ༰қੑΛߟ͑Δ ྫ͑ʜ • 3%4ͷςʔϒϧ࠷খߏ
কདྷతʹςʔϒϧ͕૿͑Δ͔͠Εͳ͍ • ཧը໘࡞Βͳ͍ ӡ༻ඞཁ͕ͩ·ͣखӡ༻ • ӡ༻Ͱ͑ΒΕΔมσʔλετϨʔδͰཧ • ΞϓϦέʔγϣϯ֎෦ετϨʔδͷ +40/ ϑΝΠϧΛࢀর͢Δ • ։࠵ظؒɺϙΠϯτɺίϯςϯπɺαʔϏε͕৳͔ͯ͠Βཧը໘ ϞϒͰ߹ҙɾҙࢥܾఆ͢Δश׳
։ൃνʔϜͯ͢Ϟϒϓϩ • ݸਓʹ͕ࣝுΓ͘͜ͱΛආ͚Δ • ϙδςΟϒͳҙຯͰૠ͛ସ͕͑Մೳͳঢ়ଶʹ͓ͯ͘͠ • ͜Ε͋ͷਓ͔͠Ͱ͖ͳ͍Λపఈతʹආ͚Δ • ઃܭɾઃܭϨϏϡʔɾ࣮ɾ୯ମςετͷ΄ͱΜͲϞϒͰߦ͏ •
։ൃޙͷ্͍͛ • όοΫΤϯυαʔϏε։ൃʢ(Pʣͷϝϯόʔʹ 5ZQF4DSJQU Πϯετʔϧ • εϓϦϯτͰҰॹʹͬͯ࣍εϓϦϯτͰλεΫΛרऔΓ ϞϒͰ߹ҙɾҙࢥܾఆ͢Δश׳
։ൃॱௐɻ͕ͩɺԶͬͯΔΜͩʜ ࠷ॳͷಉظ͔ΒঃʑʹζϨʜ ૯߹ςετதʹόάͱແؔͳʜ ʮͬͯ͜͜͜͏͡Όͳ͔ͬͨΜͰ͚ͨͬ͠ʁʯ ʮʓʓ͕͜ͷ΄͏͕ྑ͍ͱݴͬͨͷͰม͍͑ͯͩ͘͞ʯ ͋ΘΘΘ͋ΘΘΘΘΘΘΘΘͬΘΘΘͬΘΘΘΘΘ͋͋ ϞϒͰ߹ҙɾҙࢥܾఆ͢Δश׳
࠶ܝ ϞϒͰ߹ҙɾҙࢥܾఆ͢Δश׳
ϦΧόϦʔ͕ޮ͘λΠϛϯάͰ࠶Ϣʔεέʔεͷ֬ೝ ϞϒͰ߹ҙɾҙࢥܾఆ͢Δश׳
ෆ࣮֬ੑΛݮͤ͞ΔͨΊͷɺզʑͷઓུ • εϐʔυΛॏࢹͭͭ͠ϦΧόϦʔՄೳͳʹඞͣಉظΛ • ։ൃશͯϞϒϓϩͰ࣮ࢪࣝ͠ཧղͷภΓΛͳ͘͢ • ζϨͲ͔͜Ͱى͖ΔͷͰൃࢄͱऩଋͷόϥϯεײ֮Λͭ ϞϒͰ߹ҙɾҙࢥܾఆ͢Δश׳
࣍ #''ʹকདྷతͳมߋ༰қੑΛ ઓུϞϒͰ߹ҙɾҙࢥܾఆ͢Δश׳ ઓज़ϢʔεέʔεۦಈͰ։ൃ͢Δ ΤϥʔΠϕϯτͱվળ
ΫϥΠΞϯτ ϒϥβͷྫ֎ʹదͳ 6* Λ #''ΫϥΠΞϯτʹ࠷దͳ (SBQI2- &SSPS ·ͱΊɿ҆ఆͨ͠ఆظతͳϦϦʔεͷ࣮ݱ ϢʔεέʔεۦಈͰ։ൃ͢Δ
ϢʔεέʔεۦಈͰ։ൃ͢Δʁ 6TFDBTF%SJWFO OPU.PEFM%SJWFO ΫϦʔϯΞʔΩςΫνϟಉ৺ԁͷΤϯςΟςΟ υϝΠϯۦಈઃܭͷதͰϞσϧΛத৺ʹͨ͠։ൃख๏ͰޠΒΕΔ ࠓճϞσϧͰͳ͘ϢʔεέʔεۦಈͰ։ൃ͍ͯ͠Δ ϢʔεέʔεۦಈͰ։ൃ͢Δ
#'' #BDLFOE'PS'SPOUFOE (SBQI2- • ΫϥΠΞϯταΠυϝϦοτ • ⭕ ΫϥΠΞϯτ͔Βͷը໘ʹରͯ͠ඞཁͳϦΫΤετޮ্͕ • ΫϥΠΞϯτ͕ϢʔεέʔεʹԠͯ͡ΫΤϦΛΈཱͯΔ͜ͱ͕Մೳ
• ࠓճෳࡶͳϩδοΫΛΫϥΠΞϯτʹدͤͨ͘ͳ͍ • #'' ϝϦοτ • ރΕͯάϩʔεରͰͳ͍طଘ "1*ΛΞάϦήʔτ͠৽ن "1*ͱͯ͠࠶ར༻ • ΫϥΠΞϯταΠυɾ#'' ڞ௨ͷϝϦοτ • ⭕ εΩʔϚʹΑͬͯͨΒ͞ΕΔํϑϨϯυϦʔͳ։ൃମ੍ߏங ϢʔεέʔεۦಈͰ։ൃ͢Δ
&YQSFTT "QPMMP 4FSWFS ϢʔεέʔεۦಈͰ։ൃ͢Δ
ʢࡶͳʣ݁ࠗͱਓੜͷุͰ͋Δ lࣗͷΞϓϦέʔγϣϯͰԿΒ͔ͷϑϨʔϜϫʔΫΛ͏͜ͱʹܾΊͨ࣌ ͰɺͦͷΞϓϦέʔγϣϯϑϨʔϜϫʔΫʹറΒΕΔ͜ͱʹͳΔͷͩͱ ೝ͓ࣝͯ͘͠ඞཁ͕͋Δɻ͍ͷͱ͖ɺࡂ͍ͷͱ͖ɺ๛͔ͳͱ͖ɺශ ͍͠ͱ͖ɺ݈͔ͳΔͱ͖ɺපΊΔͱ͖ɺ΄͔ͷͯ͢Λ٘ਜ਼ʹͯ͠ ͰɺͦͷϑϨʔϜϫʔΫΛ͏͜ͱʹͳΔɻؾܰʹड͚ೖΕΒΕΔΑ͏ͳ ͷͰͳ͍ɻz $MFBO"SDIJUFDUVSF ୈষ ϑϨʔϜϫʔΫৄࡉ
ϢʔεέʔεۦಈͰ։ൃ͢Δ
ݱ࣮ ϢʔεέʔεۦಈͰ։ൃ͢Δ
εϐʔυײΛอͪͳ͕Βมߋ༰қੑΛ࣋ͯΔ࠷దղ • ٻΊΒΕ͍ͯΔͷ • νʔϜͰ߹ҙͨ͠ڞ௨ͷݴޠͱϢʔεέʔε • ϓϩμΫτͷ৳Λߟྀͨ͠มߋ༰қੑ • σʔλϕʔεɺετϨʔδɺΩϟογϡͳͲଓઌ͕มΘΔՄೳੑ •
มߋΛ͙͢ʹٻΊΒΕΔ͜ͱ • ՁݕূϢʔβϏϦςΟςετͰมߋ͕ଟ͘Δͷϒϥβͷ (6* • #'' ͕ࢦ͍ͨ͠ͱ͜Ζ • ΫϥΠΞϯταΠυͰͷϢʔεέʔεΛϕʔεʹͨ͠ "1* ϢʔεέʔεۦಈͰ։ൃ͢Δ
ϢʔεέʔεΛத৺ʹ͢Δ l༏ΕͨΞʔΩςΫνϟϢʔεέʔεΛத৺ʹ͍ͯ͠ ΔͨΊɺϑϨʔϜϫʔΫɺπʔϧɺڥʹґଘ͢Δ͜ͱ ͳ͘ɺϢʔεέʔεΛαϙʔτ͢ΔߏΛͳ͘આ໌ Ͱ͖Δz $MFBO"SDIJUFDUVSFୈ ষ ڣͿΞʔΩςΫνϟ ϢʔεέʔεۦಈͰ։ൃ͢Δ
• νʔϜ͕࣋ͭಉ͡ޠኮ Ϣʔεέʔε • ϢʔεέʔεΛʮํʯͱͯ͠த৺ʹਾ͑Δ • ΫϦʔϯΞʔΩςΫνϟͷத৺ʹ͋ΔΤϯςΟςΟͳ͍
SFTPMWFSϢʔεέʔεΛ࣮ߦ ϢʔεέʔεۦಈͰ։ൃ͢Δ
มߋ༰қੑ lιʔείʔυͷґଘੑɺଆʢ্ҐϨϕϧͷํʣͩ ͚ʹ͔͍ͬͯͳ͚Ε͍͚ͳ͍ɻz $MFBO"SDIJUFDUVSF ୈ ষ ΫϦʔϯΞʔΩςΫνϟ ґଘੑͷϧʔϧ ϢʔεέʔεۦಈͰ։ൃ͢Δ
• ࠶ܝ ϓϩμΫτͷ৳Λߟྀͨ͠มߋ༰қੑ • σʔλϕʔεɺετϨʔδɺΩϟογϡͳͲ ଓઌ͕༰қʹมߋɾૠ͛ସ͑Ͱ͖ͳ͍ • Ϣʔεέʔε֎෦ଓʹؔ৺͕͋Δঢ়ଶ
ґଘͷํඞ্ͣҐϨϕϧʹͷΈ͔͏ • ͭͷΤοηϯε͚ͩΛநग़ • ґଘؔٯసͷ๏ଇ %*1 • ͷɺదͳϨΠϠϦϯά • ӈԼͷͪ͜Όͪ͜Όͨͭ͠ࠓճআ֎
ϢʔεέʔεۦಈͰ։ൃ͢Δ
ͷɺϨΠϠϦϯά ϢʔεέʔεۦಈͰ։ൃ͢Δ
6TFDBTF ֎ͷϨΠϠʔʹґଘ͠ͳ͍ ϢʔεέʔεۦಈͰ։ൃ͢Δ
"EBQUPS 6TFDBTF ʹґଘ ϢʔεέʔεۦಈͰ։ൃ͢Δ
"EBQUPS ίϯετϥΫλͰ %* ϢʔεέʔεۦಈͰ։ൃ͢Δ ϥΠϒϥϦͷؔ৺Λ֎ • )551ϦΫΤετ͍ͨ͠ • ྫ
OPEFGFUDI • 03.͍͍ͨ • ྫ 5ZQF03. • ۩ମతʹओுͨ͘͠ͳ͍ ୯ମςετΛॻ͖͍͢ • ґଘΛ฿͢ΔܕߏΛೖ ͢Δ͚ͩ
*OGSBTUSVDUVSF • ͱʹ͔ࣝ͘Λ࣋ͨͤͳ͍ • ϥΠϒϥϦϑϨʔϜϫʔΫ͕ఏ ڙ͢ΔͷΛ७ʹஔ ϢʔεέʔεۦಈͰ։ൃ͢Δ
&OUJUJFT ʁʁʁ &OUFSQSJTF#VTJOFTT3VMFT&OUJUJFTʁ ϢʔεέʔεۦಈͰ։ൃ͢Δ • $MFBO "SDIJUFDUVSF த৺ʹΤϯςΟςΟΛਾ͑ͨ Ϟσϧۦಈ։ൃͰͳ͍
• νʔϜڞ௨ݴޠͱϢʔεέʔεΛϕʔεʹͨ͠ Ϣʔεέʔεۦಈͷ։ൃ • ϏδωεϧʔϧͳͲࣗͣͱΤϯςΟςΟʢϞσϧʣʹ
%*1ͱదͳϨΠϠϦϯά͚ͩͰಘΒΕΔϝϦοτ • ֦ॆमਖ਼͢͠͞Λओ؟ͱͨ͠ͷͰӡ༻͕ਏ͘ͳ͍ • νʔϜڞ௨ݴޠΛར༻ͨ͠ϢʔεέʔεϕʔεͳͷͰဃ͕ͳ͍ • ࠷େͷతͩͬͨΫϥΠΞϯταΠυͷෛՙۃྗബ͘Ͱ͖ͨ ΞʔΩςΫνϟϑΝʔετͰͳ͘ ϓϩμΫτϑΝʔετͳ࠷ݶͷΞʔΩςΫνϟ
ϢʔεέʔεۦಈͰ։ൃ͢Δ
զʑͷ #'' ઓུɾઓज़·ͱΊ • εϐʔυΛٻΊΒΕΔέʔεͰ߹ྲྀΛ • ઓ͏͖૬ޓͷೝࣝᴥᴪͰͳ͍ • ઓ͏͖ϏδωεΛࠓޙ৳͍ͯ͘͠ʹ͋ͨͬͯͷෆ࣮֬ੑ •
ͦͷͨΊʹઌਓͷͨ͠ΞʔΩςΫνϟͷΤοηϯε͕͋Δͣ • νʔϜڞ௨ͷݴޠͰઢͷߴ͞Λ߹Θ͓ͤͯ͘ • ಉ͡ઢͰରͰ͖Δ༰͕ίʔυʹసࣸ͞Ε͍ͯΔ #''ʹকདྷతͳมߋ༰қੑΛ
࣍ #''ʹকདྷతͳมߋ༰қੑΛ ઓུϞϒͰ߹ҙɾҙࢥܾఆ͢Δश׳ ઓज़ϢʔεέʔεۦಈͰ։ൃ͢Δ ΤϥʔΠϕϯτͱվળ
ΫϥΠΞϯτ ϒϥβͷྫ֎ʹదͳ 6* Λ #''ΫϥΠΞϯτʹ࠷దͳ (SBQI2- &SSPS ·ͱΊɿ҆ఆͨ͠ఆظతͳϦϦʔεͷ࣮ݱ ϒϥβͷྫ֎ʹదͳ 6* Λ
ϒϥβͷྫ֎ 3FGFSFODF&SSPS 4ZOUBY&SSPS 5ZQF&SSPS ϒϥβͷྫ֎ʹదͳ 6* Λ
ϒϥβͷྫ֎ɿ%0.&YDFQUJPO • IUUQTIFZDBNHJUIVCJPXFCJEMJEM %0.&YDFQUJPO • %0.͔Βࢀর͍ͯ͠Δ 8FC*%- Ͱఆٛ • ྫ
• ͷ௨৴ෆ௨ʹΑΔΤϥʔ • ϒϥβઃఆʹΑͬͯग़Δ͜ͱ͋ͬͨΓ ϒϥβͷྫ֎ʹదͳ 6* Λ
ϦϦʔεॳͷྫ֎ัଊ࣌ͷը໘ • 3FBDU &SSPS#PVOEBSZ ͰϑΥϩʔ • ΤϥʔΠϕϯτૹ৴ͱϑΥʔϧόοΫ 6*ͷදࣔ ϒϥβͷྫ֎ʹదͳ 6*
Λ
/FUXPSL&SSPSɿωοτϫʔΫͷෆ௨ • ΄ͱΜͲաͯ͠Α͍ • ຖ ສ΄ͲΠϕϯτ্͕͕ͬͯ͘Δ • Ұ࣌తʹωοτϫʔΫঢ়گ͕ѱ͘ͳΔɺλΠϜΞτ • $IVOL-PBE&SSPS-PBEJOHDIVOLGBJMFE
• 6ODBVHIU JOQSPNJTF 5ZQF&SSPS'BJMFEUPGFUDI ϒϥβͷྫ֎ʹదͳ 6* Λ
4FDVSJUZ&SSPSɿ+BWB4DSJQU͔Β JOTFDVSFͳૢ࡞ 4FDVSJUZ&SSPS'BJMFEUPSFBEUIFMPDBM4UPSBHFQSPQFSUZGSPN8JOEPX"DDFTTJTEFOJFEGPSUIJTEPDVNFOU ϒϥβͷྫ֎ʹదͳ 6* Λ
%0.&YDFQUJPOʹֻ͔Βͳ͍ఆ֎ • ΤϥʔΠϕϯτ͕ൃੜ͠ͳ͍έʔε • ัଊͰ͖ͣʹՄࢹԽ͢Δ͜ͱ͕͍͠ • ྫɿ XJOEPXPQFO ʹΑΔϙοϓΞοϓϒϩοΫ ϒϥβͷྫ֎ʹదͳ
6* Λ
XJOEPXPQFO BCVTF͞ΕΔϢʔεέʔε͕ଟ͍ ϢʔβʔମݧΛ্ͤ͞ΔͨΊͷ৽͍͠ΟϯυΛ։͘ͱ͍͏త͕͋ΔʹؔΘ ΒͣɺࠂΛ։ͨ͘Ίʹѱ༻͞Ε͍ͯΔɻϢʔβʔΠϕϯτͰ͋ΔΩʔԡԼɾϚε ΫϦοΫҎ֎Ͱཁٻ͞Εͨ߹ϒϩοΫ͞ΕΔ ϒϥβͷྫ֎ʹదͳ 6* Λ l 5IFXJOEPXPQFO
"1*IBTCFFOBCVTFEUPPQFOJOUSVTJWFBEWFSUJTJOH XIJDI JTSFHSFUGVMTJODFUIFSFBSFMFHJUJNBUFSFBTPOTUPPQFOBOFXXJOEPXUIBU FOIBODFVTFSFYQFSJFODF5SBEJUJPOBMMZ QPQVQXJOEPXTBSFCMPDLFEXIFOUIFZ BSFOUFYQMJDJUMZSFRVFTUFECZBVTFSLFZQSFTTPSNPVTFDMJDLz IUUQTXXXDISPNJVNPSHEFWFMPQFSTEFTJHOEPDVNFOUTDPOTUSBJOFEQPQVQXJOEPXT
υΩϡϝϯτʹ໌ࣔ͞Εͯͳ͍͜ͱ ϒϥβͷྫ֎ʹదͳ 6* Λ _⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈_ > ポップアップブロック!!! <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
࣍ #''ʹকདྷతͳมߋ༰қੑΛ ઓུϞϒͰ߹ҙɾҙࢥܾఆ͢Δश׳ ઓज़ϢʔεέʔεۦಈͰ։ൃ͢Δ ΤϥʔΠϕϯτͱվળ
ΫϥΠΞϯτ ϒϥβͷྫ֎ʹదͳ 6* Λ #''ΫϥΠΞϯτʹ࠷దͳ (SBQI2- &SSPS ·ͱΊɿ҆ఆͨ͠ఆظతͳϦϦʔεͷ࣮ݱ ΫϥΠΞϯτʹ࠷దͳ (SBQI2- &SSPS
ϦϦʔεޙ͔Δ͜ͱͨ͘͞Μ͋Δ ʮͣͬͱಉ͡λϒͰར༻͞ΕΔఆ͕ͩͬͨผλϒͰ։͘έʔε͕ଟͦ͏ʯ ΫϥΠΞϯτʹ࠷దͳ (SBQI2- &SSPS _⼈⼈⼈⼈⼈⼈⼈⼈⼈_ > 例外画⾯!!! <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^ ̄
ϦϦʔεޙ͔Δ͜ͱͨ͘͞Μ͋Δ ʮ"1* ͷϨεϙϯεʹԠͯ͡దͳϑΥʔϧόοΫ 6* ͕ඞཁʜʯ ΫϥΠΞϯτʹ࠷దͳ (SBQI2- &SSPS _⼈⼈⼈⼈⼈⼈⼈⼈⼈_
> 例外画⾯!!! <  ̄Y^Y^Y^Y^Y^Y^Y^Y^ ̄
(SBQI2-&SSPSͰదͳϑΟʔυόοΫΛఏڙ͢Δ ΫϥΠΞϯτʹ࠷దͳ (SBQI2- &SSPS
(SBQI2- &SSPS4QFD • FYUFOTJPOT • l5IJTFOUSZJTSFTFSWFEGPSJNQMFNFOUPSTUPBEE BEEJUJPOBMJOGPSNBUJPOUPFSSPSTIPXFWFSUIFZTFF GJU BOEUIFSFBSFOPBEEJUJPOBMSFTUSJDUJPOTPOJUT DPOUFOUTz
• ϑΟʔϧυՃʹ੍ݶͳͦ͞͏ • ࠓճར༻͢Δͷ FYUFOTJPOTDPEF ΫϥΠΞϯτʹ࠷దͳ (SBQI2- &SSPS IUUQTTQFDHSBQIRMPSHESBGUTFD&SSPST
"QPMMP4FSWFS͕࣋ͭྫ֎ 例外クラス extensions.code クラス ApollError INTERNAL_SERVER_ERROR 継承元になるクラス SyntaxError GRAPHQL_PARSE_FAILED サブクラス
ValidationError GRAPHQL_VALIDATION_FAILED サブクラス AuthenticationError UNAUTHENTICATED サブクラス ForbiddenError FORBIDDEN サブクラス UserInputError BAD_USER_INPUT サブクラス ΫϥΠΞϯτʹ࠷దͳ (SBQI2- &SSPS
"QPMMPͰͷྫ֎ͷऔΓѻ͍ • SFTPMWFSҎԼͰى͖ͨྫ֎ϑϨʔϜϫʔΫ͕ัଊͯ͠ "QPMMP&SSPSଞʹ͓͖͔͑Δ • ΫΤϦ͕ JOWBMJEͰ͋ΕΑΖ͘͠ 7BMJEBUJPO&SSPSΛૹग़ • 4QFDఆٛͷΤϥʔϨεϙϯεͷΈཱͯ
"QPMMP4FSWFS͕ΑΖ͘͠Δ ΫϥΠΞϯτʹ࠷దͳ (SBQI2- &SSPS
ΫϥΠΞϯταΠυʹࣝผࢠʢDPEFʣΛૹΔ • ํ • SFTPMWFSʹྫ֎ૹग़Λूத • ෦తͳྫ֎ΛัଊͰ͖ΔΈΛ༻ҙ ΫϥΠΞϯτʹ࠷దͳ (SBQI2-
&SSPS
ΫϥΠΞϯταΠυͱ࿈ܞ ΫϥΠΞϯτʹ࠷దͳ (SBQI2- &SSPS ϓϩάϥϚϒϧͳ࿈ܞํ๏͕Ͱ͖ͳ͔ͬͨͨΊɺυΩϡϝϯτͰڞ༗
ΤϥʔΠϕϯτͱվળɺ·ͱΊ • ϒϥβͰԿ͕ى͜Δ͔Ѳ͢Δ • ϥϯλΠϜΤϥʔɿ։ൃͷͰ͖ͬͪΓ௵͍ͯͩ͘͠͞ • %0.&YDFQUJPOɿ·͋·͋ى͜ΓಘΔɺஅΛ • 8FCΞϓϦέʔγϣϯϒϥβ͕ΠϯλϑΣʔε
• ॳظϦϦʔε࣌Ͱͷ 6*ͷ࡞ΓࠐΈ४උ • ΤϥʔʹΑͬͯஅ͢ΔΛࣄલʹ͓ͯ͘͠ͱྑͦ͞͏ • ػೳΛॆͨͤྑ͍Θ͚Ͱͳ͍ • ͍৺རศੑΛߴΊΔʹՁΛ ΤϥʔΠϕϯτͱվળ
࣍ #''ʹকདྷతͳมߋ༰қੑΛ ઓུϞϒͰ߹ҙɾҙࢥܾఆ͢Δश׳ ઓज़ϢʔεέʔεۦಈͰ։ൃ͢Δ ΤϥʔΠϕϯτͱվળ
ΫϥΠΞϯτ ϒϥβͷྫ֎ʹదͳ 6* Λ #''ΫϥΠΞϯτʹ࠷దͳ (SBQI2- &SSPS ·ͱΊɿ҆ఆͨ͠ఆظతͳϦϦʔεͷ࣮ݱ ·ͱΊɿ҆ఆͨ͠ఆظతͳϦϦʔεͷ࣮ݱ
ఆظతͳϦϦʔεͷ࣮ݱɿϞϒϫʔΫ ·ͱΊɿ҆ఆͨ͠ఆظతͳϦϦʔεͷ࣮ݱ • ༏ઌͱνʔϜͷҙࢥܾఆΛΠϕϯτԽ ࢪࡦվળ͕ᷓΕ͔͑Δ ༏ઌΛ͚ͭΔ
ϞϒϫʔΫͱͯ͠νʔϜͰ߹ҙ ༏ઌ͕ߴ͚Εཌ 4QSJOUʹ։ൃ ͙͢ϦϦʔε • ཹͤ͞ͳ͍ΈΛνʔϜͰ࣋ͭ
ఆظతͳϦϦʔεͷ࣮ݱɿ3FOPWBUF • ։ൃڥͷ݈શͷͨΊʹ 3FOPWBUF Λಋೖ • ४ͯ͡ຖिΞοϓσʔτ͞Εଓ͚Δ • ʮຍʯͱνʔϜͰݺΜͰ͍Δ •
ຍϞϒϓϩͷҰͰߦ͏ ·ͱΊɿ҆ఆͨ͠ఆظతͳϦϦʔεͷ࣮ݱ
ఆظతͳϦϦʔεͷ࣮ݱɿͷՄࢹԽ • νʔϜʹσʔλΞφϦετ͕ ໊ࡏ੶ • %BUB4UVEJP ͰՄࢹԽ͍ͯ͠Δ • ঢ়گσΠϦʔ༦ձͰ֬ೝ •
τϐοΫͳͲΛڞ༗͍ͯ͠Δ ·ͱΊɿ҆ఆͨ͠ఆظతͳϦϦʔεͷ࣮ݱ
·ͱΊɿ҆ఆͨ͠ఆظతͳϦϦʔεͷ࣮ݱ ୭͔ͷܾఆ ʻ νʔϜͷ߹ҙɾҙࢥܾఆ ΞʔΩςΫνϟҰൠ ʻ νʔϜڞ௨ݴޠͷΞʔΩςΫνϟ ػೳͷఏڙ ʻ
ػೳͱՁͷఏڙ ·ͱΊɿ҆ఆͨ͠ఆظతͳϦϦʔεͷ࣮ݱ νʔϜͰεϐʔυΛ࣋ͬͨҙࢥܾఆΛ܁Γฦ͢ͱ ຖिϦϦʔε͢ΔதͰվળલਐ͕વʹͳͬͯ͘Δ
ݱͰಈ͍ͯΔਓ͕ͨͪҰ൪ଚ͍ ྑ͍νʔϜͰɺྑ͍ϓϩμΫτΛ