ࣾஂ๏ਓ ిࢠ৘ใ௨৴ֶձ
THE INSTITUTE OF ELECTRONICS,
INFORMATION AND COMMUNICATION ENGINEERS৴ֶٕใTECHNICAL REPORT OF IEICE.

࠶ར༻ʹ‫ࣗͮ͘ج‬ಈϓϩάϥϜमਖ਼ʹ͓͚Δߋ৽ॱΛ༻͍ͨૠೖީิͷߜࠐͷఏҊࢁຊ ক߂†

ԣࢁ

੖थ†

ං‫ޙ‬

๕थ†

ೇຊ ਅೋ†† େࡕେֶେֶӃ৘ใՊֶ‫ڀݚ‬Պ ˟ 565–0871 େࡕ෎ਧాࢢࢁాٰ 1–5
E-mail: †{m-yamamt,y-haruki,higo,kusumoto}@ist.osaka-u.ac.jp͋Β·ࣗ͠ಈϓϩάϥϜमਖ਼ʹ͓͍ͯɼιʔείʔυதͷߦΛ࠶ར༻ͯ͠मਖ਼Λߦ͏‫ߦ͕ڀݚ‬ΘΕ͍ͯΔɽ࠶ར༻ʹ‫ࣗͮ͘ج‬ಈϓϩάϥϜमਖ਼Ͱ͸ɼૠೖ͢ΔߦΛιʔείʔυத͔ΒϥϯμϜʹબ୒͍ͯ͠Δɽຊ‫Ͱڀݚ‬͸ɼιʔείʔυதͷ֤ߦΛ࠷ऴߋ৽೔࣌ͷ৽͍͠ॱͰબ୒͢Δߋ৽ॱͱ͍͏‫ج‬४ΛఏҊ͠ɼϥϯμϜͰ͸ͳͦ͘ͷ‫ج‬४ʹΑΓߦΛબ୒͢Δ͜ͱͰɼमਖ਼ʹཁ͢Δ࣌ؒͷ࡟‫ݮ‬ΛਤΔɽຊߘͰ͸ɼΦʔϓϯιʔειϑτ΢ΣΞͰա‫ߦʹڈ‬ΘΕͨमਖ਼ʹ͓͍ͯ༻͍ΒΕͨߦΛௐࠪ͢Δ͜ͱͰɼߋ৽ॱ͕༗༻Ͱ͋Δ͜ͱΛࣔͨ͠ɽΩʔϫʔυσόοάɼࣗಈϓϩάϥϜमਖ਼ɼίʔυ࠶ར༻

1. · ͑ ͕ ͖είʔυதͷ֤ߦΛ࠷ऴߋ৽೔࣌ͷ৽͍͠ॱͰબ୒͢Δ‫ج‬४Ͱ͋ΔɽຊߘͰ͸ߋ৽ॱͷ༗༻ੑͷௐࠪΛߦͬͨ݁Ռʹ͍ͭͯड़ιϑτ΢ΣΞ։ൃʹ͓͍ͯɼϓϩάϥϜͷ৴པੑΛ޲্͢Δ

΂Δɽௐࠪ͸Φʔϓϯιʔειϑτ΢ΣΞͷա‫ߦʹڈ‬ΘΕͨܽͨΊʹσόοάΛߦ͏͜ͱ͕ඞཁͰ͋Δɽσόοάͷओͳ޻ఔؕͷमਖ਼ʹ͓͍ͯɼ௥Ճ·ͨ͸มߋ͞ΕͨߦΛର৅ͱͨ͠ɽ࣮

͸ɼܽؕͷ‫ݪ‬ҼͱͳΔՕॴͷಛఆͱɼಛఆ͞ΕͨՕॴͷमਖ਼Ͱ‫ݧ‬ͷ݁Ռɼର৅ͷߦͷ͏ͪͷ 60%͕ߋ৽ॱͷ্Ґ 10%ʹଘࡏ͋Δɽσόοά͸ଟ͘ͷίετΛཁ͢Δ࡞‫͋Ͱۀ‬ΔͨΊɼࣗಈ͍ͯͨ͜͠ͱ͕Θ͔ͬͨɽ·ͨɼಉ͡ର৅ʹରͯ͠ԣࢁΒͷख

ԽͰ͖Δ͜ͱ͕๬·͍͠ɽࣗಈͰܽؕՕॴͷಛఆΛߦ͏‫͕ڀݚ‬๏Λద༻͠ɼൺֱΛߦͬͨɽͦͷ݁Ռɼྨࣅ౓ॱͰ͸༏ઌతʹߦΘΕ͖͍ͯͯΔ [1], [2]ɽ·ͨɼۙ೥ʹͳΓɼࣗಈͰܽؕΛमબ୒͞Εͳ͍͕ɼߋ৽ॱͰ͸༏ઌతʹબ୒͞ΕΔߦ͕ଟ਺͋Δ

ਖ਼͢Δ‫ߦʹൃ׆͕ڀݚ‬ΘΕ͍ͯΔ [3]ʙ[6]ɽ

͜ͱ͕Θ͔ͬͨɽ

ࣗಈͰܽؕΛमਖ਼͢Δ‫͍͓ͯʹڀݚ‬ɼҨ఻తΞϧΰϦζϜʹ
Αͬͯܽؕͷमਖ਼Λߦ͏ GenProg [3] ͕஫໨͞Ε͍ͯΔɽGen-

2. ‫ ط‬ଘ ‫ڀ ݚ‬

Prog ͸࠶ར༻ʹ‫ࣗͮ͘ج‬ಈϓϩάϥϜमਖ਼ख๏Ͱ͋Δɽ࠶རຊষͰ͸ຊ‫ؔʹڀݚ‬࿈͢Δ‫ط‬ଘ‫͍ͯͭʹڀݚ‬ड़΂Δɽ༻ʹ‫ࣗͮ͘ج‬ಈϓϩάϥϜमਖ਼Ͱ͸ɼιʔείʔυதʹ͋Δߦ

2. 1 GenProg

Λ༻͍ͯܽؕͷमਖ਼Λߦ͏ɽଞʹ࠶ར༻ʹ‫ࣗͮ͘ج‬ಈϓϩάϥ

GenProg [3] ͸Ҩ఻తϓϩάϥϛϯάΛ༻͍ͯ࠶ར༻ʹ‫ͮج‬Ϝमਖ਼ख๏ͱͯ͠ RSRepair [4] ͳͲ͕͋Δɽ

ࣗ͘ಈϓϩάϥϜमਖ਼Λߦ͏ख๏Ͱ͋ΔɽGenProg ͸ೖྗͱ͠

GenProg ΍ RSRepair ͸ϓϩάϥϜमਖ਼ʹ͓͍ͯιʔείʔͯܽؕΛ‫ؚ‬ΉϓϩάϥϜͱςετέʔεΛड͚औΓɼશͯͷςυதʹ͋ΔߦΛϥϯμϜʹબ୒ͯ͠༻͍ΔɽϥϯμϜͳબ୒ͰετέʔεΛ௨ա͢ΔϓϩάϥϜΛग़ྗ͢Δɽਤ 1 ʹ GenProg

