SCRIPTY #4 on 2015-12-15
҆શͳJavaScriptΛॻ͘@axrossSCRIPTY #4 on 2015-12-15
View Slide
whoami» @axross / Kohei Asai» Gunosy Inc.» ωτήഇਓ -> հޢۀք -> Webۀք» SPAॻ͍͓ͯۚΒͬͯ·͢
ͨΓલͳ͜ͱΛ͠·͢
ʮྫ֎ʯ
ྫ֎ʹର͢Δೝࣝ» Errorͷ͜ͱ» ྫ֎͕εϩʔ͞Εɺcatch͞Εͯͳ͍߹ɺ࣮ߦ͕ࢭ·Δ» ϓϩμΫγϣϯͰ࣮ߦ͕ࢭ·Δͱக໋త» ʮۃྗΤϥʔϋϯυϦϯά͠Α͏ʂʯͬͯؾ࣋ͪʹͳΔ͕...ʁ
27. ʮࢮ͵ͣͷϓϩάϥϜΛແཧʹੜ͔͓͍͍͚ͯͯ͠ͳ͍ʯtry-catch ϒϩοΫΛίʔυϕʔεʹେྔʹೖΕΕɺʮྫ֎͕ൃੜͯ͠ઈରʹࢭ·Βͳ͍ʯͱ͍͏ΞϓϦέʔγϣϯΛ࡞Δ͜ͱ͕ՄೳͳͣͰ͢ɻͨͩɺ͜Εɺ͏ࢮΜͰ͍ΔਓͷମΛఝ͔Կ͔Ͱݻఆ͠ɺແཧཧཱͬͨঢ়ଶʹ͍ͯ͠ΔΑ͏ͳͷͰ͕͢......ɻ-- ΦϥΠϦʔɾδϟύϯʮϓϩάϥϚ͕Δ͖97ͷ͜ͱʯ
ແཧΓੜ͔͞ΕͨϓϩάϥϜ» ϓϩμΫγϣϯͰྫ֎͕throw͞ΕͯͳΒͳ͍» ͳͥͳΒɺϓϩάϥϜͷ࣮ߦ͕ࢭ·ͬͯ͠·͏͔Β» Ͱɺͦͷྫ֎ԿʹΑΔͷͳͷ͔ʁ» ڥɾঢ়گʹΑͬͯൃੜͨ͠ͷʁ(HTTPݻ༗όάͳͲ)» ୯७ͳ։ൃऀͷϛεʹΑΔͷʁ» ͜ͷྫ֎ΛcatchͰ௵͢ͷϚζ͍Μ͡Όͳ͍ͩΖ͏͔ʁ
ߟ͑Δ͖͜ͱ» ਖ਼ৗͳಈ࡞Ͳ͏͍͏ܗͳͷ͔ʁ» ͕ؔҙਤ͠ͳ͍ҾΛͬͯݺΕͨΒʁ» ͜͜Λ༨ܭͳ͓ੈͰʹʮແࢹ͢Δʯͱ͔ͯ͠͠·͏ͱɺ։ൃऀͷਓతͳϛεڐ͢Մೳੑ͕͋Δ» ʮ͜͏͍͏έʔε͋Δ͔͠Εͳ͍ʯͱ͍͏ରԠΑ͘ͳ͍» ʮ͍͚͋ͬͯͳ͍ɺ͔ͩΒྫ֎ͩʯ» ͜Ε͕ྫ֎ͷਖ਼͍͠ΘΕํͩͱࢥ͏
ʮؾ͔ͳ͍ʯํ͕ා͍» ༏͗͢͠ΔAPI࡞Βͳ͍» ʮArray͡Όͳͯ͘ड͚͚Δ෮ॲཧͷؔʯΛͲ͏ࢥ͏͔ʁ» νʔϜͰೝ͕ࣝ߹ͬͯΕ͍͍» ͔͠͠ɺόάʹʮؾ͚ͳ͘ͳΔʯͷશʹବ» σόοάςετόάΛݕग़͢ΔͨΊʹ͋Δ» ݕग़Ͱ͖ͳ͘ͳͬͯ͠·ͬͨΒɺͦΕʮ༏͍͠ʯͩΖ͏͔ʁ
Ͳ͏ͨ͠Β͍͍͔
throwΛා͕Γ͗͢ͳ͍» throw͖͢ͷͪΌΜͱ͠Α͏» ։ൃதʹྫ֎Λ౿ΊΕɺݕग़ͮ͠Β͍όάΛ༧ͨ͜͠ͱʹͳΔ» ʮਖ਼ৗಈ࡞ͳΒى͜Δͣͷͳ͍throwʯා͕Γա͗ͳ͍͍ͯ͘Α͏ͳʁ» ແɺͪΌΜͱσόοάஈ֊Ͱݕग़͓ͯ͘͠» Ϗδωεతͳສ͕Ұʹඋ͑ͯɺϦΧόϦʔͰ͖ΔΑ͏ʹ࡞Δ
assert / unassert» twada/unassert» ίʔυதͷassert()console.assert()Λআ͢Δͷ» throwͷΘΓʹassert()ΛͬͯɺAssertionErrorΛ͛Δ» assert()ͳͲͷ෦͚͕ͩunassertʹΑͬͯআ͞ΕɺϓϩμΫγϣϯ࣌ʹAssertionError͕ൃੜ͠ͳ͘ͳΔ» http://www.slideshare.net/t_wada/unassert
ΤϥʔΛऩू͢Δ» window.onerrorͰ΄΅શͯͷྫ֎ΛcatchͰ͖Δ» catchͨ͠ͷΛΤϥʔऩूαʔϏεʹ͛Δ» Sentry» Airbrake» sourcemaps͕͋ΕಡԽޙͷίʔυղऍͯ͘͠ΕΔ» ͋Δ͍ɺGoogle AnalyticsʹஷΊΔ» ྫ֎Λऩूͯ͠ɺঢ়گݻ༗ݻ༗ͷόάΛݕग़͠Α͏
Lint͢Δ» eslintɺjshintɺjslint» ίʔυͷόουϓϥΫςΟεγϯλοΫεΤϥʔΛݕͯ͠ڭ͑ͯ͘ΕΔ» ελϯεΛܾΊͯɺݫ͠Ίʹઃఆ͢Δɺ͖ͦͯͪ͠ΜͱकΔ» ਓతͳϛεΛ͍͘Β͔ݮͰ͖Δ» ؇ΊΔͷةݥɺ؇ΊΔ߹͖ͪΜͱ͠߹͏» ઃఆϑΝΠϧΛॻ͘͜ͱͰɺֶͼ͋Δ͔ʁ
ςετΛॻ͘» ྫ֎ɺςετΛॻ͍ͯ։ൃதʹ͖ͪΜͱग़ձ͓ͬͯ͘» ςετ͕େมͩͱײͨ͡ΒɺͦΕਓతϛε͕ى͖͍͢ͱ͍͏αΠϯ» ޙʑʹόάͷݪҼΛḷΔ͍͍ಓඪʹͳΔ» αϘͬͪΌବ!
ίʔυϨϏϡʔ͢Δ» Lintͯ͠ɺςετΛॻ͍ͯɺϛεΛ͢Δ͜ͱ͋Δ» ਓతͳϛεΛݟ͚ͭΒΕΔۀϑϩʔΛ͖ͪΜͱ࡞Ζ͏» ϛεΛؾܰʹࢦఠͰ͖Δۭؾ࡞ΓΛ͠Α͏» ϨϏϡʔͯ͠ίʔυΛڞ༗͓͚ͯ͠ɺଞͷਓ͕༨ܭͳϛεΛ͠ͳͯ͘ࡁΉ
·ͱΊ» ʮͦͷྫ֎ຊʹѲΓ௵͍͍ͯ͠ͷͩΖ͏͔ʁʯ» ͦΕ͕ʮͲ͏͍͏ྫ֎ͳͷ͔ʯΛ͖ͪΜͱߟ͑Α͏» JavaScriptΛॻ͘ྔ͕૿͖͑ͯͨ» ੲʮແཧΓੜ͖ͯΔJavaScriptʯ͕·Εͨ» ࠓͦ͏Ͱͳ͍ɺJSͰΞϓϦέʔγϣϯΛߏங͢Δ» ৭ʑͳࡦΛଧͪɺ҆શͳJavaScriptΛॻ͜͏ʂ
Thank you forlistening!