Share
Embed
履歴テーブル、今回はこう作りました 〜 Delegated Types編 〜 / How We Built Our History Table This Time — With Delegated Types
Ruby on Railsのテーブル設計とトランザクション処理 LT Nightの資料です #techbaton_findy
https://findy.connpass.com/event/375098/
5分で背景含め様々を説明するのは無理だったので補足記事があります: https://moznion.hatenadiary.com/entry/2025/11/27/223512
moznion
November 27, 2025
Transcript
37 slides
-
ཤྺςʔϒϧ͕͋ΔͱԿ͕ྑ͍ͷ͔ w͕ൃੜͨ࣌͠ʹௐ͕ࠪͰ͖Δ ྫϢʔβʔ͍߹ΘͤରԠ wূͱͯ͠ѻ͑Δ ྫࠪରԠ wҰ࿈ͷཤྺΛྲྀ͠ࠐΉ͜ͱͰ ࣌
ܥྻͷॲཧ͕Ͱ͖Δ̈ wߦಈɾಈଶੳʹ͑Δ wͳͲͳͲʜʜ ̈ҰछͷΠϕϯτιʔγϯά -
ཤྺςʔϒϧ͕͋ΔͱԿ͕ྑ͍ͷ͔ ཤྺΛImmutableͳσʔλͱͯ͠ѻ͏͜ͱʹΑΓ ͜ͷΑ͏ͳϝϦοτΛಘΔ͜ͱ͕Ͱ͖Δ w͕ൃੜͨ࣌͠ʹௐ͕ࠪͰ͖Δ ྫϢʔβʔ͍߹ΘͤରԠ wূͱͯ͠ѻ͑Δ ྫࠪରԠ
wҰ࿈ͷཤྺΛྲྀ͠ࠐΉ͜ͱͰ ࣌ ܥྻͷॲཧ͕Ͱ͖Δ̈ wߦಈɾಈଶੳʹ͑Δ wͳͲͳͲʜʜ ̈ҰछͷΠϕϯτιʔγϯά -
ΞϑΟϦΤΠτϓϩάϥϜ֓؍ ΞϑΟϦΤΠτϓϩάϥϜࢀՃ ֎෦αΠτ ίϯόʔδϣϯ ใಉظ "41̈ ঢ়ଶΛ௨ (ൃੜɾঝೝɾغ٫) ̈"41ΞϑΟϦΤΠταʔϏεϓϩόΠμʔ
͜ΕΒͷΠϕϯτΛཤྺςʔϒϧͰѻ͏ ͜ͷϥΠϑαΠΫϧதͰҰҙͳIDඞཁ -
ཤྺςʔϒϧσʔλϞσϦϯά DPOWFSTJPO@FWFOU CJHJOU JE 1, CJHJOU DPOWFSTJPO@JE TUSJOH FWFOUBCMF@UZQF
EFMFHBUFEUZQFT CJHJOU FWFOUBCMF@JE EFMFHBUFEUZQFT CJHJOU DPOWFSTJPO@FWFOU@QSPWJEFS@MPH@JE EBUBUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@BQQMJDBUJPOT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU FOSPMMNFOU@JOUFOUT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', EBUFUJNF FOSPMMFE@BU DPOWFSTJPOT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', CJHJOU FOSPMMNFOU@JOUFOU@JE FOSPMMNFOU@JOUFOUTͷ', DPOWFSTJPO@FWFOU@SFKFDUJPOT CJHJOU JE 1, EBUFUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@QSPWJEFS@MPHT CJHJOU JE 1, TUSJOH QSPWJEFS@OBNF KTPO SBX@QBZMPBE EBUFUJNF SFDFJWFE@BU DPOWFSTJPO@FWFOU@BQQSPWBMT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU -
ཤྺςʔϒϧσʔλϞσϦϯά DPOWFSTJPO@FWFOU CJHJOU JE 1, CJHJOU DPOWFSTJPO@JE TUSJOH FWFOUBCMF@UZQF
EFMFHBUFEUZQFT CJHJOU FWFOUBCMF@JE EFMFHBUFEUZQFT CJHJOU DPOWFSTJPO@FWFOU@QSPWJEFS@MPH@JE EBUBUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@BQQMJDBUJPOT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU FOSPMMNFOU@JOUFOUT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', EBUFUJNF FOSPMMFE@BU DPOWFSTJPOT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', CJHJOU FOSPMMNFOU@JOUFOU@JE FOSPMMNFOU@JOUFOUTͷ', DPOWFSTJPO@FWFOU@SFKFDUJPOT CJHJOU JE 1, EBUFUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@BQQSPWBMT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU ͯ͢ͷϨίʔυهΦϯϦʔ (immutable) DPOWFSTJPO@FWFOU@QSPWJEFS@MPHT CJHJOU JE 1, TUSJOH QSPWJEFS@OBNF KTPO SBX@QBZMPBE EBUFUJNF SFDFJWFE@BU -
ཤྺςʔϒϧσʔλϞσϦϯά DPOWFSTJPO@FWFOU CJHJOU JE 1, CJHJOU DPOWFSTJPO@JE TUSJOH FWFOUBCMF@UZQF
EFMFHBUFEUZQFT CJHJOU FWFOUBCMF@JE EFMFHBUFEUZQFT CJHJOU DPOWFSTJPO@FWFOU@QSPWJEFS@MPH@JE EBUBUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@BQQMJDBUJPOT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU FOSPMMNFOU@JOUFOUT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', EBUFUJNF FOSPMMFE@BU DPOWFSTJPOT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', CJHJOU FOSPMMNFOU@JOUFOU@JE FOSPMMNFOU@JOUFOUTͷ', DPOWFSTJPO@FWFOU@SFKFDUJPOT CJHJOU JE 1, EBUFUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@BQQSPWBMT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU ͜ͷID͕ϥΠϑαΠΫϧதͰҰҙʹͳΔ DPOWFSTJPO@FWFOU@QSPWJEFS@MPHT CJHJOU JE 1, TUSJOH QSPWJEFS@OBNF KTPO SBX@QBZMPBE EBUFUJNF SFDFJWFE@BU -
τϥϯβΫγϣϯڥք DPOWFSTJPO@FWFOU CJHJOU JE 1, CJHJOU DPOWFSTJPO@JE TUSJOH FWFOUBCMF@UZQF
EFMFHBUFEUZQFT CJHJOU FWFOUBCMF@JE EFMFHBUFEUZQFT CJHJOU DPOWFSTJPO@FWFOU@QSPWJEFS@MPH@JE EBUBUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@BQQMJDBUJPOT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU FOSPMMNFOU@JOUFOUT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', EBUFUJNF FOSPMMFE@BU DPOWFSTJPOT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', CJHJOU FOSPMMNFOU@JOUFOU@JE FOSPMMNFOU@JOUFOUTͷ', DPOWFSTJPO@FWFOU@SFKFDUJPOT CJHJOU JE 1, EBUFUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@BQQSPWBMT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@QSPWJEFS@MPHT CJHJOU JE 1, TUSJOH QSPWJEFS@OBNF KTPO SBX@QBZMPBE EBUFUJNF SFDFJWFE@BU -
DPOWFSTJPO@FWFOU CJHJOU JE 1, CJHJOU DPOWFSTJPO@JE TUSJOH FWFOUBCMF@UZQF EFMFHBUFEUZQFT
CJHJOU FWFOUBCMF@JE EFMFHBUFEUZQFT CJHJOU DPOWFSTJPO@FWFOU@QSPWJEFS@MPH@JE EBUBUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@BQQMJDBUJPOT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU FOSPMMNFOU@JOUFOUT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', EBUFUJNF FOSPMMFE@BU DPOWFSTJPOT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', CJHJOU FOSPMMNFOU@JOUFOU@JE FOSPMMNFOU@JOUFOUTͷ', DPOWFSTJPO@FWFOU@SFKFDUJPOT CJHJOU JE 1, EBUFUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@BQQSPWBMT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@QSPWJEFS@MPHT CJHJOU JE 1, TUSJOH QSPWJEFS@OBNF KTPO SBX@QBZMPBE EBUFUJNF SFDFJWFE@BU ϢʔβʔͷΞΫγϣϯʹΑΓൃੜ -
τϥϯβΫγϣϯڥք DPOWFSTJPO@FWFOU CJHJOU JE 1, CJHJOU DPOWFSTJPO@JE TUSJOH FWFOUBCMF@UZQF
EFMFHBUFEUZQFT CJHJOU FWFOUBCMF@JE EFMFHBUFEUZQFT CJHJOU DPOWFSTJPO@FWFOU@QSPWJEFS@MPH@JE EBUBUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@BQQMJDBUJPOT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU FOSPMMNFOU@JOUFOUT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', EBUFUJNF FOSPMMFE@BU DPOWFSTJPOT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', CJHJOU FOSPMMNFOU@JOUFOU@JE FOSPMMNFOU@JOUFOUTͷ', DPOWFSTJPO@FWFOU@SFKFDUJPOT CJHJOU JE 1, EBUFUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@BQQSPWBMT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@QSPWJEFS@MPHT CJHJOU JE 1, TUSJOH QSPWJEFS@OBNF KTPO SBX@QBZMPBE EBUFUJNF SFDFJWFE@BU ίϯόʔδϣϯ͢ΔͱASP͔Β௨͞ΕΔ (εςʔτϚγϯత) -
τϥϯβΫγϣϯڥք DPOWFSTJPO@FWFOU CJHJOU JE 1, CJHJOU DPOWFSTJPO@JE TUSJOH FWFOUBCMF@UZQF
EFMFHBUFEUZQFT CJHJOU FWFOUBCMF@JE EFMFHBUFEUZQFT CJHJOU DPOWFSTJPO@FWFOU@QSPWJEFS@MPH@JE EBUBUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@BQQMJDBUJPOT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU FOSPMMNFOU@JOUFOUT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', EBUFUJNF FOSPMMFE@BU DPOWFSTJPOT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', CJHJOU FOSPMMNFOU@JOUFOU@JE FOSPMMNFOU@JOUFOUTͷ', DPOWFSTJPO@FWFOU@SFKFDUJPOT CJHJOU JE 1, EBUFUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@BQQSPWBMT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@QSPWJEFS@MPHT CJHJOU JE 1, TUSJOH QSPWJEFS@OBNF KTPO SBX@QBZMPBE EBUFUJNF SFDFJWFE@BU ASP͔Βͷ௨ΛϩΪϯά (ௐࠪʹར༻Ͱ͖Δ) -
DPOWFSTJPO@FWFOU CJHJOU JE 1, CJHJOU DPOWFSTJPO@JE TUSJOH FWFOUBCMF@UZQF EFMFHBUFEUZQFT
CJHJOU FWFOUBCMF@JE EFMFHBUFEUZQFT CJHJOU DPOWFSTJPO@FWFOU@QSPWJEFS@MPH@JE EBUBUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@BQQMJDBUJPOT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU FOSPMMNFOU@JOUFOUT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', EBUFUJNF FOSPMMFE@BU DPOWFSTJPOT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', CJHJOU FOSPMMNFOU@JOUFOU@JE FOSPMMNFOU@JOUFOUTͷ', DPOWFSTJPO@FWFOU@SFKFDUJPOT CJHJOU JE 1, EBUFUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@BQQSPWBMT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU ͍͢͞ ύϑΥʔϚϯεͷͨΊͷඇਖ਼نԽ DPOWFSTJPO@FWFOU@QSPWJEFS@MPHT CJHJOU JE 1, TUSJOH QSPWJEFS@OBNF KTPO SBX@QBZMPBE EBUFUJNF SFDFJWFE@BU -
DPOWFSTJPO@FWFOU CJHJOU JE 1, CJHJOU DPOWFSTJPO@JE TUSJOH FWFOUBCMF@UZQF EFMFHBUFEUZQFT
CJHJOU FWFOUBCMF@JE EFMFHBUFEUZQFT CJHJOU DPOWFSTJPO@FWFOU@QSPWJEFS@MPH@JE EBUBUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@BQQMJDBUJPOT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU FOSPMMNFOU@JOUFOUT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', EBUFUJNF FOSPMMFE@BU DPOWFSTJPOT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', CJHJOU FOSPMMNFOU@JOUFOU@JE FOSPMMNFOU@JOUFOUTͷ', DPOWFSTJPO@FWFOU@SFKFDUJPOT CJHJOU JE 1, EBUFUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@BQQSPWBMT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU ͍͢͞ ύϑΥʔϚϯεͷͨΊͷඇਖ਼نԽ DPOWFSTJPO@FWFOU@QSPWJEFS@MPHT CJHJOU JE 1, TUSJOH QSPWJEFS@OBNF KTPO SBX@QBZMPBE EBUFUJNF SFDFJWFE@BU -
DPOWFSTJPO@FWFOU CJHJOU JE 1, CJHJOU DPOWFSTJPO@JE TUSJOH FWFOUBCMF@UZQF EFMFHBUFEUZQFT
CJHJOU FWFOUBCMF@JE EFMFHBUFEUZQFT CJHJOU DPOWFSTJPO@FWFOU@QSPWJEFS@MPH@JE EBUBUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@BQQMJDBUJPOT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU FOSPMMNFOU@JOUFOUT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', EBUFUJNF FOSPMMFE@BU DPOWFSTJPOT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', CJHJOU FOSPMMNFOU@JOUFOU@JE FOSPMMNFOU@JOUFOUTͷ', DPOWFSTJPO@FWFOU@SFKFDUJPOT CJHJOU JE 1, EBUFUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@BQQSPWBMT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU ͍͢͞ ύϑΥʔϚϯεͷͨΊͷඇਖ਼نԽ DPOWFSTJPO@FWFOU@QSPWJEFS@MPHT CJHJOU JE 1, TUSJOH QSPWJEFS@OBNF KTPO SBX@QBZMPBE EBUFUJNF SFDFJWFE@BU -
%FMFHBUFE5ZQFT DPOWFSTJPO@FWFOU CJHJOU JE 1, CJHJOU DPOWFSTJPO@JE TUSJOH FWFOUBCMF@UZQF
EFMFHBUFEUZQFT CJHJOU FWFOUBCMF@JE EFMFHBUFEUZQFT CJHJOU DPOWFSTJPO@FWFOU@QSPWJEFS@MPH@JE EBUBUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@BQQMJDBUJPOT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU FOSPMMNFOU@JOUFOUT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', EBUFUJNF FOSPMMFE@BU DPOWFSTJPOT CJHJOU JE 1, CJHJOU VTFS@JE VTFSTͷ', CJHJOU P ff FS@JE P ff FST Ҋ݅ ͷ', CJHJOU FOSPMMNFOU@JOUFOU@JE FOSPMMNFOU@JOUFOUTͷ', DPOWFSTJPO@FWFOU@SFKFDUJPOT CJHJOU JE 1, EBUFUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@BQQSPWBMT CJHJOU JE 1, JOUFHFS SFXBSE@BNPVOU JOUFHFS QVSDIBTF@BNPVOU EBUFUJNF PDDVSSFE@BU DPOWFSTJPO@FWFOU@QSPWJEFS@MPHT CJHJOU JE 1, TUSJOH QSPWJEFS@OBNF KTPO SBX@QBZMPBE EBUFUJNF SFDFJWFE@BU -
%FMFHBUFE5ZQFTʜʜͷલʹ45* ✅ͬ͘͟Γݴ͏ͱ %#ϨϕϧͰͭͷςʔϒϧʹϨίʔυΛอଘ͠εΩʔϚΛڞ༗ͭͭ͠ ͦͷதͰෳͷNPEFMΫϥε ৼ͍ ΛදݱՄೳͱ͢Δύλʔϯ ୯Ұςʔϒϧܧঝʢ45*4JOHMF5BCMF*OIFSJUBODFʣɺෳͷϞσϧΛ ୯ҰͷσʔλϕʔεςʔϒϧʹऩೲͰ͖Δ3BJMTͷύλʔϯͰ͢ɻ ͜Εɺ͞·͟·ͳΤϯςΟςΟʹڞ௨ͷଐੑৼΔ͍Λ࣋ͨͤͭͭɺ
ΤϯςΟςΟݻ༗ͷৼΔ͍͍࣋ͨͤͨ߹ʹศརͰ͢ɻ IUUQTSBJMTHVJEFTKQBTTPDJBUJPO@CBTJDTIUNM୯ҰςʔϒϧܧঝʢTUJʣ -
%FMFHBUFE5ZQFT %FMFHBUFEUZQFTʢҕৡܕʣɺ୯Ұςʔϒϧܧঝʢ45*ʣʹΑΔ ςʔϒϧංେԽͷΛɺEFMFHBUFE@UZQFͰղܾ͠·͢ɻ ͜ͷΞϓϩʔνʹΑΓɺڞ༗ଐੑΛεʔύʔΫϥεͷςʔϒϧʹอଘ͠ɺ αϒΫϥεݻ༗ͷଐੑΛผͷςʔϒϧʹอଘͰ͖ΔΑ͏ʹͳΓ·͢ɻ IUUQTSBJMTHVJEFTKQBTTPDJBUJPO@CBTJDTIUNMEFMFHBUFEUZQFT ✅ͬ͘͟Γݴ͏ͱ %#ϨϕϧͰͭͷςʔϒϧʹڞ௨ͷϨίʔυΛอଘ͠ɺ ͦΕʹؔ࿈͢Δࢠςʔϒϧʹݻ༗ͷϨίʔυΛอଘ͠ɺ
ݸผͷNPEFMΫϥε ৼ͍ Λ࣮Մೳͱ͢Δύλʔϯɻ -
%FMFHBUFE5ZQFTΛ͏͜ͱʹΑΔخ͠͞ • ֤छΠϕϯτΛݸผͷςʔϒϧʹอଘͰ͖Δ • ڞ௨ͷॲཧςʔϒϧɺݻ༗ͷΧϥϜॲཧݸผςʔϒϧͷ ʹͰ͖Δ̈ •ݸผςʔϒϧͷΫΤϦͰ݁ͤ͞Δ͜ͱ͕Ͱ͖Δ̈̈ • ಛఆͷΫϥε
(ςʔϒϧ) ͔͠ඥ͔ͳ͍͜ͱ͕อূͰ͖ΔͷͰ σʔλߏͱͯ͠ഁͤ͞ʹ͍͘ ̈45*ͩͱݻ༗ͷΧϥϜΛ࣋ͨͤΔ͜ͱਪ͞Εͳ͍ ̈̈45*ͩͱ౷ҰςʔϒϧʹΫΤϦ͢Δඞཁ͕ग़ͯ͘ΔͨΊɺڊେςʔϒϧʹͳΔͱ͕ग़ΔՄೳੑ͕͋Δ -
3BJMTͷNPEFMʹSFMBUJPOΛுͬͯຬͯ͠͠·͏ %FMFHBUFE5ZQFTʹݶΒͣ w 3BJMTΞϓϦͰด͡ΔͿΜʹྑ͍ҰํͰ42-͕ෳࡶʹͳΓ͕ͪ̈ w %8)্ͰΫΤϦ͠Α͏ͱ͢ΔͱେมʹͳΔ̈̈
ཤྺςʔϒϧͦͷಛੑ্ɺੳΫΤϦ͕ൃߦ͞ΕΔ͕͋ΔͷͰ 42-Έқ͘ͳ͍ͬͯΔͱྑͦ͞͏̈̈̈ ̈Ӆṭ͞Ε͍ͯΔ͚ͩͱ͍͏ͷͦ͏ʜʜ ̈̈%FMFHBUFE5ZQFTͷ֤UZQFͱJEͷϖΞΛΫΤϦʹຒΊࠐΉඞཁ͕͋Δͱ͔ ̈̈̈దʹਖ਼نԽΛ่͢ͳͲ 3BJMTͷNPEFMϦον͗͢ -
AFOSPMMNFOU@JOUFOU@JEAͰADPOWFSTJPOTAΛҾ͘ ADPOWFSTJPO@FWFOUTAUBCMFͱ+0*/ APDDVSSFE@BUAΛ%&4$Ͱιʔτ͠ɺ݅औಘ ߋʹऔಘͨ͠ϨίʔυͷAFWFOUBCMFAʹΞΫηε͢Δ͜ͱͰ ݸผͷΠϕϯτΛऔಘ͢Δ͜ͱ͕Ͱ͖Δ̈ ɻ
̈ΫΤϦ͕ൃʹͳͬͯ͠·͏ͱ͜Ζ͕τϨʔυΦϑ ࠷৽ͷΠϕϯτΛͲ͏Ҿ͔͘ 💡 ͜ͷ࣌ `eventable_application?` `eventable_rejection?` ͷΑ͏ͳɺ `delegated type` ͕ੜ͢ϝιουΛ͏ͱछผͷఆ͕Ͱ͖ͯศར