͸ɼमਖ਼ର৅ͷϓϩάϥϜͷ‫ن‬໛͕େ͖͘ͳΔʹͭΕͯमਖ਼ʹͷಈ࡞ͷྲྀΕΛࣔ͢ɽ‫د‬༩͠ͳ͍ߦΛબ୒͢Δճ਺͕ଟ͘ͳΓɼमਖ਼ʹ͕͔͔࣌ؒͬ

Ҩ఻తϓϩάϥϛϯά͸ɼબ୒ɾมҟɾަࠥͷ 3 ͭͷॲཧΛͯ͠·͏ͱ͍͏՝୊͕͋ΔɽͦͷͨΊɼमਖ਼ʹ‫د‬༩͢Δߦ͕Ͱ‫܁‬Γฦ͠ߦ͏͜ͱʹΑΓɼ༏लͳ‫ݸ‬ମΛੜ੒͢Δɼੜ෺ͷਐԽ

͖Δ͚ͩૣ͘બ୒͞ΕΔΑ͏ͳ‫ج‬४͕ඞཁͰ͋ΔɽԣࢁΒ͸ɼΛ໛ͨ͠ख๏Ͱ͋Δɽબ୒ɾมҟɾަࠥͷॲཧ͸৚݅Λຬ͕ͨܽؕ͢ଘࡏ͍ͯ͠ΔՕॴͱྨࣅ౓͕ߴ͍ίʔυยʹଘࡏ͍ͯ͠

‫ݸ‬ମ͕ੜ੒͞ΕΔ·Ͱ‫܁‬Γฦ͠ద༻͞ΕΔɽGenProg Ͱ͸ɼϓΔߦΛ༏ઌతʹબ୒͢Δྨࣅ౓ॱͱ͍͏‫ج‬४ΛఏҊ͠ɼௐࠪΛϩάϥϜΛ‫ݸ‬ମͱΈͳ͠ɼશͯͷςετέʔεΛ௨ա͢Δϓϩߦͬͨ [7]ɽௐࠪͷ݁Ռɼྨࣅ౓ॱ͕ߦΛબ୒͢Δ‫ج‬४ͱͯ͠༗

άϥϜ͕ੜ੒͞ΕΔ·Ͱɼ3 ͭͷॲཧΛ‫܁‬Γฦ͠ద༻͢Δɽ

༻Ͱ͋Δ͜ͱΛࣔͨ͠ɽ͔͠͠ɼमਖ਼ʹ‫د‬༩͢ΔߦͰ͋Δʹ΋ؔΘΒͣɼܽؕΛ‫ؚ‬ΉՕॴͱ͸ྨࣅ͍ͯ͠ͳ͍ίʔυยʹଘࡏ͢Δ৔߹͕͋Δ͜ͱ͕֬ೝ͞Ε͍ͯΔɽ
ຊ‫Ͱڀݚ‬͸ߋ৽ॱͱ͍͏‫ج‬४ΛఏҊ͢Δɽߋ৽ॱͱ͸ɼιʔબ୒ॲཧͰ͸ɼ֤‫ݸ‬ମͷςετέʔε௨աঢ়‫گ‬Λ‫ʹج‬ద߹஋Λ‫ٻ‬Ίɼద߹஋ͷߴ͍ॱʹҰఆ਺ͷ‫ݸ‬ମΛऔΓग़͢ɽมҟॲཧͰ͸ɼ֤‫ݸ‬ମʹରͯ͠มߋΛߦ͏ɽมߋΛߦ͏Օॴ͸ܽؕͷ‫ݪ‬Ҽͱͯ͠‫͞ہݶ‬ΕͨՕॴͰ͋Δɽมߋ͸ɼ࡟আɼૠ

—1—ධຊ 䠖 Ḟ㝗䜢ྵ䜐䝥䝻䜾䝷䝮䛸䝔䝇䝖䜿䞊䝇

ͳΔ܏޲͕͋Δ͜ͱΛࣔͨ͠ɽ͞ΒʹԣࢁΒ͸ɼྨࣅ౓ͷߴ͍ॱΛද͢ྨࣅ౓ॱ͕ɼૠೖߦΛબ୒͢Δ‫ج‬४ͱͯ͠༗༻Ͱ͋Δ͔Ͳ͏͔֬ೝ͢ΔͨΊʹ௥ՃௐࠪΛ࣮ࢪͨ͠ɽ௥ՃௐࠪͰ͸ɼա‫ߦʹڈ‬ΘΕͨमਖ਼Ͱ༻͍Β㑅ᢥฎ⌮ΕͨૠೖߦͷΧόϨοδΛࢉग़ͨ͠ɽΧόϨοδͱ͸ɼιʔείʔυߦΛܽؕΛ‫ؚ‬ΉՕॴͱͷྨࣅ౓͕ߴ͍ॱʹฒ΂ͨͱ͖஺ཫฎ⌮ʹɼܽؕΛमਖ਼Ͱ͖Δߦ͕શମͷ͏ͪͲͷఔ౓্ҐʹདྷΔͷ͔Λද͢஋Ͱ͋ΔɽΧόϨοδΛࢉग़͢Δ͜ͱͰιʔείʔυͷኚ␗ฎ⌮Կ%Λௐ΂Δͱૠೖߦ͕બ୒͞ΕΔͷ͔͕෼͔Δɽ
௥Ճௐࠪͷ݁Ռɼྨࣅ౓ॱΛ༻͍Δ͜ͱͰɼௐࠪର৅ͱͨ͠

⤊஢ุᐃ

NO

YES
ฟຊ 䠖 ಟṇ䝥䝻䜾䝷䝮ૠೖߦͷ͏ͪ 75%͸ιʔείʔυதͷߦͷྨࣅ౓ॱ্Ґ 10%ʹଘࡏ͢Δ͜ͱΛࣔͨ͠ɽ

2. 3 ԣࢁΒͷख๏ͷ՝୊ྨࣅ౓ॱʹΑΓૠೖߦΛબ୒͢Δ͜ͱ͕ޮՌతͳͷ͸ɼ͕ܽؕଘࡏ͍ͯ͠ΔߦͷपลྖҬͱྨࣅͨ͠ίʔυยʹͦͷܽؕͷ

ਤ 1 GenProg ͷಈ࡞ͷྲྀΕमਖ਼Λߦ͑Δߦ͕ଘࡏ͍ͯ͠Δ৔߹Ͱ͋Δɽܽؕͷमਖ਼Λߦ͑
Δߦ͕ྨࣅͨ͠ίʔυยʹ͸ଘࡏ͍ͯ͠ͳ͍৔߹͸ɼԣࢁΒͷೖɼஔ‫׵‬ͷ 3 छྨͷૢ࡞Ͱ͋Δɽ࡟আૢ࡞Ͱ͸‫͞ہݶ‬ΕͨՕॴΛ࡟আ͢Δɽૠೖૢ࡞Ͱ͸ιʔείʔυத͔ΒϥϯμϜʹબ୒͞ΕͨߦΛ‫͞ہݶ‬ΕͨՕॴʹૠೖ͢Δɽஔ‫Ͱ࡞ૢ׵‬͸࡟আͱૠೖΛߦ͏ɽަࠥॲཧͰ͸ɼ2 ͭͷ‫ݸ‬ମΛࠞͥ߹ΘͤΔ͜ͱʹΑΓɼ৽ͨͳ‫ݸ‬ମΛੜ੒͢Δɽ2 ‫ݸ‬ମ͸‫ݸ‬ମͷू߹͔ΒϥϯμϜʹબ୒͞
ΕΔɽ

