Web閲覧時におけるJavaScriptライブラリ使用による副作用の調査
全文
(2) Vol.2017-SE-195 No.7 2017/3/12. ใॲཧֶձڀݚใࠂ IPSJ SIG Technical Report. ϑΥʔϜɾϒϥβ͔Βͷར༻Λఆ͢Δ։ൃऀʹͱͬͯ. 6% 1%. ඞཁෆՄܽͰ͋Δͷͷɼ୯ҰͷϒϥβΛ͏΄ͱΜ Ͳͷར༻ऀʹͱͬͯతʹԸॲ͍ͳ͕ܙཧͰ͋Δɽ ͜ͷΑ͏ͳϥΠϒϥϦ͕ੜΈग़͢ѱӨڹɼJava Cɼ. Ruby ͳͲͷଞͷϓϩάϥϛϯάͰޠݴൃੜ͢Δ͕ɼ. 93%. JavaScript Ͱಛʹൃੜ͍ͩ͢͠ͱߟ͑ΒΕΔɽ͜ ΕɼWeb ͕ίʔυΦϯσϚϯυ [10] ͱݺΕΔΞʔΩ ςΫνϟΛऔΔͨΊͰ͋ΔɽίʔυΦϯσϚϯυɼΫϥ ΠΞϯτͷཁʹٻԠͯ͡αʔό͕ιʔείʔυΛ͠ɼ. jQuery1.x ਤ 1. jQuery2.x. jQuery3.x. ༻͞Ε͍ͯΔόʔδϣϯͷׂ߹ [7]. ΫϥΠΞϯτଆͰίϯύΠϧɾ࣮ߦ͢Δͱ͍͏ΞʔΩςΫ νϟͷ͜ͱΛࢦ͢ɽ͜ͷιʔείʔυ͏͍ͱܕಛ͔ ΒɼWeb ্ͷιʔείʔυίϯύΠϥʹΑΔࣄલͷ࠷. $("#content").css("background-color", "red"); 䝉䝺䜽䝍. దԽॲཧ͕อো͞Εͳ͍ɽͦͷͨΊɼෆཁͳॲཧར༻͞. API. 䝟䝷䝯䞊䝍⩌. グ㏙䝟䝍䞊䞁. Εͳ͍ API ΫϥΠΞϯτଆʹసૹɾ࣮ߦ͞Εͯ͠·͏ɽ ਤ 2 API ͼݺग़͠ͷྫ. Ұൠతͳ JavaScript ϥΠϒϥϦ࠷దԽΛࢪͨ͠ min.js ͱ͍͏Ͱࣜܗ͞Ε͍ͯΔέʔε͕ଟ͍ͷͷɼݸʑͷ. Web ϖʔδʹهड़͞Εͨ JavaScript ιʔείʔυͷ 9 ׂ Ҏ্࠷దԽ͞Ε͍ͯͳ͍ [11] ͷ͕ݱঢ়Ͱ͋Δɽ ຊڀݚͷతɼJavaScript ϥΠϒϥϦ͕༩͑ΔΫϥΠ Ξϯτͷ෭࡞༻ͷ࣮Λ໌Β͔ʹ͢Δ͜ͱͰ͋Δɽ͜͜ Ͱͷ෭࡞༻ͱɼJavaScript ͷ։ൃΛ༰қʹ͢Δͱ͍͏։ ൃऀʹର͢ΔʢओͨΔʣ࡞༻ʹରͯ͠ɼΫϥΠΞϯτڥ Ͱൃੜͯ͠͠·͏ҙਤ͞Εͳ͍࡞༻ͱఆٛ͢ΔɽຊߘͰ ͜ͷௐࠪͷୈҰาͱͯ͠ௐࠪରϥΠϒϥϦʹ jQuery Λɼ ௐࠪରͷ෭࡞༻ʹ API ͷ࣮ߦ࣌ؒΛબ͢Δɽ ௐࠪͷखॱͱͯ͠ɼ·ͣ jQuery ͷ API ʹ͍ͭͯग़ݱස ͷߴ͍༻ํ๏ΛௐΔɽͦͯ͠ɼͦΕΒͷ༻ํ๏ʹ ରͯ͠ಉ͡ಈ࡞Λ͢Δ࣮Λ JavaScript ωΠςΟϒͰ࡞ ࣮ͯ͠ߦ࣌ؒΛൺֱ͢Δɽௐࠪͷ݁ՌɼjQuery Λ༻͍Δ͜ ͱͰ࣮ߦ͕࣌ؒฏͰۉ 4 ഒʹͳΔ͜ͱͳͲ͕Θ͔ͬͨɽ ͞Βʹɼࠓճ࣮ࢪͨ͠ௐࠪͷ݁Ռʹ͍ͭͯߟ͓Αͼٞ Λߦ͏ɽ. 2. jQuery ͜ͷઅͰɼຊߘͰௐࠪͷࡐͱͯ͠બΜͩ jQuery ʹ ͍ͭͯɼҎ߱ͷઅͷઆ໌ͷͨΊʹ֓ཁͱ༻ྫΛड़Δɽ. 2.1 jQuery ͷ֓ཁ jQuery[6] HTML ͷߏཁૉͷࡧݕૢ࡞ɼΞχϝʔ γϣϯඇಉظ௨৴ͳͲͷॲཧΛɼAPI Λ༻͍ͯ؆୯ʹهड़ Ͱ͖ΔΑ͏ʹͳΔ JavaScript ϥΠϒϥϦͰ͋ΔɽW3Techs ͷௐࠪʹΑΔͱɼ2017 2 ݄ࡏݱɼWeb αΠτͷ͏ͪ. 71.9%ͷαΠτʹ͓͍ͯ jQuery ͕༻͞Ε͍ͯΔ [7]ɽ͜ ͷ༻͞Ε͍ͯΔׂ߹ɼJavaScript ϥΠϒϥϦͷதͰ࠷ ߴ͍Ͱ͋Δɽ͜Εຊߘͷௐࠪͷࡐͱͯ͠ jQuery Λબͨ͠ཧ༝Ͱ͋Δɽ. jQuery ࡏݱେ͖͚ͯ͘ 1.x ܥɼ2.x ܥɼ3.x ܥͷ 3 ͭ ͷόʔδϣϯ͕ଘࡏ͢Δɽ֤όʔδϣϯ͕ Web αΠτʹ͓ ⓒ 2017 Information Processing Society of Japan. ͍ͯ༻͞Ε͍ͯΔׂ߹ਤ 1 ͷ௨ΓͰ͋Δɽ΄ͱΜͲͷ αΠτʹ͓͍ͯ 1.x ͞༻͕ܥΕ͍ͯΔɽͦΕͧΕͷόʔ δϣϯؒʹࠩҟ͕͋Δɽ1.x ͱܥ2.x ܥͷؒɼ2.x ͱܥ3.x ܥͷؒͦΕͧΕͷओͳมԽΛ·ͱΊͨͷ͕ද 1 Ͱ͋Δɽ ڞ௨͢ΔมԽͷྲྀΕͱͯ͠ɼϒϥβͷ͍ݹόʔδϣϯʹ ର͢Δॲޓཧ͕আ͞Ε͍ͯ͘ͱ͍͏͕͋Δɽ. 2.2 jQuery ͷ༻ྫ jQuery ͷϥΠϒϥϦΛಡΈࠐΉ͜ͱͰϥΠϒϥϦͷ࣮ ʮjQueryʯ·ͨʮ$ʯͰࢀরͰ͖ΔΦϒδΣΫτʹ֨ ೲ͞ΕΔɽ ͜ͷΦϒδΣΫτʹରͯ͠ API Λͼݺग़ͨ͠ ྫ͕ਤ 2 Ͱ͋Δɽ͜ͷͼݺग़͠ HTML ͷߏཁૉͷ͏ ͪ id ͕ʮcontentʯͰ͋Δͷͷഎܠ৭Λ৭ʹ͢Δͱ͍ ͏ͷͰ͋Δɽʮ$ʯʹରͯ͠ҾΛ༩͑ΔͱɼҾʹରԠ͢ Δ HTML ͷߏཁૉΛද͢ jQuery ΦϒδΣΫτΛฦ͢ɽ ͜ͷ෦ͷهड़ΛηϨΫλ෦ͱ͠ɼҾͷ͜ͱΛηϨΫλ ͱ͢ʹͱ͜ͿݺΔɽਤͷྫͰηϨΫλʮ"#content"ʯ ͱ͍͏จࣈྻͰ͋Δɽจࣈྻ 1 จࣈͷʮ#ʯ id Λද͢ ͋Ͱ߸هΔɽclass Λද͢ͷʮ.ʯͰ͋ΓɼԿ߸هΛ ͚ͳ͍߹ߏཁૉͷλά໊Λද͢ɽ·ͨɼҾͱͯ͠ ༩͑ΒΕΔͷจࣈྻͰͳ͘ jQuery ΦϒδΣΫτࣗମ Ͱ͋Δ߹͋ΔɽྫͷηϨΫλ෦Ͱ id ͕ʮcontentʯ Ͱ͋ΔߏཁૉΛද͢ jQuery ΦϒδΣΫτ͕ฦ͞ΕΔ͜ ͱʹͳΔɽ͜ͷ jQuery ΦϒδΣΫτʹରͯ͠ɼҾͷύ ϥϝʔλͱͱ܈ʹ API Λͼݺग़͢ɽྫͰɼߏཁૉ ͷελΠϧΛࢦఆ͢Δ API Ͱ͋ΔʮcssʯʹҾͱͯ͠എ ද 1 jQuery ͷόʔδϣϯؒͷओཁͳมԽ 2.x ͰܥͷओͳมԽ • IE6ɼ7ɼ8 ͷॲޓཧ͕আ͞ΕΔ. • ΧελϜϏϧυ͕Ͱ͖ΔΑ͏ʹͳΔ 3.x ͰܥͷओͳมԽ. • IE Ҏ֎ͷϒϥβͰ৽͍͠όʔδϣϯ Ҏ֎ͷॲޓཧ͕আ͞ΕΔ. • API ͷ࣮ͷݟ͕͠ߦΘΕΔ. 2.
(3) Vol.2017-SE-195 No.7 2017/3/12. ใॲཧֶձڀݚใࠂ IPSJ SIG Technical Report. ܠ৭Λද͢ʮbackground-colorʯͱ৭Λද͢ʮredʯΛ ༩͑ͯͼݺग़͍ͯ͠ΔɽjQuery ΦϒδΣΫτʹରͯ͠. 䜰䜽䝉䝇ᩘୖ100䝃䜲䝖䛾䝖䝑䝥䝨䞊䝆 $. ͯهड़ͯ͠ෳͷ API Λͼݺग़͢͜ͱՄೳͰ͋Δɽ. $ $. $ $. ʮ$("#aaa").xxx("bbb").yyy("ccc");ʯͷΑ͏ʹ࿈ଓ͠ $. $. ·ͨɼηϨΫλɾAPIɾύϥϝʔλ܈ͷΈ߹Θͤͷ͜ ͱΛهड़ύλʔϯͱ͢ʹͱ͜ͿݺΔɽهड़ύλʔϯෳ jQuery䛜⏝䛥䜜䛶䛔䜛 䝨䞊䝆䛾䜏ᢳฟ. ͷ API ΛΈ߹ΘͤͨͷͰ͋ΔɽjQuery Ͱ͜ͷهड़ ύλʔϯͷͼݺͰܗग़͞ΕΔ͜ͱ͕ଟ͍ɽͦͷͨΊɼҎ߱ ͷௐࠪϥΠϒϥϦͷ API ͷྫͱͯ͠ɼjQuery ͷهड़ύ λʔϯΛѻ͏ɽ. 3. API ༻ʹΑΔ෭࡞༻ͷௐࠪ. $ $ $ $. $ $. $. 3.1 ௐࠪ֓ཁ ຊௐࠪͷతɼϥΠϒϥϦͷ API Λͼݺग़͢͜ͱʹΑ. jQuery䛾グ㏙䝟䝍䞊䞁䛾 ⟠ᡤ䜢㞟. Δ࣮ߦ࣌ؒͷมԽΛௐΔ͜ͱͰ͋Δɽ1 ͭͷهड़ύλʔ ϯʹ͍ͭͯͷܭଌʹ͖ͭɼൺֱ͢ΔͨΊͷ࣮Λ༻ҙ͢Δ ඞཁ͕͋Δɽ͜ͷ࣮ jQuery ͷ API ʹରͯ͠ಉͷػ. $ $ $. ೳΛɼϒϥβͲͳޓͷॲཧΛߦΘͣʹ JavaScript ͷ ඪ४ͷؔ܈Λ༻͍࣮ͨͰ͋ΔɽҎ߱ɼ͜ͷ࣮ΛωΠ. $. $ $. $. ςΟϒͷ࣮ͱ͢ʹͱ͜ͿݺΔɽjQuery ͷهड़ύλʔϯ ͷͼݺग़͠ํଟ༷Ͱ͋ΔͷͰɼશͯͷهड़ύλʔϯʹର. グ㏙䝟䝍䞊䞁䜢ᢳ㇟. ͯ͠ωΠςΟϒͷ࣮Λ༻ҙ͢ΔͷࠔͰ͋Δɽܭଌ͢ Δهड़ύλʔϯͷΛݶఆ͢ΔͷͰ͋Εɼ༻සͷߴ $. ͍هड़ύλʔϯʹ͍ͭͯܭଌ͢Δͷ͕ଥͰ͋Δɽͦ͜Ͱ. $ $. ·ͣɼϢʔβͷΞΫηεͷଟ͍αΠτʹ͓͍ͯ༻ස $. ͷߴ͍هड़ύλʔϯΛௐࠪ͢Δɽͦͯ͠ɼ༻සͷߴ͍. $ $. $. 10 ݸͷهड़ύλʔϯʹରͯ͠ωΠςΟϒͷ࣮Λ༻ҙ͠ɼ ࣮ߦ࣌ؒΛൺֱ͢Δɽൺֱ͢Δ jQuery ͷόʔδϣϯʹͭ. ᣦᶆ䛻䜘䜚䝷䞁䜻䞁䜾. ͍ͯ 1.x ܥɼ2.x ܥɼ3.x ͔ܥΒ 1 ͭͣͭόʔδϣϯΛબ ͯ͠ܭଌΛߦ͏ɽ Ҏ্Ͱड़ͨ͜ͱΛௐ߲ࠪʹ·ͱΊΔɽຊௐࠪͰ 2. 㡰. 1 2 3. ͭͷௐ߲ࠪΛઃ͚ͯճΛߦ͏ɽ. RQ1: ༻සͷߴ͍ jQuery ͷهड़ύλʔϯԿͰ͋. ͱͰ࣮ߦ͕࣌ؒͲͷఔมԽ͢Δ͔ ͜ΕΒͷௐ߲ࠪͷͦΕͧΕʹ͍ͭͯɼௐࠪํ๏ͱ݁Ռ Λ֤খઅͰड़Δɽ. 1.2 × 10ିସ. $. 6.4 × 10ିହ. $. 2.7 × 10ିହ. ਤ 3. .... RQ2: ༻සͷߴ͍ jQuery ͷهड़ύλʔϯΛ༻͍Δ͜. . $. .... Δ͔. ᢳ㇟䛧䛯 グ㏙䝟䝍䞊䞁. ༻සͷߴ͍هड़ύλʔϯͷௐࠪͷྲྀΕ. ϓϖʔδʹରͯ͠ूܭΛߦ͏͜ͱͱ͢Δɽ100 ສαΠτͷ ͏ͪΞΫηεͰ͖ΔαΠτͷτοϓϖʔδͷιʔείʔυ. 3.2 RQ1: ༻සͷߴ͍هड़ύλʔϯͷௐࠪ ͜ͷখઅͰɼϢʔβͷΞΫηεͷଟ͍αΠτʹ͓͍ ͯɼ༻සͷߴ͍ jQuery ͷهड़ύλʔϯΛௐΔํ๏. Λσʔλϕʔεʹ֨ೲ͢ΔɽҎ߱ͷूۀ࡞ܭσʔλϕʔ ε্ͷίϚϯυͰߦ͏ɽ ΞΫηε্Ґ 100 ສαΠτͷ͏ͪɼjQuery Λ༻ͯ͠. ͱͦͷ݁Ռʹ͍ͭͯड़ΔɽௐࠪͷྲྀΕΛਤ 3 ʹද͢ɽ. ͍Δ͔Ͳ͏͔ͰϑΟϧλϦϯάΛߦ͏ɽ͜Ετοϓϖʔ. 3.2.1 ௐࠪํ๏. δͷιʔείʔυʹʮjqueryʯͱʮ.jsʯͱ͍͏هड़͕͋. ϢʔβͷΞΫηεͷଟ͍αΠτɼAlexa ࣾͷఏ͠ڙ. Δ͔Ͳ͏͔ʹΑΓஅ͢Δɽ͜ͷϑΟϧλϦϯάΛߦͬͨ. ͍ͯΔΞΫηε্Ґ 100 ສαΠτͷϦετΛ༻͍Δɽ֤. ͱ͜ΖɼjQuery Λ༻͍ͯ͠ΔαΠτશମͷ 67 ˋͷ. αΠτͷϖʔδαΠτʹଐ͢ΔશͯͷϖʔδΛߟྀ͢Δ. 665,558 αΠτͰ͋ͬͨɽ. ͱେͳϖʔδʹͳΔͨΊɼຊௐࠪͰ֤αΠτͷτο ⓒ 2017 Information Processing Society of Japan. ࣍ʹͲͷΑ͏ͳهड़ύλʔϯ͕ͼݺग़͞Ε͍ͯ. 3.
(4) Vol.2017-SE-195 No.7 2017/3/12. ใॲཧֶձڀݚใࠂ IPSJ SIG Technical Report. Δ ͔ Λ ू ͢ ܭΔ ɽAPI ͷ هड़ ύ λ ʔ ϯ ਖ਼ نද Ͱ ݱ. tf-idf ͷ߹ɼ͋ΔυΩϡϝϯτʢ͜͜ͰϖʔδʣͰͷ. ʮ$\(.+?\)\..+?\(.*?\)ʯͱද͞ΕΔɽਖ਼نද֘ʹݱ. ಛతͳޠʢهड़ύλʔϯʣΛநग़͢ΔͨΊʹɼdf ͷٯ. ͢Δهड़ύλʔϯͷதͰɼηϨΫλɼAPIɼύϥϝʔλ܈. Λ༻͍ΔɽҰํͰຊߘͰଟ͘ͷϖʔδͰग़͢ݱΔهड़. ͦΕͧΕมԽ͢Δɽಛʹϖʔδ͝ͱʹมԽΛ͢Δͷη. ύλʔϯΛநग़͢ΔͨΊʹɼٯΛऔΒͳ͍͜ͱͱ͢Δɽ. ϨΫλͱύϥϝʔλ͋Ͱ܈Δɽϖʔδ͝ͱʹมԽ͕͋Δঢ়. Αͬͯɼpoppatterni ΛҎԼͷͰࣜࢉܭఆٛ͢Δɽ. ଶͰɼ֤ϖʔδͰಉ͡༻్Ͱ༻͞Ε͍ͯΔهड़ύλʔ ϯΛಉҰࢹ͢Δ͜ͱ͕Ͱ͖ͳ͍ɽͦ͜ͰूܭͷલʹηϨΫ λͱύϥϝʔλʹ܈ରͯ͠நԽΛߦ͏ɽηϨΫλʹ͍ͭ ͯʮ"#ʯͰ࢝·ΔηϨΫλΛ idɼ ʮ".ʯͰ࢝·ΔηϨΫ λΛ classɼͦͷଞʮ"ʯͰ࢝·ΔηϨΫλΛ tagɼ ʮ"ʯҎ ֎Ͱ࢝·ΔηϨΫλΛ variable ͱͯ͠நԽ͢Δɽύϥ ϝʔλ͍ͯͭʹ܈ίϯϚʢ,ʣͰ۠ͬͨจࣈྻͦΕͧΕ Λύϥϝʔλͱ͢Δɽͦͯ͠ɼ ʮ"ʯͰ࢝·ΔύϥϝʔλΛ. stringɼ ʮfunctionʯͰ࢝·ΔύϥϝʔλΛ functionɼͦ ΕҎ֎ͷύϥϝʔλΛ variable ͱͯ͠நԽ͢ΔɽAPI ʹ͍ͭͯͦͷ··༻͢ΔɽநԽͨ͠ηϨΫλɼAPIɼ நԽͨ͠ύϥϝʔλͷΈ߹ΘͤΛநԽͨ͠هड़ύ λʔϯͱ͢ʹͱ͜ͿݺΔɽͦͯ͠هड़ύλʔϯʹରͯ͠ ༻ස͕ߴ͍ॱʹϥϯΩϯάΛ͚ͭΔɽ ग़ݱճͷ߹ॱͰ͚ͩܭҐ͚Λߦ͏ͱɼಛఆͷϖʔδ ͰͷΈԿ༻͞ΕΔهड़ύλʔϯ্͕ҐʹདྷΔՄೳੑ ͕͋ΔɽͦͷͨΊɼଟ͘ͷϖʔδͰΘΕ͍ͯΔ΄Ͳେ͖ ͳΛऔΔΑ͏ͳࢦඪͰॱҐ͚Λߦ͏ඞཁ͕͋Δɽͦ͜ Ͱɼใࡧݕͷ౷ܭͰ͋Δ tf-idf[12] Λࢀߟʹͨ͠ pop ͱ ͍͏ࢦඪΛఏҊ͢Δɽpop ͓Αͼ pop ͷಋग़ʹඞཁͳม ͷఆٛҎԼͰ͋Δɽ. (5). Ҏ্ͷఆٛʹΑΓɼpop ͷͼݺग़͞ΕΔճͷ߹ܭ ͕ଟ͘ɼ͞Βʹଟ͘ͷϖʔδͰग़͢ݱΔ΄Ͳେ͖ͳʹͳ Δɽ͜ΕʹΑΓಛఆͷϖʔδͰͷΈԿͼݺग़͞Ε͍ͯ Δهड़ύλʔϯͷϥϯΩϯάͷӨڹΛ͑Δ͜ͱ͕Ͱ͖ ΔɽநԽͨͦ͠ΕͧΕͷهड़ύλʔϯʹରͯ͠ pop ͷ Λ͠ࢉܭɼ߱ॱʹιʔτͯ͠ॱҐ͚Λߦ͏ɽ. 3.2.2 ௐࠪ݁Ռ σʔλϕʔε্ͰूܭΛͯ͠ɼpop ͷ͕߱ॱʹͳΔΑ ͏ʹϥϯΩϯά͚Λߦͬͨ݁Ռ͕ද 2 Ͱ͋Δɽ࠷ pop ͷ͕େ͖͍ͷʮ$(variable).attr(string)ʯͰ͋ͬ ͨɽ͜Ε variable ͕ද͢ HTML ͷߏཁૉʹରͯ͠ɼ ͋ΔଐੑΛऔಘ͢Δهड़ύλʔϯͰ͋Δɽ࣮ࡍͷιʔε ίʔυΛͯݟΈΔͱɼ͜ͷهड़ύλʔϯʹΑΓʮthisʯ͕ ද͢ߏཁૉͷʮvalueʯͱ͍͏ଐੑͷΛऔಘ͢Δࡍͳ Ͳʹ༻͞Ε͍ͯͨɽ ଞʹද͔ΒಡΈऔΕΔ͜ͱͱͯ͠ɼʮClassʯ͕͍ͨ. API ͕ଟ͍͜ͱ͕Θ͔ΔɽʮaddClassʯߏཁૉʹ class ΛՃ͢Δ API Ͱ͋Γɼ ʮremoveClassʯ class Λআ͢ Δ API Ͱ͋Δɽ ϥ ϯ Ω ϯ ά ද ʹ ͓ ͍ ͯ 5 ൪ ʹ pop ͷ ͕ େ ͖ ͍. هड़ύλʔϯͷू߹Λ {patterni } ͱ͢Δɽ͋Δهड़ύλʔ ϯ patterni Λ༻͍ͯ͠Δϖʔδͷ upagepatterni Ҏ ԼͰද͞ΕΔɽ. ʮ$(variable).ready(function)ʯϒϥβ͕ߏཁ ૉͷಡΈࠐΈΛͼݺʹ͖ͱͨྃ͠ग़ؔ͢Λࢦఆ͢Δ. API Ͱ͋Δɽ ࢦఆ͢ΔؔͰߦ͏ॲཧϖʔδ͝ͱʹେ ͖͘ҟͳΔɽRQ2 Ͱ༻සͷߴ͍هड़ύλʔϯʹର. upagepatterni = |{page : page patterni }|. (1). jQuery ͕ Θ Ε ͯ ͍ Δ ϖ ʔ δ ͷ ू ߹ Λ jpage ͱ ͢ Δ ɽ jQuery ͕ΘΕ͍ͯΔϖʔδͷ͏ͪɼهड़ύλʔϯ patterni ͕ग़͢ݱΔϖʔδͷׂ߹ dfpatterni ҎԼͰද͞ΕΔɽ. dfpatterni =. poppatterni = dfpatterni · tfpatterni. upagepatterni |jpage|. ࣮ͯ͠ߦ࣌ؒͷܭଌΛߦ͏͕ɼ͜ͷ API ؔͷ༰ʹΑ Γ࣮ߦ͕࣌ؒେ͖͘มΘΔͨΊܭଌ͕ࠔͰ͋ΔɽΑͬͯ ʮ$(variable).ready(function)ʯΛআ͍ͨ 9 ͭͷهड़ύ λʔϯʹରͯ͠ɼRQ2 Ͱ࣮ߦ࣌ؒͷӨڹͷௐࠪΛߦ͏ɽ ද 2. நԽͨ͠هड़ύλʔϯͷϥϯΩϯά. (2) ॱҐ. நԽͨ͠هड़ύλʔϯ. pop. ܭଌ ର. ϖʔδ page ʹ͓͚Δهड़ύλʔϯ patterni ͷग़ݱճΛ. npage,patterni ͱ͢Δɽϖʔδ page ʹ͓͚Δશهड़ύλʔ ϯͷ͏ͪͷ patterni ͷׂ߹ ratepage,patterni ҎԼͰද͞ ΕΔɽ. ratepage,patterni. npage,patterni = k npage,patternk. (3). jQuery ͕ΘΕ͍ͯΔϖʔδʹ͓͚Δ ratepage,patterni ͷ ฏۉ tfpatterni ҎԼͰද͞ΕΔɽ. tfpatterni. 1 = ratepage,patterni |jpage| page∈jpage. ⓒ 2017 Information Processing Society of Japan. (4). −4. . 1. $(variable).attr(string). 1.3 × 10. 2. $(variable).find(string). 7.4 × 10−5. . 3. $(variable).addClass(string). 5.9 × 10−5. . 4. $(id).addClass(string). 5.1 × 10−5. . 5. $(variable).ready(function). 4.8 × 10−5. 6. $(id).html(variable). 4.5 × 10−5. . 7. $(id).css(string, string). 4.2 × 10−5. . 8. $(class).removeClass(string). 3.9 × 10−5. . 9. $(class).addClass(string). 3.5 × 10−5. . 10. $(class).css(string, string). 2.9 × 10−5. . 4.
(5) Vol.2017-SE-195 No.7 2017/3/12. ใॲཧֶձڀݚใࠂ IPSJ SIG Technical Report. RQ1 ͷճΛ·ͱΊΔͱҎԼͷΑ͏ʹͳΔɽ RQ1ʮ༻සͷߴ͍ jQuery ͷهड़ύλʔϯԿ. <div> <div> </div> </div>. Ͱ͋Δ͔ʯͷճ. • ༻සͷߴ͍ 10 ͷهड़ύλʔϯද 2 ͷ௨Γ • ࠷༻සͷߴ͍هड़ύλʔϯ ʮ$(variable).attr(string)ʯ. <div></div> <div></div>. • class ʹؔ͢Δ API ͕ଟ͍ (a) ೖΕࢠߏ. (b) ฒྻߏ. ਤ 4 2 ͭͷཁૉͷؔ. 3.3 RQ2: هड़ύλʔϯͷ࣮ߦ࣌ؒͷӨڹͷௐࠪ ͜ͷখઅͰɼRQ1 Ͱௐͨ༻සͷߴ͍هड़ύλʔ ϯʹ͍ͭͯɼ࣮ߦ͕࣌ؒͲͷఔมԽ͢Δ͔ΛௐΔํ๏ ͱͦͷ݁Ռʹ͍ͭͯड़Δɽ. for (var i = 1; i <= 25000; i++) { $("#i" + i).addClass("c" + (i + 5000)); }. 3.3.1 ௐࠪํ๏. ਤ 5. هड़ύλʔϯͷ࣮ߦʹ͔͔Δ࣌ؒΛܭଌ͢Δͷʹඞཁͳ ͷͱͯ͠ɼهड़ύλʔϯΛ࣮ߦ͢Δ HTML ͕͋Δɽ࣮ ࡏͷ Web ϖʔδΛܭଌͷͨΊʹ༻͢Δͱ͢ΔͱɼநԽ ͨ͠ηϨΫλύϥϝʔλΛ࠶۩Խ͢Δඞཁ͕͋Γɼ ͦͷ࡞ۀࠔͰ͋Δɽͦ͜ͰຊௐࠪͰଟͷߏཁૉ. هड़ύλʔϯʹର͢Δ jQuery ͷ࣮. for (var i = 1; i <= 25000; i++) { document.getElementById("i" + i) .classList.add("c" + (i + 5000)); }. ͔ΒͳΔܭଌ༻ HTML Λ࡞͢ΔɽHTML ͷߏཁૉ. ਤ 6. هड़ύλʔϯʹର͢ΔωΠςΟϒͷ࣮. ߏͰ͋Γɼ2 ͭͷཁૉͷΈ͔ΒͳΔͱ͖ɼਤ 4 ͷΑ͏ ʹೖΕࢠߏͱͳΔ߹ͱฒྻߏͱͳΔ߹͕͋Δɽͦ. ઌͷ࣮ͰݧಘΒΕͨ༻සͷߴ͍هड़ύλʔϯͦΕ. ͜Ͱ༻ҙ͢Δܭଌ༻ HTML ͱͯ͠ೖΕࢠߏͱฒྻߏ. ͧΕʹ͍ͭͯɼܭଌ༻ HTML ͷߏཁૉʹରͯ͠هड़ύ. ΛͦΕͧΕ܁Γฦͨ͠ 2 छྨͷ HTML Λ࡞͢Δɽ·ͨɼ. λʔϯΛ࣮ߦ͢ΔϓϩάϥϜΛ࡞͢Δɽهड़ύλʔϯ. هड़ύλʔϯͷηϨΫλύϥϝʔλʹΑͬͯߏཁૉΛ. ʮ$(id).addClass(string)ʯʹରͯ͠ jQuery Λ༻ͯ͠. ࢦఆͰ͖ΔΑ͏ʹɼͦΕͧΕͷߏཁૉʹ id class Λ. ࣮ͨ͠ϓϩάϥϜͱωΠςΟϒͷ࣮ͷྫ͕ਤ 5ɼ6 Ͱ. ༩͢Δɽid class ͷ༩ΛϥϯμϜʹߦͬͨ HTML Λ. ͋Δɽ ͲͪΒ id ͕༩͞Εͨ HTML ͷߏཁૉʹ৽ͨ. ೖΕࢠߏͱฒྻߏͦΕͧΕͰ 10 ͭͣݸɼ ܭ20 ݸͷ. ͳ class ΛՃ͢Δͱ͍͏ॲཧΛ܁Γฦ͍ͯ͠Δɽਤ 5 ͷ. HTML Λ༻ҙ͢Δɽͦͯ͠ɼͦΕͧΕͷ HTML ʹରͯ͠. jQuery ͷ࣮Ͱهड़ύλʔϯΛͦͷ··༻͍ͯ͠Δɽ. લઅͰಘΒΕͨ༻සͷߴ͍هड़ύλʔϯΛ࣮ߦ͢Δɽ هड़ύλʔϯ 1 ճ͋ͨΓͷ࣮ߦ࣌ؒඇৗʹ͍ͨΊɼ. ਤ 6 ͷωΠςΟϒͷ࣮Ͱ getElementById ͳͲͷඪ४ ͷؔΛΈ߹ΘͤͯతͷॲཧΛ࣮͍ͯ͠Δɽ. ൺֱʹेͳʹͳΔ·Ͱ܁Γฦ࣮͠ߦͯ࣌ؒ͠Λܭଌ͢. ൺֱ͢Δ jQuery ͷόʔδϣϯද 3 ͷ௨ΓͰ͋Δɽ1.x. Δɽ༧උ࣮ݧͷ݁Ռɼܭଌ༻ HTML ͷཁૉΛ 5 ສʹ͢. ܥɼ2.x ܥɼ3.x ܥͷ͏ͪͦΕͧΕͷ࠷৽ͷόʔδϣϯΛ. Εهड़ύλʔϯͷ࣮ߦ͕࣌ؒൺֱʹඞཁͳʹͳΔ͜ͱ. ༻͢Δɽ·ͨɼRQ2 ͷௐࠪΛߦ͏ڥΛද 4 ʹ·ͱΊΔɽ. ͕Θ͔ͬͨɽ͜ͷ HTML ͷߏཁૉʹରͯ͠ id class. 3.3.2 ௐࠪ݁Ռ. Λࢦఆͯ͠܁Γฦ͠هड़ύλʔϯΛ࣮ߦ͢Δ͜ͱΛ 1 ηο. ֤όʔδϣϯ͝ͱʹهड़ύλʔϯͷ࣮ߦ࣌ؒΛܭଌͯ͠. τͷ࣮ߦͱ͢ΔɽϒϥβͰ JavaScript ͷ࣮ߦΛ։࢝ͨ͠. ωΠςΟϒͷ࣮ͷ࣮ߦ࣌ؒͱൺֱͨ݁͠ՌΛ·ͱΊͨ. ޙ༷ʑͳཁҼʹΑͬͯଟ͕͔͔࣌ؒ͘Δ͜ͱ͕͋Δɽ. ͷ͕ਤ 7ɼ8 Ͱ͋Δɽάϥϑͷॎ͕࣠ද͢ɼωΠςΟ. ͦ͜ͰɼཁҼʹΑΔӨڹΛݮΒͨ͢ΊʹॳΊʹ 5 ηοτܭ. ϒͱ jQuery ͷ 3 όʔδϣϯͦΕͧΕͷ࣮ͷ࣮ߦ࣌ؒΛ. ଌΛ͠ͳ͍࣮ߦΛͨ͠ͷͪɼ10 ηοτ࣮ߦͯ͠ܭଌΛߦ. ωΠςΟϒͷ࣮ͷ࣮ߦ࣌ؒͰׂͬͨɼ͢ͳΘͪഒͰ. ͏ɽͦͯ͠ɼ10 ηοτͷதԝΛ࣮ߦ࣌ؒͷܭଌ݁Ռͱ͢. ͋ΔɽωΠςΟϒͷৗʹ 1 ʹͳΔ͕ɼൺֱͷͨΊʹά. Δɽ͜ͷܭଌख๏ JavaScript ͷύϑΥʔϚϯεʹؔ͢Δ. ϥϑʹՃ͍ͯ͠Δɽ·ͨɼԣ࣠ͷࣈ RQ1 Ͱௐࠪ͠. ௐࠪจ [13] Λࢀߟʹ͍ͯ͠Δɽ. ͨ༻සͷߴ͍هड़ύλʔϯͷॱҐͱରԠ͍ͯ͠Δɽ ೖΕࢠɾฒྻͷ྆ߏͦΕͧΕͷάϥϑʹ͓͍ͯɼ͕. ද 3. ൺֱ͢Δ jQuery ͷόʔδϣϯ. ද 4. όʔδϣϯ. ϑΝΠϧαΠζ. ϦϦʔε. 1.12.4. 287KB. 2016 5 ݄ 20 . Web ϒϥβ. 2.2.4. 252KB. 2016 5 ݄ 20 . OS. 3.1.1. 261KB. 2016 9 ݄ 22 . CPU. ⓒ 2017 Information Processing Society of Japan. RQ2 ͷௐࠪڥ. Google Chrome 55.0.2883.87 Windows 10 Pro Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz. 5.
(6) Vol.2017-SE-195 No.7 2017/3/12. ใॲཧֶձڀݚใࠂ. ᐇ⾜㛫䛾ಸ⋡ (ྛ䝷䜲䝤䝷䝸 / Native). IPSJ SIG Technical Report. 11 10 9 8 7 6. Native. 5. jQuery1.12.4. 4. jQuery2.2.4. 3. jQuery3.1.1. 2 1 0 1. 2. 3. 4. 6. 7. 8. 9. 10. RQ1䛾䝷䞁䜻䞁䜾䛻䛚䛡䜛グ㏙䝟䝍䞊䞁䛾㡰. ᐇ⾜㛫䛾ಸ⋡ (ྛ䝷䜲䝤䝷䝸 / Native). ਤ 7. ೖΕࢠߏͷܭଌ༻ HTML ʹର͢Δ֤هड़ύλʔϯͷ࣮ߦ࣌ؒ. 11 10 9 8 7 6. Native. 5. jQuery1.12.4. 4. jQuery2.2.4. 3. jQuery3.1.1. 2 1 0 1. 2. 3. 4. 6. 7. 8. 9. 10. RQ1䛾䝷䞁䜻䞁䜾䛻䛚䛡䜛グ㏙䝟䝍䞊䞁䛾㡰 ਤ 8. ฒྻߏͷܭଌ༻ HTML ʹର͢Δ֤هड़ύλʔϯͷ࣮ߦ࣌ؒ. 1 ΛԼճΔ͜ͱͳ͔ͬͨɽ͜ΕɼjQuery ͷهड़ύλʔ ϯΛ༻͍ΔͱωΠςΟϒͷ࣮ʹൺͯৗʹ࣮ߦ͕࣌ؒ૿. RQ2 ͷճΛ·ͱΊΔͱҎԼͷΑ͏ʹͳΔɽ RQ2ʮ༻සͷߴ͍ jQuery ͷهड़ύλʔϯΛ. Ճ͢Δ͜ͱΛҙຯ͢Δɽ. ༻͍Δ͜ͱͰ࣮ߦ͕࣌ؒͲͷఔมԽ͢Δ͔ʯͷ. άϥϑͷ͏ͪɼ࠷େͷΛऔͬͨͷهड़ύλʔϯ. ճ. ʮ$(class).removeClass(string)ʯΛೖΕࢠߏͷܭଌ. • ωΠςΟϒͱൺֱͯ͠ฏͰۉ 4 ഒʹ૿Ճͨ͠. ༻ HTML ʹରͯ͠ jQuery3.1.1 ͔Βͼݺग़ͨ͠ͱ͖Ͱ͋. • ωΠςΟϒΑΓ࣮ߦ͕࣌ؒ͘ͳΔ͜ͱͳ. ΔɽωΠςΟϒͷ࣮ͱൺͯ 11 ഒͷ࣮ߦ࣌ؒΛཁͨ͠ɽ ಉ༷ʹ jQuery3.1.1 ͔Βͼݺग़ͨ͠ͱ͖ʹߴ͍ഒΛऔΔ هड़ύλʔϯʮ$(class).addClass(string)ʯͱͷڞ௨ ͱͯ͠ɼηϨΫλ͕ class Ͱ͋ΓɼAPI class ʹର͢Δ ॲཧͰ͋Δ͜ͱ͕͛ڍΒΕΔɽ ·ͨɼಉ͡هड़ύλʔϯʹର͢ΔೖΕࢠߏͱฒྻߏ ͷάϥϑΛൺֱ͢Δͱɼ ʮ$(variable).find(string)ʯͷ. ͔ͬͨ. • jQuery ͷ֤όʔδϣϯؒͰ 2.2.4 ͷ࣮ߦ࣌ؒ ͕࠷͔ͬͨ. 4. ߟ લઅͰಘΒΕͨ݁Ռʹ͍ͭͯɼάϥϑΛͱʹཧͯ͠ɼ ߟ͑͏Δ͜ͱʹ͍ͭͯड़Δɽ. ߹Λআ͍ͯ΄΅͍͠ΛऔΔ͜ͱ͕͔Δɽ શମͷฏͯ͠ͱۉɼjQuery ͔Βهड़ύλʔϯΛͼݺग़͠ ͨ߹ɼωΠςΟϒͷ࣮ͱൺͯ 3.9 ഒͷ࣮ߦ͕͔࣌ؒ. 4.1 API ͷ࣮ߦ࣌ؒͷ͚͓ʹ؍Δ jQuery ར༻ͷੋඇ ೖΕࢠɾฒྻͷ྆ߏͦΕͧΕͷάϥϑ͔ΒɼjQuery ͷ. ͔Δ͜ͱ͕Θ͔ͬͨɽjQurey ͷ֤όʔδϣϯͰൺֱ͢Δ. هड़ύλʔϯΛ༻͍Δ͜ͱͰ࣮ߦ͕࣌ؒৗʹ૿Ճ͢Δ͜ͱ. ͱɼjQuery2.2.4 ͷ࣮ߦ͕࣌ؒ࠷͍͜ͱ͕Θ͔ͬͨɽ. ͕Θ͔Δɽ࣮ݧΛ࢝ΊΔલͷஈ֊Ͱ༧ͨ͠௨Γɼϒϥ βͲͳޓͷॲཧʹΑΓωΠςΟϒͷ࣮ͱൺͯଟ͘ͷ ࣮ߦ࣌ؒΛཁ͍ͯ͠ΔͷͱࢥΘΕΔɽ. ⓒ 2017 Information Processing Society of Japan. 6.
(7) Vol.2017-SE-195 No.7 2017/3/12. ใॲཧֶձڀݚใࠂ IPSJ SIG Technical Report. ·ͨɼωΠςΟϒͷ࣮ͱൺֱͯ͠ jQuery ͷهड़ύλʔ. ΕࢠߏͱฒྻߏΛ܁Γฦͨ྆͠ۃͷ HTML ʹΑͬ. ϯΛ༻͍ͨ߹ͷ࣮ߦ͕࣌ؒฏ Ͱۉ3.9 ഒͱͳͬͨɽ͜Ε. ͯ࠶ͨ͠ݱɽ྆ํͷ HTML Ͱ jQuery Λ༻͍ͯ͠Δ. ɼWeb αΠτΛ࡞͢ΔࡍωΠςΟϒͷ࣮ͰࣄΓΔ. ߹ͱ༻͍ͯ͠ͳ͍߹ͷ࣮ߦ࣌ؒʹࠩҟ͕ੜ͍ͯ͡Δͨ. ͳΒɼjQuery ͔Β API Λͼݺग़͢߹ͱൺ࣮ͯߦ࣌. Ίɼ݁Ռ͕େ͖͘มԽ͢Δ͜ͱͳ͍ͱߟ͑ΒΕΔɽ. ؒΛ 4 ͷ 1 ʹ͢Δ͜ͱ͕Ͱ͖ΔՄೳੑ͕͋Δ͜ͱΛද͢ɽ. ຊௐࠪͰهड़ύλʔϯͷ࣮ߦ࣌ؒΛܭଌ͢Δࡍʹɼ1. Web ϒϥβͰϖʔδ͕දࣔ͞ΕΔ·Ͱͷ࣌ؒΫϦο. ճ͋ͨΓͷ࣮ߦ࣌ؒͰ͗͢ΔͨΊɼهड़ύλʔϯΛ܁. Ϋ࣌ͳͲͷΞΫγϣϯʹ͔͔Δ࣌ؒΛॖ͍ͨ͠ͷͰ͋Ε. Γฦ࣮͠ߦ͢Δࡍʹཁ͢Δ࣌ؒΛܭଌ͍ͯ͠Δɽ͜͠ͷ. ɼωΠςΟϒͷ࣮Λߦ͏ݕ౼ͷ༨͕͋Δͱ͍͑Δɽ. ܁Γฦ͠ߦ͏࣮ߦ͕࣮ํ๏ʹΑͬͯϒϥβʹΑΓ࠷ దԽ͞ΕΔ߹ɼܭଌ݁Ռ͕͍ͯͬޡΔՄೳੑ͕͋Δɽ͜. 4.2 class ؔͷ API ʹ͓͍ͯ jQuery3.x ࠷͕ܥେ ͖͍ΛऔΔཧ༝ શ ͯ ͷ ά ϥ ϑ ͷ த Ͱ ೖ Ε ࢠ ߏ ͷ ܭଌ ༻ HTML ʹ. Εʹ͍ͭͯ Chrome ͷσϕϩούʔπʔϧΛ༻͍ͯௐͨ ͕ɼ࠷దԽ͕ߦΘΕ͍ͯΔ͔Ͳ͏͔Λ֬ೝ͢Δ͜ͱͰ͖ ͳ͔ͬͨɽ. ରͯ͠هड़ύλʔϯʮ$(class).addClass(string)ʯΛ. jQuery3.1.1 ͔Βͼݺग़ͨ͠ͱ͖ʹ࠷େͷͱͳͬͨɽόʔ δϣϯ͕ jQuery2.2.4 ͷ߹ҎԼͷ 4.5 ഒͰ͋Δɽ. 5.2 ֎తଥੑ ຊௐࠪͰ JavaScript ϥΠϒϥϦΛ༻ͨ͜͠ͱʹΑ. jQuery3.x ܥ jQuery2.x ʹܥର࣮ͯ͠ͷݟ͠Λߦͬ. Δ෭࡞༻Λܭଌ͢ΔͨΊʹ jQuery Λࡐͱͨ͠ɽ͠. ͍ͯΔͨΊɼ࣮ߦ࣌ؒಉఔ͔গ͘͠ͳΔͱߟ͍͑ͯͨ. jQuery Ҏ֎ͷ JavaScript ϥΠϒϥϦΛࡐͱͯ͠ܭଌ͠. ͚ͩʹɼ༧ʹ͢Δ݁Ռͱͳͬͨɽ͜ͷ݁Ռʹ͍ͭͯௐ. ͨͱ͖ʹҟͳΔ݁ՌʹͳΔՄೳੑ͕͋Δɽ. ΔͨΊʹɼaddClass ͱ removeClass ͷ࣮Λ jQuery ͷ֤. ຊௐࠪͰ༻සͷߴ͍هड़ύλʔϯΛू͢ܭΔର. όʔδϣϯ͝ͱʹൺֱͨ͠ɽjQuery1.12.4 ͱ jQuery2.2.4. ͱͯ͠ΞΫηεͷଟ͍αΠτͷτοϓϖʔδͷΈΛબ. ؒͰେ͖ͳมԽͳ͔ͬͨͷʹର͠ɼjQuery2.2.4 ͱ. ͨ͠ɽ͠τοϓϖʔδҎ֎ରͱͨ͠߹ҟͳΔܭ. jQuery3.1.1 ؒͰਖ਼نදͲͳݱͷॲཧ͕มߋ͞Ε͍ͯΔ. ଌ݁ՌʹͳΔՄೳੑ͕͋Δɽ͔͠͠ͳ͕Βɼ1 ͭͷαΠτ. ͜ͱ͕Θ͔ͬͨɽηϨΫλ͕ class ͷ߹ʹ͓͍ͯେ͖ͳ. ʹେͳϖʔδ͕ଘࡏ͢ΔͨΊɼͦΕΒΛͯ͢ରͱ. ͕ࠩੜ͍ͯ͡ΔͨΊɼෳͷߏཁૉʹର͢Δ࣮ߦʹର͠. ͢ΔͷࠔͰ͋Δͱ͍͏ͷ 3 અͰड़ͨ௨ΓͰ͋Δɽ. ͯมߋͷӨ͕ڹग़ͨͷͰͳ͍͔ͱߟ͑ΒΕΔɽ. ຊௐࠪͰ࣮ߦ࣌ؒͷܭଌʹ༻͢Δϒϥβͱͯ͠. Google Chrome Λ༻͍ͨɽ͠ଞͷϒϥβΛ༻ͯ͠ܭ 4.3 Ұ෦ͷهड़ύλʔϯʹ͓͍ͯߏʹΑΓେ͖݁͘Ռ ͕ҟͳΔཧ༝ ಉ͡هड़ύλʔϯʹର͢ΔೖΕࢠߏͱฒྻߏͷά ϥϑΛൺֱ͢Δͱɼଞ͕΄΅͍͠ΛऔΔͷʹରͯ͠. ଌΛߦͬͨ߹ɼҟͳΔܭଌ݁ՌʹͳΔՄೳੑ͕͋Δɽ. 6. ͓ΘΓʹ ຊߘͰɼJavaScript ϥΠϒϥϦΛ༻͢Δ͜ͱʹΑΔ. ʮ$(variable).find(string)ʯͷΈେ͖ͳ͕ࠩੜͨ͡ɽ. ෭࡞༻ʹؔͯ͠ɼjQuery Λࡐͱͯ͠ API ͷ࣮ߦ࣌ؒͷ. ʮfindʯ HTML ͷߏཁૉΛ͢ࡧݕΔ API Ͱ͋Δɽͦ. มԽʹ͍ͭͯௐࠪͨ͠ɽ࣮ݧͷ݁ՌɼjQuery ͷهड़ύλʔ. ͷͨΊɼ࣮ํ๏ͱߏͷؔʹΑΓ͕ࠩੜͨ͡ͷͱߟ. ϯΛ༻͢Δ͜ͱʹΑΓɼωΠςΟϒͷ࣮ͱൺֱͯ͠ฏ. ͑ΒΕΔɽ. Ͱۉ 4 ഒͷ࣮ߦ͕͔͔࣌ؒΔ͜ͱͳͲ͕Θ͔ͬͨɽ. 5. ଥੑͷڴҖ ͜ͷઅͰຊௐࠪͷ݁ՌͷଥੑʹӨڹΛڪ͢΅ٴΕͷ ͋Δʹ͍ͭͯड़Δɽ. ࠓޙͷܭըͱͯ͠ɼωοτϫʔΫ௨৴ྔͱ͍ͬͨɼ. API ͷ࣮ߦ࣌ؒҎ֎ͷ෭࡞༻ʹ͍ͭͯௐࠪΛߦ͏ɽ·ͨɼ JavaScript ϥΠϒϥϦʹ͍ͭͯɼjQuery Ҏ֎ͷϥΠϒϥ Ϧʹରͯ͠ௐࠪΛߦ͏༧ఆͰ͋Δɽෳͷௐࠪͷ݁ՌΛ ͱʹ໌Β͔ʹͳͬͨʹରͯ͠ɼղܾҊΛఏҊ͢Δ. 5.1 తଥੑ. ͜ͱΛඪͱ͍ͯͯ͛͠ܝΔɽ. ຊௐࠪͰαΠτͰ jQuery ͕༻͞Ε͍ͯΔ͔֬ೝ هड़ύλʔϯऩूʹਖ਼نදݱΛ༻͍͍ͯΔɽຊདྷௐࠪͷ. ँࣙ. ຊڀݚɼຊֶज़ৼڵձՊֶڀݚඅิॿۚج൫. ରʹ͖͢هड़͕ਖ਼نදʹݱϚον͠ͳ͍͜ͱʹΑΓର. ڀݚʢSʣ ʢ՝൪߸ɿJP25220003ʣ ɼ͓Αͼจ෦Պֶলݚ. ʹͰ͖͍ͯͳ͍Մೳੑ͕͋Δɽ. ڀඅิॿۚएखڀݚʢBʣ ʢ՝൪߸ɿJP26730155ʣͷॿ. ຊௐࠪͰهड़ύλʔϯΛ࣮ߦ͢Δϖʔδͱͯ͠ɼܭଌ. ΛಘͯߦΘΕͨɽ. ༻ HTML Λ࡞ͨ͠ɽ࣮͠ࡍͷ Web αΠτͷ HTML ʹରͯ͠ܭଌΛߦ͏ͱҟͳΔ݁ՌʹͳΔՄೳੑ͕͋Δɽ͠ ͔͠ͳ͕Βɼ࡞ͨ͠ HTML ߏཁૉͷؔͷ͏ͪೖ ⓒ 2017 Information Processing Society of Japan. 7.
(8) ใॲཧֶձڀݚใࠂ IPSJ SIG Technical Report. Vol.2017-SE-195 No.7 2017/3/12. ࢀߟจݙ [1]. [2] [3]. [4]. [5]. [6]. [7]. [8]. [9]. [10]. [11]. [12] [13]. Pradel, M. and Sen, K.: The good, the bad, and the ugly: An empirical study of implicit type conversions in JavaScript, LIPIcs-Leibniz International Proceedings in Informatics, Vol. 37, Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik (2015). Crockford, D.: JavaScript: The Good Parts: The Good Parts, ” O’Reilly Media, Inc.” (2008). Alimadadi, S., Mesbah, A. and Pattabiraman, K.: Understanding asynchronous interactions in full-stack JavaScript, Proceedings of the 38th International Conference on Software Engineering, ACM, pp. 1169–1180 (2016). Mesbah, A. and Prasad, M. R.: Automated crossbrowser compatibility testing, Proceedings of the 33rd International Conference on Software Engineering, ACM, pp. 561–570 (2011). Ochin, J. G.: Cross Browser Incompatibility: Reasons and Solutions, International Journal of Software Engineering & Applications (IJSEA), Vol. 2, No. 3 (2011). The jQuery Foundation: jQuery, The jQuery Foundation (online), available from http://jquery.com/ (accessed 2017-02-07). Q-Success: Usage Statistics and Market Share of jQuery for Websites, February 2017, Q-Success (online), available from https://w3techs.com/technologies/details/jsjquery/all/all (accessed 2017-02-07). Google: AngularJS – Superheroic JavaScript MVW Framework, Google (online), available from https://angularjs.org/ (accessed 2017-02-10). Ashkenas, J.: Backbone.js, DocumentCloud (online), available from http://backbonejs.org/ (accessed 201702-10). Fielding, R. T.: Architectural styles and the design of network-based software architectures, PhD Thesis, University of California, Irvine (2000). Matsumoto, S. and Nakamura, M.: A Preliminary Study of Size Optimization for Text-Based Web-Resource, Empirical Software Engineering in Practice (IWESEP), 2016 7th International Workshop on, IEEE, pp. 36–40 (2016). Salton, G. and McGill, M. J.: Introduction to modern information retrieval (1986). Selakovic, M. and Pradel, M.: Performance issues and optimizations in JavaScript: An empirical study, Proceedings of the 38th International Conference on Software Engineering, ACM, pp. 61–72 (2016).. ⓒ 2017 Information Processing Society of Japan. 8.
(9)
関連したドキュメント
(3) We present a JavaScript library 2 , that contains all the al- gorithms described in this paper, and a Web platform, AGORA 3 (Automatic Graph Overlap Removal Algorithms), in
6 Baker, CC and McCafferty, DB (2005) “Accident database review of human element concerns: What do the results mean for classification?” Proc. Michael Barnett, et al.,
(4) 「舶用品に関する海外調査」では、オランダ及びギリシャにおける救命艇の整備の現状に ついて、IMBVbv 社(ロッテルダム)、Benemar 社(アテネ)、Safety
助教 Behaviour 2017 (a joint meeting of the 35th International Ethological Conference (IEC) and the 2017 Summer Meeting of the Association for the Study of Animal Behaviour
ご使用になるアプリケーションに応じて、お客様の専門技術者において十分検証されるようお願い致します。ON
ご使用になるアプリケーションに応じて、お客様の専門技術者において十分検証されるようお願い致します。ON
ご使用になるアプリケーションに応じて、お客様の専門技術者において十分検証されるようお願い致します。ON
ご使用になるアプリケーションに応じて、お客様の専門技術者において十分検証されるようお願い致します。ON