• 検索結果がありません。

Web閲覧時におけるJavaScriptライブラリ使用による副作用の調査

N/A
N/A
Protected

Academic year: 2021

シェア "Web閲覧時におけるJavaScriptライブラリ使用による副作用の調査"

Copied!
8
0
0

読み込み中.... (全文を見る)

全文

(1)Vol.2017-SE-195 No.7 2017/3/12. ৘ใॲཧֶձ‫ڀݚ‬ใࠂ IPSJ SIG Technical Report. Web Ӿཡ࣌ʹ͓͚Δ JavaScript ϥΠϒϥϦ࢖༻ʹΑΔ ෭࡞༻ͷௐࠪ ࢁຊ ক߂1,a). 㤟ຊ ਅ༎1,b). ೇຊ ਅೋ1,c). ֓ཁɿJavaScript ʹ͸ jQuery Λ͸͡Ίͱ͢Δ༷ʑͳϥΠϒϥϦ͕ଘࡏ͍ͯ͠Δɽ͜ΕΒΛར༻͢Δ͜ͱ Ͱɼ։ൃऀ͸ίʔυͷՄಡੑ΍࠶ར༻ੑͷ޲্ɼϒϥ΢β‫ॲ׵ޓ‬ཧͷলུͱ͍ͬͨར఺͕ಘΒΕΔɽͦͷҰ ํͰɼϢʔβʹରͯ͠͸࣮ߦ࣌ؒ΍ωοτϫʔΫ௨৴ྔͷ૿ՃͳͲͷ෭࡞༻͕ൃੜ͢ΔɽຊߘͰ͸ jQuery Λ୊ࡐͱͯ͠ɼJavaScript ϥΠϒϥϦ࢖༻࣌ʹൃੜ͢Δ࣮ߦύϑΥʔϚϯε΁ͷ෭࡞༻ʹ͍ͭͯɼAPI ͷ ࣮ߦ࣌ؒͷ‫͔఺؍‬ΒௐࠪΛߦ͏ɽௐࠪͰ͸ɼ·ͣ jQuery ͷ API ʹ͍ͭͯɼग़‫ݱ‬ස౓ͷߴ͍࢖༻ํ๏Λௐ ΂Δɽͦͯ͠ɼͦΕΒͷ࢖༻ํ๏ʹରͯ͠ɼಉ͡ಈ࡞Λ͢Δ࣮૷Λ JavaScript ωΠςΟϒͰ࡞੒࣮ͯ͠ߦ ࣌ؒͷมԽΛ‫ܭ‬ଌ͢Δɽ·ͨɼௐࠪͰಘΒΕͨ݁ՌΛ΋ͱʹߟ࡯Λߦ͏ɽ ΩʔϫʔυɿJavaScript ϥΠϒϥϦɼ෭࡞༻ɼjQueryɼAPIɼ࣮ߦ࣌ؒ. 1. ͸͡Ίʹ. ณԽ͢Δ͜ͱʹ͋Δɽྫ͑͹ɼ͋Δ HTML ཁૉʢelementʣ ͷ എ ‫ ܠ‬৭ Λ ੺ ʹ ม ߋ ͢ Δ ࡍ ͸ ɼJavaScript ω Π ς Ο ϒ. JavaScript ͸ Web ϒϥ΢β্Ͱಈ࡞͢ΔΫϥΠΞϯτ. ͷ‫ه‬๏Ͱ͸ element.style.background-color="red"ͱ. αΠυ‫ͯ͠ͱޠݴ‬ɼඞཁෆՄܽͳٕज़ͱͳΓͭͭ͋ΔɽҰ. ͍͏୅ೖࣜͷ‫هͰܗ‬ड़͢Δඞཁ͕͋Δ͕ɼjQuery Ͱ͸. ํͰɼͦͷ‫ه‬๏΍จ๏ʹରͯ͠Ұఆͷ൷൑΋ଘࡏ͓ͯ͠Γɼ. element.css("background-color", "red") ͱ͍͏ηο. ܾͯ͠։ൃ͕༰қͳ‫͋Ͱޠݴ‬Δͱ͸͍͑ͳ͍ɽ۩ମతͳ൷. λʔ‫ ܥ‬API Λ‫ͼݺ‬ग़͢‫هͰܗ‬ड़ՄೳͱͳΔɽ͞Βʹ͜ͷ. ൑ͱͯ͠͸ɼ‫ܕ‬ͷൺֱ͕௚‫ײ‬తͰͳ͘όάͷཁҼʹͳΓ΍. css(key, value) ͷதͰ͸ɼม਺ key ʹରͯ͠ɼϒϥ΢. ͍͢ [1]ɼ໊લۭؒͷ‫ػ‬ೳ͕ͳ͘άϩʔόϧΦϒδΣΫτΛ. β͝ͱͷද‫ݱ‬ͷҧ͍ʢϕϯμϓϨϑΟοΫεʣΛ‫ٵ‬ऩ͢Δ. ଟ༻͕ͪ͠Ͱ͋Δ [2]ɼෳ਺ͷίʔϧόοΫॲཧ͕ೖΕࢠʹ. ॲཧ͕ߦΘΕ͓ͯΓɼ༰қʹϒϥ΢β‫ॲ׵ޓ‬ཧ͕࣮‫͖Ͱݱ‬. ͳΓՄಡੑΛ௿Լͤ͞ΔίʔϧόοΫ஍ࠈ [3] ͳͲ͕‫͛ڍ‬. Δɽۙ೥Ͱ͸ɼ͜ͷΑ͏ͳϥΠϒϥϦҎ֎ʹ΋ɼMVC ϑ. ΒΕΔɽ͞ΒʹɼJavaScript ͷॲཧ΍ HTML/CSS ͷඳը. ϨʔϜϫʔΫ [8], [9] ΍ɼJavaScript Λੜ੒͢Δ୅ସ‫ޠݴ‬. ͕ϒϥ΢β͝ͱʹҟͳΔͱ͍͏Ϋϩεϒϥ΢β໰୊ [4], [5]. ʢaltJSʣͳͲ΋ొ৔͓ͯ͠ΓɼWeb ͷ։ൃऀΛࢧԉ͢Δٕ. ͸ɼWeb ͷ։ൃʹ͓͚Δॏେͳোนͱͳ͍ͬͯΔɽ. ज़͕ਁಁͭͭ͋͠Δɽ. ͜ΕΒͷ໰୊ʹର͠ɼ༷ʑͳ JavaScript ϥΠϒϥϦ΍ϑ. ͜ͷΑ͏ʹɼJavaScript ͷϥΠϒϥϦ΍ϑϨʔϜϫʔ. ϨʔϜϫʔΫ͕ఏ‫͞ڙ‬ΕΔΑ͏ʹͳͬͨɽதͰ΋ jQuery[6]. Ϋ͸։ൃऀʹ༷ʑͳԸ‫ܙ‬Λ΋ͨΒ͢ҰํͰɼWeb ͷར༻. ͸ Web શମͷ಺ɼ໿ 72%Ͱར༻͞Ε͍ͯΔͱ͍͏ใࠂ΋͋. ऀʢ͋Δ͍͸ϒϥ΢βͷ࣮ߦ‫ڥ؀‬ʣʹରͯ͠͸Ұఆͷѱ. Γ [7]ɼߴ͍ਓ‫ؾ‬Λ࣋ͭϥΠϒϥϦͰ͋Δͱ͍͑ΔɽjQuery. Ө‫ڹ‬Λ‫͢΅ٴ‬ɽྫ͑͹ɼϥΠϒϥϦಡΈࠐΈ࣌ʹ͸Ұఆ. ͸ “write less, do more” ͱ͍͏ඪ‫ޠ‬Λ‫͓ͯ͛ܝ‬Γɼจࣈ௨Γ. ͷωοτϫʔΫ௨৴͕ൃੜ͠ɼ͞ΒʹಡΈࠐΈ‫ʹޙ‬͸ JIT. Web ։ൃऀʹରͯ͠গͳ͍‫ه‬ड़Ͱଟ͘ͷॲཧΛ࣮‫͢ݱ‬Δ͜. ʢJust-in-TimeʣίϯύΠϥʹΑΔॲཧ͕ൃੜ͢ΔɽΑͬ. ͱ͕ՄೳͰ͋Δɽͦͷ‫ج‬ຊతͳΞΠσΞ͸ɼJavaScript Ͱଟ. ͯɼϥΠϒϥϦʹ‫͘ڧ‬ґଘͨ͠ Web ϖʔδͰ͸ɼ࣮ࡍʹ. ༻͞ΕΔయ‫ܕ‬తͳॲཧʢHTML ཁૉͷબ୒΍ଐੑͷ௥ՃɼΠ. HTML ͷ݁Ռ͕ϨϯμϦϯά͞ΕΔ·ͰʹҰఆͷ஗Ԇ͕. ϕϯτॲཧͷ௥ՃͳͲʣΛϥΠϒϥϦͷఏ‫͢ڙ‬Δ API ͱ͠ɼ. ൃੜ͢Δ͜ͱʹͳΔɽ͞Βʹ͸ɼ౰વͳ͕Βશͯͷϖʔδ. ͦͷ API ͷதͰϒϥ΢β‫ॲ׵ޓ‬ཧͳͲͷ෇ਵ͢ΔॲཧΛӅ. ͕ϥΠϒϥϦͷఏ‫͢ڙ‬Δશͯͷ API Λར༻͢ΔΘ͚Ͱ͸. 1 a) b) c). େࡕେֶେֶӃ৘ใՊֶ‫ڀݚ‬Պ [email protected] [email protected] [email protected]. ⓒ 2017 Information Processing Society of Japan. ͳ͍ɽ͢ͳΘͪɼಡΈࠐΈ࣌ʹൃੜͨ͠ωοτϫʔΫ௨৴ ͱίϯύΠϧॲཧʹ͸ແବ͕‫·ؚ‬Ε͍ͯͨͱ͍͑Δɽ·ͨ ઌͷྫʹ΋‫ͨ͛ڍ‬ϒϥ΢β‫ॲ׵ޓ‬ཧ͸ɼ༷ʑͳϓϥοτ. 1.

(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