GenProg ͸Φʔϓϯιʔειϑτ΢ΣΞͰա‫ʹڈ‬मਖ਼͕ߦΘΕͨ 105 ‫ݸ‬ͷܽؕͷ͏ͪɼ55 ‫ݸ‬Λࣗಈతʹमਖ਼͢Δ͜ͱʹ੒ޭͨ͠ [3]ɽ

2. 2 ԣࢁΒͷख๏ຊઅͰ͸ɼ࠶ར༻ʹ‫ࣗͮ͘ج‬ಈϓϩάϥϜमਖ਼๊͕͑Δ՝୊ʹؔ͢ΔԣࢁΒͷख๏ [7] ʹ͍ͭͯઆ໌͢Δɽ͸͡ΊʹԣࢁΒͷ‫͍༻Ͱڀݚ‬ΒΕͨ༻‫ޠ‬Λઆ໌͢Δɽ
ૠೖީิɹมҟॲཧʹ͓͍ͯૠೖͷର৅ͱͳΓ͏Δߦͷू߹ૠೖߦɹૠೖީิͷ͏ͪɼ࣮ࡍʹૠೖ͞ΕͨߦपลྖҬɹ͋ΔߦΛத৺ͱͨ͠લ‫ߦ਺ޙ‬

GenProg ΍ RSRepair Ͱ͸ɼૠೖߦΛιʔείʔυத͔ΒϥϯμϜʹબ୒͍ͯ͠ΔɽϥϯμϜͳબ୒Ͱ͸ɼϓϩάϥϜͷ
‫ن‬໛͕େ͖͘ͳΔʹͭΕɼૠೖީิͷ਺͕૿େ͠मਖ਼ʹ‫د‬༩͠ͳ͍ߦΛબ୒͢Δճ਺͕૿͑ΔɽͦͷͨΊɼେ‫ن‬໛ͳϓϩάϥϜʹରͯ͠͸ɼϓϩάϥϜमਖ਼ʹ࣌ؒΛཁͯ͠͠·͏ͱ͍͏՝
୊఺͕ଘࡏ͢Δɽ͜ͷ՝୊఺Λվળ͢ΔͨΊʹɼԣࢁΒͷ‫ڀݚ‬Ͱ͸ɼιʔείʔυͷ֤ߦʹ༏ઌ౓෇͚Λߦ͍ɼ༏ઌ౓ॱʹૠ
ೖ͢Δඞཁੑ͕͋Δ͜ͱΛड़΂ͨɽԣࢁΒ͸ɼ࣮ࡍʹߦΘΕͨϓϩάϥϜमਖ਼ͷྫΛ‫ʹݩ‬ɼιʔείʔυͷߦͷ͏ͪɼͦͷपลྖҬͱ͕ܽؕଘࡏ͍ͯ͠ΔߦͷपลྖҬ͕ྨࣅ͍ͯ͠Δ৔߹͸ɼܽؕΛमਖ਼Ͱ͖ΔՄೳੑ͕ߴ
͍ͱߟ͑ͨɽΦʔϓϯιʔειϑτ΢ΣΞͰա‫ߦʹڈ‬ΘΕͨमਖ਼Ͱ༻͍ΒΕͨૠೖߦʹରͯ͠ௐࠪΛߦ͍ɼૠೖߦΛ‫ؚ‬ΉྖҬͱ͕ܽؕଘࡏ͍ͯͨ͠ߦͷपลྖҬͷྨࣅ౓͸ૠೖߦΛ‫ͳ·ؚ‬͍ྖҬͱ͕ܽؕଘࡏ͍ͯͨ͠ߦͷपลྖҬͷྨࣅ౓ΑΓ΋ߴ͘ख๏͸ޮՌతͰ͸ͳ͍ɽਤ 2 ʹྫΛ‫͛ڍ‬Δɽ͜ͷྫ͸ɼΦʔϓϯιʔειϑτ΢ΣΞͷ Apache httpd ͷϓϩάϥϜʹର࣮ͯ͠ࡍʹߦΘΕͨमਖ਼Ͱ͋Δɽ
ਤ 2 Ͱ͸ɼ͋Δܽؕʹରͯ͠ɼ୅ೖจʢփ৭ͷߦʣΛଞͷϝιουʹҠಈ͢Δ͜ͱͰमਖ਼Λߦ͍ͬͯΔɽͭ·ΓɼҠಈઌʹର͢ΔߦͷૠೖͱҠಈ‫ݩ‬ͷߦͷ࡟আʹΑΓमਖ਼͕‫ྃ͢׬‬Δɽ͜
ͷ୅ೖจͷҠಈ‫ͱݩ‬Ҡಈઌͷपลίʔυ͸ྨࣅ౓͕ߴ͘ͳ͘ɼ
ԣࢁΒͷख๏Ͱ͸ޮՌతʹܽؕͷमਖ਼Λ‫ͤྃ͞׬‬Δ͜ͱ͕Ͱ͖
ͳ͍ɽ͜ͷΑ͏ͳ՝୊఺͕͋ΔͨΊɼผͷ‫ج‬४ʹΑΔΞϓϩʔνΛߦ͏ඞཁ͕͋Δɽ

3. Ξϓϩʔνલষʹ͓͍ͯɼԣࢁΒͷख๏ʹ͓͚ΔૠೖߦΛબ୒͢Δ‫ج‬४Ͱ͋Δྨࣅ౓ॱͱ͸ผͷ‫ج‬४Λઃ͚ΔඞཁੑΛड़΂ͨɽͦ͜Ͱ
ຊ‫Ͱڀݚ‬͸ɼૠೖߦΛબ୒͢Δ‫ج‬४ͱͯ͠ɼߋ৽ॱͱ͍͏΋ͷΛఏҊ͢Δɽߋ৽ॱͷఆٛ͸ҎԼͷ௨ΓͰ͋Δɽ
ߋ৽ॱɹιʔείʔυதͷ֤ߦΛߋ৽೔࣌ͷ৽͍͠ॱͰબ୒͢
Δ‫ج‬४ຊ‫͍͓ͯʹڀݚ‬ɼߦͷߋ৽೔࣌͸ߦʹରͯ͠࠷‫ʹޙ‬Ճ͑ΒΕͨมߋͷ೔࣌Λද͢͜ͱͱ͢Δɽιʔείʔυʹ௥Ճ͞ΕͯҎ
߱ 1 ౓΋มߋ͞Ε͍ͯͳ͍ߦʹ͍ͭͯ͸ɼ௥Ճ͞Εͨ೔࣌Λߋ৽೔࣌ͱ͢Δɽߦͷߋ৽೔࣌͸ɼόʔδϣϯ؅ཧγεςϜΛར༻ͯ͠औಘ͢Δɽ࠶ར༻ʹ‫ࣗͮ͘ج‬ಈϓϩάϥϜमਖ਼ʹ͓͍ͯɼૠೖީิ͔Βߋ৽ॱʹΑΓߦΛબ୒͢Δख๏ΛఏҊ͢Δɽ͜ͷఏҊ͸ɼ࠷ۙߦΘΕͨมߋ͕मਖ਼ʹ‫د‬༩͢ΔͷͰ͸ͳ͍͔ͱ͍͏Ծఆʹ‫ͮج‬͍͍ͯΔɽ࣮ࡍʹߋ৽ॱͷ্Ґ͔ΒॱʹૠೖߦΛબ୒͢Δ͜ͱͰ͏·͍͘͘ྫͱͯ͠ɼલষͷ‫ط‬ଘ‫ڀݚ‬ͷ՝୊ʹ͓͚Δྫ͕‫͛ڍ‬ΒΕΔɽ
ਤ 2 Ͱ͸ɼ͋Δ 1 ߦΛଞͷϝιουʹҠಈ͢Δ͜ͱͰमਖ਼Λ
ߦ͍ͬͯΔɽ͜ͷߦ͸ϦϏδϣϯ r88904 ͷίϛοτʹ͓͚Δ
मਖ਼ͷগ͠લͷίϛοτʹ͓͍ͯ௥Ճ͞ΕͨߦͰ͋ΔͨΊɼߋ৽ॱͰ༏ઌతʹબ୒͞ΕΔɽ͜ͷΑ͏ʹɼ࠷ۙ௥Ճ͞Εͨ͋Δ—2—

