Slide 1

Slide 1 text

҆શͳJavaScriptΛॻ͘ @axross SCRIPTY #4 on 2015-12-15

Slide 2

Slide 2 text

whoami » @axross / Kohei Asai » Gunosy Inc. » ωτήഇਓ -> հޢۀք -> Webۀք » SPAॻ͍͓ͯ௞ۚ΋Βͬͯ·͢

Slide 3

Slide 3 text

౰ͨΓલͳ͜ͱΛ࿩͠· ͢

Slide 4

Slide 4 text

ʮྫ֎ʯ

Slide 5

Slide 5 text

ྫ֎ʹର͢Δೝࣝ » Errorͷ͜ͱ » ྫ֎͕εϩʔ͞Εɺcatch͞Εͯͳ͍৔߹ɺ࣮ߦ͕ࢭ·Δ » ϓϩμΫγϣϯͰ࣮ߦ͕ࢭ·Δͱக໋త » ʮۃྗΤϥʔϋϯυϦϯά͠Α͏ʂʯͬͯؾ࣋ͪʹͳΔ͕...ʁ

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

27. ʮࢮ͵͸ͣͷϓϩάϥϜΛແཧʹ ੜ͔͓͍ͯͯ͠͸͍͚ͳ͍ʯ try-catch ϒϩοΫΛίʔυϕʔεʹେྔʹೖΕΕ͹ɺʮྫ֎͕ൃੜͯ͠ ΋ઈରʹࢭ·Βͳ͍ʯͱ͍͏ΞϓϦέʔγϣϯΛ࡞Δ͜ͱ͕Մೳͳ͸ͣ Ͱ͢ɻ ͨͩɺ͜Ε͸ɺ΋͏ࢮΜͰ͍ΔਓͷମΛఝ͔Կ͔Ͱݻఆ͠ɺແཧ໼ཧ ཱͬͨঢ়ଶʹ͍ͯ͠ΔΑ͏ͳ΋ͷͰ͕͢......ɻ -- ΦϥΠϦʔɾδϟύϯʮϓϩάϥϚ͕஌Δ΂͖97ͷ͜ͱʯ

Slide 8

Slide 8 text

ແཧ΍Γੜ͔͞ΕͨϓϩάϥϜ » ϓϩμΫγϣϯͰྫ֎͕throw͞Εͯ͸ͳΒͳ͍ » ͳͥͳΒɺϓϩάϥϜͷ࣮ߦ͕ࢭ·ͬͯ͠·͏͔Β » Ͱ΋ɺͦͷྫ֎͸ԿʹΑΔ΋ͷͳͷ͔ʁ » ؀ڥɾঢ়گʹΑͬͯൃੜͨ͠΋ͷʁ(HTTP΍୺຤ݻ༗όάͳͲ) » ୯७ͳ։ൃऀͷϛεʹΑΔ΋ͷʁ » ͜ͷྫ֎ΛcatchͰ௵͢ͷ͸Ϛζ͍Μ͡Όͳ͍ͩΖ͏͔ʁ

Slide 9

Slide 9 text

ߟ͑Δ΂͖͜ͱ » ਖ਼ৗͳಈ࡞͸Ͳ͏͍͏ܗͳͷ͔ʁ » ؔ਺͕ҙਤ͠ͳ͍Ҿ਺Λ൐ͬͯݺ͹ΕͨΒʁ » ͜͜Λ༨ܭͳ͓ੈ࿩Ͱʹʮແࢹ͢Δʯͱ͔ͯ͠͠·͏ͱɺ։ൃ ऀͷਓతͳϛε΋ڐ͢Մೳੑ͕͋Δ » ʮ͜͏͍͏έʔε΋͋Δ͔΋͠Εͳ͍ʯͱ͍͏ରԠ͸Α͘ͳ͍ » ʮ͋ͬͯ͸͍͚ͳ͍ɺ͔ͩΒྫ֎ͩʯ » ͜Ε͕ྫ֎ͷਖ਼͍͠࢖ΘΕํͩͱࢥ͏

Slide 10

Slide 10 text

ʮؾ෇͔ͳ͍ʯํ͕ා͍ » ༏͗͢͠ΔAPI͸࡞Βͳ͍ » ʮArray͡Όͳͯ͘΋ड͚෇͚Δ൓෮ॲཧͷؔ਺ʯΛͲ͏ࢥ͏͔ʁ » νʔϜͰೝ͕ࣝ߹ͬͯΕ͹͍͍ » ͔͠͠ɺόάʹʮؾ෇͚ͳ͘ͳΔʯͷ͸׬શʹବ໨ » σόοά΍ςετ͸όάΛݕग़͢ΔͨΊʹ͋Δ » ݕग़Ͱ͖ͳ͘ͳͬͯ͠·ͬͨΒɺͦΕ͸ʮ༏͍͠ʯͩΖ͏͔ʁ

Slide 11

Slide 11 text

Ͳ͏ͨ͠Β͍͍͔

