Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
The three great virtues are important
Search
Koichi ITO
November 19, 2021
Programming
13
4.9k
The three great virtues are important
銀座Rails #39 招待講演
https://ginza-rails.connpass.com/event/229348/
Koichi ITO
November 19, 2021
Tweet
Share
More Decks by Koichi ITO
See All by Koichi ITO
Ruby and LLM Ecosystem
koic
0
320
Write Code Every Day
koic
1
2.1k
Bliki (ja), and the Cathedral, and the Bazaar
koic
7
2.7k
Welcome to the LLM Club
koic
0
340
RuboCop: Modularity and AST Insights
koic
3
4.9k
Carving the Way to Ruby Engineering
koic
3
1.1k
Beyond the RuboCop Defaults
koic
3
4.8k
Minify Ruby Code
koic
2
2.4k
Permanent Agility
koic
38
9.4k
Other Decks in Programming
See All in Programming
外接に惑わされない自システムの処理時間SLIをOpenTelemetryで実現した話
kotaro7750
0
220
AI駆動開発カンファレンスAutumn2025 _AI駆動開発にはAI駆動品質保証
autifyhq
0
130
開発組織の戦略的な役割と 設計スキル向上の効果
masuda220
PRO
10
2.1k
AIのバカさ加減に怒る前にやっておくこと
blueeventhorizon
0
160
What’s Fair is FAIR: A Decentralised Future for WordPress Distribution
rmccue
0
130
Introducing RemoteCompose: break your UI out of the app sandbox.
camaelon
2
500
AsyncSequenceとAsyncStreamのプロポーザルを全部読む!!
s_shimotori
1
250
Webサーバーサイド言語としてのRustについて
kouyuume
1
5.1k
「10分以内に機能を消せる状態」 の実現のためにやっていること
togishima
1
220
ネストしたdata classの面倒な更新にさようなら!Lensを作って理解するArrowのOpticsの世界
shiita0903
1
280
Nitro v3
kazupon
1
190
Kotlinで実装するCPU/GPU 「協調的」パフォーマンス管理
matuyuhi
0
310
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
55
11k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.2k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8k
Building Adaptive Systems
keathley
44
2.8k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
2
300
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Facilitating Awesome Meetings
lara
57
6.6k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
A designer walks into a library…
pauljervisheath
210
24k
Transcript
,PJDIJ*50&4. *OD ۜ࠲3BJMT 'SJ ʮಈ͍ͨʂʯͷઌ౿Έग़͢ɺ γεςϜͷϝϯςφϏϦςΟ্ͷ جૅٕज़ The three
great virtues are important
@koic w044ϓϩάϥϚʔ w3VCP$PQίΞνʔϜ wגࣜձࣾӬγεςϜϚωδϝϯτ &4. JOD ΤϯδχΞϦϯάϚωʔδϟʔ σΟεςΟϯάΠογϡυΤϯδχΞ w3BJMTͰͷؔ৺ࣄ&4.JNQPSUNBQͱͦͷಈ͖
͞Μ͔ΒͷΦϑΝʔ IUUQTUXJUUFSDPNNPSJNPSJIPHFTUBUVT
w ޮ࠶ར༻ੑ͕ؾʹͳΔΑ͏ʹͳͬͨʁ w ॲཧޮ%FW9͕ؾʹֻ͔͍ͬͯΔʁ w ίʔυγεςϜͷΫΦϦςΟʹ͍ͭͯͷ ࣗෛ͕ߴ·͖͍ͬͯͯΔʁ ܦͬͨΒͲΜͳঢ়ଶ🤔
w ʮଵଦؾၗຫʯͷࡾେඒಙΛ֫ಘͭ͠ ͭ͋Δͱ͍͏Ծઆ w ϓϩάϥϚʔͱͯ͠ݱ࣮ੈքͷҰһ w Α͏ͦ͜ ͓ΊͰͱ͏͍͟͝·͢ʂ ࡾେඒಙͷಓ ରΊ
ࢲͨͪϓϩάϥϚʔͷҒେͳࡾͭͷඒಙͰ͋Δ ଵଦɺؾɺၗຫΛʹ͚ͭΔ͜ͱΛਪ͢Δ
w *UFSBUJWF w *ODSFNFOUBM w %FWFMPQNFOU ܦͯԿճճ͍ͯ͠Δʁ IUUQTKBXJLJQFEJBPSHXJLJ෮ܕ։ൃ
ࠓճ։࠵Λܴ͑Δۜ࠲3BJMTʹ͚ͨʮΤϯδχΞ ೖ͔Β౿Έग़ͨ͠ઌʯ͕ςʔϚͰ͢ɻޭ͍ͯ͠Δ αʔϏε΄ͲणͰ͋ΓɺංେԽ͢ΔίʔυϕʔεΖ Ζͷඋ͕͑ॏཁʹͳΓ·͢ɻͦͯ͠ϓϩμΫτͷϝ ϯςφϏϦςΟ্ͱɺΤϯδχΞͱͯ͠ಇ͘Α͏ʹ ͳ͔ͬͯΒͷϨϕϧΞοϓंͷ྆ྠͰ͢ɻຊߨԋͰ ೖͷઌͱͳΔɺγεςϜϝϯςφϏϦςΟ্ͷ ͓͖͑ͯ͘εΩϧɺߟ͑ํʹ͍͓ͭͯ͠·͢ɻ ຊͷ֓ཁ
۪ऀܦݧʹֶͼɺ ݡऀྺ࢙ʹֶͿ IUUQTUXJUUFSDPNNPSJNPSJIPHFTUBUVT
म͟͞ΕɺݱΕͣ ืूத ຊฤͷ༰Λ࣮ફͰʹ͚͍ͭͨͳΒ lத్৽ଔ࠾༻zlϏδωεύʔτφʔz !LPJD·Ͱ͓ؾܰʹ
None
w ͓ۚ Ϗδωε ͷΕ͕αʔϏεͷΕ w णαʔϏεʹͳΕͳΔ΄ͲίʔυϕʔεංେԽ ͢Δݱ࣮ w ߦҎ্ͷίʔυʹόά͕͋Δ🤔 w
͋ͳͨͷαʔϏεԿͷʁ w զʑϓϩάϥϚʔɺԿʹͯ͠ϏδωεͷมԽʹద ԠͰ͖ΔγεςϜϝϯςφϏϦςΟΛඋ͑Δ͔ʁ ޭ͍ͯ͠ΔαʔϏε΄Ͳण
w " ͷౙٳΈʹۓٸো͕ൃੜ͠ɺਅதʹ ̍ϝιου̎̌̌̌ߦͷ$PEFͷղಡʹ಄Λ௧Ί ʮͻΌʔʂ͜ΕͻͲ͍ɺ$PEFͩͥʂʯͱ ࢥͬͨॠؒ w # ࣗΑΓͰ͖Δౕ͕ॻ͍ͨίʔυΛಡΜͰ ʮ͋ʂ͜Μͳهड़Ͱ͖ΔΜͩɻ͜ΓΌ$PPMͩͥʯ
ͱࢥͬͨॠؒ ͋ͳͨͳΒͲͪΒΛબͿʁ IUUQQBUUFSOTIBSVIFSPLVDPN EFBEMJOL
جૅͱͦͷઌ ʹ͋Δͷ
w ໊લ w ྺ࢙ w ઃܭ w ੑೳ w ճؼ
ࡾେඒಙΛ࣋ͬͯࠞಱΛ੍ޚ͢Δ w w ධՁ w อ࣋ w ڞ w ײ ͜ͷ͋ͨΓΛԡ͓͑ͯ͘͞ͱྑ͍Ͱ͠ΐ͏ͱ͍͏ ϙΠϯτΛຊͷ͓ͱ͖ͯ࣋ͬͯ͠·ͨ͠
σβΠϯελϛφԾઆ ྦྷੵͨ͠ ػೳͷྔ ࣌ؒ ͙͢Εͨઃܭ ·͍ͣઃܭ ϦϑΝΫλϦϯάୈ൛.BSUJO'PXMFSΑΓ
໊લ
ͷʹɺ໊ͯ͢લ͕͋Δ ੩తղੳͱͭ·Γιʔείʔυͷ ղੳͩɻͦͯ͠ιʔείʔυͷղੳͱ ໊લͷௐࠪͰ͋ΔɻϑΝΠϧ໊ɾ ໊ؔɾม໊ɾܕ໊ɾϝϯό໊ͳͲɺ ϓϩάϥϜ໊લͷ͔ͨ·Γͩɻ 3VCZιʔείʔυશղઆ੨ๆ
w ϓϩάϥϚʔΛԿ͍͍ͬͯͯ͠ w 3VCZຊମͰϞδϡʔϧϝιουͷ ໊લ͕ܾ·Βͣೖ͍ͬͯͳ͍ͷ͋Δ w γεςϜ෦ͷQVCMJD"1*ͦΕͳΓʹɺ γεςϜ֎෦ͱͷ࿈ܞͱͳΔQVCMJTIFE "1*ͱΓΘ͚৻ॏʹʮܾஅʯ͠Α͏ ໊͚͍͠
w ͻͱͭ֓೦ʹ͍ͭͯෳͷ໊લ͚ͭͳ͍ w ͻͱͭͷ໊લͰෳͷ֓೦Λද͞ͳ͍ w ͻͱͭͷ֓೦Λද͢;ͨͭͷ໊শͩͱࢥͬͯ ͍ͨΒҟͳΔ֓೦ͩͬͨ͜ͱ͕͋Γઃܭͷ Өڹࣄྫ͋ͬͨͷͰɺυϝΠϯͷཧղॏཁ w HSFQͰͷώοτ͕ߴ·Γ্͕͕֬Δ
໊͚Λ౷Ұ͢Δ
w 5IPSͷΦϓγϣϯఏڙͰoption: gen ΑΓoption: generateͷํ͕໌֬ w άϩʔόϧઃఆ͍͏എܠͰSettings.destΑΓ Settings.destination_serverͷํ͕໌֬ w গͳ͍λΠϓͰॻ͘ΑΓɺಡΈखΛ૾͢Δ
w ·ͨใ๛͔ͳΧϥϑϧͳ໊લΛݕ౼͢Δ جຊུ͞ͳ͍ํ͕ใམͪ͠ͳ͍
໊લॏཁ IUUQTNBHB[JOFSVCZJTUOFUBSUJDMFT)PUMJOLTIUNM
ྺ࢙
13Πγϡʔॏཁͳใࢿݯ
IUUQTDISJTCFBNTJPQPTUTHJUDPNNJU ίϛοτϝοηʔδ
None
w ॻ͖खΑΓಡΈखͷํ͕ଟ͍ͷͰಡΈखୈҰ w ຊจʹαϚϦΛॻ͖ɺ ಛʹ֎෦ͷ 63- ৄࡉࢀরͱ͍͏͍ํ͕͓͢͢Ί w 63-ύʔϚϦϯΫͩͱݴΘΕ͍ͯͨͳʁ͋ Εӕͩ
w ྫ͑ͷӡ༻Ͱ*54͕มΘΔ͜ͱ͕͋Δ ຊจͷ63-هड़ͷΈΛଟ༻͠ͳ͍
w γΣϧͷੈքͰgit logͯ͠શମཤྺ͔Β มߋ࣌ظΛݕग़ͯ͠ɺͦͷ··มߋҙਤΛ ಡΊΔͱศར w গ͠࡞ۀखॱΛม͑Δ͚ͩͰɺྺ࢙ΛḷΔ ํ๏ͷଟ༷ੑΛ࡞ΕΔ w (JU)VC͕མ͍ͪͯͯखݩͰḷΕΔ😇
13ͷEFTDʹςΩετ͞Ε͍ͯΕྑ͍ʁຊʁ
w 1VMM3FRVFTUʹॻ͘͜ͱΛ͋Β͔͡Ίίϛοτϝο ηʔδʹه͢ w ʮίϛοτˠ13࣌ʹॻ͘ʯͰͳ͘ʮίϛοτ࣌ ʹॻ͘ˠ13ܗ͘Β͍ʯ w Ͳ͏ͤॻ͘ͳΒϒϥβͰͳ͖͘ͳΤσΟλͰ w NBTUFS
NBJO QVTI͢Δͱ͖ͱྲྀΕΛม͑ͳ͍ ίϛοτϝοηʔδΛΤσΟλͰॻ͘
HJUDPNNJU࣌ʹΤσΟλฤू͢Δ
13࣌ʹλΠτϧຊจ͕ຒ·ͬͯΔ
มߋҙਤͰTRVBTIΛ͢Δ͖͔ʁ ϦϑΝΫλϦϯά৽ػೳͷ Ճͱີʹ݁ͼ͍͓ͯΓɺΘ ͟Θ͟͢ΔͨΊʹ࣌ؒΛׂ ͘ͷແବͩͱࢥ͍·͢ɻ ϦϑΝΫλϦϯάୈ൛.BSUJO'PXMFS
SBJMTSBJMT *NQSPWF"DUJPO$BCMFSFDPOOFDUJPOSFMJBCJMJUZ
None
独⽴してリバートできる独⽴した変更単位にしておく
pick, squash, or another PR? ࣮աఔͰͷςετՃɺ όάϑΟοΫεখ͞ͳϦ ϑΝΫλϦϯάͰ͔͢ʁ TRVBTI QJDL
ϦϦʔεࠩ͠͠ͷͱ͖ ͳͲಠཱͯ͠Ϧόʔτ͠ ͍ͨίϛοτͰ͔͢ʁ "OPUIFS 13 ͻͱͭͷϒϥϯνʹͻ ͱͭͷίϛοτ͚ͩͰ ͔͢ʁ ػೳͷՃมߋͱ Ͱ͖ΔطଘػೳͷϦ ϑΝΫλϦϯάͰ͔͢ʁ ͠ϨϏϡʔͰͷࢦఠͰͳ ࣗ͘ྗͰؾ͍͍ͮͯͨΒ ίϛοτΛ͚·͔͢ʁ ͻͱͭͷPRʹෳͷػ ೳཁٻʹର͢Δมߋ͕ ࠞ͟Γ·͔͢ʁ No Yes Yes No Yes No Yes Yes No Yes No No Start ಠཱͯ͠ϚʔδͰ͖Δ
w l༗ӹͳใͯ͢ه͢zCZZZBHJ w lͳͥͦͷ13ΛϚʔδ͢Δඞཁ͕͋Δͷ͔ Λॻ͘zCZLBNJQP w l$PTNFUJDDIBOHFͰ͋͑ͯ͋·Γॻ͔ ͳ͍ ࣭ྔͷରൺ zCZBNBUTVEB
3BJMTίϛολʔ͔ΒֶΜͩݪଇ
ߟʹ͍ͭͯͷଓ͖ͪ͜Β IUUQTTQFBLFSEFDLDPNLPJD DPNNJUNFTTBHFXJMMOFWFSEJF IUUQTTQFBLFSEFDLDPNLPJD UEEXJUIHJUMPOHMJWFFOHJOFFSJOH ίϛοτϝοηʔδʹ͍ͭͯ ίϛοτཻʹ͍ͭͯ
ࢥ͍ͬͯΔΑΓɺ ίϛοτཤྺ ͣͬͱͣͬͱ༗༻ɻ IUUQTUXJUUFSDPNNPSJNPSJIPHFTUBUVT
ઃܭ
None
w ࢲͷܦݧ্ɺͲ͜ʹԿ͕ॻ͍ͯ͋Δͷ͔Ѳ͢ Δͷʹɺಈ͘ιʔείʔυ͕࠷ਖ਼֬Ͱ͋Δ w ͳΜͱόά·Ͱॻ͔Ε͍ͯΔʂʂʁ😇 w υΩϡϝϯτΛ㚽Ζʹ͍ͯ͠ΔΘ͚Ͱͳ͘ɺ 8SJUFPOMZதؒՌͰͳ͍ϝϯςφϯε͞ ΕͨཧղิॿͷܰྔͳυΩϡϝϯτ༗༻ ઃܭͱ࣮ෆՄ
w ϞδϡʔϧԽ͕͏·͘͞Ε͍ͯΕɺมߋ ͢ΔͨΊʹཧղ͢ΔՕॴ੍͕ݶ͞ΕΔ w ׂ͕γϯϓϧͰ͋Εɺίʔυϕʔε ͑ΒΕͯγϯϓϧʹͳΔ w ґଘ͕গͳ͚Εςετ༰қੑ͕ߴ·Γɺ ݁Ռͱͯ͠࠶ར༻ੑ͍͢͠ ιʔείʔυʹઃܭ͍॓ͬͯΔ
ྫ͑'BUίϯτϩʔϥʔΛආ͚Δ &⒎PSUUP &OIBODF $PNQMFYPG%PNBJO-PHJD 5BCMF.PEVMF %PNBJO.PEFM ʰ1BUUFSOTPG&OUFSQSJTF"QQMJDBUJPO"SDIJUFDUVSFʱ.BSUJO'PXMFSΑΓ 5SBOTBDUJPO4DSJQU
w ઃܭऀͱ࣮ऀ͕ۀʹͳ͍ͬͯΔ࣌Ͱ ͳ͍ w ʮݟੵΓ։ൃऀͷʯͰ͋Δ w νʔϜ։ൃͰݟੵΓΛߦ͍ͬͯΔ߹ɺԿ ΛͲͷΑ͏ʹ࣮͢Δ͔ઃܭʹ౿ΈࠐΜͩ Λ͢Δ͜ͱͰݟੵΓ্͕͕֬Δ ݟੵΓઃܭߦҝ
w ੈͷதʹແݶͷίʔυ͕͋Γɺ͍·ॻ͍ͯ ͍ΔਓͱಡΜͩ͜ͱͷ͋Δਓͷʹͬͯ ͍ΔίʔυҎ֎Βͳ͍ίʔυ w ৽͘͠ϓϩδΣΫτϝϯόʔΛܴ͑ͨ࣌ͳͲ ʮಡΜͩ͜ͱͷͳ͍ίʔυʯΛԿʹ ʮಡΈղ͖͍͢ঢ়ଶʯʹ͓͚ͯ͠Δ͔ ࡞ͬͨͷ୭͔ʹͱͬͯΒͳ͍ίʔυ
w ·ͣιʔείʔυ࠷ॏཁͷ্ɺɺɺ w ΦϯϘʔσΟϯάͰશମ૾Λ௫ΊΔΑ͏ͳΞʔ ΩςΫνϟਤ w ࣗಈԽ͞Ε͍ͯͳ͍ӡ༻खॱ w 044ؔΘΔਓ͕େ͖͘ͳΔ΄Ͳɺ3&"%.& ͔ΒઌͷυΩϡϝϯτͷ༗༻ੑ͕ߴ·Δ
ิॿυΩϡϝϯτͷՁ
ੑೳ
w αΠτΛ๚Εͯඵͨ͞ΕͨΒؼ͕ ૿͑Δͱ͍͏ݱ࣮ w ͕ࣗϢʔβʔͱͯͬͯ͠ݟͨΒͲ͏ײ ͡Δ͔ʁ ϢʔβʔࢹʹཱͬͯΈΑ͏ w ίϯτϩʔϥʔɺϏϡʔͰॏ͍ॲཧΛͯ͠
͍͚ͳ͍ 8FCͷجຊ
w ສ݅ͷϨίʔυΛ࣋ͭςʔϒϧͷݕࡧΛ Ͳ͏ଊ͑Δ͔ʁ σʔλྔͷܯࠂͷ͍ w ඞཁͰ͋Εॏ͍ΫΤϦʹͳΒͳ͍ཁ݅ʹௐ ͢Δ ࣄલʹݕࡧൣғΛߜΕΔΑ͏ʹ͢Δͱ͔
w .2 FH424 ͳͲͷதؒʹΑΔඇಉظʹ ͯ͠όονॲཧΛߦ͏ͳͲΛݕ౼͢Δ ಉظॲཧͱඇಉظॲཧ
w αʔϏεΞϓϦέʔγϣϯͱΠϯϑϥ͕Ұମʹ ͳͬͯಈ͘ w ϒϥβɺ$%/ɺ8FCαʔόʔɺΞϓϦέʔγϣϯ αʔόʔɺσʔλϕʔεͷલஈͷํͰॲཧΛฦͤ ɺͦΕ͚ͩεϧʔϓοτ্͕͕Γશମͷෛՙ͕ݮΔ w ӬଓσʔλΛ࣋ͭσʔλϕʔεΑΓӬଓσʔλΛ࣋ ͨͳ͍8FCͷํ͕εέʔϧΞτ͍͢͠
ࣗͷΠϯϑϥߏΛΔ
w ଠฏ༸ͷ͜͏ଆʹϦιʔεΛऔΓʹ͍ͬ ͯॏ͍ͱ͔൵͍͠ͷͰɺϦʔδϣϯΛҙࣝ ͠Α͏ w ॏ͍9.-σʔλΛ)551ͷϦΫΤε τɺϨεϙϯεͷಉظͪΛͯ͠)FSPLV λΠϜΞτΤϥʔ Կଠฏ༸Λԣஅ͢Δͳ
None
w ಈ͘ίʔυඞཁ݅Ͱ͋Γे݅Ͱͳ͍ w αοͱಈ͘ίʔυ·Ͱ͍࣋ͬͯ͘ͷ3BJMTͷ Ғେ͕ͩ͞ɺΠϯσοΫε/ ͳͲͷߟྀ࿙ ΕɺͦͦίϯτϩʔϥʔͰॏ͍ಉظॲཧ Λ͠ͳ͍ͱ͍͏جૅॏཁ w Πϯϑϥߏͱεέʔϧํ๏Λ͓ͬͯ͘
ඵͬͨΒ͍8FCͷੈք
ճؼ
w ςετ͕ͳ͍ίʔυϨΨγʔίʔυCZ ʰϨΨγʔίʔυվળΨΠυʱ w ςετίʔυ͕ͳ͍044৴པͰ͖Δ͔ʁ CZUXBEB w ςετίʔυ͕ͳ͍Ҋ݅ ུ
CZฐࣾγεςϜϚωδϝϯτ ࣗಈԽ͞Εͨςετ͕ͨΓલͷ࣌
w ϓϩμΫτͷςετίʔυͨΓલͷ࣌ w ͞Βʹఆܗ࡞ۀɺӡ༻ϛεͷରࡦɺίʔυϨ ϏϡʔͷࢦఠͳͲɺςετίʔυʹམͱ͠ࠐΉ w ಉؙ͡ʹͨΒͳ͍Α͏ʹ͢Δ w 3VCP$PQͰTQFDQSPKFDU@TQFDSCΛ༻ҙ͠ ͓ͯΓɺ࣮Ҋ݅ʹྲྀ༻Ͱ͖Δߟ͑ํ
ϓϩδΣΫτΛςετ͢Δ
w ςετίʔυͱͦͷ࣮ߦ࣌ؒΞϓϦέʔ γϣϯͷՃͱͱʹྦྷੵ͞Εଓ͚Δ w ςετ࣮ߦͨͩͰͳ͘ɺςετ͕ॏ ͳ͍ͬͯ͘ͱෆ҆ఆͳςετɺεϩʔςε τͱ͍͏ͱ໘͍ͯ͘͠ ࣗಈςετͷ࣮ߦίετ
w ࠷ղܾϚγϯࢿݯͷۚͷؙ ۚ w ߴԽͷجຊฒྻԽͱݸผνϡʔχϯά w rspec -p --profile
ͳͲͰϓϩϑΝ ΠϦϯάΛͱΓɺ͍ςετ͔ΒςίೖΕ ΦϦίϯνϟʔτతͳ εϩʔςετܐࣄ σΧ
w %#ͷΫϦʔχϯάઓུͰ͕ʹͳͬͨࣄ ͋Γ w %BUBCBTF$MFBOFSͰ͋Ε DatabaseCleaner.strategyΛtruncation deletion truncationͲΕ͕࠷ద͔ܭଌ͢Δ w
BNBUTVEBEBUBCBTF@SFXJOEFSΛݕ౼͢Δ %#ͷΫϦʔχϯάઓུ
w ྫ͑ඵ͔͔Δεϩʔςετ͕ݸ ͋ΔͱɺͦΕ͚ͩͰ͔͔Δ w ͭ·ΓྻͩͱͰͷ$*ͷ্ݶճҎ ԼʹͳΔ w ͢ΔγεςϜਓ͕૿͑ɺ13͕૿͑ͯ ͍͘ͷͰ$*αʔϏεͷཧվΊͯॏཁ
ඵ
w γεςϜͷมߋʹର͢Δ༰қੑ w γεςϜτϥϯβΫγϣϯͷ༰қੑ ຊઅͰऔΓѻ͏
w ྖҬͷੈք؍ΛγεςϜʹөͤ͞Δ w ྑ໊͍͚γεςϜղੳ ͋Δ͍Ϗδωε ͷٯղੳ ͷ࠷ߴͷख͕͔Γ ຊ w
ଧͪ߹ΘͤͰ͑ΒΕͨγεςϜͷมߋཁ ݅Λɺ͍͔ʹޮతʹḷΔ͜ͱ͕Ͱ͖Δ͔ʁ FHͦΕͬΆ͍༻ޠΛHSFQ͢Δ ໊લʹΑΔτϨʔαϏϦςΟ
w ҙຯͱͯ͠ॏෳ͍ͯͨ͠ίʔυͷҰ෦ͷର Ԡ࿙ΕʹΑΓΠϯγσϯτ͕ൃੜͨ͠Λ ͍֮͑ͯ·͔͢ʁ w ͻͱͭͷมߋཁٻʹରͯ͠ɺมߋՕॴ͕গ ͳ͚Εগͳ͍΄ͲଛইᎭ࠲Λ͑ΒΕ Δ %POU3FQFBU:PVSTFMG
w ͱΓ͋͑ͣίϐϖͰ࡞͓͍ͬͯͯɺ͋ͱͰϦ ϑΝΫλϦϯά͢Εྑ͍ͩΖ͏👿 w NBTUFS NBJO ʹϚʔδ͞ΕͨΒɺ ϝϯςφϯε͞Εͦ͏ʹͳ͍ͩΖ͏👼 w ͍·ٸ͍Ͱ͍Δ͔ΒɺͤΊͯίϝϯτΛॻ
͖ͯ͠ޙͰ͔ΔΑ͏ʹ͓ͯ͜͠͏👶 ఱͱѱຐͷڱؒͷχϯήϯ
w ίʔυͰදݱͰ͖ͳ͍ϙΠϯτίϝϯτΛ͢ w ಛʹʮԿͷͨΊͷίʔυʯ͔هड़͕ඞཁͩͱײͨ͡ ΒιʔείʔυίϝϯτΛ੯͠·ͳ͍ w Ϧʔμϒϧίʔυશষͷ͏ͪষΛίϝϯτʹ අ͍ͯ͠Δ ॏཁ͞۩߹ʂ
w 50%0'*9.&Λॻ͘ͱbin/rails notesͰ ݟ͔ͭΔ ιʔείʔυίϝϯτ
w ྫ֎ϋϯυϦϯάγεςϜڥքʹϩάΛࠐ Ήͱ͍͏ͷϩΪϯάͷఆੴ w *%Λݩʹϩά͔Β%#ͷؔ࿈ϓϩάϥϜͷಈ͖ Λḷͬͯཉ͍͠ใ͕ݟ͔ͭΕྑ͍͚ΕͲ w ΄͍͠ϩά͍͍ͨͯϩά͞Ε͍ͯͳ͍ CZNJXB ͍߹Θͤௐࠪɺোௐࠪ
IUUQTUXJUUFSDPNNJXBTUBUVT
w ͕ى͖ͨ࣌ɺ·ͣใΛूΊΔϩάΛ ࠐΜΉ͜ͱ͔Βελʔτͱ͍͏͜ͱ͋Δ w ͕ͦͦى͖ΔՕॴ͕͔͍ͬͯΕ ɺΛ༧ظͯ͠ରԠ͓͚ͯ͠Δ w ઃܭ ϦϑΝΫλϦϯά ͱಉ͘͡ɺϩΪϯά
ʹ͍ͭͯʹԠͯ͡վળΛ͍͚ͯ͠Δͷ :"(/* %3: ͷ๏ଇ
ධՁ
ඞཁͳͷ͔Βॱ൪ʹ IUUQTXXXNPVOUBJOHPBUTPGUXBSFDPNCMPHBSFPGGFBUVSFTSFBMMZSBSFMZPSOFWFSVTFE
wʷʮ͍ʯͱ͔ʮ͍҆ʯͱ͔ʜ w˓ʮܧଓʯతʹʮՁʯΛಧ͚Δ ΞδϟΠϧιϑτΣΞ։ൃ QJWPU QJWPU JGͷੈք QJWPU ܁Γฦ͞Εͨ બ͕ө͞ ΕͨγεςϜ
ͨΓ͚ͩ Ͱͳ͘ϋζϨ ؚ·ΕΔ σʔλʹج͖ͮબͱҙࢥܾఆΛߦ͏
IUUQBHJMFFTNDPKQQJWPUBMUSBDLFSIFMQHFUUJOHTUBSUFE@KB ཉ͍͠ংྻೖΕସΘΔ
w ,(*Λୡ͢ΔͨΊͷ,1*্Λૂͬͨࢪࡦػ ೳͰ͋ΕɺׂΓͱܭଌΛηοτͰߟ͑ΒΕΔ w ͏·͘ߦ͔ͳ͚Ε͍͔ࠩͨ͠͠͠Εͳ͍ w ϞχλϦϯάج൫ʹର͢Δཁ݅༗ແΛ֬ೝͯ͠ ͓͘ͱྑ͍ ݟੵΓ͕ඞཁͳͱ͖͓Εͳ͘ ʮ͜͏͍ͬͨػೳ͕ཉ͍͠ʯͷཪଆΛΔ
w શ෦࡞ͬͯΈΑ͏ɺͱΓ͋͑ͣ࡞ͬͯΈ Α͏ͱ͍͏ͷɺٙͬͯΈΔͱྑ͍ w ։ൃϦιʔε༗ݶͰ͋ΓɺՁͷߴ͍ ػೳʹߜͬͨϝϯςφϯεΛࢦ͢ w ػೳͷ͠ࢉ͚ͩͰͳ͘ɺͱ͖ʹෆཁ ͳػೳͷҾ͖ࢉΛߟ͑ͯΈΔ ࣮͕ͳ͚Ε੍ݮΔ
อ࣋
w णαʔϏεʹͳΕͳΔ΄ͲϨίʔυྔӈݞ্ ͕ΓͰ૿Ճ͢Δ w Ϩίʔυͷ૿Ճʹ͍ɺεϩʔΫΤϦʹసͯ͡͠· ͏͜ͱ͕͋Δ w ඇ߃ٱอ͔࣋߃ٱอ͔࣋σʔλઃܭͷ伴ʹͳΔ w Ӭଓ͖͢σʔλ͔ɺফڈՄೳͳσʔλ͔ʁফڈ͢
͖σʔλ͔ʁ ୀձऀσʔλͳͲ σʔλͷϥΠϑαΠΫϧ
w *OEFY4IPUHVOͰෆཁͳΠϯσοΫεΛ ݕग़ͯ͠আ͢Δ ߋ৽ܥͷվળʹܨ͕Δ FHHJUIVCDPNTVFJOEFY@TIPUHVO w "3TFTTJPOTUPSFΛ͍ͬͯΔΑ͏ͳ߹ TFTTJPOTϨίʔυΛΫϦʔχϯά͠ͳ͍ͱΰϛ σʔλ͕݁ߏͳσΟεΫྔΛΊ͍ͯΔ͔
bin/rails db:sessions:trimΛΕͣʹ σʔλΫϦʔχϯά
w আͰ͖Δσʔλ͕͋Εɺআ͢Δ͜ͱͰσʔλྔ ݕࡧ ྔ ΛݮΒ͢ w ݕࡧରͷΛߜΔ͜ͱͰɺݕࡧྔΛݮΒͤΔΑ͏Ͱ͋Ε ɺཁ݅ௐΛࢼΈΔ w ཁ݅ʹΑͬͯϦΞϧλΠϜੑ͕ඞཁͳ͚ΕɺूܭࡁΈͷ
αϚϦʔςʔϒϧΛ༻ҙ͢Δ w ͦͦͷ42-ʹ͕͋Εվળɺຊ࣭తʹ42-͕దͯ͠ ͍ͳͦ͞͏Ͱ͋Εɺ3%#Ҏ֎ͷΠϯϑϥཁ݅Λݕ౼͢Δ σʔλ૿ՃʹΑΔεϩʔΫΤϦ
w 3%#.4ʹର͢ΔධՁϞχλϦϯά͕ඞཁͳ߹ ɺϦʔυϨϓϦΧΛ༻ҙ͓ͯ͘͠ͳͲݕ౼ͯ͠ ͓͘ͱྑ͍ w ΦϯϥΠϯͰܨ͕͍ͬͯΔຊ൪σʔλʹॏ͍ूܭ 42-Λൃߦ͢ΔͱɺϢʔβʔӨڹͰ൵͍͜͠ͱʹ ͳΓ͔Ͷͳ͍ w ਨׂʹͳΔͱ%#σʔλઃܭ͕ඞཁ
ׂѪ ෳσʔλϕʔε ϨϓϦΧηοτ
w ςʔϒϧϨίʔυෳͷσʔλϕʔεʹࢄ͢Δख๏ w ςʔϒϧؒͷJOIN͕͘͠ͳΓɺσʔλΛϦϯΫ͢Δͨ ΊͷઃܭɺϝϯςφϯείετΛֻ͚Δ΄ͲͷεέʔϥϏ ϦςΟ֬อ͕ຊʹඞཁͳͷ͔Αۛ͘ຯͨ͠ํ͕ྑ͍ w ʰෳ%#$BTVBM5BMLTʱͰΑ͘ฉ͍ͨ͜ͱʮෳ%#͢ Δͳʯͩͬͨɻ୯Ұ%#ͰΘͳ͍ྗ͕ٻΊΒΕΔ w
ηΩϡϦςΟ্ͷཧ༝Ͱ%#Λ͚ͳ͚ΕͳΒͳ͍ͱ͍͏ େมͦ͏ͩͬͨ ෳσʔλϕʔε γϟʔσΟϯά
w σʔλϕʔεઃܭɺ&3%ͷεΩʔϚઃܭ Ҏ֎ʹͲͷΑ͏ͳσʔλ͕ͲΕ͘Β͍૿ ͦ͠͏͔σʔλઃܭͱݟཱͯʹ͍ͭͯϓϥ χϯά͓ͯ͘͠ͱྑ͍ w ϩʔΧϧͷগྔσʔλͱຊ൪ڥͰ૿͠ ͍ͯ͘σʔλͷҧ͍Λ಄ͷཪʹඳ͍͓ͯ͘ εΩʔϚઃܭॏཁɺσʔλઃܭॏཁ
ڞ
3BJMTόʔδϣϯ্͕͕ ΔͱɺผͷϑϨʔϜϫʔΫ ʹͳͬͯେม पลͷਓʑ͕มΘΔΘ͚ Ͱͳ͍ͷͰਓ୳͔͠Β Βͳͯ͘͢Ή !LPJD RVFTUJPOFS 3VCZ#VTJOFTT6TFST$POGʹͯ
w 3BJMT୯ͳΔϑϨʔϜϫʔΫͱ͍͏͚ͩͰ ͳ͘ɺͦΕΛத৺ͱͨ͠ίϛϡχςΟͰ ͋Δ w نʹଇ࣮ͬͨΛ͢Δ͜ͱͰɺ৽͘͠ϓ ϩδΣΫτʹೖΔ࣌ɺܴ͑Δ࣌ɺϨʔϧͰ ܨ͕ͬͨͱײ͡ΒΕΔੈքʹ͚ۙͮΒΕΔ 3BJMTͱ͍͏ڞ௨ج൫
IUUQKQSVCZJTUOFU3VCZ,BJHJ DQMVHJOQMVHJOBUUBDI@EPXOMPBEQ1SPHSBNpMF@OBNFUIF@JTMBOE@PG@SVCZ@KQEG 3VCZ,BJHJ %BWF5IPNBT
l IUUQTXXXBUNBSLJUDPKQOFXTSBJMTIUNM There are few Japanese contributors of Rails in
2009 IUUQTUXJUUFSDPNZBIPOEBTUBUVT ˠ ຊͷ3BJMT೦ɻຊ Ͱ3BJMT͕ΘΕͯͳ͍ͱ ͍͏͜ͱͳ͍ͱࢥ͏͕ɺ ͦΕʹͯ͠։ൃऀ͕গͳ ͍ɻࢲ͕ݟͨͱ͜Ζ ਓதͰຊਓΒ͖͠ਓ ਓɻ
w ۙॴʹ͍Δਓͷ(FNΛ͑ͷ๏ଇ w ࠔͬͨͱ͖։ൃऀʹҬίϛϡχςΟͳͲͰ ͤΔ͔ w ΛΑΓཧ͘͢͠ͳΔ w ͲΜͳਓ͕࡞ͬͨ(FN͔
ΫηͳͲ ͔Δ w 3BJMTपลͷਓ͕पΓʹ૿͑Δޮೳ 044ਓ͕࡞͍ͬͯΔ
044ίϛϡχςΟͱͷڞੜΛࢧԉ
େ͖ͳࡿΛ͛Δ υΩϡϝϯτͷεϖϧϛεͷमਖ਼Λ࢝Ίͨྡͷ ਓ͕ɺ࣍ͷૉΒ͍͠ػೳΛ࣮͢Δ͜ͱʹͳ Δ͔Ͳ͏͔୭ʹΘ͔Γ·ͤΜɻ͔͠͠ɺ͋ ͳ͕ͨඍসΜͰɺͲΜͳখ͞ͳߩݙʹײँΛ ࣔ͢͜ͱͰɺϞνϕʔγϣϯΛߴΊͤ͞ɺͦͷ Մೳੑੜ·ΕΔ͔͠Ε·ͤΜɻ 5IF3BJMT%PDUSJOF ຊޠ༁ IUUQTRJJUBDPNUBLBIBTIJNJUFNTE⒎FFDCEBD&""&%&""&&&#"&&#QVTIVQBCJHUFOU
w ୭͔ʹͱͬͯʹཱͭͷίʔυͱݶΒ ͳ͍ w ͳΜΒ͔ͷϥΠϒϥϦͷΈ߹ΘͤͰ౿Μ ͩόάͷϨϙʔτɺϫʔΫΞϥϯυͷ ղܾࡦͰهࣄΛॻ͍͓͚ͯɺಉ͡ ʹૺ۰ͨ͠ਓͷݕࡧώοτͰཱ͔ͭ όουϊϋͷڞ༗
୭͔ʹͱͬͯͷ ࣗʹͱͬͯͷ͔ ͠ΕͣɺͦͷٯવΓ զʑϨʔϧͰܨ͕͍ͬͯΔ
ײ
w ະિ༗ͷΤϯδχΞืू࣌ w ϏδωεΛཱͤ͞ΔϓϩμΫτॏཁͩ ͕ɺϓϩμΫτΛϝϯςφϯεͰ͖Δ։ൃ ऀ͕͍ͳ͍ͱαʔϏεΛҡ࣋Ͱ͖ͳ͍ w ָ͘͠ͳ͍ϨΨγʔٕज़͚ͩͩͱɺح৺ Ԣͳ։ൃऀͷؔ৺Λอͭͷ͍͠ ։ൃऀͷ৺ٕମͷόϥϯεऔΓ
w ʮΊΜͲ͏ͩͳʯͱ͍͏ײࣗମॏཁ w γεςϜͷ։ൃ͚ͩͰͳ͘ɺϓϩδΣΫτࣗମͷ ࣗಈԽΛ͢Δ w $*-JOUFSͱ͍͏πʔϧʹݶΒͣɺఆܕ࡞ۀʹͳΓ ͦ͏ͳͷɺΤϯδχΞϦϯάͰղܾͰ͖ͳ͍͔ ݕ౼ͯ͠ΈΔ w
࣌ʹଵଦʹͳΔͨΊʹ੯͠·ͳ͍ F9USFNF-B[JOFTT
w ϩʔϯνޙΛܴ͑ΔαʔϏε͕͋Δ3BJMT 3VCZ͔3BJMT3VCZͷͲͪΒ͕γϡοͱ ϝϯςφϯε͞Εͯͯɺָͦ͠͏ʁ w OQNཧ͞Ε͓ͯΒͣɺ&4Ҏ߱ͷߏจ͕͑ͳ͍ ϨΨγʔϑϩϯτΤϯυΞϓϦʹະདྷΛݟΕͦ͏ʁ w ҰํͰͷલͷΛɺٿ্Ͱ࠷্खʹղܾͰ ͖ΔͷࣗͨͪͰ͠ΐ͏
खΛಈ͔͔͢Ͳ͏͔ 6QHSBEFNVTUHPPO
ϓϩμΫτͷϝϯςφϏϦ ςΟ্ͱɺΤϯδχΞͱ ͯ͠ಇ͘Α͏ʹͳ͔ͬͯΒ ͷϨϕϧΞοϓंͷ྆ྠ
w 3BJMTΞϓϦέʔγϣϯͷηΩϡϦςΟΞοϓ σʔτΛͰ͖Δঢ়ଶͮ͘ΓγεςϜͷ݈߁ Λҡ࣋͢ΔॏཁͳϑΝΫλʔ w ΞϓϦέʔγϣϯߏஙٕज़ͷϞμϯԽɺγ εςϜʹؔΘΔ։ൃऀͷΩϟϦΞͷ݈߁Λҡ ࣋͢ΔॏཁͳϑΝΫλʔ ৺ͷ݈߁ʹܨ͕Δ ϞμϯԽͷॏཁੑ
ࣗΒͷٕज़ʹؔ৺Λ࣋ͭ͜ͱ ͋ͳͨͷࣄʹ͍ͭͯߟ͑Δ͜ͱʂ ܅ֶͿ͜ͱ͕৺͔Β͖ͩ ܅ιϑτΣΞͷ͜ͱΛେʹࢥ͍ͬͯΔ ΞδϟΠϧαϜϥΠ +POBUIBO3BTNVTTPO ୡਓϓϩάϥϚʔ %BWJE5IPNBT "OESFX)VOU ָ͠͞ʹϏδωεՁ͕͋Δ
म͟͞ΕɺݱΕͣ ืूத ຊฤͷ༰ΛҰॹʹղܾ͍ͯ͜͠͏ͱ͍͏ lத్৽ଔ࠾༻zlϏδωεύʔτφʔz ຊؾͰͨͷΉR
!LBLVUBOJTBZT ΅͘ΤΫετϦʔϜϓϩάϥϛϯάਥͳͷͰɺ ༏लͳϓϩάϥϚʔΛ૿͍ͨ͠ͱࢥ͍ͬͯ·͢ IUUQTTQFBLFSEFDLDPNLBLVUBOJLBJHJPOSBJMT TMJEF