mod_log_config.c
212

static apr_hash_t *log_hash;…
1154 static void log_pre_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp)
1155 {
1156
static APR_OPTIONAL_FN_TYPE(ap_register_log_handler) *log_pfn_register;
1157
1158
log_hash = apr_hash_make(p);1159
log_pfn_register = APR_RETRIEVE_OPTIONAL_FN(ap_register_log_handler);1160
if (log_pfn_register) {1161
log_pfn_register(p, "h", log_remote_host, 0);…
1188}
1189 }
1190
1191 static void register_hooks(apr_pool_t *p)1192 {
1193
ap_hook_pre_config(log_pre_config,NULL,NULL,APR_HOOK_REALLY_FIRST);1194
ap_hook_child_init(init_child,NULL,NULL,APR_HOOK_MIDDLE);
1195
ap_hook_open_logs(init_config_log,NULL,NULL,APR_HOOK_MIDDLE);
1196
ap_hook_log_transaction(multi_log_transaction,NULL,NULL,APR_HOOK_MIDDLE);
1197
1198
APR_REGISTER_OPTIONAL_FN(ap_register_log_handler);
1199 }(a) मਖ਼લʢr88903ʣ

mod_log_config.c
212

static apr_hash_t *log_hash;…
1154 static void log_pre_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp)
1155 {
1156
static APR_OPTIONAL_FN_TYPE(ap_register_log_handler) *log_pfn_register;
1157
1158
log_pfn_register = APR_RETRIEVE_OPTIONAL_FN(ap_register_log_handler);
1159
1160
if (log_pfn_register) {1161
log_pfn_register(p, "h", log_remote_host, 0);…
1187}
1188 }
1189
1190 static void register_hooks(apr_pool_t *p)
1191 {
1192
ap_hook_pre_config(log_pre_config,NULL,NULL,APR_HOOK_REALLY_FIRST);1193
ap_hook_child_init(init_child,NULL,NULL,APR_HOOK_MIDDLE);
1194
ap_hook_open_logs(init_config_log,NULL,NULL,APR_HOOK_MIDDLE);
1195
ap_hook_log_transaction(multi_log_transaction,NULL,NULL,APR_HOOK_MIDDLE);
1196
1197
/* Init log_hash before we register the optional function. It is
…
1202
*/
1203
log_hash = apr_hash_make(p);1204
APR_REGISTER_OPTIONAL_FN(ap_register_log_handler);
1205 }(b) मਖ਼‫ޙ‬ʢr88904ʣ

ਤ 2 ྨࣅ౓ॱͰૠೖߦΛબ୒͢Δͷ͕ద͞ͳ͍มߋྫ

ߦ͕ܽؕͷ‫ݪ‬ҼͰ͋ΓɼͦͷߦΛҠಈ͢Δ͜ͱͰमਖ਼͕࣮‫͢ݱ‬ΔΑ͏ͳ৔߹ɼߋ৽ॱʹΑΔબ୒͸ద͍ͯ͠Δɽͦͷଞʹ΋ߋ৽ॱʹΑΔબ୒͕༗༻Ͱ͋Δྫͱͯ͠ɼ2 Օॴ

4. ௐ

ࠪ

ຊষͰ͸ɼௐࠪͷ໨తɼखॱɼର৅ʹ͍ͭͯड़΂Δɽ

͋Δಉ༷ͷܽؕʹରͯ͠ͲͪΒ͔ҰํͷΈϓϩάϥϜमਖ਼͕ߦ

4. 1 ௐ ࠪ ໨ తΘΕͨ৔߹ͳͲ͕‫͛ڍ‬ΒΕΔɽ͜ͷ৔߹ɼҰํͷमਖ਼௚‫͋Ͱޙ‬લষͰ͸ɼߋ৽ॱͱ͍͏‫ج‬४ΛఏҊͨ͠ɽຊߘͰ͸ɼ࠶ར༻Ε͹ɼߋ৽ॱΛ༻͍Δͱ΋͏Ұํͷमਖ਼ʹඞཁͳߦ͸༏ઌతʹʹ‫ࣗͮ͘ج‬ಈϓϩάϥϜमਖ਼ख๏ʹߋ৽ॱʹΑΔߦͷબ୒Λ࣮બ୒͞ΕΔͨΊɼ༗༻Ͱ͋Δɽ૷͢Δલʹɼߋ৽ॱ͕ૠೖߦΛબ୒͢Δ‫ج‬४ͱͯ͠༗༻Ͱ͋Δ
͔Λௐࠪ͢Δɽߋ৽ॱʹ͓͍ͯϓϩάϥϜΛमਖ਼͢Δߦ͕༏ઌతʹબ୒͞Ε͍ͯΕ͹ɼߋ৽ॱ͕༗༻Ͱ͋Δͱ͍͏͜ͱΛࣔͤ

—3—

䝇䝔䝑䝥
2
ᤄධ⾜
4

ಟṇᚋ䝸䝡䝆䝵䞁䛾
䝣䜯䜲䝹

...

䝇䝔䝑䝥
1

䝇䝔䝑䝥
4

䝇䝔䝑䝥
3

ಟṇ๓䝸䝡䝆䝵䞁䛾
䝣䜯䜲䝹

1.
2.
3.

ฟຊ䝣䜯䜲䝹
䠄᭦᪂㡰䛾㡰఩䛺䛹䠅

...

ಟṇᑐ㇟
䝸䝫䝆䝖䝸

᭦᪂㡰఩⾲

ਤ 3 मਖ਼ίϛοτ͝ͱͷॲཧ

