Slide 1

Slide 1 text

situated-program-challenge Ruby on Rails版 ● https://github.com/toku345/situated-program-challenge/tree ● clj-nakano #4 2018/02/13 ● Classi株式会社 徳光史考(@toku345)

Slide 2

Slide 2 text

Who am I ? toku 3 4 5 徳 光 史 考 Classi 株式会社のRailsエンジニアです Clojure 修行中です!

Slide 3

Slide 3 text

アジェンダ ● Rubyって何? ● Railsって何? ● version1 実装についてざっくり説明 ● まとめ

Slide 4

Slide 4 text

Ruby って何?

Slide 5

Slide 5 text

Ruby って何? まつもとゆきひろ(Matz)氏によって開発された動的型 付けオブジェクト指向スクリプト言語。 https://www.ruby-lang.org/ja/

Slide 6

Slide 6 text

Railsって何?

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

Rails の特徴 ● MVC ● CoC ● DRY

Slide 9

Slide 9 text

Rails MVC

Slide 10

Slide 10 text

CoC って? Convention over Configuration → 設定より規約を重視する

Slide 11

Slide 11 text

DRY って? Don't Repeat Yourself → 同じことを繰り返さない

Slide 12

Slide 12 text

version1 実装 ざっくり説明

Slide 13

Slide 13 text

version1 実装ざっくり説明 1. プロジェクトの生成 2. 既存DBからschemaファイル生成 3. Model 追加 4. Rails router 追加 5. Controller 追加 6. View 追加

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

1. プロジェクトの生成 $ ls ./rest-server Gemfile README.md Rakefile app/ bin/ config/ config.ru db/ lib/ log/ public/ tmp/ vendor/

Slide 16

Slide 16 text

1. プロジェクトの生成 Gemfile → gem を記述 (project.clj の dependencies) app/ → model / view / controller などの置き場 config/ → app設定、database 接続設定、route.rb等 の設定ファイル db/ → schemaファイル、migrationファイル等

Slide 17

Slide 17 text

2. 既存DBからschemaファイル生成 よくあるRailsアプリではDBのschemaの管理を Active Record の migration という機能で管理する ↓ しかし、今回はDBのschema管理はRailsアプリ側で管 理できない...

Slide 18

Slide 18 text

2. 既存DBからschemaファイル生成 DB から schema ファイルを作成しよう!

Slide 19

Slide 19 text

2. 既存DBからschemaファイル生成 DBの設定を config/database.yml に記述して

Slide 20

Slide 20 text

2. 既存DBからschemaファイル生成 $ bundle exec rails db:schema:dump → db/schema.rb が生成される

Slide 21

Slide 21 text

3. Model 追加

Slide 22

Slide 22 text

3. Model 追加 Model → ビジネスデータとビジネスロジックを表すシステムの 階層。 ※ Active Record のおかげで、DBに恒久的に保存され る必要のあるビジネスオブジェクトの作成と利用を円 滑に行なえる。

Slide 23

Slide 23 text

3. Model 追加 例) Memberモデル

Slide 24

Slide 24 text

3. Model 追加 例) Memberモデル

Slide 25

Slide 25 text

3. Model 追加 多対多のリレーション

Slide 26

Slide 26 text

3. Model 追加 多対多のリレーション groups -* groups_members *- members

Slide 27

Slide 27 text

3. Model 追加 多対多のリレーション groups -* groups_members *- members

Slide 28

Slide 28 text

3. Model 追加 多対多のリレーション groups -* groups_members *- members

Slide 29

Slide 29 text

4. Rails router 追加

Slide 30

Slide 30 text

4. Rails router 追加 Rails router → 受け取ったURLを認識し、適切なコントローラ内アク ションに割り当てる階層。

Slide 31

Slide 31 text

↓ 4. Rails router 追加

Slide 32

Slide 32 text

4. Rails router 追加

Slide 33

Slide 33 text

↓ 4. Rails router 追加

Slide 34

Slide 34 text

5. Controller 追加

Slide 35

Slide 35 text

5. Controller 追加 Controller → リクエストを受け取り、データをモデルから取得したり モデルに保存するなどの作業を行い、最後にビュー を使用してHTML / JSON出力を生成する階層。

Slide 36

Slide 36 text

5. Controller 追加

Slide 37

Slide 37 text

5. Controller 追加 ※ ↑ ruby / rails では kebab-case は扱い辛いので     snake_case として扱えるようにする

Slide 38

Slide 38 text

6. View 追加

Slide 39

Slide 39 text

6. View 追加 View → Controller で準備された情報をHTML / JSON などのレレ スポンスデータとして生成する階層。

Slide 40

Slide 40 text

6. View 追加 GET /members → MembersController の #index アクション → app/views/members/index.json.jbuilder

Slide 41

Slide 41 text

6. View 追加

Slide 42

Slide 42 text

6. View 追加

Slide 43

Slide 43 text

6. View 追加 POST /members → MembersController の #create アクション → app/views/members/create.json.jbuilder

Slide 44

Slide 44 text

6. View 追加

Slide 45

Slide 45 text

6. View 追加

Slide 46

Slide 46 text

まとめ

Slide 47

Slide 47 text

まとめ ● CoCやDRYといった哲学に基づいたRailsのおかげ で、よくあるWebアプリはサクサクっと作れちゃいま す!

Slide 48

Slide 48 text

まとめ ● ただ、簡単そうな見かけに騙されて、Railsにあまり なれていない方や、経験者でもテキトーに作った り、Railsのレールから外れよとするととたんに悪夢 がはじまります...