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
メドピアの輪読会
Search
motsat
January 23, 2018
Programming
1.4k
2
Share
メドピアの輪読会
2018/1/18 メドピア株式会社 × 株式会社みんなのウェディング合同勉強会、「サービスを Ruby / Rails で成長させるためにやったこと」の発表資料です。
motsat
January 23, 2018
More Decks by motsat
See All by motsat
「SmartHR基本機能」の溜まっていく技術課題への取り組み
motsat
0
1.7k
Elasticsearchで多言語検索対応してみた話.pdf
motsat
2
1.5k
Other Decks in Programming
See All in Programming
それはエンジニアリングの糧である:AI開発のためにAIのOSSを開発する現場より / It serves as fuel for engineering: insights from the field of developing open-source AI for AI development.
nrslib
1
840
Mastering Event Sourcing: Your Parents Holidayed in Yugoslavia
super_marek
0
150
CDK Deployのための ”反響定位”
watany
4
700
TiDBのアーキテクチャから学ぶ分散システム入門 〜MySQL互換のNewSQLは何を解決するのか〜 / tidb-architecture-study
dznbk
1
160
安いハードウェアでVulkan
fadis
1
960
UIの境界線をデザインする | React Tokyo #15 メイントーク
sasagar
1
280
実践CRDT
tamadeveloper
0
460
「話せることがない」を乗り越える 〜日常業務から登壇テーマをつくる思考法〜
shoheimitani
4
740
AWS re:Invent 2025の少し振り返り + DevOps AgentとBacklogを連携させてみた
satoshi256kbyte
3
160
飯MCP
yusukebe
0
500
ルールルルルルRubyの中身の予備知識 ── RubyKaigiの前に予習しなイカ?
ydah
1
150
Coding as Prompting Since 2025
ragingwind
0
820
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Mobile First: as difficult as doing things right
swwweet
225
10k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
120
KATA
mclloyd
PRO
35
15k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
160
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
340
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.8k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
140
Transcript
αʔϏεΛ Ruby / Rails Ͱ ͤ͞ΔͨΊʹͬͨ͜ͱ
ࣗݾհ ɹɾ໊લ ɹɹࠤ౻ ݩل ɹɾϝυϐΞྺ ɹɹ 2017/9 ʙ WebΤϯδχΞɹɹ ɹɹʢ࠷ۙElasticsearchɺAWS
SNSͰPush௨पΓʣ ɹɾͦͷલ ɹɹ- Ruby on Rails/ C++ (ιʔγϟϧήʔϜ) ɹɹ- PHP Maple/ΦϨΦϨ (ձһ੍ಈըܥαʔϏε)
ϝυϐΞͷྠಡձ
લஔ͖ ϝυϐΞͷݱঢ়
ҩࢣઐ༻αΠτʮMedPeerʯ
Ruby on Rails (৽ڥ)ͱ PHP on ಠࣗϑϨʔϜϫʔΫ(چڥ) ͕ڞଘ
ฐࣾϒϩά: ɹϨΨγʔͳಠࣗϑϨʔϜϫʔΫ͔Β٫ͯ͠RailsঃʑʹҠߦ ͍ͯ͠Δ http://tech.medpeer.co.jp/entry/2017/01/31/004227
PHP͔ΒRuby on Railsͷ Ҡߦελʔτ1.5લ
RubyΤϯδχΞ : 10ਓத2ਓ
Ҡߦͷҝʹ ɾPHP͍ͬͯΔਓ͕RubyΛ࢝ΊͨΓ ɾRubyະܦݧऀ͕ೖͬͨΓʢܦݧऀೖͬͨΓʣ
Ruby/Railsͷܦݧগͳ͍ਓ͔Βଟ͍ਓ·Ͱ ෯͍ҝɺRuby/RailsΛϝΠϯʹͷҝ ͷऔΓΈΛߦ͍ͬͯ·͢ɻ
ԬRubyձٞ: ɹϝυϐΞͷશྗRailsԽͷऔΓΈࡽ͠·͢! ( by CTO fukumura ) https://speakerdeck.com/fukumura/metohiafalsequan-li- railshua-falsequ-rizu-mishai-simasu
ओͳऔΓΈ ɾίʔυϨϏϡʔʢRailsܦݧଟ͍ਓͷϨϏϡʔʣ ɹ2017ʹ࢝ΊͨϝυϐΞΤϯδχΞνʔϜͷ৽͍͠औΓΈʹ͍ͭͯ ɹhttp://tech.medpeer.co.jp/entry/2017/12/27/180000 ɾ։ൃ߹॓ ɹ։ൃ߹॓!?ͦΕͳΒϖϯγϣϯͰ͠ΐ!! ʙ܈അݝΈͳ͔ΈொͷϝυϐΞ։ൃ߹॓ࢽʙ ɹ http://tech.medpeer.co.jp/entry/2017/12/06/110000
ओͳऔΓΈ ɾKPTͰؾʹͳΔϨϏϡʔΛৼΓฦΔ ɾಡॻձʢྠಡձʣ
ྠಡձ ɾͲ͏͍ͬͯΔ͔ ɾྑ͔ͬͨ/ѱ͔ͬͨࣄ
ྠಡձͱ ਓʑ͕ू·ͬͯɺಉ͡ڭՊॻͳͲͷຊΛಡΈɺͦͷ ༰ʹ͍ͭͯҙݟΛަΘ͢͜ͱΛҙຯ͢Δޠ
Ұਓಡॻͷྑ͍ॴ ɾ͖ͳ࣌ʹಡΊΔ ɾ͖ͳॴͰಡΊΔ ɾ͖ͳϖʔεͰಡΊΔʢௐͨΓɺࢼ ͨ͠Γ ɾͬͯΔॴඈͤΔ
ྠಡձ > Ұਓͷಡॻ ͱ͍͏Θ͚Ͱͳ͍
ྠಡձͱ ਓʑ͕ू·ͬͯɺಉ͡ڭՊॻͳͲͷຊΛಡΈɺͦ ͷ༰ʹ͍ͭͯҙݟΛަΘ͢͜ͱΛҙຯ͢Δޠ (weblioΑΓ) →ྠಡձͷதͰɺಛʹ͜ͷதͰྑ͔ͬͨ෦ͷ
ϝυϐΞͰͷΓํ ຊ͝ͱʹΓํม͑ͨΓ͍ͯ͠Δ͕ɺ ɾ1ਓ1߲ɺԻಡ͢Δ ɾಡΜͩॴͷ࣭ٞʢແ͍࣌͋Δʣ ɾ൪੍Ͱൃදऀ͕ઌʹ༰·ͱΊͨΓ ɹˠΓํ·ͩࡧத
༷ࢠ
ϝυϐΞͷΑ͏ʹɺ ɾRuby/Railsͷܦݧ →·ͪ·ͪ ɾϝυϐΞྺ → ·ͪ·ͪ ɾಉ͡ιʔείʔυʢϦϙδτϦʣ৮Δࣄ͕ଟ͍ ͱ͍͏ঢ়گͰɺ ྠಡձܗ͕ࣜྑ͔ͬͨͳͱࢥ͏ࣄྫͷհ
ྫ1 RailsGuides https://railsguides.jp/ ʢຊͱݴ͏͔αΠτͰ͕͢ʣ
ͳΜͰ͜ͷຊʹ͔ͨ͠ ɾRailsͷػೳΛମܥతʹΘ͔Γ͘͢հ͍ͯͯ͠ɺ ܦݧ(গ)ͳ͍ਓʹͱ͖͍ͬͭ͢
͜ͷຊͷྠಡձͰ͋ͬͨٞ
Action Controller ͷ֓ཁ (8.ϑΟϧλ) ࣭ٞ ʮControllerͷfillterɺonly͘͠exceptͰࢦఆ͢Δ ߹ɺͲͪΒΛ͏ʁʯ ʮͱΓ͋͑ͣ҆શଆʹΕΔํ͕ྑͦ͞͏ʯ ɹ
ɾܦݧগͳ͍ਓ ɹػೳ + ͏ஈ֊ʹͳͬͯ໎͏෦ΛઌʹҙࣝͰ͖ ͨ ɾͦΕҎ֎ͷਓ ɹνʔϜͰͲ͏͢Δ͔ͷҙࣝΛ߹ΘͤΔ͜ͱ͕ Ͱ͖ͨ ɹ
ྫ2 Everyday Rails - RSpec ʹΑΔRailsςετೖ
ͳΜͰ͜ͷຊʹ͔ͨ͠ ςετΛRSpecͰॻ͍͍͕ͯͨɺ ɾςετͷཻ͕ҧͬͨΓ ɾਖ਼͍͠ॻ͖ํͰ͖ͯΔ͔ո͍͠ʢଞͷΛਅࣅ͍ͯΔ͚ͩʁʣ ͱ͍͏ͷղফͷҝ
͜ͷຊͷྠಡձͰ͋ͬͨٞ
7.ίϯτϩʔϥεϖοΫͷΫϦʔϯΞοϓ ࣭ٞ ʮShared Examples ɺॏෳഉআͰ͖ͯྑ͍ʯ ʮॲཧ͕ݟ͑ʹ͘͘ͳΔ໘͋ΔɻݟͮΒ͘ͳΒͳ͍͔ߟ͑ ͯͬͨํ͕ྑ͍ʯ
ɾܦݧগͳ͍ਓ ɹػೳ+ܦݧऀͷͭΒΈΛઌʹΕͨ ɾͦΕҎ֎ͷਓ ɹνʔϜͰͲ͏͢Δ͔ɺҙࣝ߹ΘͤͰ͖ͨ
?.??(Ͳͷষ͔ͩͬͨΕ·ͨ͠ʣ ࣭ٞ ʮRakeλεΫςετॻ͘ʁʯ ʮmodel()ʹϩδοΫҠৡͯͦ͠ΕΛݺͼग़͚ͩ͢ʹ ͍ͨ͠ʯ ʮͰtypoνΣοΫ͚ͩͷҝͰςετ͋ͬͨ΄͏͕҆ ৺ʯ
ܦݧଟ͍/গͳ͍ݶΒͣɺνʔϜͰ ͳΜͱͳ͘;Θͬͱ͍ͯͨ͠ॴ͕߹ ͑ͨɻ·ͨɺͦͷߟ͑Λڞ༗Ͱ͖ͨɻ
ྫ3ʣΦϒδΣΫτࢦઃܭ ࣮ફΨΠυͷ߹
ͳΜͰ͜ͷຊʹ͔ͨ͠ ɾRailsҠߦ͕গ͠ਐΈɺΦϒδΣΫτࢦ ઃܭతͳ෦Ͱ͕ݟ͖͑ͯͨͨΊ
͜ͷຊͷྠಡձͰ͋ͬͨٞ
ୈ̑ষɹμοΫλΠϐϯάͰίετΛݮ͢ Δ ࣭ٞ ʮμοΫλΠϐϯάා͍ɻJavaͳΒΠϯλʔϑΣʔεͱ͔͋Δͷʹʯ ɹɹɹɹɹ
ɾPHP/Ruby ܦݧऀ ɹ੩తܕ͚ݴޠͷܦݧऀͱײ֮ͷࠩΛײ͡Εͨ ɾJava ܦݧऀ ɹಉ͡ΦϒδΣΫτࢦͰɺ࣮ํ๏ʹ͔ͳΓࠩ ͕͋Δ͜ͱ͕Θ͔ͬͨ
4.5 σϝςϧͷ๏ଇ σϝςϧͷ๏ଇɺΦϒδΣΫτΛૄ݁߹ʹ͢Δ ͨΊͷنͷू·Γɻ͜ͷதͰҕৡग़ͯ͘Δɻ
4.5 σϝςϧͷ๏ଇ ࣭ٞ ʮҕৡɺActiveRecordͰΔͳΒdelegate͕͋Δʯ ʮdelegateɺϧʔϓͰN+1͕ൃੜ͢ΔՕॴΛݟམͱ͠ ͘͢ͳΔ͜ͱʯ
ຊRubyϝΠϯͳͷͰRailsActiveRecordʹ͍ͭͯ ৮Ε͍ͯͳ͍ ͕ɺ RailsΞϓϦ։ൃϝϯόʔͰͷಡॻձͩͬͨͷͰݱͰ ͏࣌ͷ͍ํؾΛ͚ͭΔϙΠϯτΛઌʹ͢͜ͱ͕Ͱ ͖ͨɻ
ୈ6ষ ܧঝʹΑͬͯৼΔ͍Λ֫ಘ͢Δ ࣭ٞ ʮܧঝͰඍົͳڞ௨Խ͕͞ΕͯͭΒ͍ॴ͕hogeॲཧʹ͋ Δʯ ʮڞ௨Խͨͩιʔείʔυ͕ಉ͔ͩ͡Βͬͯͬͯ͘ͱޙ ͰٯʹͭΒ͘ͳΔʯ
ಉ͡ιʔείʔυΛ৮Δϝϯόʔ͔Βɺ ۩ମతͳྫͷڞ༗ͱະདྷͷͭΒΈ͙͖͔͚͕ͬ Ͱ͖ͨɻ
͜Μͳײ͡ͰɺྠಡձΛ͢Δ ࣄͰຊͷ༰Ҏ֎ʹ͍Ζ͍Ζ ಘΔͷ͕͋Γ·ͨ͠
ྠಡձΛଓ͚ΒΕΔڥ
ɾ࣌ؒ ɹۀ࣌ؒɻਫ༵10:30ʙ11:30 ɹۀޙேૣ͗͢ΔͱɺͨͿΜࢀՃऀݮΔɻ ɹશһͷͨΊͷऔΓΈͰͳ͘ͳͬͯ͠·͏ɻ
ɾຊ ɹձࣾܦඅɻ1ਓ1ɺిࢠॻ੶Ͱ࣮ͰOKɻ ɹܦඅͰམͱͤͳ͍ͱΈΜͳͰಉ͡ຊΛݟΔͱ͍͏ ϋʔυϧ্͕Δɻ
ձࣾͷཧղ͕͋ͬͯͦ͜ ಛʹ ɾۀ࣌ؒʹΔ͜ͱ ຊಡΉͷ͕ۀͳͷʁͱɺΤϯδχΞҎ֎͕ී௨ʹٙΛײ͡Δؾ͕͢Δɻ ɹˠʮಡॻձ/ྠಡձʯ໊ͬͯલ͕ۀײग़ʹ͍͘ͷͰʮγεςϜ։ൃख๏ ʹ͍ͭͯͷhogeʯͷΑ͏ͳ໊લʹͨ͠Γۀײग़͢ͷ͋Γ͔ʁ
PRϖʔδ ϝυϐΞΤϯδχΞ׆ಈʹཧղ͋ΔձࣾͰ͢ɻ CTO fukumuraʮؤுͬͯܦӦਞઆಘͯͨ͠Ͷͬͯੲͷಉ྅͔ΒݴΘΕͨɻ ͦΜͳʹؤுͬͯͨͭΓແ͔ͬͨʯ ↓࠷ۙͷ࣮ ɹRuby25पه೦ΠϕϯτɺܦඅͰߦ͚·͢ʢϝυϐΞεϙϯαʔͬ ͯ·͢ʣ
ٞࣄ ɹ͋ͬͨํ͕ྑ͍ɻ ʢձͷதͰग़ͨࢀߟURLͳͲSlackʹషͬͨΓ͍ͯ͠·͢ʣ ɹɾܽ੮ऀ͕࣍ʹࢀՃ͍͢͠Α͏ʹ ɹɾΕͳ͍Α͏ʹ ɹɾະདྷͷϝϯόʔʹΘΔΑ͏ʹ ɹɾϒϩάωλ
ࢀՃϝϯόʔ ͓ʹରͯ͠ɺܦݧଟ͍ਓ͕͍ͨํ͕ྑ͍ ɾ࣭ɺٞΛͦͷͰղܾͰ͖Δ ɾຊ͚ͩͩͱແ͍ܦݧΛઌʹͤΔ ʢϝυϐΞɺٕज़ސwillnet͞ΜʹඞͣࢀՃͯ͠ Β͍ͬͯ·͢ʣ
ͲΜͳຊ͕ྑ͔͔ͬͨʢྑͦ͞͏͔ʣ 1.ͦͷͰ͋ΔఔཧղͰ͖Δ ɹ༧श͖͍ͯͯ͠ͳ͍લఏɻࢀՃϋʔυϧ্͛ͳ͍ɻ
ͲΜͳຊ͕ྑ͔͔ͬͨʢྑͦ͞͏͔ʣ 2.αϯϓϧίʔυ͕ϝΠϯͰͳ͍ ɹ͍αϯϓϧίʔυ͕͋Δͱɺͦ͜ͰཧղͰ͖Δਓ/Ͱ͖ͳ͍ਓ͕Ͱ͖ͯ ͍͢ɻ ɹࢀߟఔʹॻ͍ͯ͋ΔͷɺRails GuidesΈ͍ͨʹͯ͘ཧղ͍͢͠ ͷେৎɻ
ͲΜͳຊ͕ྑ͔͔ͬͨʢྑͦ͞͏͔ʣ 3.༰͕ຖճ݁͢Δͷ ɹܽ੮ɺهԱ͕ඈͿͳͲɺલͷ༰͕಄ʹͳ͍ͱ࣍ͷཧղ͕͍͠ɻ ɹʮ ΦϒδΣΫτࢦઃܭ࣮ફΨΠυʯɺ͖͍ͭ෦͋Δɻ
ͲΜͳຊ͕ྑ͔͔ͬͨʢྑͦ͞͏͔ʣ 4.ͦͷ࣌ඞཁͳͷ ɹRailsҠߦॳRailsΨΠυɺগ͠ܦͬͯઃܭʹվળ͕ݟ͖͑ͯͨΒ ɹʮΦϒδΣΫτࢦઃܭ࣮ફΨΠυʯͳͲɻ ɹཧղ͠ͳ͍ͱ·͍ͣ > ཧղ͍ͨ͠
՝ ɾਓ͕૿͑Δͱո͍͠ ɹࠓ10ਓఔ͕ͩɺਓ͕૿͑Δͱ͕ࣗಡΉ ॱ൪ճΓͮΒ͘ۓுײແ͘ͳΓձͮ͠Β ͘ͳΔؾ͕͢Δ ɹ
՝ ɾ໊લ͕ී௨͔ͩΒม͍͑ͨ ɹʮྠಡձʯΛΤοδ͕ޮ͍ͨײ͡ʹ
·ͱΊ ɾҰਓಡॻྑ͍͚Ͳྠಡձ͍͍ ɾຊʹॻ͍ͯ͋Δ͜ͱҎ֎͕ಘΒΕͨ ɹ- ܦݧʢऀͷʣ ɹ- ҧ͏ࢹ ɹ- ࣗͨͪͲ͏͍͔ͯ͘͠ ɾձࣾͷཧղʢۀ࣌ؒɺ͓ۚʣඞཁ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