Δɽௐࠪͷ݁Ռɼߋ৽ॱ͕༗༻Ͱ͋Δ͜ͱ͕ࣔͤΕ͹ɼࠓ‫ޙ‬ͷ࣍ʹɼ֤ૠೖߦͷߋ৽ॱʹ͓͚ΔॱҐΛऔಘ͢ΔɽॱҐදΛ‫࠶Ͱڀݚ‬ར༻ʹ‫ࣗͮ͘ج‬ಈϓϩάϥϜमਖ਼ख๏ʹߋ৽ॱΛ࣮૷‫ͦʹج‬ΕͧΕͷૠೖߦͷߋ৽ॱͷॱҐΛऔಘ͢ΔɽಘΒΕͨॱ͢ΔՁ஋͕༗Δ͜ͱʹͳΔɽҐ͸ධՁʹ༻͍ΔͨΊιʔείʔυͷ૯ߦ਺ͱͱ΋ʹϑΝΠϧ

4. 2 ௐ ࠪ ख ॱʹग़ྗ͢ΔɽҎ্Ͱमਖ਼ίϛοτʹର͢ΔॲཧΛऴྃ͢Δɽຊ‫Ͱڀݚ‬͸Φʔϓϯιʔειϑτ΢ΣΞͷϓϩάϥϜͰա‫ڈ‬ʹ࣮ࡍʹߦΘΕͨमਖ਼Ͱ༻͍ΒΕͨૠೖߦʹରͯ͠ௐࠪΛߦશͯͷमਖ਼ίϛοτʹ͓͚Δૠೖߦͷߋ৽ॱͷॱҐΛऔಘ͠͏ɽա‫ڈ‬ͷϓϩάϥϜमਖ਼ͷ৘ใ͸Φʔϓϯιʔειϑτ΢Σ

ͨ‫ޙ‬ɼධՁΛߦ͏ɽධՁ͸֤ૠೖߦʹରͯ͠ߋ৽ॱͷΧόϨο

ΞͷϦϙδτϦΛղੳ͢Δ͜ͱʹΑΓऩू͢Δɽௐࠪର৅ͱ͠

δΛ‫͏ߦͯ͠ʹج‬ɽΧόϨοδ͸ҎԼͷࣜͰࢉग़͞ΕΔɽͨΦʔϓϯιʔειϑτ΢ΣΞʹ͍ͭͯ͸ 4. 3 અͰड़΂Δɽௐࠪͷखॱʹ͍ͭͯड़΂Δɽ·ͣ͸͡ΊʹɼϦϙδτϦͷશΧόϨοδ =

ίϛοτʹରͯ͠ίϛοτϩάΛௐ΂ɼमਖ਼ίϛοτΛಛఆ͢
Δɽमਖ਼ίϛοτͱ͸ɼίϛοτϩάʹ “ﬁx”ɼ“ﬁxed”͓Αͼ“ﬁxing”ͱ͍͏୯‫·ؚ͕ޠ‬Ε͍ͯΔίϛοτͷ͜ͱͰ͋Δɽಛ
ఆͨ͠શͯͷमਖ਼ίϛοτʹରͯ͠ɼҎԼͷ 4 ͭͷॲཧΛߦ͏ɽεςοϓ 1 ɹमਖ਼લ‫ޙ‬ͷϦϏδϣϯͷϑΝΠϧऔಘεςοϓ 2 ɹૠೖߦͷநग़εςοϓ 3 ɹߋ৽ॱҐදͷ࡞੒εςοϓ 4 ɹૠೖߦͷߋ৽ॱʹ͓͚ΔॱҐऔಘ্‫ه‬ͷखॱΛਤ 3 ʹࣔ͢ɽͦΕͧΕͷεςοϓʹ͍ͭͯઆ໌
͢Δɽ
εςοϓ 1ɿमਖ਼લ‫ޙ‬ͷϦϏδϣϯͷϑΝΠϧͷऔಘमਖ਼ίϛοτͰߦΘΕͨमਖ਼ͷલ‫ޙ‬ͷϦϏδϣϯ͔ΒιʔείʔυΛऔಘ͢Δɽमਖ਼લͷϦϏδϣϯͰ͸ɼ֤ߦͷߋ৽೔࣌΋औಘ͢Δɽ
εςοϓ 2ɿૠೖߦͷநग़मਖ਼લ‫ޙ‬ͷϦϏδϣϯʹ͓͚Διʔείʔυͷࠩ෼ΛऔΓɼૠೖߦΛநग़͢Δɽࠩ෼͸ߦ୯Ґͷ௥Ճɾ࡟আͰද͞ΕΔɽͦ
ͷ͏ͪɼ௥Ճ·ͨ͸มߋ͞ΕͨߦΛૠೖߦͱ͢Δɽ
εςοϓ 3ɿߋ৽ॱҐදͷ࡞੒मਖ਼લͷϦϏδϣϯʹ͓͚Διʔείʔυதͷશͯͷߦʹରͯ͠ɼͦͷ಺༰ͱίϛοτ೔࣌Λऔಘ͢ΔɽશͯͷߦΛίϛοτ೔࣌ͷ৽͍͠ॱʹฒͼସ͑ͯߋ৽ॱҐදΛ࡞੒͢Δɽ͜ͷͱ͖ɼಉ͡ίϛοτʹ͓͍ͯ௥Ճ·ͨ͸มߋ͞Εͨߦʹ͍ͭͯ͸ͦΕΒͷߦͷதͰ࠶౓ϥϯμϜʹฒͼସ͑Λߦ͏ɽεςοϓ 4ɿૠೖߦͷߋ৽ॱʹ͓͚ΔॱҐऔಘߋ৽ॱͷॱҐ
ιʔείʔυͷ૯ߦ਺ΧόϨοδ͸ 0 ΑΓେ͖͘ 1 ҎԼͰ͋ΔΑ͏ͳ஋ΛऔΔɽ஋͕

0 ʹۙͮ͘ʹͭΕߋ৽ॱͰ༏ઌͯ͠બ୒͞ΕΔ͜ͱΛࣔ͠ɼͦͷૠೖߦʹରͯ͠͸ߋ৽ॱΛ༻͍ͨૠೖީิͷબ୒͕ద͍ͯ͠
Δͱ͍͑ΔɽશͯͷૠೖߦͷΧόϨοδΛࢉग़ͨ͠ͷͪɼͦΕΒΛ 0.1 ͝ͱʹ۠੾ͬͨ 10 ۠ؒ಺ʹ෼ྨ͠ɼ۠ؒ͝ͱͷૠೖߦͷ਺ΛΧ΢ϯτ͢Δɽྫ͑͹ΧόϨοδ͕ 0.23 Ͱ͋Δ৔߹ɼ

