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
situated-program-challenge Ruby on Rails版
Search
Fumitaka Tokumitsu
February 13, 2018
Technology
2
290
situated-program-challenge Ruby on Rails版
Fumitaka Tokumitsu
February 13, 2018
Tweet
Share
Other Decks in Technology
See All in Technology
高速なプロダクト開発を実現、創業期から掲げるエンタープライズアーキテクチャ
kawauso
2
9.4k
CDKTFについてざっくり理解する!!~CloudFormationからCDKTFへ変換するツールも作ってみた~
masakiokuda
1
150
生成AI活用の組織格差を解消する 〜ビジネス職のCursor導入が開発効率に与えた好循環〜 / Closing the Organizational Gap in AI Adoption
upamune
7
5.3k
american aa airlines®️ USA Contact Numbers: Complete 2025 Support Guide
aaguide
0
150
Claude Code に プロジェクト管理やらせたみた
unson
6
4.1k
Delta airlines Customer®️ USA Contact Numbers: Complete 2025 Support Guide
deltahelp
0
710
freeeのアクセシビリティの現在地 / freee's Current Position on Accessibility
ymrl
2
200
ゼロからはじめる採用広報
yutadayo
3
950
AIの全社活用を推進するための安全なレールを敷いた話
shoheimitani
2
520
2025-07-06 QGIS初級ハンズオン「はじめてのQGIS」
kou_kita
0
170
Yahoo!しごとカタログ 新しい境地を創るエンジニア募集!
lycorptech_jp
PRO
0
110
American airlines ®️ USA Contact Numbers: Complete 2025 Support Guide
airhelpsupport
0
380
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Fireside Chat
paigeccino
37
3.5k
The World Runs on Bad Software
bkeepers
PRO
69
11k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Visualization
eitanlees
146
16k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
740
Building an army of robots
kneath
306
45k
Designing Experiences People Love
moore
142
24k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
How STYLIGHT went responsive
nonsquared
100
5.6k
Transcript
situated-program-challenge Ruby on Rails版 • https://github.com/toku345/situated-program-challenge/tree • clj-nakano #4 2018/02/13
• Classi株式会社 徳光史考(@toku345)
Who am I ? toku 3 4 5 徳 光
史 考 Classi 株式会社のRailsエンジニアです Clojure 修行中です!
アジェンダ • Rubyって何? • Railsって何? • version1 実装についてざっくり説明 • まとめ
Ruby って何?
Ruby って何? まつもとゆきひろ(Matz)氏によって開発された動的型 付けオブジェクト指向スクリプト言語。 https://www.ruby-lang.org/ja/
Railsって何?
Rails って? David Heinemeier Hanssonによって開発されたRuby製 Webアプリケーションフレームワーク。 • http://rubyonrails.org/ • https://railsguides.jp/getting_started.html#rails%E3%8
1%A8%E3%81%AF%E4%BD%95%E3%81%8B
Rails の特徴 • MVC • CoC • DRY
Rails MVC
CoC って? Convention over Configuration → 設定より規約を重視する
DRY って? Don't Repeat Yourself → 同じことを繰り返さない
version1 実装 ざっくり説明
version1 実装ざっくり説明 1. プロジェクトの生成 2. 既存DBからschemaファイル生成 3. Model 追加 4.
Rails router 追加 5. Controller 追加 6. View 追加
1. プロジェクトの生成 $ gem install rails $ rails new rest-server
--api -d postgresql ※ 実際に事項したのはこちら↓ $ rails new rest-server --api -T --skip-turbolinks -C -S -B \ -d postgresql --skip-yarn
1. プロジェクトの生成 $ ls ./rest-server Gemfile README.md Rakefile app/ bin/
config/ config.ru db/ lib/ log/ public/ tmp/ vendor/
1. プロジェクトの生成 Gemfile → gem を記述 (project.clj の dependencies) app/
→ model / view / controller などの置き場 config/ → app設定、database 接続設定、route.rb等 の設定ファイル db/ → schemaファイル、migrationファイル等
2. 既存DBからschemaファイル生成 よくあるRailsアプリではDBのschemaの管理を Active Record の migration という機能で管理する ↓ しかし、今回はDBのschema管理はRailsアプリ側で管
理できない...
2. 既存DBからschemaファイル生成 DB から schema ファイルを作成しよう!
2. 既存DBからschemaファイル生成 DBの設定を config/database.yml に記述して
2. 既存DBからschemaファイル生成 $ bundle exec rails db:schema:dump → db/schema.rb が生成される
3. Model 追加
3. Model 追加 Model → ビジネスデータとビジネスロジックを表すシステムの 階層。 ※ Active Record
のおかげで、DBに恒久的に保存され る必要のあるビジネスオブジェクトの作成と利用を円 滑に行なえる。
3. Model 追加 例) Memberモデル
3. Model 追加 例) Memberモデル
3. Model 追加 多対多のリレーション
3. Model 追加 多対多のリレーション groups -* groups_members *- members
3. Model 追加 多対多のリレーション groups -* groups_members *- members
3. Model 追加 多対多のリレーション groups -* groups_members *- members
4. Rails router 追加
4. Rails router 追加 Rails router → 受け取ったURLを認識し、適切なコントローラ内アク ションに割り当てる階層。
↓ 4. Rails router 追加
4. Rails router 追加
↓ 4. Rails router 追加
5. Controller 追加
5. Controller 追加 Controller → リクエストを受け取り、データをモデルから取得したり モデルに保存するなどの作業を行い、最後にビュー を使用してHTML / JSON出力を生成する階層。
5. Controller 追加
5. Controller 追加 ※ ↑ ruby / rails では kebab-case
は扱い辛いので snake_case として扱えるようにする
6. View 追加
6. View 追加 View → Controller で準備された情報をHTML / JSON などのレレ
スポンスデータとして生成する階層。
6. View 追加 GET /members → MembersController の #index アクション
→ app/views/members/index.json.jbuilder
6. View 追加
6. View 追加
6. View 追加 POST /members → MembersController の #create アクション
→ app/views/members/create.json.jbuilder
6. View 追加
6. View 追加
まとめ
まとめ • CoCやDRYといった哲学に基づいたRailsのおかげ で、よくあるWebアプリはサクサクっと作れちゃいま す!
まとめ • ただ、簡単そうな見かけに騙されて、Railsにあまり なれていない方や、経験者でもテキトーに作った り、Railsのレールから外れよとするととたんに悪夢 がはじまります...