Save 37% off PRO during our Black Friday Sale! »

The three great virtues are important

The three great virtues are important

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

023b04c98f39cc041293d780352432ff?s=128

Koichi ITO

November 19, 2021
Tweet

Transcript

  1. ,PJDIJ*50&4. *OD ۜ࠲3BJMT  'SJ ʮಈ͍ͨʂʯͷઌ΁౿Έग़͢ɺ γεςϜͷϝϯςφϏϦςΟ޲্ͷ جૅٕज़ The three

    great virtues are important
  2. @koic w044ϓϩάϥϚʔ w3VCP$PQίΞνʔϜ wגࣜձࣾӬ࿨γεςϜϚωδϝϯτ &4. JOD  ΤϯδχΞϦϯάϚωʔδϟʔ σΟεςΟϯάΠογϡυΤϯδχΞ w3BJMTͰͷؔ৺ࣄ͸&4.JNQPSUNBQͱͦͷಈ͖

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

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

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

    ࢲͨͪ͸ϓϩάϥϚʔͷҒେͳࡾͭͷඒಙͰ͋Δ ଵଦɺ୹ؾɺၗຫΛ਎ʹ͚ͭΔ͜ͱΛਪ঑͢Δ
  6. w *UFSBUJWF w *ODSFNFOUBM w %FWFMPQNFOU ೥ܦͯ͹Կճճ͍ͯ͠Δʁ IUUQTKBXJLJQFEJBPSHXJLJ൓෮ܕ։ൃ

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

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

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

  10. None
  11. w ͓ۚ Ϗδωε ͷ੾Ε໨͕αʔϏεͷ੾Ε໨ w ௕णαʔϏεʹͳΕ͹ͳΔ΄Ͳίʔυϕʔε͸ංେԽ ͢Δݱ࣮ w ߦҎ্ͷίʔυʹ͸όά͕͋Δ🤔 w

    ͋ͳͨͷαʔϏε͸Կ೥΋ͷʁ w զʑϓϩάϥϚʔ͸ɺ೗Կʹͯ͠ϏδωεͷมԽʹద ԠͰ͖ΔγεςϜϝϯςφϏϦςΟΛඋ͑Δ͔ʁ ੒ޭ͍ͯ͠ΔαʔϏε΄Ͳ௕ण
  12. w " ೥຤ͷౙٳΈʹۓٸো֐͕ൃੜ͠ɺਅ໷தʹ ̍ϝιου̎̌̌̌ߦͷ$PEFͷղಡʹ಄Λ௧Ί ʮͻΌ͸ʔʂ͜Ε͸ͻͲ͍ɺ$PEFͩͥʂʯͱ ࢥͬͨॠؒ w # ࣗ෼ΑΓͰ͖Δౕ͕ॻ͍ͨίʔυΛಡΜͰ ʮ͋ʂ͜Μͳهड़Ͱ͖ΔΜͩɻ͜ΓΌ$PPMͩͥʯ

    ͱࢥͬͨॠؒ ͋ͳͨͳΒͲͪΒΛબͿʁ IUUQQBUUFSOTIBSVIFSPLVDPN EFBEMJOL
  13. جૅͱͦͷઌ ʹ͋Δ΋ͷ

  14. w ໊લ w ྺ࢙ w ઃܭ w ੑೳ w ճؼ

    ࡾେඒಙΛ࣋ͬͯࠞಱΛ੍ޚ͢Δ w ௥੻ w ධՁ w อ࣋ w ڞ૑ w ײ৘ ͜ͷ͋ͨΓΛԡ͓͑ͯ͘͞ͱྑ͍Ͱ͠ΐ͏ͱ͍͏ ϙΠϯτΛຊ೔ͷ͓୊ͱ͖ͯ࣋ͬͯ͠·ͨ͠
  15. σβΠϯελϛφԾઆ ྦྷੵͨ͠ ػೳͷྔ ࣌ؒ ͙͢Εͨઃܭ ·͍ͣઃܭ ϦϑΝΫλϦϯάୈ൛.BSUJO'PXMFSΑΓ

  16. ໊લ

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

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

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

    ໊෇͚Λ౷Ұ͢Δ
  20. w 5IPSͷΦϓγϣϯఏڙͰoption: gen ΑΓoption: generateͷํ͕໌֬ w άϩʔόϧઃఆ͍͏എܠͰSettings.destΑΓ Settings.destination_serverͷํ͕໌֬ w গͳ͍λΠϓ਺Ͱॻ͘ΑΓ΋ɺಡΈखΛ૝૾͢Δ

    w ·ͨ৘ใ๛͔ͳΧϥϑϧͳ໊લΛݕ౼͢Δ جຊ͸ུ͞ͳ͍ํ͕৘ใམͪ͠ͳ͍
  21. ໊લॏཁ IUUQTNBHB[JOFSVCZJTUOFUBSUJDMFT)PUMJOLTIUNM

  22. ྺ࢙

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

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

  25. None
  26. w ॻ͖खΑΓಡΈखͷํ͕ଟ͍ͷͰಡΈखୈҰ w ຊจʹαϚϦΛॻ͖ɺ ಛʹ֎෦΁ͷ 63- ͸ৄࡉࢀরͱ͍͏࢖͍ํ͕͓͢͢Ί w 63-͸ύʔϚϦϯΫͩͱݴΘΕ͍ͯͨͳʁ͋ Ε͸ӕͩ

    w ྫ͑͹௕೥ͷӡ༻Ͱ*54͕มΘΔ͜ͱ͕͋Δ ຊจ΁ͷ63-هड़ͷΈΛଟ༻͠ͳ͍
  27. w γΣϧͷੈքͰgit logͯ͠શମཤྺ͔Β มߋ࣌ظΛݕग़ͯ͠ɺͦͷ··มߋҙਤΛ ಡΊΔͱศར w গ͠࡞ۀखॱΛม͑Δ͚ͩͰɺྺ࢙ΛḷΔ ํ๏ͷଟ༷ੑΛ࡞ΕΔ w (JU)VC͕མ͍ͪͯͯ΋खݩͰḷΕΔ😇

    13ͷEFTDʹςΩετ͞Ε͍ͯΕ͹ྑ͍ʁຊ౰ʁ
  28. w 1VMM3FRVFTUʹॻ͘͜ͱΛ͋Β͔͡Ίίϛοτϝο ηʔδʹه͢ w ʮίϛοτˠ13࣌ʹॻ͘ʯͰ͸ͳ͘ʮίϛοτ࣌ ʹॻ͘ˠ13͸੔ܗ͘Β͍ʯ w Ͳ͏ͤॻ͘ͳΒϒϥ΢βͰ͸ͳ͘޷͖ͳΤσΟλͰ w NBTUFS

    NBJO ΁QVTI͢Δͱ͖ͱྲྀΕΛม͑ͳ͍ ίϛοτϝοηʔδΛΤσΟλͰॻ͘
  29. HJUDPNNJU࣌ʹΤσΟλฤू͢Δ

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

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

  32. SBJMTSBJMT *NQSPWF"DUJPO$BCMFSFDPOOFDUJPOSFMJBCJMJUZ

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

  35. pick, squash, or another PR? ࣮૷աఔͰͷςετ௥Ճɺ όάϑΟοΫε΍খ͞ͳϦ ϑΝΫλϦϯάͰ͔͢ʁ TRVBTI QJDL

    ϦϦʔεࠩ͠໭͠ͷͱ͖ ͳͲಠཱͯ͠Ϧόʔτ͠ ͍ͨίϛοτͰ͔͢ʁ "OPUIFS 13 ͻͱͭͷϒϥϯνʹͻ ͱͭͷίϛοτ͚ͩͰ ͔͢ʁ ػೳͷ௥Ճมߋͱ෼཭ Ͱ͖Δطଘػೳ΁ͷϦ ϑΝΫλϦϯάͰ͔͢ʁ ΋͠ϨϏϡʔͰͷࢦఠͰͳ ࣗ͘ྗͰؾ͍͍ͮͯͨΒ ίϛοτΛ෼͚·͔͢ʁ ͻͱͭͷPRʹෳ਺ͷػ ೳཁٻʹର͢Δมߋ͕ ࠞ͟Γ·͔͢ʁ No Yes Yes No Yes No Yes Yes No Yes No No Start ಠཱͯ͠ϚʔδͰ͖Δ
  36. w l༗ӹͳ৘ใ͸͢΂ͯه͢zCZZZBHJ w lͳͥͦͷ13ΛϚʔδ͢Δඞཁ͕͋Δͷ͔ Λॻ͘zCZLBNJQP w l$PTNFUJDDIBOHFͰ͸͋͑ͯ͋·Γॻ͔ ͳ͍ ࣭ྔͷରൺ zCZBNBUTVEB

    3BJMTίϛολʔ͔ΒֶΜͩݪଇ
  37. ߟ࡯ʹ͍ͭͯͷଓ͖͸ͪ͜Β IUUQTTQFBLFSEFDLDPNLPJD DPNNJUNFTTBHFXJMMOFWFSEJF IUUQTTQFBLFSEFDLDPNLPJD UEEXJUIHJUMPOHMJWFFOHJOFFSJOH ίϛοτϝοηʔδʹ͍ͭͯ ίϛοτཻ౓ʹ͍ͭͯ

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

  39. ઃܭ

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

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

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

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

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

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

    ิॿυΩϡϝϯτͷՁ஋
  47. ੑೳ

  48. w αΠτΛ๚Εͯඵ଴ͨ͞ΕͨΒ௚ؼ཰͕ ૿͑Δͱ͍͏ݱ࣮ w ࣗ෼͕Ϣʔβʔͱͯ͠࢖ͬͯݟͨΒͲ͏ײ ͡Δ͔ʁ Ϣʔβʔࢹ఺ʹཱͬͯΈΑ͏  w ίϯτϩʔϥʔɺϏϡʔͰॏ͍ॲཧΛͯ͠

    ͸͍͚ͳ͍ 8FCͷجຊ
  49. w ສ݅ͷϨίʔυΛ࣋ͭςʔϒϧ΁ͷݕࡧΛ Ͳ͏ଊ͑Δ͔ʁ σʔλྔͷܯࠂͷ೏͍  w ඞཁͰ͋Ε͹ॏ͍ΫΤϦʹͳΒͳ͍ཁ݅ʹௐ੔ ͢Δ ࣄલʹݕࡧൣғΛߜΕΔΑ͏ʹ͢Δͱ͔ 

    w .2 FH424 ͳͲͷதؒ૚ʹΑΔඇಉظʹ ͯ͠όονॲཧΛߦ͏ͳͲΛݕ౼͢Δ ಉظॲཧͱඇಉظॲཧ
  50. w αʔϏε͸ΞϓϦέʔγϣϯͱΠϯϑϥ͕Ұମʹ ͳͬͯಈ͘ w ϒϥ΢βɺ$%/ɺ8FCαʔόʔɺΞϓϦέʔγϣϯ αʔόʔɺσʔλϕʔεͷલஈͷํͰॲཧΛฦͤ ͹ɺͦΕ͚ͩεϧʔϓοτ্͕͕Γશମͷෛՙ͕ݮΔ w ӬଓσʔλΛ࣋ͭσʔλϕʔεΑΓӬଓσʔλΛ࣋ ͨͳ͍8FCͷํ͕εέʔϧΞ΢τ͠΍͍͢

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

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

    ඵ଴ͬͨΒ஗͍8FCͷੈք
  54. ճؼ

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

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

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

  58. w ࠷଎ղܾ͸Ϛγϯࢿݯ΁ͷۚͷ஄ؙ ۚ  w ߴ଎Խͷجຊ͸ฒྻԽͱݸผνϡʔχϯά w rspec -p --profile

    ͳͲͰϓϩϑΝ ΠϦϯάΛͱΓɺ஗͍ςετ͔ΒςίೖΕ ΦϦίϯνϟʔτతͳ εϩʔςετܐࣄ σΧ
  59. w %#ͷΫϦʔχϯάઓུͰ෼͕෼ʹͳͬͨࣄ ͋Γ w %BUBCBTF$MFBOFSͰ͋Ε͹ DatabaseCleaner.strategyΛtruncation  deletion truncationͲΕ͕࠷ద͔ܭଌ͢Δ w

    BNBUTVEBEBUBCBTF@SFXJOEFSΛݕ౼͢Δ %#ͷΫϦʔχϯάઓུ
  60. w ྫ͑͹ඵ͔͔Δεϩʔςετ͕ݸ ͋ΔͱɺͦΕ͚ͩͰ෼͔͔Δ w ͭ·Γ௚ྻͩͱ೔Ͱͷ$*ͷ্ݶ͸ճҎ ԼʹͳΔ w ੒௕͢ΔγεςϜ͸ਓ͕૿͑ɺ13͕૿͑ͯ ͍͘ͷͰ$*αʔϏεͷ੔ཧ͸վΊͯॏཁ ೔͸

    ඵ
  61. ௥੻

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

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

    ଧͪ߹ΘͤͰ఻͑ΒΕͨγεςϜ΁ͷมߋཁ ݅Λɺ͍͔ʹޮ཰తʹḷΔ͜ͱ͕Ͱ͖Δ͔ʁ FHͦΕͬΆ͍༻ޠΛHSFQ͢Δ ໊લʹΑΔτϨʔαϏϦςΟ
  64. w ҙຯͱͯ͠ॏෳ͍ͯͨ͠ίʔυͷҰ෦ͷର Ԡ࿙ΕʹΑΓΠϯγσϯτ͕ൃੜͨ͠਺Λ ͍֮͑ͯ·͔͢ʁ w ͻͱͭͷมߋཁٻʹରͯ͠ɺมߋՕॴ͕গ ͳ͚Ε͹গͳ͍΄ͲଛইᎭ࠲཰Λ཈͑ΒΕ Δ %POU3FQFBU:PVSTFMG

  65. w ͱΓ͋͑ͣίϐϖͰ࡞͓͍ͬͯͯɺ͋ͱͰϦ ϑΝΫλϦϯά͢Ε͹ྑ͍ͩΖ͏👿 w NBTUFS NBJO ʹϚʔδ͞ΕͨΒɺ ϝϯςφϯε͞Εͦ͏ʹͳ͍ͩΖ͏👼 w ͍·͸ٸ͍Ͱ͍Δ͔ΒɺͤΊͯίϝϯτΛॻ

    ͖࢒ͯ͠ޙͰ෼͔ΔΑ͏ʹ͓ͯ͜͠͏👶 ఱ࢖ͱѱຐͷڱؒͷχϯήϯ
  66. w ίʔυͰදݱͰ͖ͳ͍ϙΠϯτ͸ίϝϯτΛ࢒͢ w ಛʹʮԿͷͨΊͷίʔυʯ͔هड़͕ඞཁͩͱײͨ͡ ΒιʔείʔυίϝϯτΛ੯͠·ͳ͍ w Ϧʔμϒϧίʔυ͸શষͷ͏ͪষΛίϝϯτʹ අ΍͍ͯ͠Δ ॏཁ͞۩߹ʂ 

    w 50%0΍'*9.&Λॻ͘ͱbin/rails notesͰ΋ ݟ͔ͭΔ ιʔείʔυίϝϯτ
  67. w ྫ֎ϋϯυϦϯά΍γεςϜڥքʹϩάΛ࢓ࠐ Ήͱ͍͏ͷ͸ϩΪϯάͷఆੴ w *%Λݩʹϩά͔Β%#ͷؔ࿈΍ϓϩάϥϜͷಈ͖ Λḷͬͯཉ͍͠৘ใ͕ݟ͔ͭΕ͹ྑ͍͚ΕͲ w ΄͍͠ϩά͸͍͍ͨͯϩά͞Ε͍ͯͳ͍໰୊ CZNJXB ໰͍߹Θͤௐࠪɺো֐ௐࠪ

    IUUQTUXJUUFSDPNNJXBTUBUVT
  68. w ໰୊͕ى͖ͨ࣌ɺ·ͣ৘ใΛूΊΔϩάΛ࢓ ࠐΜΉ͜ͱ͔Βελʔτͱ͍͏͜ͱ΋͋Δ w ͦ΋ͦ΋໰୊͕ى͖ΔՕॴ͕෼͔͍ͬͯΕ ͹ɺ໰୊Λ༧ظͯ͠ରԠ͓͚ͯ͠Δ w ઃܭ ϦϑΝΫλϦϯά ͱಉ͘͡ɺϩΪϯά

    ʹ͍ͭͯ΋໰୊ʹԠͯ͡վળΛ͍͚ͯ͠Δ΋ͷ :"(/* %3: ౓໨ͷ๏ଇ
  69. ධՁ

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

  71. wʷʮ଎͍ʯͱ͔ʮ͍҆ʯͱ͔ʜ w˓ʮܧଓʯతʹʮՁ஋ʯΛಧ͚Δ ΞδϟΠϧιϑτ΢ΣΞ։ൃ QJWPU QJWPU JGͷੈք QJWPU ܁Γฦ͞Εͨ બ୒͕൓ө͞ ΕͨγεςϜ

    ౰ͨΓ͚ͩ Ͱͳ͘ϋζϨ ΋ؚ·ΕΔ σʔλʹج͖ͮબ୒ͱҙࢥܾఆΛߦ͏
  72. IUUQBHJMFFTNDPKQQJWPUBMUSBDLFSIFMQHFUUJOHTUBSUFE@KB ཉ͍͠ংྻ͸ೖΕସΘΔ

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

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

  75. อ࣋

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

    ΂͖σʔλ͔ʁ ୀձऀσʔλͳͲ σʔλͷϥΠϑαΠΫϧ
  77. w *OEFY4IPUHVOͰෆཁͳΠϯσοΫεΛ ݕग़ͯ͠࡟আ͢Δ ߋ৽ܥͷ଎౓վળʹܨ͕Δ  FHHJUIVCDPNTVFJOEFY@TIPUHVO w "3TFTTJPOTUPSFΛ࢖͍ͬͯΔΑ͏ͳ৔߹ TFTTJPOTϨίʔυΛΫϦʔχϯά͠ͳ͍ͱΰϛ σʔλ͕݁ߏͳσΟεΫྔΛ઎Ί͍ͯΔ͔΋

    bin/rails db:sessions:trimΛ๨Εͣʹ σʔλΫϦʔχϯά
  78. w ࡟আͰ͖Δσʔλ͕͋Ε͹ɺ࡟আ͢Δ͜ͱͰσʔλྔ ݕࡧ ྔ ΛݮΒ͢ w ݕࡧର৅ͷ೔෇ΛߜΔ͜ͱͰɺݕࡧྔΛݮΒͤΔΑ͏Ͱ͋Ε ͹ɺཁ݅ௐ੔ΛࢼΈΔ w ཁ݅ʹΑͬͯϦΞϧλΠϜੑ͕ඞཁͳ͚Ε͹ɺूܭࡁΈͷ

    αϚϦʔςʔϒϧΛ༻ҙ͢Δ w ͦ΋ͦ΋ͷ42-ʹ໰୊͕͋Ε͹վળɺຊ࣭తʹ42-͕దͯ͠ ͍ͳͦ͞͏Ͱ͋Ε͹ɺ3%#Ҏ֎ͷΠϯϑϥཁ݅Λݕ౼͢Δ σʔλ૿ՃʹΑΔεϩʔΫΤϦ
  79. w 3%#.4ʹର͢ΔධՁϞχλϦϯά͕ඞཁͳ৔߹ ͸ɺϦʔυϨϓϦΧΛ༻ҙ͓ͯ͘͠ͳͲݕ౼ͯ͠ ͓͘ͱྑ͍ w ΦϯϥΠϯͰܨ͕͍ͬͯΔຊ൪σʔλʹॏ͍ूܭ 42-Λൃߦ͢ΔͱɺϢʔβʔӨڹͰ൵͍͜͠ͱʹ ͳΓ͔Ͷͳ͍ w ਨ௚෼ׂʹͳΔͱ%#σʔλઃܭ͕ඞཁ

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

    ηΩϡϦςΟ্ͷཧ༝Ͱ%#Λ෼͚ͳ͚Ε͹ͳΒͳ͍ͱ͍͏ ࿩͸େมͦ͏ͩͬͨ ෳ਺σʔλϕʔε γϟʔσΟϯά
  81. w σʔλϕʔεઃܭ͸ɺ&3%ͷεΩʔϚઃܭ Ҏ֎ʹͲͷΑ͏ͳσʔλ͕ͲΕ͘Β͍૿෼ ͦ͠͏͔σʔλઃܭͱݟཱͯʹ͍ͭͯϓϥ χϯά͓ͯ͘͠ͱྑ͍ w ϩʔΧϧͷগྔσʔλͱຊ൪؀ڥͰ૿෼͠ ͍ͯ͘σʔλͷҧ͍Λ಄ͷཪʹඳ͍͓ͯ͘ εΩʔϚઃܭॏཁɺσʔλઃܭ΋ॏཁ

  82. ڞ૑

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

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

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

  86. l IUUQTXXXBUNBSLJUDPKQOFXTSBJMTIUNM There are few Japanese contributors of Rails in

    2009 IUUQTUXJUUFSDPNZBIPOEBTUBUVT ˠ ೔ຊͷ3BJMT͸࢒೦ɻ೔ຊ Ͱ3BJMT͕࢖ΘΕͯͳ͍ͱ ͍͏͜ͱ͸ͳ͍ͱࢥ͏͕ɺ ͦΕʹͯ͠͸։ൃऀ͕গͳ ͍ɻࢲ͕ݟͨͱ͜Ζ ਓதͰ೔ຊਓΒ͖͠ਓ͸਺ ਓɻ
  87. w ۙॴʹ͍Δਓͷ(FNΛ࢖͑ͷ๏ଇ w ࠔͬͨͱ͖։ൃऀʹ஍ҬίϛϡχςΟͳͲͰ௚ ઀࿩ͤΔ͔΋  w ໰୊ΛΑΓ؅ཧ͠΍͘͢ͳΔ w ͲΜͳਓ͕࡞ͬͨ(FN͔

    ΫηͳͲ΋ ෼͔Δ w 3BJMTपลͷਓ͕पΓʹ૿͑Δޮೳ 044͸ਓ͕࡞͍ͬͯΔ
  88. 044ίϛϡχςΟͱͷڞੜΛࢧԉ

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

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

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

  92. ײ৘

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

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

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

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

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

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

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

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