0.2 ͔Β 0.3 ͷ۠ؒͷΧ΢ϯτΛ 1 ૿΍͢ɽ͜ͷΑ͏ʹͯ͠શͯͷૠೖߦͷΧόϨοδʹ͓͍ͯΧ΢ϯτΛߦ͏ɽ࠷ऴతͳΧ΢ϯτ਺͔Βɼߋ৽ॱͰશͯͷૠೖީิͷ͏ͪ͋Δׂ߹·Ͱબ୒ͨ͠ͱ͖ʹͲΕ͘Β͍ͷૠೖߦΛ‫͚ͭݟ‬Δ͜ͱ͕Ͱ͖Δ͔Λ൑அ͢Δ͜ͱ͕Ͱ͖Δɽ۩ମతͳಘΒΕͨ਺஋ͷධՁ͸ 5. ষͷߟ࡯Ͱߦ͏ɽ
͞Βʹɼຊ‫ڀݚ‬ͷ‫ج‬४Ͱ͋Δߋ৽ॱͱԣࢁΒͷख๏ [7] ʹ͓͚Δ‫ج‬४Ͱ͋Δྨࣅ౓ॱͷൺֱΛߦ͏ɽಉ͡ௐࠪର৅ʹରͯ͠ԣࢁΒͷख๏ͷϓϩάϥϜΛ࣮ߦ͠ɼૠೖߦΛநग़ͯ͠ྨࣅ౓
ॱͷΧόϨοδΛऔಘ͢ΔɽಘΒΕͨग़ྗϑΝΠϧ͔Βߋ৽ॱͷग़ྗϑΝΠϧͱૠೖߦͷରԠ෇͚Λߦ͏ɽରԠ෇͚Ͱ͖ͨૠ
ೖߦ͔Βߋ৽ॱͱྨࣅ౓ॱͷͦΕͧΕͷΧόϨοδ͕ 0.1 ҎԼɼ

0.2 ҎԼͰ͋ͬͨૠೖߦͷू߹Λ‫ʹج‬දΛ࡞੒͢ΔɽಘΒΕͨදʹ͍ͭͯ 5. ষʹ͓͍ͯߟ࡯Λߦ͏ɽ

4. 3 ௐ ࠪ ର ৅ௐࠪର৅͸όʔδϣϯ؅ཧγεςϜ Subversion Ͱ؅ཧ͞Εͨ

4 ͭͷΦʔϓϯιʔειϑτ΢ΣΞͰ͋ΓɼԣࢁΒͷ‫[ ڀݚ‬7] ʹ͓͚Δௐࠪର৅ͱಉ͡Ͱ͋Δɽௐࠪର৅Φʔϓϯιʔειϑτ—4—ͨ͠ߦͷ਺Ͱ͋Δɽߋ৽ॱ͕औಘͰ͖ͨૠೖߦͷ਺͸ૠೖߦͷ

ද 1 ௐࠪର৅ͷΦʔϓϯιʔειϑτ΢ΣΞ
ιϑτ΢ΣΞ

‫ޠݴ‬

Apache httpd
CBMC։࢝ϦϏδϣϯ

ऴྃϦϏδϣϯ

͏ͪमਖ਼લͷϦϏδϣϯͷιʔείʔυதʹૠೖߦ͕ଘࡏ͢Δ

ʢ೔෇ʣ

ʢ೔෇ʣ

΋ͷͷ਺Ͱ͋Δɽද 2 ͷߋ৽ॱ͕औಘͰ͖ͨૠೖߦͷͦΕͧΕ

76,295

1,722,377(2004/11/19)(2015/12/31)

ʹ͓͍ͯऔಘͨ͠ΧόϨοδͷ෼෍Λ·ͱΊͨ΋ͷ͕ਤ 4 Ͱ͋

1

6,211

(2011/05/08)(2015/12/30)

ғ͸ 1 ͭʹ·ͱΊ͍ͯΔɽਤ 4 ͔ΒͦΕͧΕͷௐࠪର৅ͷΦʔ

1

3,718

ϓϯιʔειϑτ΢ΣΞʹ͓͍ͯૠೖީิશମͷ 10 ෼ͷ 1ʢΧ(2003/10/15)(2011/11/11)

όϨοδ͕ 0.1 ҎԼʣʹ໿ 60%ͷૠೖߦ͕ूத͍ͯ͠Δͱ͍͏124,280͜ͱ͕෼͔ΔɽJabRef ʹ͓͍ͯ͸ 70%ۙ͘ͷૠೖߦ͕ूத͠

(2006/07/01)(2015/12/31)

C
C++

JabRef

Java

jEdit

Java

Δɽਤ͕ෳࡶʹͳΔͷΛ๷͙ͨΊʹΧόϨοδ͕ 0.5 Ҏ্ͷൣ͍ͯΔɽ·ͨɼૠೖީิͷ൒෼Λ‫ݟ‬Δ͜ͱͰ໿ 90%ͷૠೖߦΛൃ‫͢ݟ‬Δ͜ͱ͕Ͱ͖Δɽͭ·Γɼߋ৽ॱͰॱҐ͕શମͷ൒෼Α

ද 2 ֤ιϑτ΢ΣΞʹ͓͚Δૠೖߦͷ਺ιϑτ΢ΣΞ

ૠೖߦͷ਺ߋ৽ॱ͕औಘͰ͖ͨૠೖߦͷ਺

Apache httpd26,679

7,807

CBMC

4,890

1,642

ΓԼҐͷૠೖީิʹૠೖߦ͕͋Δͷ͸ 10 ճத 1 ճ͔͠ͳ͍ͱ
͍͏͜ͱͰ͋Δɽௐࠪ݁ՌΑΓߋ৽ॱ͕༗༻Ͱ͋Δ͜ͱ͕֬ೝͰ͖ͨɽ

JabRef

12,2604,116ௐࠪର৅ͷΦʔϓϯιʔειϑτ΢ΣΞ͸ C ‫ܥ‬ͷ‫هͰޠݴ‬jEdit

21,1617,672

ड़͞Εͨιϑτ΢ΣΞͱ Java Ͱ‫ه‬ड़͞Εͨιϑτ΢ΣΞ͔ΒͦΕͧΕ 2 ͭͣͭબ୒ͨ͠ɽApache httpdɼCBMC ͸ C ‫ܥ‬ͷ0.0-0.1

0.1-0.2

0.2-0.3

0.3-0.4

0.4-0.5

0.5-1.0‫هͰޠݴ‬ड़͞Εͨιϑτ΢ΣΞɼJabRefɼjEdit ͸ Java Ͱ‫ه‬ड़100͞Εͨιϑτ΢ΣΞͰ͋Δɽૠೖߦ্͕Ґʹूத͢Δׂ߹Ͱιϑτ΢ΣΞͷେখΛද͢ͱɼJabRefɼCBMCɼApache httpdɼ

80

jEdit ͷॱ൪ʹͳΔɽͦͷͨΊɼຊ‫ڀݚ‬ͷௐࠪର৅ʹ͓͍ͯ͸ɼߋ৽ॱ͕‫ʹޠݴ‬ґଘ͍ͯ͠ͳ͍ͱ൑அͰ͖Δɽ

60ߋ৽ॱͱྨࣅ౓ॱͷൺֱߋ৽ॱͱྨࣅ౓ॱͷ্Ґͷؔ܎Λද 3 ʹද͢ɽ֤ιϑτ΢Σ

40Ξʹରͯ͠৚݅Λຬͨ͢ૠೖߦͷ਺Λ‫͍ͯ͠ࡌه‬Δɽૠೖߦͷ਺͸ɼߋ৽ॱͱྨࣅ౓ॱͷग़ྗϑΝΠϧ͔ΒରԠ෇͚͕Ͱ͖ͨ

20ૠೖߦͷ਺Ͱ͋ΔɽΧόϨοδ͕ 0.1 ҎԼɼ0.2 ҎԼͱ͸͢ͳΘͪ‫ج‬४ͷ্Ґ 10%ɼ20%Ͱ‫͔ͨͬͭݟ‬ૠೖߦͷू߹Ͱ͋Δɽ྆0ํͷྻ͸ߋ৽ॱͱྨࣅ౓ॱͷ྆ํͰ্ҐͰ͋ͬͨૠೖߦͷू߹
Apache httpd

