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
銀座Rails#1_uuushiro.pdf
Search
uuushiro
September 20, 2018
Programming
1.6k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
銀座Rails#1_uuushiro.pdf
uuushiro
September 20, 2018
More Decks by uuushiro
See All by uuushiro
アウトカムに集中できる High Productivityなチームを目指して ~チームデザインとコラボレーションの取り組み事例~ / high productivity team focused on outcomes
uuushiro
0
1.4k
スタメンのLeSSの導入と 事業部全体を巻き込んだ アウトカム文化への道のり / Introduction of LeSS and outcome culture
uuushiro
2
8.6k
スタートアップのプロダクト成長の舞台裏とコンテナ化までの道のり
uuushiro
0
820
Railsメジャーバージョンアップを 安全にカナリアリリースする
uuushiro
2
3.3k
プロダクトに集中し続けるために 開発組織が向き合ってきた課題
uuushiro
1
300
エンゲージメント経営を支える TUNAGのETL基盤
uuushiro
0
190
TUNAG の ETL基盤 ~AWS Summit Startup Architecture of the year 2019~
uuushiro
2
5.1k
Ruby × AWS Lambdaで サーバーレスの導入~TUNAG分析基盤の事例をもとに~
uuushiro
2
3.3k
Other Decks in Programming
See All in Programming
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
160
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
Vite+ Unified Toolchain for the Web
naokihaba
0
420
技術記事、 専門家としてのプログラマ、 言語化
mizchi
14
7.3k
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
7
2.1k
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
230
symfony/aiとlaravel/boost
77web
0
120
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
440
スマートグラスで並列バイブコーディング
hyshu
0
280
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
820
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
110
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
9
3.9k
Featured
See All Featured
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
880
Site-Speed That Sticks
csswizardry
13
1.2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
640
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
550
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
490
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
240
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
180
Transcript
RailsελʔτΞοϓ͕ ͬͯΑ͔ͬͨ͜ͱ ۜ࠲Rails#1 2018.09.20 גࣜձࣾελϝϯ @uuushiro
Copyright © stmn, inc. All rights reserved. Page !X ࣗݾհ
ϋϯυϧωʔϜ/ࢯ໊ @uuushiro / দ୩ ༐࢙࿕(·ͭͨʹ Ώ͏͠Ζ͏) ग़ ɹѪݝ ඌுѴࢢ (ݱॅॴ໊ݹࢢ) ੜ݄ ɹ1994/02/01 (24ࡀ) ུྺ ɹ2016 9݄ ελϝϯͰΠϯλʔϯ։࢝ ɹ2017 1݄ ελϝϯʹೖࣾ (৽ଔୈҰ߸) Rails ver 5.0.0 ͔Β৮Γ·ͨ͠ Raisྺ2
ձࣾ֓ཁ
Copyright © stmn, inc. All rights reserved. Page Ԋֵͱࣾһ !4
໊ ձһ ࣾһ ۀ 56/"( ЌϦϦʔε ౦ژࢧࣾ ࢿۚௐୡ ԯԁ 56/"( ਖ਼ࣜϦϦʔε ໊ݹຊࣾ ΦϑΟεҠస େࡕࢧࣾ 3BJMT 3VCZ
໊ݹຊࣾ
ϫʔΫεϖʔε
ࣄۀ
ʮ৫ΤϯήʔδϝϯτڧԽʯʹಛԽͨࣾ͠SNSαʔϏε
Copyright © stmn, inc. All rights reserved. Page ػೳ •
λΠϜϥΠϯɺϓϩϑΟʔϧɺνϟοτ Λඋ͑ͨɺϑϧػೳͷSNSɻͯࣗࣾ͢։ൃɻ • ҙͷ੍(ߘϑΥʔϜ)Λ࡞Δ͜ͱ͕Ͱ͖Δ (Google ϑΥʔϜ ͷߴػೳ൛)ɻ !9 גࣜձࣾελϝϯͰͷར༻෩ܠ
Copyright © stmn, inc. All rights reserved. Page TUNAGͷٕज़ελοΫ !10
/BUJWF 'SPOUFOE "QQMJDBUJPO .JEEMFXBSF *OGSBTUSVDUVSF .FUBCBT
Copyright © stmn, inc. All rights reserved. Page TUNAGͷٕज़ελοΫ !11
/BUJWF 'SPOUFOE "QQMJDBUJPO .JEEMFXBSF *OGSBTUSVDUVSF .FUBCBT ੈͷதͷศརͳαʔϏεੵۃతʹར༻͠ɺ ࣗࣾͷڧΈʹूத͍ͨ͠
RailsελʔτΞοϓ͕ ͬͯΑ͔ͬͨ͜ͱ
Copyright © stmn, inc. All rights reserved. Page ࣍ •ೖΕͯΑ͔ͬͨgem
•ͬͯΑ͔ͬͨπʔϧɾαʔϏε •औΓೖΕͯΑ͔ͬͨ։ൃελΠϧ !13
ೖΕͯΑ͔ͬͨgem
Copyright © stmn, inc. All rights reserved. Page aasm !15
ঢ়ଶભҠཧΛαϙʔτͯ͘͠ΕΔgem
Copyright © stmn, inc. All rights reserved. Page ෳࡶͳঢ়ଶભҠཧ͕͍͠ •TUNAGͰϞσϧͷঢ়ଶཧ
enum Ͱཧ͍ͯ͠Δ •ঢ়ଶભҠ͕ෳࡶԽ͢Δͱཧ͕େม •ٞͷΑ͏ͳঝೝػೳ(ϫʔΫϑϩʔ) ECͷจཧͳͲ !16 ։࢝ Ωϟϯηϧ ਃத ঝೝࡁΈ ྃ ٫Լ
Copyright © stmn, inc. All rights reserved. Page aasmͷಛ •DSLͰঢ়ଶભҠͷ੍Λ؆ܿʹهड़Ͱ͖Δ
•ঢ়ଶભҠ࣌ʹҙͷίʔϧόοΫΛࢦఆͰ͖Δ •enum ͕ར༻Ͱ͖Δ •σϑΥϧτͩͱ aasm_state ΧϥϜΛՃ͢Δ !17
Copyright © stmn, inc. All rights reserved. Page ίʔυྫ !18
Մಡੑ͕ߴ͘ɺ ঢ়ଶભҠͷ੍Λཧ͍͢͠
Copyright © stmn, inc. All rights reserved. Page ίʔυྫ !19
Մಡੑ͕ߴ͘ɺ ঢ়ଶભҠͷ੍Λཧ͍͢͠ ಛఆͷঢ়ଶભҠͷίʔϧόοΫͷࢦఆ ͯ͢ͷঢ়ଶભҠͷίʔϧόοΫࢦఆ FOVNར༻Մ
Copyright © stmn, inc. All rights reserved. Page railroadyͱΈ߹ΘͤΔͱͬͱخ͍͠ •ঢ়ଶભҠਤΛ࡞ͯ͘͠ΕΔ
!20 CVOEMFFYFDSBJMSPBEZ"TQFDJGZBQQNPEFMTNPEFMSCcEPU5QOHP 3"*-4@3005EPDTUBUF@DIBOHFTNPEFMQOH
Copyright © stmn, inc. All rights reserved. Page awesome_nested_set !21
ActiveRecordͰπϦʔߏΛѻ͑Δgem
Copyright © stmn, inc. All rights reserved. Page RDBͰπϦʔߏΛ࣮ݱ͍ͨ͠ •اۀ͚SNSͰɺ৫ਤ
Λ ࣮͢Δඞཁ͕͋Δ •ྡϦετϞσϧ • ۙͷͷΈΛࢀর • ΞϓϦέʔγϣϯଆͰ࠶ؼॲཧ •ܦ࿏ྻڍϞσϧ • ֎෦Ωʔ੍͕͑ͳ͍ͨΊRDBͰࢠؔͷ߹ੑ͕อূͰ͖ͳ͍ •ೖΕࢠू߹Ϟσϧ !22 ͡Ί͜ΕΛ࠾༻͍ͯͨ͠
Copyright © stmn, inc. All rights reserved. Page TUNAGʹ͓͚ΔπϦʔߏͷཁ݅ •πϦʔߏΛͨͲΔॲཧ͕ଟ͍
•৫ ଐ ͷߋ৽සগͳ͍ •awesome_nested_set (ೖΕࢠू߹Ϟσϧ)Λ࠾༻ •ߋ৽ίετߴ͍͕ɺۙϦετϞσϧͱൺͯΫΤϦΛ੍Ͱ͖Δ •left, rightΧϥϜ͚ͩͰͳ͘ɺparent_id࣋ͨͤΔͷͰɺࢠͷݕࡧޮ্͕͕Δ !23
Copyright © stmn, inc. All rights reserved. Page the_sortable_treeͱΈ߹ΘͤΔͱཧը໘؆୯ʹ࡞ΕΔ •υϥοάɾΞϯυɾυϩοϓͷGUIΛදࣔ͢ΔviewϔϧύʔΛఏڙͯ͘͠ΕΔ
•࣌ؒΛ͔͚ͣʹɺػೳͷཁ݅ΛୡͰ͖ͨͷελʔτΞοϓॳظʹॿ͔ͬͨ !24
Copyright © stmn, inc. All rights reserved. Page elasticsearch-model &
elasticsearch-dsl !25 ElasticsearchΛRailsͰѻ͍͘͢͢Δgem
Copyright © stmn, inc. All rights reserved. Page elasticsearch-model •ϞσϧͱElasticsearchͷ౷߹Λิॿ
•searchϝιουͱimportϝιου͕ఆٛ͞ΕΔ •as_indexed_jsonΛΦʔόʔϥΠυ͢Δ͜ͱͰɺ import࣌ʹ࣮ߦ͞ΕΔσʔλͷม ΛίϯτϩʔϧͰ͖Δ •ؔ࿈ςʔϒϧͷࢦఆ؆୯ʹ !26
Copyright © stmn, inc. All rights reserved. Page elasticsearch-dsl •ΫΤϦΛDSLͰهड़Ͱ͖Δ
•ؔ࿈͢ΔෳͷϞσϧΛରͱͨ͠ɺෳࡶͳݕࡧ͕Ͱ͖Δ •must: AND݅ •filter: AND݅ •should: OR݅ •must_not: NOT݅ !27
Copyright © stmn, inc. All rights reserved. Page Alias Λར༻ͨ͠
ΠϯσοΫεͷ࠶ߏங •ΠϯσοΫεʹΤΠϦΞε໊Λ༩͢Δ͜ͱ͕Ͱ͖Δɻ •ΤΠϦΞεͷࢀরઌΛΓସ͑Δ͜ͱͰɺΠϯσοΫεΛೖΕସ͑Δ͜ͱ͕Ͱ͖Δɻ •ΤΠϦΞεͷΓସ͑ɺΞτϛοΫʹߦΘΕΔ͜ͱ͕อূ͞Ε͍ͯΔɻ !28
Copyright © stmn, inc. All rights reserved. Page xray-rails !29
ϒϥβ্ͰviewͷߏΛՄࢹԽͯ͘͠ΕΔ
Copyright © stmn, inc. All rights reserved. Page !30
Copyright © stmn, inc. All rights reserved. Page !31 ΫϦοΫ͢Δͱ
ΤσΟλͰ֘ύʔγϟϧ Λ։͍ͯ͘ΕΔ ؔ࿈͢Δ$POUSPMMFS ΤσΟλͷઃఆ 3BJMTSPPUYSBZDPOpHΤσΟλઃఆϑΝΠϧ FEJUPS"QQMJDBUJPOT3VCZ.JOFBQQ$POUFOUT.BD04SVCZNJOFpMF
Copyright © stmn, inc. All rights reserved. Page ඇಉظॲཧ: DelayedJob
& Sidekiq •DelayedJob •Job ͕ DB Ͱཧ͞ΕΔͨΊɺModel ͷτϥϯβΫγϣϯʹ࿈ಈͤ͞Δ͜ͱ͕Ͱ͖Δɻ • assm ͱΈ߹Θͤͯɺঢ়ଶભҠ ʹ࿈ಈͨ͠ඇಉظॲཧʹར༻͍ͯ͠Δɻ •Polling ͳͷͰଈԠੑແ͍ •DBͷΈͰ݁Ͱ͖Δ •sidekiq •ΠϕϯτυϦϒϯͰߴ •PUSH௨ͷҰ੪ૹ৴ͳͲظؒͰେྔͷδϣϒΛࡹ͚Δ •redis ͕ඞཁ !32
ͬͯΑ͔ͬͨπʔϧɾαʔϏε
Copyright © stmn, inc. All rights reserved. Page imgix(ը૾ઐ༻CDN) •ը૾৴ઐ༻ͷCDNɻ
•AWS S3 ্ͷը૾ΛϦΞϧλΠϜʹՃ͠ͳ͕Βɺߴ৴Ͱ͖Δɻ •ͱͱɺRails (ImageMagick) Ͱ Ճ͠ AWS CloudFront Ͱ৴͍ͯͨ͠ɻ •ॳճΞΫηε͕ಉ࣌ฒߦʹߦΘΕΔͱϨεϙϯε͕ѱԽ͢Δ͜ͱ͕͋ͬͨ •اۀ͚SNSͱ͍͏ಛੑ্ɺಋೖॳͳͲʹΞΫηε͕ूத͠ɺ ϨεϙϯελΠϜ͕ѱԽ͢Δ͜ͱ͕͋ͬͨ •imgixΛಋೖ͢Δ͜ͱͰɺWEBαʔόͷෛՙΛΒ͢͜ͱ͕Ͱ͖ɺ͞ΒʹαΠτεϐʔυ্ͨ͠ •small_light ͳͲͰը૾৴αʔόΛߏங͢ΔΑΓ͍҆͠ɺ͔ͬͨ •إݕग़ػೳͳͲɺػೳ͍͍ ײ͡ɻ !34
Copyright © stmn, inc. All rights reserved. Page μογϡϘʔυը໘ !35
Copyright © stmn, inc. All rights reserved. Page Bugsnag(ΫϥογϡϨϙʔτղੳπʔϧ) !36
Copyright © stmn, inc. All rights reserved. Page Bugsnag(ΫϥογϡϨϙʔτղੳπʔϧ) !37
EFWJTFΛ͍ͬͯΔͱɺ ݱࡏೝূ͞Ε͍ͯΔϢʔβʔʹؔ͢ΔใΛ ࣗಈతʹऔಘͯ͘͠ΕΔ
Copyright © stmn, inc. All rights reserved. Page Bugsnag(ΫϥογϡϨϙʔτղੳπʔϧ) !38
ϝʔϧΞυϨεɾ໊લͰߜΓࠐΊΔ
Copyright © stmn, inc. All rights reserved. Page Bugsnag(ΫϥογϡϨϙʔτղੳπʔϧ) !39
ΤϥʔͷΫϥεɾϑΝΠϧ໊ɾϝιου໊ͰߜΓࠐΊΔ
Copyright © stmn, inc. All rights reserved. Page Bugsnag(ΫϥογϡϨϙʔτղੳπʔϧ) !40
$POUSPMMFSɺϗετ໊ɺϦΫΤετ63-ɺϦΫΤετ*1ͰߜΓࠐΊΔ
Copyright © stmn, inc. All rights reserved. Page SendGrid •όϯεॲཧΛ࣮͠ͳͯ͘ྑ͍ɻ
•ϝʔϧαʔόʔΛ༻ҙ͠ͳͯ͘ࡁΉ •։෧ɺΫϦοΫΛҙͷ୯ҐͰऔಘͰ͖Δ •sendgrid-rubyͰAPIΛར༻͕؆୯ʹ !41
Copyright © stmn, inc. All rights reserved. Page μογϡϘʔυ !42
ςετ
Copyright © stmn, inc. All rights reserved. Page Mailtrap •։ൃڥ͔Βૹ৴͞ΕͨిࢠϝʔϧΛςετɺදࣔ͢ΔͨΊͷμϛʔSMTPαʔόʔ
•։ൃதʹޡരϝʔϧΛૹΔ͜ͱ͕ͳ͘ͳΔ !43 ςετ
Copyright © stmn, inc. All rights reserved. Page Metabase(BIπʔϧ) !44
(6*Ͱϙνϙν͢Δ͚ͩ͋Δఔͷ ΫΤϦߏஙͰ͖Δ
Copyright © stmn, inc. All rights reserved. Page Metabase(BIπʔϧ) !45
(6*Ͱϙνϙν͢Δ͚ͩ͋Δఔͷ ΫΤϦߏஙͰ͖Δ 440ʹରԠ͍ͯ͠Δ
औΓೖΕͯΑ͔ͬͨ։ൃελΠϧ
Copyright © stmn, inc. All rights reserved. Page ఆظbundle update
•Rails ͷ ਐԽʹ͍͍ͭͯ͘͜ͱ͕తɻ •ӨڹൣғΛಛఆ͘͢͠ɺݕূίετΛখ͘͢͞ΔͨΊʹɺि࣍ͰΞοϓσʔτɻ •ར༻͍ͯ͠ΔgemͷཧղΛਂΊΒΕΔ •CircleCI 2.0ͷϫʔΫϑϩʔػೳͰࣗಈԽ !47
Copyright © stmn, inc. All rights reserved. Page ϨϏϡʔͷࣗಈԽ •ίʔσΟϯάελΠϧͳͲఆܕͳνΣοΫࣗಈԽ͢Δɻ
•ઃܭΞϓϦέʔγϣϯϩδοΫͷϨϏϡʔʹ࣌ؒΛ͔͚Δɻ •rubocop, SiderΛಋೖ !48
Copyright © stmn, inc. All rights reserved. Page RailsελʔτΞοϓ͕ͬͯΑ͔ͬͨ͜ͱ !49
ೖΕͯྑ͔ͬͨHFN BBTN BXFTPNF@OFTUFE@USFF FMBTUJDTFBSDINPEFM FMBTUJDTFBSDIETM YSBZSBJMT EFMBZFE@KPC 4JEFLJR ೖΕͯྑ͔ͬͨπʔϧɾαʔϏε JNHJY #VHTOBH 4FOE(SJE .BJMUSBQ .FUBCBTF औΓೖΕͯྑ͔ͬͨ։ൃελΠϧ ఆظCVOEMFVQEBUF ϨϏϡʔͷࣗಈԽ
Thank You For Your Attention