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
250
situated-program-challenge Ruby on Rails版
Fumitaka Tokumitsu
February 13, 2018
Tweet
Share
Other Decks in Technology
See All in Technology
TransitGatewayの基礎
toru_kubota
0
230
Databricks におけるデータエンジニアリング
databricksjapan
0
380
Tableau事例紹介 / Tableau Case Study of Eureka
kazuya_araki_tokyo
1
170
Data and AI Governance: Existing Challenges and Emerging Trends
scotthsieh825
0
160
巨大なテーブルのテーブル定義を無停止で安全に誰でも変更できるようにする / Table-definitions-for-huge-tables-can-be-modified-by-anyone-safely-and-non-disruptively
freee
1
740
反実仮想機械学習とは何か
usaito
PRO
7
2.5k
VS CodeでAWSを操作しよう
smt7174
3
240
Janus
bkuhlmann
1
490
コンパウンドスタートアップのためのスケーラブルでセキュアなInfrastructure as Codeパイプラインを考える / Scalable and Secure Infrastructure as Code Pipeline for a Compound Startup
yuyatakeyama
3
3.8k
開発生産性向上サービスを作るFindyが自分たちで開発生産性を爆上げした組織づくりの歩み / Findy's path to boosting its own development productivity 2024-04-17
ma3tk
3
350
プロトタイピングによる不確実性の低減 / Reducing Uncertainty through Prototyping
ohbarye
4
290
20240416_devopsdaystokyo
kzkmaeda
1
190
Featured
See All Featured
Building Effective Engineering Teams - LeadDev
addyosmani
27
1.8k
The Cost Of JavaScript in 2023
addyosmani
14
3.8k
Why Our Code Smells
bkeepers
PRO
331
56k
Code Review Best Practice
trishagee
54
15k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
39
4.4k
Embracing the Ebb and Flow
colly
79
4.1k
Typedesign – Prime Four
hannesfritz
36
2.1k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
12
1.5k
Testing 201, or: Great Expectations
jmmastey
27
6.3k
Clear Off the Table
cherdarchuk
83
310k
Reflections from 52 weeks, 52 projects
jeffersonlam
344
19k
Making the Leap to Tech Lead
cromwellryan
123
8.5k
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のレールから外れよとするととたんに悪夢 がはじまります...