CBMC

JabRefjEdit

ਤ 4 ߋ৽ॱͷΧόϨοδͷ෼෍

Ͱ͋Δɽߋ৽ॱͷΈͷྻ͸ߋ৽ॱͰ͸্ҐͰ͋Γྨࣅ౓ॱͰ͸্ҐͰͳ͍ૠೖߦͷू߹Ͱ͋Δɽྨࣅ౓ॱͷΈͷྻ͸ྨࣅ౓ॱͰ͸্ҐͰ͋Γߋ৽ॱͰ͸্ҐͰͳ͍ૠೖߦͷू߹Ͱ͋Δɽද

3 ͷߋ৽ॱͷΈͷྻͷ஋͔Βɼߋ৽ॱͰ͸༏ઌతʹબ୒͞ΕΔ
΢ΣΞͷද͸ද 1 Ͱ͋ΔɽԣࢁΒ͸ௐࠪ͢ΔૠೖߦΛௐࠪର৅͕ɼྨࣅ౓ॱͰ͸༏ઌతʹબ୒͞Εͳ͍ૠೖߦ͕ଘࡏ͢Δ͜ͱͷΦʔϓϯιʔειϑτ΢ΣΞͷϦϙδτϦʹରͯ͠ಛఆͷϦΛ֬ೝͰ͖ͨɽ

Ϗδϣϯൣғ͔ΒࢹೝͰબ୒͍ͯͨ͠ɽͦΕʹରͯ͠ɼຊ‫ڀݚ‬·ͨɼߋ৽ॱͱྨࣅ౓ॱͷ্Ґ 10%Λ૊Έ߹ΘͤΔ͜ͱͰૠͰ͸ϦϏδϣϯͷൣғΛॳ‫ظ‬ϦϏδϣϯ͔Β 2015/12/31 ·Ͱೖߦͷ໿ 70%Λ‫͚ͭݟ‬Δ͜ͱ͕Ͱ͖ɼ্Ґ 20%Λ૊Έ߹ΘͤͷϦϏδϣϯͱఆΊɼશͯͷૠೖߦΛௐࠪ͢Δɽͳ͓ɼJabRef

Δ͜ͱͰૠೖߦͷ໿ 80%Λ‫͚ͭݟ‬Δ͜ͱ͕Ͱ͖Δɽยํͷ‫ج‬४ʹؔͯ͠͸‫ ࡏݱ‬Git ͷΈͷόʔδϣϯ؅ཧͱͳ͍ͬͯΔͨΊɼͷΈͰ্ҐͰ͋Δૠೖߦ͕શମʹରͯ͠ແࢹͰ͖ͳׂ͍߹Ͱଘ

Subversion Ͱόʔδϣϯ؅ཧ͞Ε͍ͯͨϦϏδϣϯ·ͰΛൣғࡏ͢ΔͨΊɼ‫͍ޓ‬ͷ‫ج‬४͕૬खͷ‫ج‬४ͷܽ఺Λิ͍ͬͯΔ͜ͱ

ͱ͢Δɽ

͕෼͔ΔɽΑͬͯɼߋ৽ॱͱྨࣅ౓ॱ͔Βަ‫ʹޓ‬ૠೖߦΛબ୒ௐࠪର৅ͷΦʔϓϯιʔειϑτ΢ΣΞ͸ C ‫ܥ‬ͷ‫ ͱޠݴ‬Java

͢Δͱ͍ͬͨख๏Λ࠶ར༻ʹ‫ࣗͮ͘ج‬ಈϓϩάϥϜमਖ਼ख๏ʹ͔ΒͦΕͧΕ 2 ͭͣͭ࠾༻͍ͯ͠Δɽ͜ΕʹΑΓɼ݁Ռ͕‫ޠݴ‬

࣮૷͢Δ͜ͱͰɼमਖ਼ʹ͔͔Δ࣌ؒΛ୹ॖͰ͖ΔՄೳੑ͕͋Δɽ

ʹґଘ͢Δ͔Ͳ͏͔Λ‫ݟ‬Δ͜ͱ͕Ͱ͖Δɽ

͔͠͠ɼߋ৽ॱͱྨࣅ౓ॱΛ૊Έ߹ΘͤΔํ๏ʹ͸σϝϦοτ

5. ݁Ռͱߟ࡯

͕͋ΔɽͦΕ͸ͦΕͧΕͷ‫ج‬४ʹΑͬͯૠೖީิΛॱҐ෇͚͢ຊষͰ͸ɼௐࠪͰಘΒΕͨ݁ՌΛड़΂ɼߟ࡯Λߦ͏ɽΓ࣌ؒΛཁͯ͠͠·͏͜ͱͰ͋Δɽ‫ج‬४Λ૊Έ߹Θͤͯ࠶ར༻

ߋ৽ॱͷௐࠪ

ʹ‫ࣗͮ͘ج‬ಈϓϩάϥϜमਖ਼ख๏ʹ࣮૷Λ͢Δͱ͖͸ɼͦΕ֤ͧιϑτ΢ΣΞʹ͓͚Δૠೖߦͷ਺Λද 2 ʹ·ͱΊΔɽૠೖΕͷॱҐ෇͚ͷॲཧΛฒྻͰߦ͏ͳͲɼσϝϦοτΛߟྀͨ͠ߦͷ਺͸ 4. 2 અͷௐࠪखॱͰड़΂ͨૠೖߦͷநग़ʹ͓͍ͯநग़

ΔॲཧΛߦ͏ඞཁ͕͋ΓɼͦΕͧΕͷ‫ج‬४Λ୯ಠͰ࢖༻͢ΔΑ

࣮૷͕ඞཁʹͳΔɽ

—5—

ද3

ߋ৽ॱͱྨࣅ౓ॱͷ্Ґͷؔ܎ΧόϨοδ͕ 0.1 ҎԼιϑτ΢ΣΞ

ૠೖߦͷ਺

Apache httpd྆ํ ߋ৽ॱͷΈ4,739 1,715

ྨࣅ౓ॱͷΈ

1,079

ΧόϨοδ͕ 0.2 ҎԼ‫ܭ‬྆ํ ߋ৽ॱͷΈ ྨࣅ౓ॱͷΈ‫ܭ‬734 3,528ʢ74.6%) 2,186

1,083

609 3,878ʢ81.8%ʣ

CBMC

1,209

483

280

204

967ʢ80.0%)

610

271

174 1,055ʢ87.2%ʣ

JabRef

1,675

569

387

267 1,223ʢ73.0%)

778

397

186 1,361ʢ81.3%ʣ

jEdit

5,996 1,577

1,779

693 4,049ʢ67.5%) 2,008

1,932

641 4,582ʢ76.4%ʣ

