Upgrade to Pro — share decks privately, control downloads, hide ads and more …

バッチを作らなきゃとなったときに考えること

irof
February 25, 2025

 バッチを作らなきゃとなったときに考えること

JJUG CCC 2024 Spring 2024-06-16T17:15
https://ccc2024spring.java-users.jp/
https://jjug.doorkeeper.jp/events/172019

途中で出てくる長文スレッド
https://x.com/irof/status/1639195294347956224

途中で紹介してるガイドライン(「作る」となってからですね)
https://techblog.zozo.com/entry/batch-development-guideline

irof

February 25, 2025
Tweet

More Decks by irof

Other Decks in Programming

Transcript

  1. ͓͠ͳ͕͖ • όονͬͯʁ • όονͱWebAPI • όονղମ • όονΛ࡞Βͳ͖Όͱͳͬͨͱ͖ʹߟ͑Δ͜ͱ ʻຊηογϣϯͷझࢫʼ

    NO: όονΛ࡞Βͳ͖ΌˠͲ͏࡞ͬͨΒ͍͍ΜͩΖ͏ʁ YES: όονΛ࡞Βͳ͖Όˠ΄Μͱʹʁ
  2. JetBrains AI • όον • όονॲཧ͸ɺҰ࿈ͷδϣϒΛࣗಈԽ͢ΔҰछͷॲཧํ๏Ͱ͢ɻҰ౓ʹଟ਺ͷδϣϒΛ ࣮ߦ͠ɺਓؒͷհೖΛ࠷খݶʹ཈͑·͢ɻόονॲཧ͸ɺΤϯυϢʔβʔͷૢ࡞ͳ͠Ͱ ఆظతʹ·ͨ͸༧ఆ͞Εͨ࣌ؒʹߦΘΕΔ܏޲͕͋Γ·͢ɻ • δϣϒ

    • δϣϒͱ͸ɺಛఆͷλεΫ·ͨ͸Ұ࿈ͷλεΫΛࢦ͢Ұൠతͳ༻ޠͰ͢ɻγεςϜͷί ϯςΩετʹґଘ͠ɺಛఆͷϓϩηε·ͨ͸όονॲཧͷҰ෦Λࢦ͢͜ͱ͕͋Γ·͢ɻ • λεΫ • λεΫ͸ɺಛఆͷδϣϒΛ׬ྃ͢ΔͨΊʹ࣮ߦ͢Δඞཁͷ͋Δݸʑͷ࡞ۀΛࢦ͠·͢ɻ ͦΕ͸ಛఆͷ݁ՌΛୡ੒͢ΔͨΊͷҰ࿈ͷૢ࡞͔΋͠Ε·ͤΜɻ
  3. ChatGPT • όον (Batch) • ఆٛ: ෳ਺ͷ࡞ۀ΍ॲཧΛҰ ׅ࣮ͯ͠ߦ͢ΔํࣜͰ͢ɻ • ಛ௃:

    Ϣʔβʔͷհೖͳ͠ ʹɺࣗಈతʹҰ࿈ͷ࡞ۀ͕ॱ ࣮࣍ߦ͞ΕΔɻ • ࢖༻ྫ: σʔλϕʔεͷόο ΫΞοϓɺఆظతͳϨϙʔτ ੜ੒ɺόονॲཧγεςϜɻ • ࢖͍ํ: όονॲཧ͸ɺεέ δϡʔϧʹج͍ͮͯࣗಈ࣮ߦ ͞ΕΔ͜ͱ͕ଟ͘ɺ໷ؒͳͲ ඇϐʔΫ࣌ʹ࣮ߦ͞ΕΔ͜ͱ ͕ଟ͍Ͱ͢ɻ • δϣϒ (Job) • ఆٛ: ίϯϐϡʔλγεςϜ ʹ͓͚ΔҰ࿈ͷ໋ྩ΍ϓϩά ϥϜͷ࣮ߦ୯ҐͰ͢ɻ • ಛ௃: δϣϒ͸ෳ਺ͷλεΫ ΍εςοϓ͔Βߏ੒͞ΕΔ͜ ͱ͕ଟ͍ɻ • ࢖༻ྫ: όονॲཧ಺ͷݸʑ ͷ࡞ۀɺσʔλ෼ੳδϣϒɺ Ϗϧυδϣϒɻ • ࢖͍ํ: δϣϒ͸ɺόονॲ ཧͷதͷҰ෦෼ͱͯ͠ѻΘΕ Δ͜ͱ͕ଟ͘ɺδϣϒεέ δϡʔϥͳͲͷγεςϜʹ Αͬͯ؅ཧ͞ΕΔ͜ͱ͕ଟ͍ Ͱ͢ɻ • λεΫ (Task) • ఆٛ: ࣮ߦ͢ΔͨΊͷݸʑͷ ΞΫςΟϏςΟ΍࡞ۀͷ࠷খ ୯ҐͰ͢ɻ • ಛ௃: λεΫ͸ܰྔͰ͋Γɺ ௨ৗ͸୹࣌ؒͰ׬ྃ͢Δɻ • ࢖༻ྫ: ΦϖϨʔςΟϯάγ εςϜͷλεΫ؅ཧɺ෼ࢄγ εςϜͷλεΫεέδϡʔϦ ϯάɻ • ࢖͍ํ: λεΫ͸ɺෳ਺ͷλ εΫ͕ฒߦ࣮ͯ͠ߦ͞ΕΔ͜ ͱ͕ଟ͘ɺεϨου΍ϓϩη εʹΑ࣮ͬͯߦ͞ΕΔ͜ͱ͕ ͋Γ·͢ɻ
  4. ͪͳΈʹjBatch(JSR-352)ͱSpringBatch • Batch/Job/Taskͷ֊૚͸ಉ͡ • όονΞϓϦέʔγϣϯʹෳ਺ͷJobΛ࣋ͭ • Job͸ෳ਺ͷStepΛ࣋ͭ • Stepͷύλʔϯͱͯ͠ •

    Chunk, Batchlet(jBatch) • Chunk, Tasklet(SpringBatch) • ୯७ͳStepΛλεΫͱݺͿײ͡ • ·͊ಉ͡ײ͡ɻײ͡ɻ JSR 352ͷਤ
  5. • ͢΂ͯͷඇWebAPIͷॲཧΛόονͱݺͿͱγεςϜઃܭ͕ෳࡶʹͳΔɻ • όονॲཧͱεέδϡʔϧλεΫΛ۠ผ͢Δɻ • όονॲཧ: Ұׅॲཧʹ͓͚ΔτϥϯβΫγϣϯ؅ཧ΍࠶࣮ߦͳͲෳࡶͳ໰୊Λѻ͏ɻ • εέδϡʔϧλεΫ: ఆظతʹ࣮ߦ͞ΕΔॲཧɻݸผॲཧ΍୯७ͳ܁Γฦ͠ɻ

    • όονΛॲཧͱτϦΨʔʢWebAPIɺεέδϡʔϧλεΫɺඇಉظλεΫʣͰ෼཭͢ Δɻ • όονॲཧ͸ಛผͳઃܭ͕ඞཁ͕ͩɺεέδϡʔϧλεΫ΍WebAPIͰ୅ସͰ͖Δ΋ͷ ͸γϯϓϧʹઃܭ͢Δɻ • όονॲཧʹཔΓ͗͢ͳ͍ɻ
  6. τϦΨʔ • εέδϡʔϥʔ • ʮεέδϡʔϧͰಈ͘΋ͷ͸όονʯͰ͸ͳ͍ɻ͕͜ͷηογϣϯͷझࢫͰ͢ɻ • Πϕϯτ • ϑΝΠϧ͕ஔ͔ΕͨͳͲͷΠϕϯτͰಈ͘όον΋ଟ͋͘Δɻ •

    ࣮ߦ͢Δ৚͕݅੔ͬͨΒಈ͘ͱ͍͏΋ͷɻεέδϡʔϧ΋Πϕϯτͱ͍͑͹ΠϕϯτͳΜ͚ͩͲɺผ ࿮Ͱѻ͏ɻ • ϚχϡΞϧ • खಈ࣮ߦ͞ΕΔόονɻ݁ՌΛ଴ͭ৔߹͕ଟ͍ɻಉظͰ଴ͭ͜ͱ΋͋Ε͹ϙʔϦϯάͳͲͰ݁ՌΛ֬ ೝ͢Δ৔߹΋ɻ • εέδϡʔϧ͞Ε͍ͯΔόονͷखಈ࠶࣮ߦ͸͜͜ɻ ͜Ε͚͕ͩ෼͚ํͰ͸ͳ͍ɻଞͷ෼͚ํ΋͋ΔͩΖ͏ ͠ɺෆ଍΋͋Δͱࢥ͏ɻྫ͘Β͍ʹଊ͍͑ͯͩ͘͞ɻ
  7. ॲཧ • Ұׅॲཧ • ܈Λ૬खʹ͢Δ΋ͷɻूܭͱ͔ɻ • όονग़ͳ͚Ε͹ͳΒͳ͍΋ͷɻ • ݸผॲཧ •

    Ұͭͣͭॱ൪ʹॲཧ͢Δ΋ͷ΋͋Ε͹ɺฒྻʹॲཧ͢Δ৔߹΋͋Δ͚ΕͲɺॲཧͷຊ ମͱͯ͠͸ʮݸʯΛ૬खʹ͢Δ΋ͷɻ • ॲཧޮ཰ͷͨΊʹόονͱ͍͏ܗଶΛͱ͍ͬͯΔ΋ͷ΋͋Δɻ ͜Ε͚͕ͩ෼͚ํͰ͸ͳ͍ɻଞͷ෼͚ํ΋͋ΔͩΖ͏ ͠ɺෆ଍΋͋Δͱࢥ͏ɻྫ͘Β͍ʹଊ͍͑ͯͩ͘͞ɻ
  8. ͜ͷ෼͚ํͩͱ3*2Ͱ6ύλʔϯ τϦΨʔ ॲཧ୯Ґ όονʁ εέδϡʔϥʔ Ұׅॲཧ Y Πϕϯτ Ұׅॲཧ Y

    ϚχϡΞϧ Ұׅॲཧ Y εέδϡʔϥʔ ݸผॲཧ N Πϕϯτ ݸผॲཧ N ϚχϡΞϧ ݸผॲཧ N
  9. ͜ͷ෼͚ํͩͱ3*2=6ύλʔϯͰ τϦΨʔ ॲཧ୯Ґ όονʁ εέδϡʔϥʔ Ұׅॲཧ Y Πϕϯτ Ұׅॲཧ Y

    ϚχϡΞϧ Ұׅॲཧ Y εέδϡʔϥʔ ݸผॲཧ N Πϕϯτ ݸผॲཧ N ϚχϡΞϧ ݸผॲཧ N ͜ͷࢠͨͪ
  10. εέδϡʔϥʔΛͲ͜Ͱ͔࣋ͭ • ΞϓϦέʔγϣϯ֎ • OSͷεέδϡʔϥʔͱ͔͋Δ͠ɺΫϥ΢υ؀ڥͰ΋৭ʑ༻ҙ͞ΕͯΔ • ͔ͦ͜ΒΞϓϦέʔγϣϯΛ͚ͭͭΕ͹͍͍ • ϓϩηεΛىಈ͢ΔΑΓɺWebAPIΛୟ͘ͷ͕औΓѻ͍΍͍͢ •

    ϚΠΫϩαʔϏεతͳͷ͕Ͱ͖ͨΒ͍͍Μ͚ͩͲɺJavaจ຺ͩͱ·ͩඍົ͡Όͳ͍͔ ͳͬͯࢥ͍ɻNative࣍ୈʁ • ΞϓϦέʔγϣϯ಺ • Քಇ͍ͯ͠ΔαʔόʔΞϓϦέʔγϣϯ͕͋ΔͳΒΞϓϦέʔγϣϯͰ࣋ͬͯ΋ɻ
  11. ΞϓϦέʔγϣϯ಺εέδϡʔϥʔ • Springͩͱ @Scheduled ͱ͔࢖͏ͱ؆୯ʹεέδϡʔϥʔ͕࡞ΕΔɻ • ͚Ͳଟॏ࣮ߦ͸ߟྀ͠ͱ͖͍ͨ • ෳ਺αʔόʔ͕౰ͨΓલͳͷͰ୆਺෼࣮ߦ͞Εͯଟॏ࣮ߦ͞ΕͪΌ͏ɻଟॏ࣮ߦ͕ࠔ Βͳ͍ͳΒؾʹ͠ͳ͍͍ͯ͘ɻ

    • ࠔΔͳΒԿ͔͠Β੍ޚ͢ΔɻQuartz͋ͨΓͷఆ൪Ͱࡁ·ͤΒΕΔͷ͕޷·͍͠ɻ • ʮ1ίϯςφ͚ͩͰ @Scheduled ͕༗ޮʹͳΔΑ͏ʹʂʯΈ͍ͨͳ౒ྗͷํ޲͸શ෦Ͱ ಈ͔ͳ͍ͱ͔ࣄނͷݩɻશ෦Ͱಈ͍ͯ1୆Ҏ֎͸ۭৼΓͷํ͕޷·͍͠ɻ • αʔόʔ୆਺ݻఆͷ࣌୅ͳΒʮ1߸ػ͚ͩʯͱ͔Ͱ΋ྑ͔ͬͨΜ͚ͩͲͶɻ
  12. όονղମɿͳΜͰඞཁʁ • Ͳ͜ͷγεςϜ΋ѻ͏σʔλྔ͸ͲΜͲΜ૿͍͍͑ͯͬͯΔ • όονͰ΍Γ੾Δʹ΋ݶ౓͕͋Δ • Χʔυ͸͓࣋ͬͯ͘ͷ͕͍͍ɻͦͷΧʔυ͸΋͏࣋ͬͯΔ΋ͷɻ • όον͸࣮ߦػձ͕গͳ͍ʹӡ༻஌ݟ͕ͨ·Γʹ͍͘ •

    ݄࣍ͳΜͯ೥ؒ12ճ͔͠ӡ༻͔ΒͷϑΟʔυόοΫΛड͚ΒΕͳ͍ • Ϋϥ΢υωΠςΟϒͳྲྀΕͱόονʹִͨΓ͕͋Δ • ʮόον͔ͩΒΦϒβʔόϏϦςΟඍົʯແ͍͚ͨ͘͠ͲɺͲ͏ͯ͠΋ϑΟʔυόο Ϋ͔Βͷվળ͕ճ͠ʹ͍͘ͷͰਏ͍ɻ
  13. ʮόονΛ࡞Βͳ͖Όʯ • ΄Μͱʹʁ • ʮόονʯͱݴͬͯΔ͚ͲԿΛࢦͯ͠ʮόονʯͬͯݴͬͯΔʁ • Ҋ֎߹Θͳ͍΋ͷͩ͠ɺࣝผ͢Δͱ͍͍͜ͱ͕݁ߏ͋ΔΑ • ʮͦΕ͸όονͳͷʁʯΛ໰͏ •

    Ұׅॲཧ͠ͳ͍͍ͯ͘΋ͷͳΒɺWebAPIͳͲͰ͜ͳ͢ํ͕Կ͔ͱར఺͕ଟ͍ɻ • Ұׅॲཧ͕ඞཁͳ΋ͷ͸όονɺͦ͏Ͱͳ͍΋ͷ͸όονΛආ͚ΔͷΛجຊతͳํ਑ ͱ্ͨ͠ͰɺͦΕͰ΋όονըචΑͳจ຺͸͋Δɻ
  14. όονʢ੍ޚʣ • ଟ෼Կ͔͠Β͍͍ײ͡ͷ͜ΕΛࢦ໊͢લ͕͋ΔΜ͚ͩͲݟ͚ͭΒΕͳ͔ͬͨɻ • ݱ৔ͩͱ੡඼΍αʔϏε໊ͰݺΜ͡ΌͬͨΓ͕ͪ͠ɻ • લޙؔ܎΍εςʔλε؅ཧɺશମͱͯ͠ͷίϯτϩʔϧΛ࢘Δɻ • ޙड़ͷόονʢॲཧʣΛݺͼग़ͯ͠ɺͦͷ݁ՌΛड͚ͯɺͱ͔͕͓࢓ࣄɻ •

    ঎༻੡඼΋৭ʑ͋Δ͠ɺࢥ͍ු͔΂Δ΋ͷ΋͋Δͱࢥ͏ɻ • ͜͜ͰΤϥʔϋϯυϦϯά΍ϞχλϦϯάɺ࠶࣮ߦͳͲΛߦ͏ɻ • ͍͔ͭ͘ͷϓϩμΫτͷϚχϡΞϧΛಡΈൺ΂ͯ໯͑Ε͹Ͳ͏͍͏͜ͱ͕໾ׂ͔͸ݟ͑ ͯ͘Δͱࢥ͏ɻ
  15. • ࠶࣮ߦ໰୊ • ్தͰΤϥʔʹͳͬͨ৔߹ͷऔΓѻ͍ɻ • ಛʹଞγεςϜʹ࿈ܞ͢Δ΋ͷɻ • ੑೳ໰୊ • େྔ݅਺Λ૬खʹ͢ΔͷͰɺ୯ମͷੑೳ໰୊͸Α͘ग़ΔɻϦΞϧλΠϜੑ͕ٻΊΒΕͳ͍͔Βͱʮ1+nͳॲཧͰ͍͍΍ʯΈ͍ͨʹઃܭͨ͠΋ͷ͕਺೥ޙʹ

    ͍͕͔͔ͬ࣌ؒ͢͝ΔΑ͏ʹͳͬͯͨΓɻʮ໷ؒόονͷಥ͖ൈ͚ʯͱ͔ݴͬͨΓ͢Δɻ೔࣍όον͸࢝ۀʹؒʹ߹͏͔উෛʹͳͬͨΓ͢Δ͠ɺि࣍όον ͕48࣌ؒܰ͘௒͑ͨΓͱ͔΋͋Γ͕ͪɻ͜ͷखͷνϡʔχϯά͸ϋϚΔͱָ͍͠ɻ • ୯ମ͸୯ମͱͯ͠ɺϦιʔεΛେྔʹ࢖͏ͱWebAPIʹӨڹ͕ͰͨΓ΋͕ͪ͠ɻDBʹෛՙ͔͚ͪΌͬͨΓɺಉ͡Ϛγϯʹ৐ͬͯͯCPU΍IO࢖͍੾ͬͨΓͱ ͔ɻԾ૝Խ͕ਐΜͰͲ͏͍͏ϦιʔεΛڞ༗͢Δ͔΋Θ͔ΓͮΒ͘ͳͬͯΔɻ • ഉଞ੍ޚ໰୊ • όονҎ֎ͱͷഉଞ੍ޚ͕ඞཁʹͳͬͨ࣌ʹͲ͏͢Δ͔ɻWebAPIͷ͓͔͛Ͱ • όονؒͷґଘؔ܎໰୊ • ଞͷόονͱͷґଘؔ܎͕ύζϧʹͳΓ͕ͪɻಛఆόονͷҟৗ࣌ͷ୅ସϑϩʔͱ͔ɺ͜ͷ੍ޚࣗମ͕ҰେγεςϜͱݴ͑ΔɻڊେJOBωοτͷखߝΛѲΕ Δਓʹ͸಄͕Լ͕Δɻখ͍͞͏ͪ͸؆୯ͳͤ͘ʹେ͖͘ͳΔͱෳࡶ౓͕Ճ଎తʹ্͕Δɻʢࠓճ͸͠ͳ͍࿩ʣ • WET໰୊ • όονͱWebAPIͰಉ͡Α͏ͳॲཧΛ͍͚ͨ͠Ͳɺόον͸όονɺWebAPI͸WebAPIɺΈ͍ͨͳ࡞ΓํΛ͍ͯ͠ΔͱDRYΛอͯͳ͘ͳΔɻͰʮόον͸௚ ͚ͨ͠ͲWebAPI͸Ͱ͖ͯͳ͔ͬͨʯͱ͔ͦͷٯͱ͔ɺͦΕͧΕಠࣗਐԽ੍ͯ͠ޚෆೳʹͳͬͨΓͱ͔ɺ͕ͪ͠ɻ
  16. ࠶࣮ߦ໰୊ • ࠶࣮ߦͰ͖ΔΑ͏ʹͭ͘Δ • ʮಉ͡ೖྗͰ͋Ε͹Կ౓࣮ߦͯ͠΋ಉ݁͡ՌʹͳΔʯͱݴ͏΋ͷ • ͨͱ͑͹ʮείΞΛ100૿Ճͤ͞Δʯ͸࠶࣮ߦͰ͖ͳ͍ɻ2ճ࣮ߦͨ͠Β200૿Ճ͢Δɻ • ʮ࠶࣮ߦͰ͖Δʯ͕֬อͰ͖Ε͹͙ͬͱָʹͳΔ •

    ͜ͷʮͰ͖Δʯ͸ʮ͕Μ͹Ε͹Ͱ͖ΔʯͰ͸ͳ͍ɻ • ཧ૝͸ϫϯΫϦοΫɺ͍͍ͤͥ਺ݸͷೖྗύϥϝλʢ࠶࣮ߦ͍ͨ࣌͠͸ࣗಈղܾ͞ΕΔ΋ ͷʣΛઃఆ͢Δ͚ͩͰ࣮ߦͰ͖ͳ͍ͱʮ࠶࣮ߦͰ͖Δʯͱ͸ݴ͍೉͍ • ʮ͕Μ͹Ε͹Ͱ͖Δʯ͚ͩͰ΋ʮͰ͖ͳ͍ʯΑΓΑ΄Ͳ͍͍͚ΕͲ……
  17. όοΫΞοϓˍϦετΞ • ͢΂ͯͷೖྗΛ࣮ߦ࣌ʹอଘ͓͖ͯ͠ɺ࠶࣮ߦ࣌͸ʮอଘͨ͠ೖྗʯΛ࢖༻͢Δɻ • ؆୯ͳྫ • ࣮ߦ࣌ʹDBͷόοΫΞοϓΛऔΔɻ࠶࣮ߦ࣌͸ϦετΞ͔ͯ͠ΒɻʢDB͚ͩΛೖग़ྗͱ͢Δ ΋ͷͷ৔߹ʣ • ϝϦσϝ

    • όονࣗ਎͸γϯϓϧʹͳΔɻ • ೖྗͷόϦΤʔγϣϯ͕૿͑Δͱେมɻ • όοΫΞοϓˍϦετΞͰ͖ͳ͍ೖྗ͕͋ΔͱΞ΢τɻͨͱ͑͹֎෦γεςϜɻ • σʔλྔʹΑΔ͕༰ྔతʹͦ΋ͦ΋ݱ࣮తͰͳ͍ͱ͔΋͋Γ͕ͪɻ
  18. ॲཧࡁΈ൑ผ • طʹॲཧ͔ͨ͠Λ൑ผͯ͠ɺ࠶࣮ߦ࣌ʹॲཧࡁΈͰ͋Ε͹εΩοϓ͢Δɻ • ؆୯ͳྫ • ॲཧର৅ͷPKͱόονͷIDͷ૊Έ߹ΘͤΛอ࣋͢ΔςʔϒϧΛ࡞Δɻॲཧର৅͝ͱʹॲཧ͕ऴΘͬͨΒϨίʔυΛ ࡞ΔɻͦͷϨίʔυ͕͋ͬͨΒεΩοϓɻ • ϝϦσϝ

    • ࠶࣮ߦ͕ऴΘΔ·Ͱ͸ෆ੔߹ͳঢ়ଶʹͳ͍ͬͯΔͱݴ͑ΔɻʮԿׂ͔ͷϢʔβʔ͚ͩॲཧ͞Ε͍ͯͯ࢒Γ͸·ͩʯͱ ݴ͏ঢ়ଶΛڐ༰͢Δͱ͔ݟ͑ͳ͍Α͏ʹ͢Δͱ͔ͳΜΒ͔ͷ੍ޚ͕ඞཁɻ • ్தΤϥʔͰதஅͨ͠৔߹ͳͲͷ࠶࣮ߦ͕୹࣌ؒͰߦ͑Δɻෳ਺ͷόον͕࿈ͳ͍ͬͯΔ৔߹ͷ࠶࣮ߦͰ༗ޮɻ • ίϝϯτ • ʮόονʯͱݴ͍ͭͭʮͻͱ͔ͨ·ΓʯͰѻ͍ͬͯͳ͍͔ΒͰ͖Δ΋ͷͰ͋Δɻ • ʮ࠶࣮ߦʯͱݴ͍ͭͭɺ࣮ߦ͔͸एׯٙ໰ɻ
  19. νΣοΫϙΠϯτ • ʮॲཧ͕Ͳ͜·ͰਐΜ͔ͩʯΛه࿥ͯ͠ɺࢭ·ͬͨͱ͜Ζ͔Β࠶։͢Δ • ϝϦσϝ • ࢓૊Έ͕Θ͔Γ΍͍͢ɻऴΘͬͨ΋ͷ͕ಈ͔ͳ͍͔Β҆৺ײ͸͋Δɻײ͚ͩͲɻ • ίϝϯτ •

    όονશମΛͳʹ͔͠ΒͰ۠੾͍ͬͯΔɻ • ͦͷ۠੾ͬͨ୯Ґ͕ʮͻͱ͔ͨ·Γʯ͡ΌͶʁͱࢥ͏ • େྔ݅਺Λॲཧ͢Δ৔߹ͷύλʔϯͰɺόονϑϨʔϜϫʔΫͳͲͰ΋Α͘αϙʔτ͞Ε͍ͯΔɻ৐͔ͬΕΕ͹͜ ͷ੍ޚʹབྷΉෳࡶ͞Λ͓೚ͤͰ͖Δ͕ɺ৫ΓࠐΜͰઃܭ͠ͳ͍ͱඍົʹ߹Θͳͯ͘࢖͑ͳ͍͜ͱ΋ଟ͍ɻંΓ߹Θ ͳ͚Ε͹ॲཧࡁΈ൑ผͷ΄͏΁ɻ • ίϝϯτ • ʮ࠶࣮ߦʯʹׅ͚ͬͨͲ࠶࣮ߦ͸͍ͯ͠ͳ͍ɻʮ࠶։ʯͰ͋Δɻ