Slide 12

Slide 12 text

throwΛා͕Γ͗͢ͳ͍ » throw͢΂͖΋ͷ͸ͪΌΜͱ͠Α͏ » ։ൃதʹྫ֎Λ౿ΊΕ͹ɺݕग़ͮ͠Β͍όάΛ༧๷ͨ͜͠ͱʹͳ Δ » ʮਖ਼ৗಈ࡞ͳΒى͜Δ͸ͣͷͳ͍throwʯ͸ා͕Γա͗ͳͯ͘΋͍͍ Α͏ͳʁ » ແ࿦ɺͪΌΜͱσόοάஈ֊Ͱݕग़͓ͯ͘͠ » Ϗδωεతͳສ͕Ұʹඋ͑ͯɺϦΧόϦʔͰ͖ΔΑ͏ʹ࡞Δ

Slide 13

Slide 13 text

assert / unassert » twada/unassert » ίʔυதͷassert()΍console.assert()Λ࡟আ͢Δ΋ͷ » throwͷ୅ΘΓʹassert()Λ࢖ͬͯɺAssertionErrorΛ౤͛Δ » assert()ͳͲͷ෦෼͚͕ͩunassertʹΑͬͯ࡟আ͞ΕɺϓϩμΫ γϣϯ࣌ʹ͸AssertionError͕ൃੜ͠ͳ͘ͳΔ » http://www.slideshare.net/t_wada/unassert

Slide 14

Slide 14 text

ΤϥʔΛऩू͢Δ » window.onerrorͰ΄΅શͯͷྫ֎ΛcatchͰ͖Δ » catchͨ͠΋ͷΛΤϥʔऩूαʔϏεʹ౤͛Δ » Sentry » Airbrake » sourcemaps͕͋Ε͹೉ಡԽޙͷίʔυ΋ղऍͯ͘͠ΕΔ » ͋Δ͍͸ɺGoogle AnalyticsʹஷΊΔ » ྫ֎Λऩूͯ͠ɺঢ়گݻ༗΍୺຤ݻ༗ͷόάΛݕग़͠Α͏

Slide 15

Slide 15 text

Lint͢Δ » eslintɺjshintɺjslint » ίʔυͷόουϓϥΫςΟε΍γϯλοΫεΤϥʔΛݕ஌ͯ͠ڭ͑ ͯ͘ΕΔ » ελϯεΛܾΊͯɺݫ͠Ίʹઃఆ͢Δɺ͖ͦͯͪ͠ΜͱकΔ » ਓతͳϛεΛ͍͘Β͔࡟ݮͰ͖Δ » ؇ΊΔͷ͸ةݥɺ؇ΊΔ৔߹͸͖ͪΜͱ࿩͠߹͏ » ઃఆϑΝΠϧΛॻ͘͜ͱͰɺֶͼ΋͋Δ͔΋ʁ

Slide 16

Slide 16 text

ςετΛॻ͘ » ྫ֎͸ɺςετΛॻ͍ͯ։ൃதʹ͖ͪΜͱग़ձ͓ͬͯ͘ » ςετ͕େมͩͱײͨ͡ΒɺͦΕ͸ਓతϛε͕ى͖΍͍͢ͱ͍͏αΠ ϯ » ޙʑʹόάͷݪҼΛḷΔ͍͍ಓඪʹ΋ͳΔ » αϘͬͪΌବ໨!

Slide 17

Slide 17 text

ίʔυϨϏϡʔ͢Δ » Lintͯ͠΋ɺςετΛॻ͍ͯ΋ɺϛεΛ͢Δ͜ͱ͸͋Δ » ਓతͳϛεΛݟ͚ͭΒΕΔۀ຿ϑϩʔΛ͖ͪΜͱ࡞Ζ͏ » ϛεΛؾܰʹࢦఠͰ͖Δۭؾ࡞ΓΛ͠Α͏ » ϨϏϡʔͯ͠ίʔυΛڞ༗͓͚ͯ͠͹ɺଞͷਓ͕༨ܭͳϛεΛ͠ͳ͘ ͯࡁΉ

Slide 18

Slide 18 text

·ͱΊ » ʮͦͷྫ֎͸ຊ౰ʹѲΓ௵͍͍ͯ͠ͷͩΖ͏͔ʁʯ » ͦΕ͕ʮͲ͏͍͏ྫ֎ͳͷ͔ʯΛ͖ͪΜͱߟ͑Α͏ » JavaScriptΛॻ͘ྔ͕૿͖͑ͯͨ » ੲ͸ʮແཧ΍Γੜ͖ͯΔJavaScriptʯ͕޷·Εͨ » ࠓ͸ͦ͏Ͱ͸ͳ͍ɺJSͰΞϓϦέʔγϣϯΛߏங͢Δ » ৭ʑͳࡦΛଧͪɺ҆શͳJavaScriptΛॻ͜͏ʂ

Slide 19

Slide 19 text

Thank you for listening!