Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Ruby on Rails と Django を比較してみる
Search
free_world21
September 29, 2024
Programming
320
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Ruby on Rails と Django を比較してみる
TokyuRuby会議15
https://tokyurb.connpass.com/event/330007/
で使用した発表用スライドです
free_world21
September 29, 2024
More Decks by free_world21
See All by free_world21
RubyとGoでゼロから作る証券システム: 高信頼性が求められるシステムのコードの外側にある設計と運用のリアル
free_world21
1
6.2k
DjangoとRailsを使って趣味として政治資金を透明化するプロダクトを作ってる話
free_world21
0
98
Ruby on Rails on Kubernetesってどうなの?
free_world21
0
40
大事なデータを守りたい!ActiveRecord Encryptionと、より安全かつ検索可能な暗号化手法の実装例の紹介
free_world21
0
63
Shinjuku.rb#95:心の技術書紹介
free_world21
1
350
Rails engineを用いたゆるふわモジュラーモノリス のご紹介
free_world21
1
500
『Railsオワコン』と言われる時代に、なぜブルーモ証券はRailsを選ぶのか
free_world21
3
1.6k
東証障害報告書を読み解く
free_world21
0
350
Ruby/Railsの勉強会のおかげでブルーモ証券起業した
free_world21
2
550
Other Decks in Programming
See All in Programming
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
240
AHC070解法紹介
eijirou
0
110
Can LLMs Replicate 4 Years of Compose Migration? Exploring the boundaries of automation with 279 XML files from a real product
makun
0
130
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
360
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
120
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
240
GKE で Pod の見方を変えたら、スケールアウト時の挙動を真に捉えられた話
stkk
0
110
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
3
330
How I Stole PSI from Android Studio - DroidKaigi2026
worker8
0
110
Claude Codeを組織的に動かして月400PRを実現した話
happy_ryo
0
270
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
140
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
110
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
ラッコキーワード サービス紹介資料
rakko
1
4.8M
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
730
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
980
Documentation Writing (for coders)
carmenintech
77
5.5k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
490
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
300
Evolving SEO for Evolving Search Engines
ryanjones
0
290
Designing Powerful Visuals for Engaging Learning
tmiket
1
540
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
930
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
Designing for Timeless Needs
cassininazir
1
470
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