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.5k
スタメンのLeSSの導入と 事業部全体を巻き込んだ アウトカム文化への道のり / Introduction of LeSS and outcome culture
uuushiro
2
8.7k
スタートアップのプロダクト成長の舞台裏とコンテナ化までの道のり
uuushiro
0
830
Railsメジャーバージョンアップを 安全にカナリアリリースする
uuushiro
2
3.4k
プロダクトに集中し続けるために 開発組織が向き合ってきた課題
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
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
120
週末にAI-DLCを本気で回したら$1,600溶けた
hbashimizu
0
130
新卒PdEのリアル
ryu1013
1
410
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
860
Hono + Inertia + React で LP を構築した話
oukayuka
2
210
デプロイ直後のレイテンシスパイクを調べたら、 Railsの仕様にたどり着いた
nhsykym
0
110
LLMは4年分のCompose移行を再現できるのか?実プロダクト279件のXMLで探る自動化の境界線
makun
0
430
私のClaude Code活用法 (個人開発編) - PHPerKaigi mini #4(2026/08/24)
panda_program
1
210
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
2
750
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
3
270
30年振りにコンパイラの定数整数除算を改善した
herumi
9
4.4k
業務時間外もAIに働いてもらう話
colorful12
3
10k
Featured
See All Featured
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Designing for Performance
lara
611
70k
Facilitating Awesome Meetings
lara
57
7.1k
HDC tutorial
michielstock
2
850
Color Theory Basics | Prateek | Gurzu
gurzu
0
460
So, you think you're a good person
axbom
PRO
2
2.1k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
270
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Code Review Best Practice
trishagee
74
20k
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