6. ଥ౰ੑ΁ͷ‫ڴ‬ҖຊষͰ͸ຊ‫͚͓ʹڀݚ‬Δଥ౰ੑ΁ͷ‫ڴ‬Җʹ͍ͭͯड़΂Δɽຊ‫Ͱڀݚ‬͸ɼमਖ਼͕ߦΘΕͨίϛοτΛද͢मਖ਼ίϛοτͱ͍͏༻‫ޠ‬Λɼίϛοτϩάʹಛఆͷमਖ਼ʹؔ͢ΔΩʔϫʔυΛ‫ؚ‬Ήίϛοτɼͱఆ͍ٛͯ͠ΔɽͦͷͨΊɼΩʔϫʔυΛ‫·ؚ‬ͳ͍͕मਖ਼ΛߦͬͨίϛοτΛର৅ʹ͢Δ͜ͱ͕Ͱ͖͍ͯͳ͍ɽ
·ͨɼΩʔϫʔυΛ‫ؚ‬Ή͕मਖ਼Λߦ͍ͬͯͳ͍ίϛοτΛର৅ʹͯ͠͠·͍ͬͯΔՄೳੑ͕ߟ͑ΒΕΔɽ
ຊ‫Ͱڀݚ‬͸ɼमਖ਼ίϛοτʹ͓͚ΔૠೖߦΛର৅ʹௐࠪͯ͠
͍Δɽ͔͠͠ɼमਖ਼ͷࡍʹ͸मਖ਼ͱ͸ແؔ܎ͷߦΛಉ࣌ʹίϛοτ͢Δ͜ͱ͕ߟ͑ΒΕΔɽͦͷΑ͏ͳ৔߹ɼૠೖߦʹमਖ਼ͱ͸ແؔ܎ͳߦ͕‫·ؚ‬ΕΔՄೳੑ͕͋Δɽຊ‫Ͱڀݚ‬͸ɼௐࠪର৅ͱͯ͠ 4 ͭͷΦʔϓϯιʔειϑτ΢ΣΞΛௐࠪͨ͠ɽௐࠪର৅Λมߋ͢Δͱௐࠪͷ݁Ռ͕มΘΔ
Մೳੑ͕͋ΔɽϓϩάϥϜ͸ C ‫ܥ‬ͷ‫͔ޠݴ‬Β 2 ͭɼJava ͔Β

2 ͭબ୒ͯ͠ର৅ͱ͍ͯ͠ΔɽͦΕҎ֎ͷ‫ޠݴ‬ͷϓϩάϥϜͰจ‫ݙ‬[1] J.A. Jones, M.J. Harrold, and J. Stasko, “Visualizationof test information to assist fault localization,” ICSE ’02,
pp.467–477, 2002.
[2] X. Wang, S.C. Cheung, W.K. Chan, and Z. Zhang, “Taming
coincidental correctness: Coverage reﬁnement with context
patterns to improve fault localization,” ICSE ’09, pp.45–55,
2009.
[3] C. Le Goues, M. Dewey-Vogt, S. Forrest, and W. Weimer,“A systematic study of automated program repair: Fixing
55 out of 105 bugs for $8 each,” ICSE ’12, pp.3–13, 2012.
[4] Y. Qi, X. Mao, Y. Lei, Z. Dai, and C. Wang, “The strengthof random search on automated program repair,” ICSE ’14,
pp.254–265, 2014.
[5] D. Kim, J. Nam, J. Song, and S. Kim, “Automatic patch
generation learned from human-written patches,” ICSE ’13,
pp.802–811, 2013.
[6] H.D.T. Nguyen, D. Qi, A. Roychoudhury, and S. Chandra,“Semﬁx: Program repair via semantic analysis,” ICSE ’13,
pp.772–781, 2013.
[7] ԣࢁ੖थɼେాਸ࢙ɼງా‫ܓ‬༎ɼං‫ޙ‬๕थɼԬ໺ߒࡾɼೇຊਅೋɼ
“࠶ར༻ʹ‫ࣗͮ͘ج‬ಈόάमਖ਼ʹ͓͚Δ࠶ར༻ީิͷߜࠐʹ޲͚” ిࢠ৘ใ௨৴ֶձٕज़‫ڀݚ‬ใࠂɼpp.047–052ɼ2015ɽͨௐࠪɼ͸ௐࠪΛߦ͍ͬͯͳ͍ɽͦͷΑ͏ͳ‫ޠݴ‬Λର৅ͱͨࣗ͠ಈϓϩάϥϜमਖ਼ख๏ʹߋ৽ॱΛ࣮૷͢Δࡍʹ͸࠶౓ௐࠪΛߦ͏΂͖Ͱ͋Δɽ

7. ͋ ͱ ͕ ͖ຊ‫Ͱڀݚ‬͸ɼ࠶ར༻ʹ‫ࣗͮ͘ج‬ಈϓϩάϥϜमਖ਼ʹ͓͚Δૠ
ೖީิͷબ୒ख๏ͱͯ͠ɼߋ৽ॱͱ͍͏‫ج‬४Λ༻͍Δ͜ͱΛఏҊͨ͠ɽߋ৽ॱͷ༗༻ੑΛௐ΂ΔͨΊʹɼΦʔϓϯιʔειϑτ΢ΣΞͰ࣮ࡍʹߦΘΕͨϓϩάϥϜमਖ਼ʹରͯ͠ௐࠪΛߦͬͨɽௐࠪͷ݁Ռɼߋ৽ॱ͕ૠೖީิ͔ΒߦΛબ୒͢Δख๏ͱͯ͠༗༻Ͱ͋Δ͜ͱ͕Θ͔ͬͨɽ͞ΒʹɼԣࢁΒͷख๏ͷ‫ج‬४Ͱ͋Δྨࣅ౓ॱͰ΋ಉ༷ͷର৅ʹௐࠪΛߦ͏͜ͱͰɼྨࣅ౓ॱͱ
ߋ৽ॱͷؔ܎ੑΛௐ΂ͨɽͦͷ݁Ռɼྨࣅ౓ॱͰ͸༏ઌతʹબ୒͞Εͳ͍͕ߋ৽ॱͩͱ༏ઌతʹબ୒͞ΕΔΑ͏ͳૠೖߦͷଘࡏ͕֬ೝͰ͖ͨɽ
ࠓ‫ޙ‬ͷ՝୊͸ɼૠೖީิΛબ୒͢Δ‫ج‬४ͱͯ͠ɼߋ৽ॱ୯ಠ
·ͨ͸ߋ৽ॱͱྨࣅ౓ॱΛ૊Έ߹Θͤͨ‫ج‬४Λ࣮ࡍʹ࠶ར༻ʹ‫ࣗͮ͘ج‬ಈϓϩάϥϜमਖ਼ख๏ʹ࣮૷ͯ͠ɼϓϩάϥϜमਖ਼ʹ
ཁ͢Δ࣌ؒͷ୹ॖͰ͖Δ͔Ͳ͏͔ௐ΂Δ͜ͱͰ͋Δɽँࣙຊ‫ڀݚ‬͸ɼ೔ຊֶज़ৼ‫ڵ‬ձՊֶ‫ڀݚ‬අิॿۚ‫ج‬൫‫ڀݚ‬ʢSʣ
ʢ՝୊൪߸ɿ25220003ʣɼ͓Αͼจ෦Պֶল‫ڀݚ‬අิॿۚएख
‫ڀݚ‬ʢAʣʢ՝୊൪߸ɿ24680002ʣͷॿ੒ΛಘͯߦΘΕͨɽ

—6—