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

The three great virtues are important

Koichi ITO
November 19, 2021

The three great virtues are important

銀座Rails #39 招待講演
https://ginza-rails.connpass.com/event/229348/

Koichi ITO

November 19, 2021
Tweet

More Decks by Koichi ITO

Other Decks in Programming

Transcript

  1. ,PJDIJ*50&4. *OD
    ۜ࠲3BJMT
    'SJ

    ʮಈ͍ͨʂʯͷઌ΁౿Έग़͢ɺ
    γεςϜͷϝϯςφϏϦςΟ޲্ͷ
    جૅٕज़
    The three great virtues are important

    View full-size slide

  2. @koic
    w044ϓϩάϥϚʔ
    w3VCP$PQίΞνʔϜ
    wגࣜձࣾӬ࿨γεςϜϚωδϝϯτ &4. JOD

    ΤϯδχΞϦϯάϚωʔδϟʔ
    σΟεςΟϯάΠογϡυΤϯδχΞ
    w3BJMTͰͷؔ৺ࣄ͸&4.JNQPSUNBQͱͦͷಈ͖

    View full-size slide

  3. ৿͞Μ͔ΒͷΦϑΝʔ
    IUUQTUXJUUFSDPNNPSJNPSJIPHFTUBUVT

    View full-size slide

  4. w ޮ཰΍࠶ར༻ੑ͕ؾʹͳΔΑ͏ʹͳͬͨʁ
    w ॲཧޮ཰΍%FW9͕ؾʹֻ͔͍ͬͯΔʁ
    w ίʔυ΍γεςϜͷΫΦϦςΟʹ͍ͭͯͷ
    ࣗෛ͕ߴ·͖͍ͬͯͯΔʁ
    ೥ܦͬͨΒͲΜͳঢ়ଶ🤔

    View full-size slide

  5. w ʮଵଦ୹ؾၗຫʯͷࡾେඒಙΛ֫ಘͭ͠
    ͭ͋Δͱ͍͏Ծઆ
    w ϓϩάϥϚʔͱͯ͠ݱ࣮ੈքͷҰһ΁
    w Α͏ͦ͜ ͓ΊͰͱ͏͍͟͝·͢ʂ

    ࡾେඒಙͷಓ ର৅૚޿Ί

    ࢲͨͪ͸ϓϩάϥϚʔͷҒେͳࡾͭͷඒಙͰ͋Δ
    ଵଦɺ୹ؾɺၗຫΛ਎ʹ͚ͭΔ͜ͱΛਪ঑͢Δ

    View full-size slide

  6. w *UFSBUJWF
    w *ODSFNFOUBM
    w %FWFMPQNFOU
    ೥ܦͯ͹Կճճ͍ͯ͠Δʁ
    IUUQTKBXJLJQFEJBPSHXJLJ൓෮ܕ։ൃ

    View full-size slide

  7. ࠓճ͸։࠵೥Λܴ͑Δۜ࠲3BJMTʹ޲͚ͨʮΤϯδχΞ
    ೖ໳͔Β౿Έग़ͨ͠ઌʯ͕ςʔϚͰ͢ɻ੒ޭ͍ͯ͠Δ
    αʔϏε΄Ͳ௕णͰ͋ΓɺංେԽ͢Δίʔυϕʔε΋Ζ
    ΋Ζ΁ͷඋ͕͑ॏཁʹͳΓ·͢ɻͦͯ͠ϓϩμΫτͷϝ
    ϯςφϏϦςΟ޲্ͱɺΤϯδχΞͱͯ͠ಇ͘Α͏ʹ
    ͳ͔ͬͯΒͷϨϕϧΞοϓ͸ंͷ྆ྠͰ͢ɻຊߨԋͰ͸
    ೖ໳ͷઌͱͳΔɺγεςϜϝϯςφϏϦςΟ޲্΁ͷ཈
    ͓͑ͯ͘΂͖εΩϧɺߟ͑ํʹ͍͓ͭͯ࿩͠·͢ɻ
    ຊ೔ͷ֓ཁ

    View full-size slide

  8. ۪ऀ͸ܦݧʹֶͼɺ
    ݡऀ͸ྺ࢙ʹֶͿ
    IUUQTUXJUUFSDPNNPSJNPSJIPHFTUBUVT

    View full-size slide

  9. म͟͞Ε͹ɺݱΕͣ
    ืूத
    ຊฤͷ಺༰Λ࣮ફͰ਎ʹ͚͍ͭͨͳΒ
    lத్৽ଔ࠾༻zlϏδωεύʔτφʔz
    !LPJD·Ͱ͓ؾܰʹ

    View full-size slide

  10. w ͓ۚ Ϗδωε
    ͷ੾Ε໨͕αʔϏεͷ੾Ε໨
    w ௕णαʔϏεʹͳΕ͹ͳΔ΄Ͳίʔυϕʔε͸ංେԽ
    ͢Δݱ࣮
    w ߦҎ্ͷίʔυʹ͸όά͕͋Δ🤔
    w ͋ͳͨͷαʔϏε͸Կ೥΋ͷʁ
    w զʑϓϩάϥϚʔ͸ɺ೗Կʹͯ͠ϏδωεͷมԽʹద
    ԠͰ͖ΔγεςϜϝϯςφϏϦςΟΛඋ͑Δ͔ʁ
    ੒ޭ͍ͯ͠ΔαʔϏε΄Ͳ௕ण

    View full-size slide

  11. w "
    ೥຤ͷౙٳΈʹۓٸো֐͕ൃੜ͠ɺਅ໷தʹ
    ̍ϝιου̎̌̌̌ߦͷ$PEFͷղಡʹ಄Λ௧Ί
    ʮͻΌ͸ʔʂ͜Ε͸ͻͲ͍ɺ$PEFͩͥʂʯͱ
    ࢥͬͨॠؒ
    w #
    ࣗ෼ΑΓͰ͖Δౕ͕ॻ͍ͨίʔυΛಡΜͰ
    ʮ͋ʂ͜Μͳهड़Ͱ͖ΔΜͩɻ͜ΓΌ$PPMͩͥʯ
    ͱࢥͬͨॠؒ
    ͋ͳͨͳΒͲͪΒΛબͿʁ
    IUUQQBUUFSOTIBSVIFSPLVDPN EFBEMJOL

    View full-size slide

  12. جૅͱͦͷઌ
    ʹ͋Δ΋ͷ

    View full-size slide

  13. w ໊લ
    w ྺ࢙
    w ઃܭ
    w ੑೳ
    w ճؼ
    ࡾେඒಙΛ࣋ͬͯࠞಱΛ੍ޚ͢Δ
    w ௥੻
    w ධՁ
    w อ࣋
    w ڞ૑
    w ײ৘
    ͜ͷ͋ͨΓΛԡ͓͑ͯ͘͞ͱྑ͍Ͱ͠ΐ͏ͱ͍͏
    ϙΠϯτΛຊ೔ͷ͓୊ͱ͖ͯ࣋ͬͯ͠·ͨ͠

    View full-size slide

  14. σβΠϯελϛφԾઆ
    ྦྷੵͨ͠
    ػೳͷྔ
    ࣌ؒ
    ͙͢Εͨઃܭ
    ·͍ͣઃܭ
    ϦϑΝΫλϦϯάୈ൛.BSUJO'PXMFSΑΓ

    View full-size slide

  15. ΋ͷʹ͸ɺ͢΂໊ͯલ͕͋Δ
    ੩తղੳͱ͸ͭ·Γιʔείʔυͷ
    ղੳͩɻͦͯ͠ιʔείʔυͷղੳͱ
    ͸໊લͷௐࠪͰ͋ΔɻϑΝΠϧ໊ɾ
    ؔ਺໊ɾม਺໊ɾܕ໊ɾϝϯό໊ͳͲɺ
    ϓϩάϥϜ͸໊લͷ͔ͨ·Γͩɻ
    3VCZιʔείʔυ׬શղઆ੨໦ๆ࿠

    View full-size slide

  16. w ϓϩάϥϚʔΛԿ೥΍͍ͬͯͯ΋೉͍͠
    w 3VCZຊମͰ΋Ϟδϡʔϧ΍ϝιουͷ
    ໊લ͕ܾ·Βͣೖ͍ͬͯͳ͍΋ͷ΋͋Δ
    w γεςϜ಺෦ͷQVCMJD"1*͸ͦΕͳΓʹɺ
    γεςϜ֎෦ͱͷ࿈ܞͱͳΔQVCMJTIFE
    "1*͸ͱΓΘ͚৻ॏʹʮܾஅʯ͠Α͏
    ໊෇͚͸೉͍͠

    View full-size slide

  17. w ͻͱͭ֓೦ʹ͍ͭͯෳ਺ͷ໊લ͚ͭͳ͍
    w ͻͱͭͷ໊લͰෳ਺ͷ֓೦Λද͞ͳ͍
    w ͻͱͭͷ֓೦Λද͢;ͨͭͷ໊শͩͱࢥͬͯ
    ͍ͨΒҟͳΔ֓೦ͩͬͨ͜ͱ͕͋Γઃܭ΁ͷ
    Өڹࣄྫ΋͋ͬͨͷͰɺυϝΠϯͷཧղॏཁ
    w HSFQͰͷώοτ཰͕ߴ·Γ௥੻֬౓্͕͕Δ
    ໊෇͚Λ౷Ұ͢Δ

    View full-size slide

  18. w 5IPSͷΦϓγϣϯఏڙͰoption: gen
    ΑΓoption: generateͷํ͕໌֬
    w άϩʔόϧઃఆ͍͏എܠͰSettings.destΑΓ
    Settings.destination_serverͷํ͕໌֬
    w গͳ͍λΠϓ਺Ͱॻ͘ΑΓ΋ɺಡΈखΛ૝૾͢Δ
    w ·ͨ৘ใ๛͔ͳΧϥϑϧͳ໊લΛݕ౼͢Δ
    جຊ͸ུ͞ͳ͍ํ͕৘ใམͪ͠ͳ͍

    View full-size slide

  19. ໊લॏཁ
    IUUQTNBHB[JOFSVCZJTUOFUBSUJDMFT)PUMJOLTIUNM

    View full-size slide

  20. 13΍Πγϡʔ͸ॏཁͳ৘ใࢿݯ

    View full-size slide

  21. IUUQTDISJTCFBNTJPQPTUTHJUDPNNJU
    ίϛοτϝοηʔδ

    View full-size slide

  22. w ॻ͖खΑΓಡΈखͷํ͕ଟ͍ͷͰಡΈखୈҰ
    w ຊจʹαϚϦΛॻ͖ɺ ಛʹ֎෦΁ͷ
    63-
    ͸ৄࡉࢀরͱ͍͏࢖͍ํ͕͓͢͢Ί
    w 63-͸ύʔϚϦϯΫͩͱݴΘΕ͍ͯͨͳʁ͋
    Ε͸ӕͩ
    w ྫ͑͹௕೥ͷӡ༻Ͱ*54͕มΘΔ͜ͱ͕͋Δ
    ຊจ΁ͷ63-هड़ͷΈΛଟ༻͠ͳ͍

    View full-size slide

  23. w γΣϧͷੈքͰgit logͯ͠શମཤྺ͔Β
    มߋ࣌ظΛݕग़ͯ͠ɺͦͷ··มߋҙਤΛ
    ಡΊΔͱศར
    w গ͠࡞ۀखॱΛม͑Δ͚ͩͰɺྺ࢙ΛḷΔ
    ํ๏ͷଟ༷ੑΛ࡞ΕΔ
    w (JU)VC͕མ͍ͪͯͯ΋खݩͰḷΕΔ😇
    13ͷEFTDʹςΩετ͞Ε͍ͯΕ͹ྑ͍ʁຊ౰ʁ

    View full-size slide

  24. w 1VMM3FRVFTUʹॻ͘͜ͱΛ͋Β͔͡Ίίϛοτϝο
    ηʔδʹه͢
    w ʮίϛοτˠ13࣌ʹॻ͘ʯͰ͸ͳ͘ʮίϛοτ࣌
    ʹॻ͘ˠ13͸੔ܗ͘Β͍ʯ
    w Ͳ͏ͤॻ͘ͳΒϒϥ΢βͰ͸ͳ͘޷͖ͳΤσΟλͰ
    w NBTUFS NBJO
    ΁QVTI͢Δͱ͖ͱྲྀΕΛม͑ͳ͍
    ίϛοτϝοηʔδΛΤσΟλͰॻ͘

    View full-size slide

  25. HJUDPNNJU࣌ʹΤσΟλฤू͢Δ

    View full-size slide

  26. 13࣌ʹλΠτϧຊจ͕ຒ·ͬͯΔ

    View full-size slide

  27. มߋҙਤͰTRVBTIΛ͢Δ΂͖͔ʁ
    ϦϑΝΫλϦϯά͸৽ػೳͷ௥
    Ճͱີ઀ʹ݁ͼ෇͍͓ͯΓɺΘ
    ͟Θ͟෼཭͢ΔͨΊʹ࣌ؒΛׂ
    ͘ͷ͸ແବͩͱࢥ͍·͢ɻ
    ϦϑΝΫλϦϯάୈ൛.BSUJO'PXMFS

    View full-size slide

  28. SBJMTSBJMT
    *NQSPWF"DUJPO$BCMFSFDPOOFDUJPOSFMJBCJMJUZ

    View full-size slide

  29. 独⽴してリバートできる独⽴した変更単位にしておく

    View full-size slide

  30. pick, squash, or another PR?
    ࣮૷աఔͰͷςετ௥Ճɺ
    όάϑΟοΫε΍খ͞ͳϦ
    ϑΝΫλϦϯάͰ͔͢ʁ
    TRVBTI
    QJDL
    ϦϦʔεࠩ͠໭͠ͷͱ͖
    ͳͲಠཱͯ͠Ϧόʔτ͠
    ͍ͨίϛοτͰ͔͢ʁ
    "OPUIFS
    13
    ͻͱͭͷϒϥϯνʹͻ
    ͱͭͷίϛοτ͚ͩͰ
    ͔͢ʁ
    ػೳͷ௥Ճมߋͱ෼཭
    Ͱ͖Δطଘػೳ΁ͷϦ
    ϑΝΫλϦϯάͰ͔͢ʁ
    ΋͠ϨϏϡʔͰͷࢦఠͰͳ
    ࣗ͘ྗͰؾ͍͍ͮͯͨΒ
    ίϛοτΛ෼͚·͔͢ʁ
    ͻͱͭͷPRʹෳ਺ͷػ
    ೳཁٻʹର͢Δมߋ͕
    ࠞ͟Γ·͔͢ʁ
    No
    Yes
    Yes
    No
    Yes
    No
    Yes
    Yes
    No
    Yes
    No
    No
    Start
    ಠཱͯ͠ϚʔδͰ͖Δ

    View full-size slide

  31. w l༗ӹͳ৘ใ͸͢΂ͯه͢zCZZZBHJ
    w lͳͥͦͷ13ΛϚʔδ͢Δඞཁ͕͋Δͷ͔
    Λॻ͘zCZLBNJQP
    w l$PTNFUJDDIBOHFͰ͸͋͑ͯ͋·Γॻ͔
    ͳ͍ ࣭ྔͷରൺ
    zCZBNBUTVEB
    3BJMTίϛολʔ͔ΒֶΜͩݪଇ

    View full-size slide

  32. ߟ࡯ʹ͍ͭͯͷଓ͖͸ͪ͜Β
    IUUQTTQFBLFSEFDLDPNLPJD
    DPNNJUNFTTBHFXJMMOFWFSEJF
    IUUQTTQFBLFSEFDLDPNLPJD
    UEEXJUIHJUMPOHMJWFFOHJOFFSJOH
    ίϛοτϝοηʔδʹ͍ͭͯ ίϛοτཻ౓ʹ͍ͭͯ

    View full-size slide

  33. ࢥ͍ͬͯΔΑΓ΋ɺ
    ίϛοτཤྺ͸
    ͣͬͱͣͬͱ༗༻ɻ
    IUUQTUXJUUFSDPNNPSJNPSJIPHFTUBUVT

    View full-size slide

  34. w ࢲͷܦݧ্ɺͲ͜ʹԿ͕ॻ͍ͯ͋Δͷ͔೺Ѳ͢
    Δͷʹɺಈ͘ιʔείʔυ͕࠷΋ਖ਼֬Ͱ͋Δ
    w ͳΜͱόά·Ͱॻ͔Ε͍ͯΔʂʂʁ😇
    w υΩϡϝϯτΛ㚽Ζʹ͍ͯ͠ΔΘ͚Ͱ͸ͳ͘ɺ
    8SJUFPOMZ΍தؒ੒Ռ෺Ͱͳ͍ϝϯςφϯε͞
    Εͨཧղิॿ΁ͷܰྔͳυΩϡϝϯτ͸༗༻
    ઃܭͱ࣮૷͸ෆՄ෼

    View full-size slide

  35. w ϞδϡʔϧԽ͕͏·͘͞Ε͍ͯΕ͹ɺมߋ
    ͢ΔͨΊʹཧղ͢ΔՕॴ੍͕ݶ͞ΕΔ
    w ໾ׂ͕γϯϓϧͰ͋Ε͹ɺίʔυϕʔε΋
    ཈͑ΒΕͯγϯϓϧʹͳΔ
    w ґଘ͕গͳ͚Ε͹ςετ༰қੑ͕ߴ·Γɺ
    ݁Ռͱͯ͠࠶ར༻ੑ͠΍͍͢
    ιʔείʔυʹઃܭ͸͍॓ͬͯΔ

    View full-size slide

  36. ྫ͑͹'BUίϯτϩʔϥʔΛආ͚Δ
    &⒎PSUUP
    &OIBODF
    $PNQMFYPG%PNBJO-PHJD
    5BCMF.PEVMF
    %PNBJO.PEFM
    ʰ1BUUFSOTPG&OUFSQSJTF"QQMJDBUJPO"SDIJUFDUVSFʱ.BSUJO'PXMFSΑΓ
    5SBOTBDUJPO4DSJQU

    View full-size slide

  37. w ઃܭऀͱ࣮૷ऀ͕෼ۀʹͳ͍ͬͯΔ࣌୅Ͱ
    ͸ͳ͍
    w ʮݟੵΓ͸։ൃऀͷ੹຿ʯͰ͋Δ
    w νʔϜ։ൃͰݟੵΓΛߦ͍ͬͯΔ৔߹ɺԿ
    ΛͲͷΑ͏ʹ࣮૷͢Δ͔ઃܭʹ౿ΈࠐΜͩ
    ࿩Λ͢Δ͜ͱͰݟੵΓ֬౓্͕͕Δ
    ݟੵΓ͸ઃܭߦҝ

    View full-size slide

  38. w ੈͷதʹ͸ແݶͷίʔυ͕͋Γɺ͍·ॻ͍ͯ
    ͍ΔਓͱಡΜͩ͜ͱͷ͋Δਓͷ೴಺ʹ࢒ͬͯ
    ͍ΔίʔυҎ֎͸஌Βͳ͍ίʔυ
    w ৽͘͠ϓϩδΣΫτϝϯόʔΛܴ͑ͨ࣌ͳͲ
    ʮಡΜͩ͜ͱͷͳ͍ίʔυʯΛ೗Կʹ
    ʮಡΈղ͖΍͍͢ঢ়ଶʯʹ͓͚ͯ͠Δ͔
    ࡞ͬͨ΋ͷ͸୭͔ʹͱͬͯ஌Βͳ͍ίʔυ

    View full-size slide

  39. w ·ͣιʔείʔυ͸࠷ॏཁͷ্ɺɺɺ
    w ΦϯϘʔσΟϯάͰશମ૾Λ௫ΊΔΑ͏ͳΞʔ
    ΩςΫνϟਤ
    w ࣗಈԽ͞Ε͍ͯͳ͍ӡ༻खॱ
    w 044΋ؔΘΔਓ͕େ͖͘ͳΔ΄Ͳɺ3&"%.&
    ͔ΒઌͷυΩϡϝϯτͷ༗༻ੑ͕ߴ·Δ
    ิॿυΩϡϝϯτͷՁ஋

    View full-size slide

  40. w αΠτΛ๚Εͯඵ଴ͨ͞ΕͨΒ௚ؼ཰͕
    ૿͑Δͱ͍͏ݱ࣮
    w ࣗ෼͕Ϣʔβʔͱͯ͠࢖ͬͯݟͨΒͲ͏ײ
    ͡Δ͔ʁ Ϣʔβʔࢹ఺ʹཱͬͯΈΑ͏

    w ίϯτϩʔϥʔɺϏϡʔͰॏ͍ॲཧΛͯ͠
    ͸͍͚ͳ͍
    8FCͷجຊ

    View full-size slide

  41. w ສ݅ͷϨίʔυΛ࣋ͭςʔϒϧ΁ͷݕࡧΛ
    Ͳ͏ଊ͑Δ͔ʁ σʔλྔͷܯࠂͷ೏͍

    w ඞཁͰ͋Ε͹ॏ͍ΫΤϦʹͳΒͳ͍ཁ݅ʹௐ੔
    ͢Δ ࣄલʹݕࡧൣғΛߜΕΔΑ͏ʹ͢Δͱ͔

    w .2 FH424
    ͳͲͷதؒ૚ʹΑΔඇಉظʹ
    ͯ͠όονॲཧΛߦ͏ͳͲΛݕ౼͢Δ
    ಉظॲཧͱඇಉظॲཧ

    View full-size slide

  42. w αʔϏε͸ΞϓϦέʔγϣϯͱΠϯϑϥ͕Ұମʹ
    ͳͬͯಈ͘
    w ϒϥ΢βɺ$%/ɺ8FCαʔόʔɺΞϓϦέʔγϣϯ
    αʔόʔɺσʔλϕʔεͷલஈͷํͰॲཧΛฦͤ
    ͹ɺͦΕ͚ͩεϧʔϓοτ্͕͕Γશମͷෛՙ͕ݮΔ
    w ӬଓσʔλΛ࣋ͭσʔλϕʔεΑΓӬଓσʔλΛ࣋
    ͨͳ͍8FCͷํ͕εέʔϧΞ΢τ͠΍͍͢
    ࣗ਎ͷΠϯϑϥߏ੒Λ஌Δ

    View full-size slide

  43. w ଠฏ༸ͷ޲͜͏ଆʹϦιʔεΛऔΓʹ͍ͬ
    ͯॏ͍ͱ͔൵͍͠ͷͰɺϦʔδϣϯΛҙࣝ
    ͠Α͏
    w ॏ͍9.-σʔλΛ)551ͷϦΫΤε
    τɺϨεϙϯεͷಉظ଴ͪΛͯ͠)FSPLV
    λΠϜΞ΢τΤϥʔ
    Կ౓΋ଠฏ༸Λԣஅ͢Δͳ

    View full-size slide

  44. w ಈ͘ίʔυ͸ඞཁ৚݅Ͱ͋Γे෼৚݅Ͱ͸ͳ͍
    w αοͱಈ͘ίʔυ·Ͱ͍࣋ͬͯ͘ͷ͸3BJMTͷ
    Ғେ͕ͩ͞ɺΠϯσοΫε΍/ͳͲͷߟྀ࿙
    Ε΍ɺͦ΋ͦ΋ίϯτϩʔϥʔͰॏ͍ಉظॲཧ
    Λ͠ͳ͍ͱ͍͏جૅॏཁ
    w Πϯϑϥߏ੒ͱεέʔϧํ๏Λ஌͓ͬͯ͘
    ඵ଴ͬͨΒ஗͍8FCͷੈք

    View full-size slide

  45. w ςετ͕ͳ͍ίʔυ͸ϨΨγʔίʔυCZ
    ʰϨΨγʔίʔυվળΨΠυʱ
    w ςετίʔυ͕ͳ͍044͸৴པͰ͖Δ͔ʁ
    CZUXBEB

    w ςετίʔυ͕ͳ͍Ҋ݅͸ ུ

    CZฐࣾγεςϜϚωδϝϯτ
    ࣗಈԽ͞Εͨςετ͕౰ͨΓલͷ࣌୅

    View full-size slide

  46. w ϓϩμΫτ΁ͷςετίʔυ͸౰ͨΓલͷ࣌୅
    w ͞Βʹఆܗ࡞ۀɺӡ༻ϛε΁ͷରࡦɺίʔυϨ
    ϏϡʔͷࢦఠͳͲɺςετίʔυʹམͱ͠ࠐΉ
    w ಉ͡஄ؙʹ౰ͨΒͳ͍Α͏ʹ͢Δ
    w 3VCP$PQͰ͸TQFDQSPKFDU@TQFDSCΛ༻ҙ͠
    ͓ͯΓɺ࣮Ҋ݅ʹ΋ྲྀ༻Ͱ͖Δߟ͑ํ
    ϓϩδΣΫτΛςετ͢Δ

    View full-size slide

  47. w ςετίʔυͱͦͷ࣮ߦ࣌ؒ͸ΞϓϦέʔ
    γϣϯͷ௥Ճͱͱ΋ʹྦྷੵ͞Εଓ͚Δ
    w ςετ࣮ߦ͸ͨͩͰ͸ͳ͘ɺςετ͕ॏ
    ͳ͍ͬͯ͘ͱෆ҆ఆͳςετɺεϩʔςε
    τͱ͍͏໰୊ͱ௚໘͍ͯ͘͠
    ࣗಈςετͷ࣮ߦίετ

    View full-size slide

  48. w ࠷଎ղܾ͸Ϛγϯࢿݯ΁ͷۚͷ஄ؙ ۚ

    w ߴ଎Խͷجຊ͸ฒྻԽͱݸผνϡʔχϯά
    w rspec -p --profile
    ͳͲͰϓϩϑΝ
    ΠϦϯάΛͱΓɺ஗͍ςετ͔ΒςίೖΕ
    ΦϦίϯνϟʔτతͳ

    εϩʔςετܐࣄ σΧ

    View full-size slide

  49. w %#ͷΫϦʔχϯάઓུͰ෼͕෼ʹͳͬͨࣄ
    ͋Γ
    w %BUBCBTF$MFBOFSͰ͋Ε͹
    DatabaseCleaner.strategyΛtruncation
    deletion truncationͲΕ͕࠷ద͔ܭଌ͢Δ
    w BNBUTVEBEBUBCBTF@SFXJOEFSΛݕ౼͢Δ
    %#ͷΫϦʔχϯάઓུ

    View full-size slide

  50. w ྫ͑͹ඵ͔͔Δεϩʔςετ͕ݸ
    ͋ΔͱɺͦΕ͚ͩͰ෼͔͔Δ
    w ͭ·Γ௚ྻͩͱ೔Ͱͷ$*ͷ্ݶ͸ճҎ
    ԼʹͳΔ
    w ੒௕͢ΔγεςϜ͸ਓ͕૿͑ɺ13͕૿͑ͯ
    ͍͘ͷͰ$*αʔϏεͷ੔ཧ͸վΊͯॏཁ
    ೔͸ ඵ

    View full-size slide

  51. w γεςϜ΁ͷมߋʹର͢Δ௥੻༰қੑ
    w γεςϜτϥϯβΫγϣϯͷ௥੻༰қੑ
    ຊઅͰऔΓѻ͏௥੻

    View full-size slide

  52. w ໰୊ྖҬͷੈք؍ΛγεςϜʹ൓өͤ͞Δ
    w ྑ໊͍෇͚͸γεςϜղੳ ͋Δ͍͸Ϗδωε
    ͷٯղੳ
    ΁ͷ࠷ߴͷख͕͔Γ ຊ೔౓໨

    w ଧͪ߹ΘͤͰ఻͑ΒΕͨγεςϜ΁ͷมߋཁ
    ݅Λɺ͍͔ʹޮ཰తʹḷΔ͜ͱ͕Ͱ͖Δ͔ʁ
    FHͦΕͬΆ͍༻ޠΛHSFQ͢Δ
    ໊લʹΑΔτϨʔαϏϦςΟ

    View full-size slide

  53. w ҙຯͱͯ͠ॏෳ͍ͯͨ͠ίʔυͷҰ෦ͷର
    Ԡ࿙ΕʹΑΓΠϯγσϯτ͕ൃੜͨ͠਺Λ
    ͍֮͑ͯ·͔͢ʁ
    w ͻͱͭͷมߋཁٻʹରͯ͠ɺมߋՕॴ͕গ
    ͳ͚Ε͹গͳ͍΄ͲଛইᎭ࠲཰Λ཈͑ΒΕ
    Δ
    %POU3FQFBU:PVSTFMG

    View full-size slide

  54. w ͱΓ͋͑ͣίϐϖͰ࡞͓͍ͬͯͯɺ͋ͱͰϦ
    ϑΝΫλϦϯά͢Ε͹ྑ͍ͩΖ͏👿
    w NBTUFS NBJO
    ʹϚʔδ͞ΕͨΒɺ
    ϝϯςφϯε͞Εͦ͏ʹͳ͍ͩΖ͏👼
    w ͍·͸ٸ͍Ͱ͍Δ͔ΒɺͤΊͯίϝϯτΛॻ
    ͖࢒ͯ͠ޙͰ෼͔ΔΑ͏ʹ͓ͯ͜͠͏👶
    ఱ࢖ͱѱຐͷڱؒͷχϯήϯ

    View full-size slide

  55. w ίʔυͰදݱͰ͖ͳ͍ϙΠϯτ͸ίϝϯτΛ࢒͢
    w ಛʹʮԿͷͨΊͷίʔυʯ͔هड़͕ඞཁͩͱײͨ͡
    ΒιʔείʔυίϝϯτΛ੯͠·ͳ͍
    w Ϧʔμϒϧίʔυ͸શষͷ͏ͪষΛίϝϯτʹ
    අ΍͍ͯ͠Δ ॏཁ͞۩߹ʂ

    w 50%0΍'*9.&Λॻ͘ͱbin/rails notesͰ΋
    ݟ͔ͭΔ
    ιʔείʔυίϝϯτ

    View full-size slide

  56. w ྫ֎ϋϯυϦϯά΍γεςϜڥքʹϩάΛ࢓ࠐ
    Ήͱ͍͏ͷ͸ϩΪϯάͷఆੴ
    w *%Λݩʹϩά͔Β%#ͷؔ࿈΍ϓϩάϥϜͷಈ͖
    Λḷͬͯཉ͍͠৘ใ͕ݟ͔ͭΕ͹ྑ͍͚ΕͲ
    w ΄͍͠ϩά͸͍͍ͨͯϩά͞Ε͍ͯͳ͍໰୊
    CZNJXB
    ໰͍߹Θͤௐࠪɺো֐ௐࠪ
    IUUQTUXJUUFSDPNNJXBTUBUVT

    View full-size slide

  57. w ໰୊͕ى͖ͨ࣌ɺ·ͣ৘ใΛूΊΔϩάΛ࢓
    ࠐΜΉ͜ͱ͔Βελʔτͱ͍͏͜ͱ΋͋Δ
    w ͦ΋ͦ΋໰୊͕ى͖ΔՕॴ͕෼͔͍ͬͯΕ
    ͹ɺ໰୊Λ༧ظͯ͠ରԠ͓͚ͯ͠Δ
    w ઃܭ ϦϑΝΫλϦϯά
    ͱಉ͘͡ɺϩΪϯά
    ʹ͍ͭͯ΋໰୊ʹԠͯ͡վળΛ͍͚ͯ͠Δ΋ͷ
    :"(/* %3: ౓໨ͷ๏ଇ

    View full-size slide

  58. ඞཁͳ΋ͷ͔Βॱ൪ʹ
    IUUQTXXXNPVOUBJOHPBUTPGUXBSFDPNCMPHBSFPGGFBUVSFTSFBMMZSBSFMZPSOFWFSVTFE

    View full-size slide

  59. wʷʮ଎͍ʯͱ͔ʮ͍҆ʯͱ͔ʜ
    w˓ʮܧଓʯతʹʮՁ஋ʯΛಧ͚Δ
    ΞδϟΠϧιϑτ΢ΣΞ։ൃ
    QJWPU
    QJWPU JGͷੈք

    QJWPU
    ܁Γฦ͞Εͨ
    બ୒͕൓ө͞
    ΕͨγεςϜ
    ౰ͨΓ͚ͩ
    Ͱͳ͘ϋζϨ
    ΋ؚ·ΕΔ

    σʔλʹج͖ͮબ୒ͱҙࢥܾఆΛߦ͏

    View full-size slide

  60. IUUQBHJMFFTNDPKQQJWPUBMUSBDLFSIFMQHFUUJOHTUBSUFE@KB
    ཉ͍͠ংྻ͸ೖΕସΘΔ

    View full-size slide

  61. w ,(*Λୡ੒͢ΔͨΊͷ,1*޲্Λૂͬͨࢪࡦػ
    ೳͰ͋Ε͹ɺׂΓͱܭଌΛηοτͰߟ͑ΒΕΔ
    w ͏·͘ߦ͔ͳ͚Ε͹ࠩ͠໭͍͔ͨ͠΋͠Εͳ͍
    w ϞχλϦϯάج൫ʹର͢Δཁ݅༗ແΛ֬ೝͯ͠
    ͓͘ͱྑ͍ ݟੵΓ͕ඞཁͳͱ͖͸͓๨Εͳ͘

    ʮ͜͏͍ͬͨػೳ͕ཉ͍͠ʯͷཪଆΛ஌Δ

    View full-size slide

  62. w શ෦࡞ͬͯΈΑ͏΍ɺͱΓ͋͑ͣ࡞ͬͯΈ
    Α͏ͱ͍͏΋ͷ͸ɺٙͬͯΈΔͱྑ͍
    w ։ൃϦιʔε͸༗ݶͰ͋ΓɺՁ஋ͷߴ͍
    ػೳʹߜͬͨϝϯςφϯεΛ໨ࢦ͢
    w ػೳͷ଍͠ࢉ͚ͩͰ͸ͳ͘ɺͱ͖ʹ͸ෆཁ
    ͳػೳͷҾ͖ࢉΛߟ͑ͯΈΔ
    ࣮૷͕ͳ͚Ε͹੍໿͸ݮΔ

    View full-size slide

  63. w ௕णαʔϏεʹͳΕ͹ͳΔ΄ͲϨίʔυྔ͸ӈݞ্
    ͕ΓͰ૿Ճ͢Δ
    w Ϩίʔυͷ૿Ճʹ൐͍ɺεϩʔΫΤϦʹసͯ͡͠·
    ͏͜ͱ͕͋Δ
    w ඇ߃ٱอ͔࣋߃ٱอ͔࣋͸σʔλઃܭͷ伴ʹͳΔ
    w Ӭଓ͢΂͖σʔλ͔ɺফڈՄೳͳσʔλ͔ʁফڈ͢
    ΂͖σʔλ͔ʁ ୀձऀσʔλͳͲ

    σʔλͷϥΠϑαΠΫϧ

    View full-size slide

  64. w *OEFY4IPUHVOͰෆཁͳΠϯσοΫεΛ
    ݕग़ͯ͠࡟আ͢Δ ߋ৽ܥͷ଎౓վળʹܨ͕Δ

    FHHJUIVCDPNTVFJOEFY@TIPUHVO
    w "3TFTTJPOTUPSFΛ࢖͍ͬͯΔΑ͏ͳ৔߹
    TFTTJPOTϨίʔυΛΫϦʔχϯά͠ͳ͍ͱΰϛ
    σʔλ͕݁ߏͳσΟεΫྔΛ઎Ί͍ͯΔ͔΋
    bin/rails db:sessions:trimΛ๨Εͣʹ

    σʔλΫϦʔχϯά

    View full-size slide

  65. w ࡟আͰ͖Δσʔλ͕͋Ε͹ɺ࡟আ͢Δ͜ͱͰσʔλྔ ݕࡧ

    ΛݮΒ͢
    w ݕࡧର৅ͷ೔෇ΛߜΔ͜ͱͰɺݕࡧྔΛݮΒͤΔΑ͏Ͱ͋Ε
    ͹ɺཁ݅ௐ੔ΛࢼΈΔ
    w ཁ݅ʹΑͬͯϦΞϧλΠϜੑ͕ඞཁͳ͚Ε͹ɺूܭࡁΈͷ
    αϚϦʔςʔϒϧΛ༻ҙ͢Δ
    w ͦ΋ͦ΋ͷ42-ʹ໰୊͕͋Ε͹վળɺຊ࣭తʹ42-͕దͯ͠
    ͍ͳͦ͞͏Ͱ͋Ε͹ɺ3%#Ҏ֎ͷΠϯϑϥཁ݅Λݕ౼͢Δ
    σʔλ૿ՃʹΑΔεϩʔΫΤϦ

    View full-size slide

  66. w 3%#.4ʹର͢ΔධՁϞχλϦϯά͕ඞཁͳ৔߹
    ͸ɺϦʔυϨϓϦΧΛ༻ҙ͓ͯ͘͠ͳͲݕ౼ͯ͠
    ͓͘ͱྑ͍
    w ΦϯϥΠϯͰܨ͕͍ͬͯΔຊ൪σʔλʹॏ͍ूܭ
    42-Λൃߦ͢ΔͱɺϢʔβʔӨڹͰ൵͍͜͠ͱʹ
    ͳΓ͔Ͷͳ͍
    w ਨ௚෼ׂʹͳΔͱ%#σʔλઃܭ͕ඞཁ ׂѪ

    ෳ਺σʔλϕʔε ϨϓϦΧηοτ

    View full-size slide

  67. w ςʔϒϧϨίʔυෳ਺ͷσʔλϕʔεʹ෼ࢄ͢Δख๏
    w ςʔϒϧؒͷJOIN͕೉͘͠ͳΓɺσʔλΛϦϯΫ͢Δͨ
    ΊͷઃܭɺϝϯςφϯείετΛֻ͚Δ΄ͲͷεέʔϥϏ
    ϦςΟ֬อ͕ຊ౰ʹඞཁͳ΋ͷ͔Αۛ͘ຯͨ͠ํ͕ྑ͍
    w ʰෳ਺%#$BTVBM5BMLTʱͰΑ͘ฉ͍ͨ͜ͱ͸ʮෳ਺%#͢
    Δͳʯͩͬͨɻ୯Ұ%#Ͱ͸࢖Θͳ͍೴ྗ͕ٻΊΒΕΔ
    w ηΩϡϦςΟ্ͷཧ༝Ͱ%#Λ෼͚ͳ͚Ε͹ͳΒͳ͍ͱ͍͏
    ࿩͸େมͦ͏ͩͬͨ
    ෳ਺σʔλϕʔε γϟʔσΟϯά

    View full-size slide

  68. w σʔλϕʔεઃܭ͸ɺ&3%ͷεΩʔϚઃܭ
    Ҏ֎ʹͲͷΑ͏ͳσʔλ͕ͲΕ͘Β͍૿෼
    ͦ͠͏͔σʔλઃܭͱݟཱͯʹ͍ͭͯϓϥ
    χϯά͓ͯ͘͠ͱྑ͍
    w ϩʔΧϧͷগྔσʔλͱຊ൪؀ڥͰ૿෼͠
    ͍ͯ͘σʔλͷҧ͍Λ಄ͷཪʹඳ͍͓ͯ͘
    εΩʔϚઃܭॏཁɺσʔλઃܭ΋ॏཁ

    View full-size slide

  69. 3BJMT͸όʔδϣϯ্͕͕
    ΔͱɺผͷϑϨʔϜϫʔΫ
    ʹͳͬͯେม
    पลͷਓʑ͕มΘΔΘ͚
    Ͱ͸ͳ͍ͷͰਓ୳͔͠Β
    ΍Βͳͯ͘͢Ή
    !LPJD
    RVFTUJPOFS
    3VCZ#VTJOFTT6TFST$POGʹͯ

    View full-size slide

  70. w 3BJMT͸୯ͳΔϑϨʔϜϫʔΫͱ͍͏͚ͩͰ
    ͸ͳ͘ɺͦΕΛத৺ͱͨ͠ίϛϡχςΟͰ
    ͋Δ
    w ن໿ʹଇ࣮ͬͨ૷Λ͢Δ͜ͱͰɺ৽͘͠ϓ
    ϩδΣΫτʹೖΔ࣌ɺܴ͑Δ࣌ɺϨʔϧͰ
    ܨ͕ͬͨͱײ͡ΒΕΔੈքʹ͚ۙͮΒΕΔ
    3BJMTͱ͍͏ڞ௨ج൫

    View full-size slide

  71. IUUQKQSVCZJTUOFU3VCZ,BJHJ DQMVHJOQMVHJOBUUBDI@EPXOMPBEQ1SPHSBNpMF@OBNFUIF@JTMBOE@PG@SVCZ@KQEG
    3VCZ,BJHJ
    %BWF5IPNBT

    View full-size slide

  72. l
    IUUQTXXXBUNBSLJUDPKQOFXTSBJMTIUNM
    There are few Japanese contributors of Rails in 2009
    IUUQTUXJUUFSDPNZBIPOEBTUBUVT
    ˠ
    ೔ຊͷ3BJMT͸࢒೦ɻ೔ຊ
    Ͱ3BJMT͕࢖ΘΕͯͳ͍ͱ
    ͍͏͜ͱ͸ͳ͍ͱࢥ͏͕ɺ
    ͦΕʹͯ͠͸։ൃऀ͕গͳ
    ͍ɻࢲ͕ݟͨͱ͜Ζ
    ਓதͰ೔ຊਓΒ͖͠ਓ͸਺
    ਓɻ

    View full-size slide

  73. w ۙॴʹ͍Δਓͷ(FNΛ࢖͑ͷ๏ଇ
    w ࠔͬͨͱ͖։ൃऀʹ஍ҬίϛϡχςΟͳͲͰ௚
    ઀࿩ͤΔ͔΋
    w ໰୊ΛΑΓ؅ཧ͠΍͘͢ͳΔ
    w ͲΜͳਓ͕࡞ͬͨ(FN͔ ΫηͳͲ΋
    ෼͔Δ
    w 3BJMTपลͷਓ͕पΓʹ૿͑Δޮೳ
    044͸ਓ͕࡞͍ͬͯΔ

    View full-size slide

  74. 044ίϛϡχςΟͱͷڞੜΛࢧԉ

    View full-size slide

  75. େ͖ͳࡿΛ޿͛Δ
    υΩϡϝϯτͷεϖϧϛεͷमਖ਼Λ࢝Ίͨྡͷ
    ਓ͕ɺ࣍ͷૉ੖Β͍͠ػೳΛ࣮૷͢Δ͜ͱʹͳ
    Δ͔Ͳ͏͔͸୭ʹ΋Θ͔Γ·ͤΜɻ͔͠͠ɺ͋
    ͳ͕ͨඍসΜͰɺͲΜͳখ͞ͳߩݙʹ΋ײँΛ
    ࣔ͢͜ͱͰɺϞνϕʔγϣϯΛߴΊͤ͞ɺͦͷ
    Մೳੑ΋ੜ·ΕΔ͔΋͠Ε·ͤΜɻ
    5IF3BJMT%PDUSJOF ೔ຊޠ༁

    IUUQTRJJUBDPNUBLBIBTIJNJUFNTE⒎FFDCEBD&""&%&""&&&#"&&#QVTIVQBCJHUFOU

    View full-size slide

  76. w ୭͔ʹͱͬͯ໾ʹཱͭͷ͸ίʔυͱ͸ݶΒ
    ͳ͍
    w ͳΜΒ͔ͷϥΠϒϥϦͷ૊Έ߹ΘͤͰ౿Μ
    ͩόάͷϨϙʔτ΍ɺϫʔΫΞϥ΢ϯυͷ
    ղܾࡦͰ΋هࣄΛॻ͍͓͚ͯ͹ɺಉ͡໰୊
    ʹૺ۰ͨ͠ਓͷݕࡧώοτͰ໾ཱ͔ͭ΋
    όουϊ΢ϋ΢ͷڞ༗

    View full-size slide

  77. ୭͔ʹͱͬͯͷ໰୊͸
    ࣗ෼ʹͱͬͯͷ໰୊͔΋
    ͠Εͣɺͦͷٯ΋વΓ
    զʑ͸ϨʔϧͰܨ͕͍ͬͯΔ

    View full-size slide

  78. w ະિ༗ͷΤϯδχΞืू࣌୅
    w ϏδωεΛ੒ཱͤ͞ΔϓϩμΫτ͸ॏཁͩ
    ͕ɺϓϩμΫτΛϝϯςφϯεͰ͖Δ։ൃ
    ऀ͕͍ͳ͍ͱαʔϏεΛҡ࣋੒௕Ͱ͖ͳ͍
    w ָ͘͠ͳ͍ϨΨγʔٕज़͚ͩͩͱɺ޷ح৺
    Ԣ੝ͳ։ൃऀͷؔ৺Λอͭͷ͸೉͍͠
    ։ൃऀͷ৺ٕମͷόϥϯεऔΓ

    View full-size slide

  79. w ʮΊΜͲ͏ͩͳʯͱ͍͏ײ৘ࣗମ͸ॏཁ
    w γεςϜͷ։ൃ͚ͩͰ͸ͳ͘ɺϓϩδΣΫτࣗମͷ
    ࣗಈԽΛ͢Δ
    w $*΍-JOUFSͱ͍͏πʔϧʹݶΒͣɺఆܕ࡞ۀʹͳΓ
    ͦ͏ͳ΋ͷ͸ɺΤϯδχΞϦϯάͰղܾͰ͖ͳ͍͔
    ݕ౼ͯ͠ΈΔ
    w ࣌ʹ͸ଵଦʹͳΔͨΊʹ੯͠·ͳ͍
    F9USFNF-B[JOFTT

    View full-size slide

  80. w ϩʔϯνޙ೥Λܴ͑ΔαʔϏε͕͋Δ3BJMT
    3VCZ͔3BJMT3VCZͷͲͪΒ͕γϡοͱ
    ϝϯςφϯε͞Εͯͯɺָͦ͠͏ʁ
    w OQN؅ཧ͞Ε͓ͯΒͣɺ&4Ҏ߱ͷߏจ͕࢖͑ͳ͍
    ϨΨγʔϑϩϯτΤϯυΞϓϦʹະདྷΛݟΕͦ͏ʁ
    w ҰํͰ໨ͷલͷ໰୊Λɺ஍ٿ্Ͱ࠷΋্खʹղܾͰ
    ͖Δͷ͸ࣗ෼ͨͪͰ͠ΐ͏ खΛಈ͔͔͢Ͳ͏͔

    6QHSBEFNVTUHPPO

    View full-size slide

  81. ϓϩμΫτͷϝϯςφϏϦ
    ςΟ޲্ͱɺΤϯδχΞͱ
    ͯ͠ಇ͘Α͏ʹͳ͔ͬͯΒ
    ͷϨϕϧΞοϓ͸ंͷ྆ྠ

    View full-size slide

  82. w 3BJMTΞϓϦέʔγϣϯͷηΩϡϦςΟΞοϓ
    σʔτΛͰ͖Δঢ়ଶͮ͘Γ͸γεςϜͷ݈߁
    Λҡ࣋͢ΔॏཁͳϑΝΫλʔ
    w ΞϓϦέʔγϣϯߏஙٕज़ͷϞμϯԽ͸ɺγ
    εςϜʹؔΘΔ։ൃऀͷΩϟϦΞͷ݈߁Λҡ
    ࣋͢ΔॏཁͳϑΝΫλʔ ৺ͷ݈߁ʹܨ͕Δ

    ϞμϯԽͷॏཁੑ

    View full-size slide

  83. ࣗΒͷٕज़ʹؔ৺Λ࣋ͭ͜ͱ
    ͋ͳͨͷ࢓ࣄʹ͍ͭͯߟ͑Δ͜ͱʂ
    ܅͸ֶͿ͜ͱ͕৺͔Β޷͖ͩ
    ܅͸ιϑτ΢ΣΞͷ͜ͱΛେ੾ʹࢥ͍ͬͯΔ
    ΞδϟΠϧαϜϥΠ
    +POBUIBO3BTNVTTPO
    ୡਓϓϩάϥϚʔ
    %BWJE5IPNBT "OESFX)VOU
    ָ͠͞ʹ͸ϏδωεՁ஋͕͋Δ

    View full-size slide

  84. म͟͞Ε͹ɺݱΕͣ
    ืूத
    ຊฤͷ಺༰ΛҰॹʹղܾ͍ͯ͜͠͏ͱ͍͏
    lத్৽ଔ࠾༻zlϏδωεύʔτφʔz
    ຊؾͰͨͷΉR

    View full-size slide

  85. !LBLVUBOJTBZT
    ΅͘͸ΤΫετϦʔϜϓϩάϥϛϯάਥͳͷͰɺ
    ༏लͳϓϩάϥϚʔΛ૿΍͍ͨ͠ͱࢥ͍ͬͯ·͢
    IUUQTTQFBLFSEFDLDPNLBLVUBOJLBJHJPOSBJMT TMJEF

    View full-size slide