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
Ruby on Rails と Django を比較してみる
Search
free_world21
September 29, 2024
Programming
1
65
Ruby on Rails と Django を比較してみる
TokyuRuby会議15
https://tokyurb.connpass.com/event/330007/
で使用した発表用スライドです
free_world21
September 29, 2024
Tweet
Share
More Decks by free_world21
See All by free_world21
Shinjuku.rb#95:心の技術書紹介
free_world21
1
150
Rails engineを用いたゆるふわモジュラーモノリス のご紹介
free_world21
1
270
『Railsオワコン』と言われる時代に、なぜブルーモ証券はRailsを選ぶのか
free_world21
3
920
東証障害報告書を読み解く
free_world21
0
91
Ruby/Railsの勉強会のおかげでブルーモ証券起業した
free_world21
2
360
エンジニアとしての属性軸(自己分析軸?)を考えてみた
free_world21
0
64
(元)FinTechエンジニアが読み解く東証障害報告書
free_world21
0
730
railsでつくるなんちゃってserverless CMS〜コーポレートサイト編〜
free_world21
1
1.3k
railsとserverless技術で鉄道アプリを作った話〜なぜ僕はrubyでバイナリをパースしたのか〜
free_world21
1
800
Other Decks in Programming
See All in Programming
距離関数を極める! / SESSIONS 2024
gam0022
0
280
Contemporary Test Cases
maaretp
0
140
CSC509 Lecture 12
javiergs
PRO
0
160
OnlineTestConf: Test Automation Friend or Foe
maaretp
0
110
Arm移行タイムアタック
qnighy
0
320
CSC509 Lecture 09
javiergs
PRO
0
140
ActiveSupport::Notifications supporting instrumentation of Rails apps with OpenTelemetry
ymtdzzz
1
230
ペアーズにおけるAmazon Bedrockを⽤いた障害対応⽀援 ⽣成AIツールの導⼊事例 @ 20241115配信AWSウェビナー登壇
fukubaka0825
6
1.9k
イベント駆動で成長して委員会
happymana
1
320
「今のプロジェクトいろいろ大変なんですよ、app/services とかもあって……」/After Kaigi on Rails 2024 LT Night
junk0612
5
2.1k
카카오페이는 어떻게 수천만 결제를 처리할까? 우아한 결제 분산락 노하우
kakao
PRO
0
110
cmp.Or に感動した
otakakot
2
150
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Into the Great Unknown - MozCon
thekraken
32
1.5k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Automating Front-end Workflow
addyosmani
1366
200k
Typedesign – Prime Four
hannesfritz
40
2.4k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Statistics for Hackers
jakevdp
796
220k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Transcript
3VCZPO3BJMTͱ %KBOHPΛൺֱͯ͠ΈΔ 4VO খྛޛ࢙ OPFM ϒϧʔϞূ݊גࣜձࣾ 5PLZV3VCZձٞ
▪ খྛޛ࢙ʢখྛϊΤϧʣ ▪ ຊۀɿϒϧʔϞূ݊גࣜձࣾऔక$50 – ถࠃגɾถࠃ&5'ઐۀͷظࢿ࢈ܗಛԽ ܕͷࢿΞϓϦΛ࡞ͬͯΔ'JOUFDIελʔ τΞοϓ ▪
΄ͲϑϦʔϥϯεΤϯδχΞ – ్தࣄۀձࣾͷதͷਓͬͨ ▪ ʙɿϒϧʔϞূ݊גࣜձࣾΛۀ ▪ झຯɿཱྀߦɾੈքͷίϫʔΩϯάεϖʔεΊ͙ ΓʢϫʔέʔγϣϯతͳԿ͔ʣ @free_world21 THE FARM@NY CARR WORKPLACE@Chicago https://bloomo.co.jp/
3VCZPO3BJMTͱ%KBOHPΛൺֱͯ͠ΈΔ ▪ झຯͷݸਓ։ൃͰ࡞ͬͯΔϓϩμΫτΛ%KBOHP 3VCZPO3BJMTͷΈ߹ΘͤͰ࡞ͬͯ·͢ – ͳͷͰͦΕΛωλʹൃද͠·͢ ▪ ʮ%KBOHPશʹཧղͨ͠ʂʯ͘Β͍ͷϨϕϧײͷਓͷͳͷͰؒҧ͍ଟ͋͘Δ͔͠Ε·ͤ Μ ▪
ීஈ3BJMTͬͯΔਓઢͷൺֱͰ͢
3VCZPO3BJMTͱ%KBOHPΛൺֱͯ͠ΈΔ ݁ ʹ 3VCZPO3BJMT "DUJWF"ENJO BVUIMPHJD QBDLXFSL
%KBOHP %KBOHP3&45GSBNFXPSL
%KBOHPͱʢଞͷϑϨʔϜϫʔΫͱൺֱͯ͠ʣ ▪ 1ZUIPOͷ'VMMTUBDLϑϨʔϜϫʔΫ ▪ 3VCZPO3BJMTͱ΄΅ಉظʁ %KBOHP 3VCZPO3BJMT &YQSFTTKT /FTUKT
)POP ʢOPEFKTܥϑϨʔϜ ϫʔΫʣ (JO FDIP ʢ(PMBOHܥϑϨʔ ϜϫʔΫʣ ϓϩάϥϛϯάݴޠ 1ZUIPO 3VCZ 5ZQF4DSJQU (PMBOH *OJUJBMSFMFBTF ϑϨʔϜϫʔΫࢤ 'VMMTUBDL 'VMMTUBDL NJDSPGSBNFXPSL NJDSPGSBNFXPSL 03. %KBOHP03. "DUJWF3FDPSE 5ZQF03. 1SJTNB ࣗ࡞ (03. NJHSBUJPO %KBOHPNJHSBUJPO "DUJWF3FDPSE.JHSBUJPO ECNJHSBUF HPMBOHNJHSBUF HPPTF ςετ %KBOHPUFTU QZUFTU NJOJUFTU STQFD +FTU +BTNJOF CVJMUJO ܕαϙʔτ 5ZQF)JOUT CVJMUJO 3#4 CVJMUJO ʢͨͩ͠ίϯύΠϧΦ ϓγϣϯଟʣ CVJMUJO
%KBOHPͱʢଞͷϑϨʔϜϫʔΫͱൺֱͯ͠ʣ ▪ 1ZUIPOͷ'VMMTUBDLϑϨʔϜϫʔΫ ▪ 3VCZPO3BJMTͱ΄΅ಉظʁ %KBOHP 3VCZPO3BJMT &YQSFTTKT /FTUKT
)POP ʢOPEFKTܥϑϨʔϜ ϫʔΫʣ (JO FDIP ʢ(PMBOHܥϑϨʔ ϜϫʔΫʣ ϓϩάϥϛϯάݴޠ 1ZUIPO 3VCZ 5ZQF4DSJQU (PMBOH *OJUJBMSFMFBTF ϑϨʔϜϫʔΫࢤ 'VMMTUBDL 'VMMTUBDL NJDSPGSBNFXPSL NJDSPGSBNFXPSL 03. %KBOHP03. "DUJWF3FDPSE 5ZQF03. 1SJTNB ࣗ࡞ (03. NJHSBUJPO %KBOHPNJHSBUJPO "DUJWF3FDPSE.JHSBUJPO ECNJHSBUF HPMBOHNJHSBUF HPPTF ςετ %KBOHPUFTU QZUFTU NJOJUFTU STQFD +FTU +BTNJOF CVJMUJO ܕαϙʔτ 5ZQF)JOUT CVJMUJO 3#4 CVJMUJO ʢͨͩ͠ίϯύΠϧΦ ϓγϣϯଟʣ CVJMUJO ࣗͰબͿඞཁ͕ͳ͍ ʢࢮͰ։ൃͰ͖Δʣ ࣗͰબͿඞཁ͕͋Δʂʂ
%KBOHPͷಛɿϏϧτΠϯͷཧը໘͕͋Δ ▪ ຯΘ͍ͷ͋Δཧը໘͖ ▪ ActiveAdminʹͲ͜ͱͳ͘ࣅͯΔʢݸਓͷײͰ͢ʣ
%KBOHPͷಛɿϏϧτΠϯͷཧը໘͕͋Δ ▪ ຯΘ͍ͷ͋Δཧը໘͖ ▪ ActiveAdminʹͲ͜ͱͳ͘ࣅͯΔʢݸਓͷײͰ͢ʣ
%KBOHPͷಛɿγϯϓϧͳೝূػೳ͖ ▪ γϯϓϧͳೝূػೳػೳΛఏڙ͢Δϝιου͕͋Δ ▪ 3BJMTͰ͍͏ͱ͜ΖͷBVUIMPHJDͱ͔TPSDFSZΈ͍ͨͳ͕ͭೖͬͯΔΠϝʔδ
%KBOHPͷಛɿ.75 .PEFM7JFX5FNQMBUF ▪ %KBOHP.75 .PEFM7JFX5FNQMBUF Ͱ͋Δ ▪ 3BJMT.7$ .PEFM7JFX$POUSPMMFS %KBOHP
3VCZPO3BJMT Ϗδωεϩδο Ϋ ݺͼํ .PEFM .PEFM هड़ݴޠ 1ZUIPO 3VCZ ಛ ͭͷ.PEFM͕%#ͷςʔϒϧͱରԠ ͭͷ.PEFM͕%#ͷςʔϒϧͱରԠ ೖग़ྗ ݺͼํ 7JFX $POUSPMMFS هड़ݴޠ 1ZUIPO 3VCZ ಛ 3BJMTͰ͍͏ͱ͜Ζͷ$POUSPMMFSͱࢥͬͯ͘Εͯ0, ׂѪ දࣔ ݺͼํ 5FNQMBUF 7JFX هड़ݴޠ %KBOHPUFNQMBUFMBOHVBHF &3# )BNM ಛ 1ZUIPOεΫϦϓτຒΊࠐΊͳ͍ͷͰɺ ϏδωεϩδοΫΛهड़͢Δ͜ͱ΄΅ෆՄೳ 3VCZεΫϦϓτຒΊࠐΊΔͷͰ ͋ΔఔϏδωεϩδοΫॻ͚Δ
%KBOHPͷಛɿ.75 .PEFM7JFX5FNQMBUF ▪ %KBOHP.75 .PEFM7JFX5FNQMBUF Ͱ͋Δ ▪ 3BJMT.7$ .PEFM7JFX$POUSPMMFS %KBOHP
3VCZPO3BJMT Ϗδωεϩδο Ϋ ݺͼํ .PEFM .PEFM هड़ݴޠ 1ZUIPO 3VCZ ಛ ͭͷ.PEFM͕%#ͷςʔϒϧͱରԠ ͭͷ.PEFM͕%#ͷςʔϒϧͱରԠ ೖग़ྗ ݺͼํ 7JFX $POUSPMMFS هड़ݴޠ 1ZUIPO 3VCZ ಛ 3BJMTͰ͍͏ͱ͜Ζͷ$POUSPMMFSͱࢥͬͯ͘Εͯ0, ׂѪ දࣔ ݺͼํ 5FNQMBUF 7JFX هड़ݴޠ %KBOHPUFNQMBUFMBOHVBHF &3# )BNM ಛ 1ZUIPOεΫϦϓτຒΊࠐΊͳ͍ͷͰɺ ϏδωεϩδοΫΛهड़͢Δ͜ͱ΄΅ෆՄೳ 3VCZεΫϦϓτຒΊࠐΊΔͷͰ ͋ΔఔϏδωεϩδοΫॻ͚Δ Ұ൪ͷҧ͍
%KBOHPͷಛɿ.75 .PEFM7JFX5FNQMBUF ▪ ͪͳΈʹ%KBOHPUFNQMBUFMBOHVBHF͜Μͳ͔Μ͡ ▪ NVTUBDIFͱ͔)BOEMFCBSTͷܥේʁ
%KBOHPͷಛɿϞδϡϥʔϞϊϦε ▪ ݸਓతʹ࠷େͷಛ͜ΕͩͱࢥͬͯΔ ▪ projectͷԼʹෳͷappΛ࣋ͭߏ – %KBOHPͷappͭͷ3BJMTϓϩδΣΫτ rails newͯ͠࡞ΒΕ Δͭ
▪ 3BJMTͰ͍͏ͱ͜Ζͷpackwerk͕σϑΥϧτͰΈࠐ·ΕͯΔΠϝʔ δ
%KBOHPͷಛɿϞδϡϥʔϞϊϦε project
%KBOHPͷಛɿϞδϡϥʔϞϊϦε project project࡞Δͱproject໊ͰσϑΥϧτͰ࡞ΒΕΔσΟϨΫτϦ ओʹઃఆϑΝΠϧͱ͔͕͍ͬͯΔ 3BJMTͰ͍͏ͱ͜ΖͷconfigσΟϨΫτϦͱࢥͬͯྑ͍ͱࢥ͏
%KBOHPͷಛɿϞδϡϥʔϞϊϦε project project࡞Δͱproject໊ͰσϑΥϧτͰ࡞ΒΕΔσΟϨΫτϦ ओʹઃఆϑΝΠϧͱ͔͕͍ͬͯΔ 3BJMTͰ͍͏ͱ͜ΖͷconfigσΟϨΫτϦͱࢥͬͯྑ͍ͱࢥ͏ ͭͭͷappɻ ֤appͷதʹͦΕͧΕ.PEFMʢͱϚΠάϨʔγϣϯϑΝΠϧʣɺ 5FNQMBUFɺ7JFXʢ UFTUʣΛఆٛͰ͖Δ
%KBOHPͷಛɿϞδϡϥʔϞϊϦε project project࡞Δͱproject໊ͰσϑΥϧτͰ࡞ΒΕΔσΟϨΫτϦ ओʹઃఆϑΝΠϧͱ͔͕͍ͬͯΔ 3BJMTͰ͍͏ͱ͜ΖͷconfigσΟϨΫτϦͱࢥͬͯྑ͍ͱࢥ͏ ཧը໘ͷͭͷ·ͱ·Γͱͯ͠දࣔ͞ΕΔ
3JMTͱ%KBOHPͷൺֱɿίϚϯυܥ Ruby on Rails Django project作成 N/A python manage.py startproject
ceres app作成 rails new diet python manage.py startapp diet 開発サーバ起動 rails s python manage.py runserver コンソール起動 rails console python manage.py shell 任意のコマンド呼び出 し rails(rake) hoge python manage.py hoge DB作成 rails db:create N/A migrationファイル作成 rails g migration … python manage.py makemigrations migration実⾏ rails db:migrate python manage.py migrate
3JMTͱ%KBOHPͷൺֱɿσʔλϕʔεݺͼग़͠ Ruby on Rails Django 全件取得 Author.all Author.objects.all() ID指定ロード Author.find(123)
Author.objects.get(id=123) where Author.where(name: ‘hoge’) Author.where(“age >= ?”, 20) Author.where(age: 20..30) Author.where(age: nil) Author.objects.filter(name=‘hoge’) Author.objects.filter(age__gte=20) Author.objects.filter(age__range=(20, 30)) Author.objects.filter(age__isnull=True) 関連呼び出し author.published_books author.publishedbook_set.all() - name: string - age: int, null: true authors - author_id: int - title: string published_books
·ͱΊ ▪ %KBOHPͷಛຯΘ͍ͷ͋Δཧը໘ʢ3BJMTɿActiveAdminʣ ▪ %KBOHPͷಛɿγϯϓϧͳೝূػೳ͖ʢ3BJMTɿauthlogic, sorceryʣ ▪ %KBOHPͷಛɿ.PEFM5FNQMBUF7JFXʢ3BJMT.PEFM7JFX$POUSPMMFSʣ ▪ %KBOHPͷಛɿϞδϡϥʔϞϊϦεʢ3BJMTɿpackerkʣ
▪ ίϚϯυجຊతʹpython manage.pyͰΔʢ3BJMTɿrails, rakeʣ ▪ ͬͺΓActiveRecordਆʂ
3VCZPO3BJMTͱ%KBOHPΛൺֱͯ͠ΈΔ ݁ ʹ 3VCZPO3BJMT "DUJWF"ENJO BVUIMPHJD QBDLXFSL
%KBOHP %KBOHP3&45GSBNFXPSL