Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Simple組み合わせ村から大都会Railsにやってきた俺は / Coming to Rail...
Search
moznion
January 18, 2025
Programming
9.1k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Simple組み合わせ村から大都会Railsにやってきた俺は / Coming to Rails from the Simple
moznion
January 18, 2025
Transcript
80 slides
4JNQMFΈ߹Θͤଜ͔Β େձ3BJMTʹ͖ͬͯͨԶ  4BU +BO౦ژ3VCZձٞ !NP[OJPO
4NBSU#BOL *OD 4PGUXBSF&OHJOFFS 5BJLJ,BXBLBNJ !NP[OJPO !NP[OJPO !NP[OJPO !NP[OJPO
3BJMTͱͷग़ձ͍
None
3BJMTʙΛͪΐͬͱ৮͍ͬͯͨ ͋͘·Ͱ)PCCZ6TF
4NBSU#BOLస৬ ͔Βຊ֨తʹ༻ͷίʔυΛ ৮Γ͡ΊΔ ݱࡏ3BJMTͰ։ൃۀΛ͍ͬͯΔ 3BJMTͷΞοϓάϨʔυ͍ͬͯΔ
ͦΖͦΖܥʹ্͕Δ༧ఆ
͔ͭͯͷ 3BJMTʹର͢Δയવͱͨ͠߅ײ ϑϧελοΫނͷಷॏͳҹ ن͕ڧ͗͢Δ ΞοϓάϨʔυ͕େมͦ͏ʜʜ
ͳͲͳͲ
͔ͭͯͷ 3BJMTʹର͢Δയવͱͨ͠߅ײ ϑϧελοΫނͷಷॏͳҹ ن͕ڧ͗͢Δ ΞοϓάϨʔυ͕େมͦ͏ʜʜ
ͳͲͳͲ ࣌ιϑτΣΞΤϯδχΞͱͯ͠ͷܦݧ͕ઙ͘ɺ ෆͳόΠΞεͰ͋ͬͨ͜ͱ͕͜ͷൃද४උͰ࠶ೝࣝ͞Εͨ
3BJMTքʹདྷΔ·Ͱͷܦݧ ʙγϯϓϧΈ߹Θͤʙ
ࠓ·Ͱ͖ͬͯͨγϯϓϧΈ߹Θͤ 1FSM4MFEHF "NPO /PEF&YQSFTT (POFUIUUQ
+BWB4QSJOH#PPU 1MBZ ͜ΕΒϑϧελοΫͰʁʁ
ࠓ·Ͱ͖ͬͯͨγϯϓϧΈ߹Θͤ ͦΜͳ͜ΜͳͰϑϧελοΫʮઃఆΑΓن $P$ ʯֶͷ ϑϨʔϜϫʔΫ͕Β͘৯Θͣݏ͍ͬΆ͍ײ͡ʹʜʜ
ຊτʔΫͷత
༷ʑͳϑϨʔϜϫʔΫΛ৮͖ͬͯͯܦݧ͕ੵΊͨ ҰఆϑΣΞʹධՁ͕Ͱ͖Δͣ
ࠓ·Ͱ͖ͬͯͨγϯϓϧΈ߹Θͤ 3BJMT ɺଞͷϑϧελοΫ ͕ιϑτΣΞʹ༩͑Δ࡞༻ γϯϓϧͳίϯϙʔωϯτͷΈ߹Θ͕ͤιϑτΣΞʹ༩͑Δ࡞༻ ͔ͭͯͷٕज़બఆɾࠓͷٕज़બఆ͕ਖ਼͔ͬͨ͠ͷ͔Ͳ͏͔
ࠓ·Ͱ͖ͬͯͨγϯϓϧΈ߹Θͤ 3BJMT ɺଞͷϑϧελοΫ ͕ιϑτΣΞʹ༩͑Δ࡞༻ γϯϓϧͳίϯϙʔωϯτͷΈ߹Θ͕ͤιϑτΣΞʹ༩͑Δ࡞༻ ͔ͭͯͷٕज़બఆɾࠓͷٕज़બఆ͕ਖ਼͔ͬͨ͠ͷ͔Ͳ͏͔
͜ͷ͋ͨΓΛධՁ͍ͨ͠
4JNQMFͱ&BTZ
4JNQMF&BTZ $MPKVSFͷ࡞ऀͰ͋Δ3JDI)JDLFZࢯ͕ఏএͨ͠4JNQMF.BEF&BTZ͕ग़ࣗ IUUQTXXXJOGPRDPNQSFTFOUBUJPOT4JNQMF.BEF&BTZ
4JNQMF 4JNQMF&BTZͬ͘͟Γཧղ ɾ୯ҰͷϩʔϧΛ࣋ͭ ɾখ͍͞ߏཁૉͰཱ ݁߹ɾґଘ͕͍ ɾΈ͕໌ղ ϚδΧϧ͕͍ ઃܭҙਤΛѲ͍͢͠ &BTZ
ɾ Կ͔͢Δʹ͋ͨͬͯ қ͍͠ ɾػೳΛྑ͍ײ͡ʹ༻ҙͯ͘͠ΕΔ ɾઃఆՃ࣮͕গͳ͍ ࠷ॳͷ্ཱ͕ͪΓ͕ΫΠοΫ
4JNQMF 4JNQMFͱ&BTZରཱߏͰͳ͍ &BTZ
4JNQMF 4JNQMFͱ&BTZରཱߏͰͳ͍ &BTZ $PNQMFY )BSE
4JNQMF 4JNQMFͱ&BTZରཱߏͰͳ͍ &BTZ $PNQMFY )BSE
&BTZCVU$PNQMFY 4JNQMFͱ&BTZରཱߏͰͳ͍ ɾظతʹੜ࢈ੑ͕ߴ͍ ෳࡶͰ͋Δ͜ͱʹ͋Δఔ ΛͭΉΕΔ ɾதظతʹੜ࢈ੑ͕Լ͢Δ Մೳੑ͕͋Δ 4JNQMFCVU)BSE
ɾظతʹੜ࢈ੑ͕͍ 4JNQMF1SJNJUJWFͳͷΛ Έ߹Θͤͯʹద༻͢Δ ͨΊ࢝ಈ·Ͱ͕ॏ͍ ɾதظతʹੜ࢈ੑ͕ߴ͍ঢ়گΛ ҡ࣋Ͱ͖Δ ͣ ੜ࢈ੑ ࣌ؒ ੜ࢈ੑ ࣌ؒ
4JNQMF 4JNQMFͱ&BTZରཱߏͰͳ͍ &BTZ $PNQMFY
4JNQMF 4JNQMFͱ&BTZରཱߏͰͳ͍ &BTZ $PNQMFY $PNQMFYΛආ͚Α͏ͱ͍͏ࢦ
4JNQMFͱ&BTZରཱߏͰͳ͍
4JNQMFͱ&BTZରཱߏͰͳ͍
4JNQMFͱ&BTZରཱߏͰͳ͍
4JNQMFͱ&BTZରཱߏͰͳ͍ ίϥʂʂʂʂʂʂʂʂʂʂʂ
4JNQMFͱ&BTZରཱߏͰͳ͍ ͢Έ·ͤΜɺෆษڧͰͨ͠ʜʜ <ڧௐ>4JNQMFͱ&BTZରཱߏͰͳ͍ʂʂ ෳࡶ͞Λආ͚·͠ΐ͏ɺͱ͍͏ࢦ 4JNQMFBOE&BTZ͕ཧ
4JNQMFͱ&BTZରཱߏͰͳ͍ ͢Έ·ͤΜɺෆษڧͰͨ͠ʜʜ <ڧௐ>4JNQMFͱ&BTZରཱߏͰͳ͍ʂʂ ෳࡶ͞Λආ͚·͠ΐ͏ɺͱ͍͏ࢦ 4JNQMFBOE&BTZ͕ཧ
ੜ࢈ੑ ࣌ؒ ͜͏ͳͬͯ΄͍͠
ϑϧελοΫϑϨʔϜϫʔΫͱ γϯϓϧΈ߹ΘͤΛൺֱ͢ΔͱͲ͏͔ʁ
ͦͦγϯϓϧΈ߹ΘͤͱԿ͔ʁ ʙલͷຊʹ͓͚ΔҰ෦ͷ8FCΞϓϦͷ࡞ΓํΛఴ͑ͯʙ
ͦͦγϯϓϧΈ߹ΘͤͱԿ͔ʁ
ͦͦγϯϓϧΈ߹ΘͤͱԿ͔ʁ 1FSM
࣌ͷຊͷ1FSM ύʔπΛΈ߹Θ͍ͤͯͬͯ͘ελΠϧ͕ڧ͔ͬͨ ബ͍ϑϨʔϜϫʔΫ͕ਓؾͩͬͨ HPͷੈք؍ʹएׯ͍ۙ ॾઆ͋Δ
̈ ೦ͷҝ 1FSMʹϑϧελοΫϑϨʔϜϫʔΫ͋Δ $BUBMZTU .PKPMJDJPVT ̈ͱ͍͑(P5-4͕ݴޠίΞʹೖ͍ͬͯͨΓͯ͠ϦονͰ͔͢ΒͶʜʜ
࣌ͷຊͷ1FSM ύʔπྫ 14(*MBZFS 3PVUFS $POUSPMMFS
03. $MBTT-JCSBSZ ̈ 5FNQMBUF&OHJOF +40/ -PHHFS 4FDVSJUZ .JEEMFXBSF 4FTTJPO4UPSF BOEFUD FUD ̈IUUQTTQFBLFSEFDLDPNNP[OJPOQFSMPPQKJHPVOJBOTIJQFSMTPPQNFDIBOJTNQBTUZFBST
࣌ͷຊͷ1FSM ύʔπྫ 14(*MBZFS 3PVUFS $POUSPMMFS
03. $MBTT-JCSBSZ ̈ 5FNQMBUF&OHJOF +40/ -PHHFS 4FDVSJUZ .JEEMFXBSF 4FTTJPO4UPSF BOEFUD FUD ̈IUUQTTQFBLFSEFDLDPNNP[OJPOQFSMPPQKJHPVOJBOTIJQFSMTPPQNFDIBOJTNQBTUZFBST ৭ʑΈ߹ΘͤΔ ָ͠͞ ॾઆ͋Γ
ิॾʑͷഎܠ 1FSMͷݴޠίΞʹର͢Δߟ͑ํ ݴޠࣗମͷ࣮ʹΞϓϦέʔγϣϯతͳػೳΛ͋·ΓՃ͠ͳ͍ ͦͷΘΓͷDPSFNPEVMFͱ͍͏֓೦ ̈ ̈ྫ͑+40/ݴޠ࣮ʹೖ͓ͬͯΒͣɺSEQBSUZͷ+40/11ϥΠϒϥϦ͕DPSFNPEVMFͱͯ͠όϯυϧ͞Ε͍ͯΔ
ิॾʑͷഎܠ ࣌ͷঢ়گ ΫϥυίϯϐϡʔςΟϯάͷ໌͚Έ͍ͨͳ࣌ ΦϯϓϨ͕ґવݩؾɻͦͷ্ͰϋΠτϥϑΟοΫΛࡹ͘ϓϨΠϠʔ͕ଟ͔ͬͨ ࡉ͔ͳύϑΥʔϚϯενϡʔχϯά͕ඞཁ
͍ύʔπΛͲΜͲΜ͍ͬͯ͘ඞཁ͕͋ͬͨ ϚΠΫϩνϡʔχϯάͰ͋Δ ͦΕ͢Βޮ͍ͯ͘Δੈք؍
ҰํϑϧελοΫϑϨʔϜϫʔΫͱ
ϑϧελοΫϑϨʔϜϫʔΫ ඞཁͳͷ͕શ෦ೖΓ ઌʹڍ͛ͨύʔπͷػೳ͕΄ͱΜͲ۩උ͞Ε͍ͯΔ SPVUFS DPOUSPMMFS 03.
UFNQMBUFFOHJOFͳͲͪΖΜ 3%#.4ͷNJHSBUJPOػೳͳͲ͋ͬͨΓ͢Δ
3BJMTʹ͓͍ͯ "DUJPO$BCMF "DUJPO$POUSPMMFS "DUJPO%JTQBUDI "DUJPO.BJMCPY "DUJPO.BJMFS "DUJPO5FYU "DUJPO7JFX "DUJWF+PC
"DUJWF.PEFM "DUJWF3FDPSE "DUJWF4UPSBHF "DUJWF4VQQPSU FUD IUUQTEFWEPDTJPSBJMTd͔Βͬ͘͟Γൈਮ
3BJMT ʹݶΒͣϑϧελοΫϑϨʔϜϫʔΫ ͕&BTZدΓͰ͋Δͱ͞ΕΔཧ༝ͷҰྫ CBUUFSZJODMVEFE 3%#.4ʹΑͬͯ$36%͢ΔΑ͏ͳΞϓϦଈ࠲ʹ࡞Γ͡ΊΒΕΔ એݴతʹॻ͚ͩ͘Ͱಈ͘
ී௨ʹߟ͑ΔͱΊͪΌͪ͘Ό͍͠%#ͷܧଓతNJHSBUJPOͳΜ͔͋Δ "DUJWF3FDPSEຊʹҒେ εέϧτϯϘΠϥʔϓϨʔτ͕ྑ͍ײ͡ʹੜ͞ΕΔ ౷ҰతͳπʔϧνΣΠϯ͕උ͞Ε͍ͯΔ FHCJOSBJMT
&BTZ 4JNQMF $PNQMFY BOE)BSE
💎&BTZͳ3BJMT$PNQMFYͳͷ͔ʁॴʹΑΓ:FT 🐪4JNQMFΈ߹Θͤ)BSEͳͷ͔ʁॴʹΑΓ:FT
💎&BTZͳ3BJMT$PNQMFYͳͷ͔ʁॴʹΑΓ:FT 🐪4JNQMFΈ߹Θͤ)BSEͳͷ͔ʁॴʹΑΓ:FT ͔͠͠4JNQMFͱ&BTZཱ྆Ͱ͖ͯ΄͍͠ʂ
ϑϧελοΫͱ4JNQMFΈ߹ΘͤΛ ผͷΓޱͰରൺͯ͠ΈΔ
3BJMT 4JNQMFΈ߹Θͤ Ұ؏ੑWTॊೈੑ Ұ؏ੑدΓ ॊೈੑدΓ ҉తWT໌ࣔత ҉తدΓ ໌ࣔతدΓ แׅతWTϛχϚϧ
แׅత ϛχϚϧ ڧࢥWTϊϯϙϦ ڧࢥدΓ ؾ͕࣋ͪඞཁ ϥϐου։ൃWTϩϯάλʔϜӡ༻ ͲͪΒ ͲͪΒ
Ұ؏ੑWTॊೈੑ 3BJMT Ұ؏ੑدΓ ɾ3BJMTͷنʹΑͬͯ౷Ұతͳ ߏɾߏ͕ڧ੍͞ΕΔ ɾ3BJMT8BZ͔Β֎ΕΔͱେม ɾॊೈੑ͕ແ͍Θ͚Ͱͳ͍ ϥΠϒϥϦબΔ ࣗͰ࡞ΕΔ
4JNQMFΈ߹Θͤ ॊೈੑدΓ ɾ༻్ʹԠͯ͡ίϯϙʔωϯτΛ ࠩ͠ସ͑Εྑ͍ ࠷ѱ࡞ΕΑ͍ ɾجຊతʹΓ͍ͨ͜ͱͳΜͰ Ͱ͖Δ ɾҰ؏ੑΛ࣋ͨͤΔʹڧ͍ؾ͕࣋ͪ ඞཁ
҉తWT໌ࣔత 3BJMT ҉తدΓ ɾ$POWFOUJPOPWFS$PO fi HVSBUJPO ɾ҉తͳڍಈ͕ଟ͍ ϚδΧϧ ɾॳظͷֶशۂઢ͕ٸ
ɾϚελʔ͢Δͱߴʹ։ൃͰ͖Δ ͍͍ͪͪॻ͘ඞཁ͕ͳ͍ 4JNQMFΈ߹Θͤ ໌ࣔతدΓ ɾجຊతʹͯ͢ॻ͔Ε͍ͯΔͨΊ ໌ࣔత ɾ҉తػߏͰ͋ͬͯϓϩδΣΫτ ෦ʹॻ͔Ε͍ͯΔͣ ɾ໌ࣔతʹॻ͘ͿΜख͕૿͑Δ ɾֶशۂઢٸफ़Ͱͳ͍ͷͷ ϓϩδΣΫτ͝ͱʹֶͿඞཁ͕͋Δ
แׅతWTϛχϚϧ 3BJMT แׅతدΓ ɾશ͕ͯೖ͍ͬͯΔ͜ͱʹΑΓ બΛ͢Δ࿑ྗ͔Βղ์͞ΕΔ ɾQSFTFUͷߏཁૉؒͰͷγφδʔ ɾখ͞ͳͷΛ࡞Δ࣌ʹΦʔόʔ ΩϧʹͳΔՄೳੑ 4JNQMFΈ߹Θͤ
ϛχϚϧدΓ ɾॴͷٕज़બఆ͕Ͱ͖Δ ɾ݁߹ࣗͰΊΔ ॊೈੑɾ໌ࣔతʹΔ ɾύϑΥʔϚϯενϡʔχϯά Γ͍͢
ڧࢥWTϊϯϙϦ 3BJMT ڧࢥدΓ ɾ.7$ "DUJWF3FDPSEͱ͍ͬͨ ڧ͍ॳظઃܭ ɾ%))ͷڧ͍ࢥ 3P3(VJEFTͱ͍͏ܦయ ར༻ऀͷଟ͞ʹΑΔࢥͷڧԽ
ɾࢥ֎ͷϢʔεέʔεͷରԠ 4JNQMFΈ߹Θͤ ؾ͕࣋ͪඞཁ ɾγϯϓϧΈ߹ΘͤՄೳੑ͕ແݶ ϧʔϧແݶ ແ͍ͱऔΕΔ ͜͜ʹࢥΛ࣋ͯΔ͔Ͳ͏͔ ɾϢʔεέʔε͕ॳظͷڧ͍ࢥʹ ଋറ͞Εͳ͍
ϥϐου։ൃWTϩϯάλʔϜӡ༻ 3BJMT ͲͪΒ ɾখ͞ͳΞϓϦ͔Βେ͖ͳΞϓϦ·Ͱ ɾ5IF0OF1FSTPO'SBNFXPSL GSPNIFMMPXPSMEUP*10 *10͙͢Ͱ͖ΔΜͰͳ͍
͍ؒϝϯς͢Δͱ͍͏ҙࣝ ɾόʔδϣϯΞοϓେม ࠷ۙେม͕ܰ͞ݮ͞Εͯͦ͏ 4JNQMFΈ߹Θͤ ͲͪΒ ɾখ͞ͳͷγϯϓϧʹΫΠοΫʹ࡞ΕΔ ɾେ͖ͳͷΛSBQJEʹ࡞Δʹॳಈ͕ॏ͍ XBZΛ࡞Δඞཁ͕͋Δ ɾϥΠϒϥϦͷϥΠϑαΠΫϧͷᐫ ɾυϝΠϯʹԊͬͨ࠷దԽ͕Ͱ͖Δ ɾίϯϙʔωϯτͷϦϩέʔγϣϯ͕Γ͍͢
3BJMT 4JNQMFΈ߹Θͤ Ұ؏ੑWTॊೈੑ Ұ؏ੑدΓ ॊೈੑدΓ ҉తWT໌ࣔత ҉తدΓ ໌ࣔతدΓ แׅతWTϛχϚϧ
แׅత ϛχϚϧ ڧࢥWTϊϯϙϦ ڧࢥدΓ ؾ͕࣋ͪඞཁ ϥϐου։ൃWTϩϯάλʔϜӡ༻ ͲͪΒ ͲͪΒ
3BJMT 4JNQMFΈ߹Θͤ Ұ؏ੑWTॊೈੑ Ұ؏ੑدΓ ॊೈੑدΓ ҉తWT໌ࣔత ҉తدΓ ໌ࣔతدΓ แׅతWTϛχϚϧ
แׅత ϛχϚϧ ڧࢥWTϊϯϙϦ ڧࢥدΓ ؾ͕࣋ͪඞཁ ϥϐου։ൃWTϩϯάλʔϜӡ༻ ͲͪΒ ͲͪΒ &BTZ CVUDPNQMFY 4JNQMF CVU)BSE
3BJMT 4JNQMFΈ߹Θͤ Ұ؏ੑWTॊೈੑ Ұ؏ੑدΓ ॊೈੑدΓ ҉తWT໌ࣔత ҉తدΓ ໌ࣔతدΓ แׅతWTϛχϚϧ
แׅత ϛχϚϧ ڧࢥWTϊϯϙϦ ڧࢥدΓ ؾ͕࣋ͪඞཁ ϥϐου։ൃWTϩϯάλʔϜӡ༻ ͲͪΒ ͲͪΒ &BTZ CVUDPNQMFY 4JNQMF CVU)BSE Γཱ྆͠ͳ͍ͷ͔ʜ
ϑϨʔϜϫʔΫ͕༩͑ΔιϑτΣΞͷ࡞༻
.7$WTͦͷଞͷιϑτΣΞΞʔΩςΫνϟ 3BJMT.7$Λڧ͘ΞϑΥʔυ͍ͯ͠Δ ͦΕҎ֎ͷΞʔΩςΫνϟΛ࠾༻͢Δʹ͋ͨͬͯͷϋʔυϧ͕ੜ͡Δ JFϨʔϧΛ֎ΕΔɺઢʜʜ ͦͷଞʹ*%-ͷϑϧαϙʔτΛड͚ͨߏͳͲ
ࣗͰ࡞ΔͿΜʹ͜ͷ͋ͨΓͷࣗ༝ߴ͍
ϓϩτίϧͷબ 3BJMTجຊతʹ)551 -5$1 ্Ͱಈ͘ΞϓϦέʔγϣϯΛओ؟ͱ͍ͯ͠Δ ̈ ผͷϓϩτίϧΛར༻͍ͨ͠߹ͷબࢶ͔ͳΓ੍ݶ͞ΕΔ
ࣗͰ࡞ΔͳΒ͜ͷΜΓ͍ͨ์ ͍ۙͱͯ͠ΞϓϦΛಈ͔ͨ͢ΊͷσϓϩΠઌͷબʹӨڹ͢Δ ̈8FC4PDLFUͳͲͷྫ֎͋Δ
ෆՄͳϑϨʔϜϫʔΫΛར༻͢Δ͜ͱʹΑΔϩοΫΠϯ ϑϨʔϜϫʔΫΛͤ͑Δ͜ͱ໓ଟʹແ͍͕ɺ࣮ࡍ৭ʑ͋Δ ྫ 1MBZΛӡ༻͍ͯ͠Δ࠷தͷ"LLBͷϥΠηϯεมߋ ̈
&YQSFTTͷ։ൃ͕Ұ࣌ظఀ͍ͯͨ͠ࣄྫ ̈ Έ߹ΘͤͰ࡞͍ͬͯΔͱɺ͍͖ͳΓةݥͳঢ়ଶʹͳΔ͜ͱͳ͍ ҰํͰݸผͷϥΠϒϥϦͰಉ༷ͷࣄྫ͕ൃੜ͢ΔՄೳੑ͋Δ ಥવ&0-Λܴ͑ΔͳͲ ̈1MBZϥΠηϯεతʹಛྫͰ໔͞Ε͍ͯͨ 1FLLP͕ग़͖ͯͨͱ͍͏ͷ͋ΓಀΕͨ ̈ࠓͥΜͥΜݩؾ
ιϑτΣΞͷΞοϓάϨʔυ େ͖ͳϑϨʔϜϫʔΫͷ.BKPSΞοϓάϨʔυ ΓେมɻͪΌΜͱܧଓͯ͠Βͳ͍ͱഇᆣʹͳΔɻ ͱ͍͑࠷ۙͷΞοϓάϨʔυқͦ͜·Ͱߴ͘ͳ͍ҹ খ͞ͳίϯϙʔωϯτɾϥΠϒϥϦΛܧଓతʹΞοϓάϨʔυ
ঃʑʹΞοϓάϨʔυͰ͖ΔͷͰӨڹͷہॴԽ͕༰қ ҰํͰґଘཧ͕ෳࡶ ҃ΔϥΠϒϥϦ"ͷΞοϓάϨʔυ͕ϥΠϒϥϦ#ʹӨڹͨ͠Γʜʜ ґଘͷΞοϓσʔτΛΥον͢Δඞཁ͕͋Δ
ϑϨʔϜϫʔΫ͕༩͑Δ։ൃ৫ͷ࡞༻
.POPMJUIJD.JDSPTFSWJDFT 3BJMTͲͪΒ͔ͱ͍͏ͱNPOPMJUIJDدΓͷҹ NJDSPTFSWJDFTͷ֤ίϯϙʔωϯτϛχϚϧͳϑϨʔϜϫʔΫͰ࡞ΒΕ͕ͪʁ ͱ͍͑3BJMTͰNJDSPTFSWJDFTΛͬͯྑ͍ͱࢥ͏ ͜͜ʹ͍ͭͯಛʹϑϨʔϜϫʔΫʹΑΔେ͖ͳӨڹͳͦ͞͏
༨ஊ.FHB3BJMT6TFS͜ͱ(JU)VCͷ$50+BTPO8BSOFSࢯͷࣔࠦతൃݴ ࢀরIUUQTYDPNKBTPODXBSOFSTUBUVT
ٕज़ʹΔֶश 3BJMTͰ͋ΕίϞσΟςΟͳใ͕8FCʹେྔʹ͋ΔͷͰֶशϦιʔε͕५ ҰํͰͲ͏ݕࡧ͢Εྑ͍ΜͩɺΈ͍ͨͳʮنʯ͋Δ ࠓͳΒ--.ʹฉ͘ͱ͍͏ํ๏͕͋Δ ٕज़ΩϟονΞοϓʹؔͯ͠3BJMTͷใΛϝΠϯͰ͏ͱྑ͍
ͱΓ͋͑ͣ3BJMTΛ͍ͬͯΕଞͷ3BJMTϓϩδΣΫτʹԠ༻͕Ͱ͖Δ ࠷ॳͷٸͳֶशۂઢ͚ͩΛΓӽ͑Εʜʜ
ٕज़ʹΔֶश γϯϓϧΈ߹ΘͤͦͷΈ߹Θͤʹґଘ͢ΔͷͰڞ௨ͷใ͕গͳ͍ ͋ΔఔύλʔϯԽ͍ͯ͠Δͱࢥ͏ͷͰͦ͜ʹφϨοδ͋Γͦ͏ ֤ύʔπࣗମγϯϓϧͳͣͳͷͰݸผʹௐΔ͜ͱͰ͖Δ Έ߹Θͤࣗମڞ௨Խͨࣝ͠Ͱͳ͍
ผͷϓϩδΣΫτʹҠͬͨͱ͖ʹͦͷ··Ԡ༻Ͱ͖ΔͷͰͳ͍ --.ʹฉ͘ͷίπ͕ඞཁ ͦͷҰํͰʮΈ߹ΘͤʯϑϨʔϜϫʔΫΛ࡞͍ͬͯΔΑ͏ͳͷ ͦͷجૅతͳࣝීวత ͳͣ
։ൃϚΠϯυηοτ 3BJMTنʹΑΓଋറ͞Ε͓ͯΓɺར༻ऀ͕ଟ͘ɺϕετϓϥΫςΟε͕ ཱ֬͞Ε͍ͯΔ ଐਓੑ͕͍ ҰํͰ҉తͳڍಈ͕ଟ͍ͷͰɺͦ͜ʹର͢Δཧղͷ͢͠͞ τϥϒϧγϡʔςΟϯάͷ༰қ͕͞τϨʔυΦϑ
4JNQMFΈ߹Θͤॳظͷ࡞ऀʹΑΔଐਓੑ͕ڧ͘ͳΓ͕ͪ 4JNQMFͰ͋Δͱ͍͑࡞ऀͷ҉͕ೖΔ ͜ΕΛͳΜͱ͔͢Δͷ͕ͷݟͤͲ͜ΖͰ͋Δ
ιϑτΣΞΤϯδχΞ࠾༻ .BKPSͳϑϨʔϜϫʔΫٕज़ηοτ࠾༻͍͢͠ʂʂʂʂʂ ͜ΕΨν ͜ΕΨν
Ͱɺ݁ہ4JNQMFͱ&BTZཱ྆͠ͳ͍ͷ͔ʁ
3BJMTCFDPNFT5IF0OF1FSTPO'SBNFXPSL ͱ͍͑ҰਓͰશ෦ΔͳΒԿͬͯΑ͘ͳ͍ʁ ͲͪΒ͔ͱ͍͏ͱ0OF1FSTPOͱ͍͏ΑΓ4NBMM5FBNͳͷͰͳ͍͔ খ͞ͳ৫ελʔτΞοϓͰ3BJMTͷ༏Ґੑ͕ߴ͍ ඞཁͳͷ͕࠷ॳ͔Βἧ͍ͬͯΔϏδωεϩδοΫʹूதͰ͖Δ
ڧݻͳ3BJMT8BZͱ͍͏ࢥɾࢦ "DUJWF3FDPSE ʮ0OF1FSTPOͰͰ͖Δ͜ͱ݈߁తʹεέʔϧ͢Δʯͱ͍͏આ
3BJMTCFDPNFT5IF0OF1FSTPO'SBNFXPSL 3BJMT͕&BTZͰ͋Δͱ͍͏ͷԿͳͷ͔ Ұఆͷ੍ݶ ن ͕͋Δ͜ͱͰ࡞Γ͍ͨͷΛ༰қ ΫΠοΫ ʹ࣮ݱͰ͖Δ
ʮ࡞Γ͍ͨͷʯͷຊ࣭ͱؔͳ͍෦Ӆṭ͞Ε͍ͯΔ Ӆṭ͞Ε͍ͯΔ෦͕ෳࡶͰ͋Δ͜ͱߏΘͳ͍ ϏδωεϩδοΫ͔Βෳࡶੑ͕ഉআ͞Ε͍ͯΕྑ͍ ͦ͜ʹूத͢Δ ʹʼ࡞ΔͨΊͷΈ&BTZɺϏδωεϩδοΫ4JNQMF ͱ͍͑Ӆṭ͞Ε͍ͯΔ෦ JF࣮ ΛಡΈʹߦ͘͜ͱ্͕ڃऀʹͳΔ΄Ͳ૿͑Δؾ͕͢Δɻ ্ڃऀʹͱͬͯٯʹFBTZͰͳ͍ͷͰͳ͍͔ʁ
4JNQMFΈ߹Θͤଜ
4JNQMFΈ߹Θͤ͏ඞཁແ͍ͷ͔ʁ ඞཁͳͷ͚ͩΛΈࠐΊΔྑ͞ ϕετϓϥΫςΟεΛ࡞ΕΔࣗୡʹ࠷దԽͰ͖Δ ϨʔϧΛ֎ΕΔ͜ͱΛڪΕͳͯ͘ྑ͘ͳΔ ࠷దԽͨ͠ઌʹ&BTZ͕͋Δ
ίϯϙʔωϯτࢦΛཆ͏͜ͱ͕Ͱ͖Δ ༻ɾ࡞͢ΔϥΠϒϥϦʹର͢Δ৹ඒ؟Ͱ͋ͬͨΓɺ ͕ࣗ҃ΔػߏΛ࡞͢ΔͨΊʹԿΛͲ͏͖͔͢ͱ͍͏ࢥߟ͕ཆΘΕΔ ϑϧελοΫϑϨʔϜϫʔΫΛ͍ͬͯͯϥΠϒϥϦબఆ͢Δ ͦͦϑϧελοΫϑϨʔϜϫʔΫͷબఆ͢ΔͷͰʜʜ
4JNQMFΈ߹Θͤ͏ඞཁແ͍ͷ͔ʁ γεςϜશମͷΞʔΩςΫνϟΛߟ͑ൈ্͍ͨͰͷϕετΛ ୳ٻ͢Δ͜ͱ͕Ͱ͖Δ ྫ γεςϜͷΞʔΩςΫνϟ FHNJDSPTFSWJDFT
σϓϩΠઌ ࠷େެతͳ&BTZͰͳ͘ɺυϝΠϯʹಛԽͨ͠&BTZΛ 4JNQMFͱͱʹಘΔ͜ͱ͕Ͱ͖Δ ͦ͜ʹࢸΔ·Ͱͷಓ)BSE͔͠Εͳ͍ʜʜ )BSE$PNQMFYΑΓϚγͳͷͰؤுΖ͏ʂʂ
ҎԼɺݸਓతͳϑΟʔϦϯά
ࣄͰΔͳΒϑϧελοΫͰϛχϚϧͰͲͬͪͰྑ͍ ϑϧελοΫͷ΄͏͕ͲͪΒ͔ͱ͍͏ͱΓ͍͔͢ ΫΦϦςΟίϯτϩʔϧ νʔϜϏϧσΟϯά
ͱ͍͑ɺ͙͢खͷಧ͘ൣғʹΉڍಈΛ࣮ݱ͢Δίʔυ͕໌ࣔతʹ ॻ͔Ε͍ͯͯཉ͍͠ײ֮ڧ͋͘Δʜʜ ͜ͷײ֮ʹಘΔʹ࣮ࡍʹ༻ϓϩμΫτΛͬͯΈͳ͍ͱΘ͔Βͳ͍ͩͬͨ
ҰํɺγϯϓϧΛΈ߹ΘͤΔͷָ͍͠ʂʂʂ ࣗΈͷٕज़બఆ͕Ͱ͖Δ ࣗͷߟ͑ΔϕετͳΞʔΩςΫνϟΛ࣮ݱͰ͖Δ ͦͷ্ͰॴͷΞϓϦέʔγϣϯΛಈ͔͢շײ
Ϟϊ࡞Γͷຊ࣭తମݧ ͓ͨͷ͠Έཁૉڧ͍
ͦΕͦ͏ͱͯ͠ଟ༷ੑ͕͋Δ͜ͱྑ͍͜ͱͩͱࢥ͏ ࠓͷ3VCZͻ͍͖ʹݟͯ3BJMTͷҰڧମ੍ͳΑ͏ʹࢥ͏ 4JOBUSB͋ΕͲɺγϯϓϧΛΈ߹ΘͤΔ෩ை͕ऑ͍ʁ ଞͷݴޠͩͱ৽ػ࣠ͷ03. ̈
͕ग़͖ͯͨΓ͍ͯ͠Δ ͦͷ͋ͨΓΛϑϧελοΫϑϨʔϜϫʔΫ͕ࠐ͏ͱ͢Δͱେมͦ͏ +BWB4DSJQUքʹIPOP͕͖ͬͯͨΓͯ͠ݩؾ͕͋ΓΑͦ͞͏ ̈1SJTNB%SJ[[MFͳͲ
·ͱΊ
ϑϧελοΫϑϨʔϜϫʔΫΛར༻͢Δͷ4JNQMFΈ߹ΘͤΛར༻͢Δͷ ʮෳࡶੑΛഉআͭͭ͠ॴͷυϝΠϯΛຬ͢Δʯͱ͍͏తͷͱͰ͋Ε ͲͪΒਖ਼ղʂʂʂʂʂ ͦΕͧΕ͕ιϑτΣΞʹٴ΅͢ޮՌ͋Δ͕ɺࢦ͢ΰʔϧಉ͡ɻ ಛఆͷख๏ʹݻࣥͤͣɺదࡐదॴʹ͍͚ΒΕΔͷ͕ྑ͍ͷͰ ̈
ʮυϝΠϯ࣮ݱͷͨΊͷෳࡶੑΛՄೳͳݶΓഉআ͢Δʯͱʹ͔͘͜Εʹਚ͖Δ ̈νʔϜ࠾༻ͷ࡞ઓʹґଘ͢ΔͰ͋Γ·͕͢
More Decks by moznion
See All by moznion
go-sqletch
moznion
0
160
ブラウザアプリの継続的パフォーマンスモニタリング (序) / Continuous Browser Application Performance Monitoring; Act 1
moznion
0
150
reFACToring
moznion
1
1.4k
cccccc
moznion
1
3.1k
履歴テーブル、今回はこう作りました 〜 Delegated Types編 〜 / How We Built Our History Table This Time — With Delegated Types
moznion
16
16k
「データ無い! 腹立つ! 推論する!」から 「データ無い! 腹立つ! データを作る」へ チームでデータを作り、育てられるようにするまで / How can we create, use, and maintain data ourselves?
moznion
11
7.8k
避けられないI/O待ちに対処する: Rails アプリにおけるSSEとasync gemの活用 / Tackling Inevitable I/O Latency in Rails Apps with SSE and the async gem
moznion
4
10k
RubyKaigi Hack Space in Tokyo & 函館最速 "予習" 会 / RubyKaigi Hack Space in Tokyo & The Fastest Briefing of RubyKaigi 2026 in Hakodate
moznion
1
500
地に足の付いた現実的な技術選定から魔力のある体験を得る『AIレシート読み取り機能』のケーススタディ / From Grounded Tech Choices to Magical UX: A Case Study of AI Receipt Scanning
moznion
7
5.3k
Other Decks in Programming
See All in Programming
Vue.jsで作る空間解析アプリとCapacitorプラグインのData Bridge
hal_spidernight
1
170
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
2
300
PyConTW 2026 - AI Coding 不只是工具升級, 區域醫院醫療資訊系統協作開發與資訊團隊轉型實踐
cclai999
0
250
そのデザイントークン、Flutterでも同じ見た目になりますか?
nakamizu
0
340
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
280
Apple Intelligenceとオンデバイス時代の到来
yahir0
0
240
プロジェクトコードをキレイキレイしよう!暗黙的な参照を読み解く静的解析
ostk0069
0
210
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
1.2k
作れるエンジニアから、価値を届けるエンジニアへ
ryunakayama
1
270
Snowflake Openflow Connector利用の勘所 / 20261024developersio2026tokyo-snowflake-openflow
kasacchiful
PRO
0
330
GraphQL の onError と Nullability のこれから
quramy
0
210
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
4
1.5k
Featured
See All Featured
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
990
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Building an army of robots
kneath
307
47k
Embracing the Ebb and Flow
colly
88
5.2k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
350
Testing 201, or: Great Expectations
jmmastey
46
8.4k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
880
Ruling the World: When Life Gets Gamed
codingconduct
0
440
Optimizing for Happiness
mojombo
378
71k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k